diff --git a/.github/workflows/build_and_test_debug_client.yml b/.github/workflows/build_and_test_debug_client.yml index 0574cf4f26..29c881c68a 100644 --- a/.github/workflows/build_and_test_debug_client.yml +++ b/.github/workflows/build_and_test_debug_client.yml @@ -18,7 +18,7 @@ jobs: web_test: name: Web Test runs-on: ubuntu-20.04 - timeout-minutes: 10 + timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@v2.3.4 @@ -37,20 +37,20 @@ jobs: run: npm run action lint - name: Build Web App - run: npm run action www/build + run: npm run action client/src/www/build - name: Test Web App - run: npm run action www/test + run: npm run action client/src/www/test - uses: codecov/codecov-action@v3 with: - files: ./output/coverage/www/coverage-final.json + files: ./client/src/output/coverage/www/coverage-final.json flags: unittests, www linux_debug_build: name: Linux Debug Build runs-on: ubuntu-20.04 - timeout-minutes: 10 + timeout-minutes: 20 needs: web_test steps: - name: Checkout @@ -72,12 +72,12 @@ jobs: go-version-file: '${{ github.workspace }}/go.mod' - name: Build Linux Client - run: npm run action electron/build linux + run: npm run action client/src/electron/build linux windows_debug_build: name: Windows Debug Build runs-on: windows-2019 - timeout-minutes: 10 + timeout-minutes: 20 needs: web_test steps: - name: Support longpaths @@ -102,7 +102,7 @@ jobs: go-version-file: '${{ github.workspace }}/go.mod' - name: Build Windows Client - run: npm run action electron/build windows + run: npm run action client/src/electron/build windows macos_debug_build: name: MacOS Debug Build @@ -132,18 +132,18 @@ jobs: go-version-file: '${{ github.workspace }}/go.mod' - name: Build Tun2Socks (required for Test OutlineAppleLib) - run: npm run action tun2socks/build macos + run: npm run action client/src/tun2socks/build macos - name: Test OutlineAppleLib - run: npm run action cordova/test macos + run: npm run action client/src/cordova/test macos - name: Build MacOS Client - run: npm run action cordova/build macos + run: npm run action client/src/cordova/build macos - uses: codecov/codecov-action@v3 with: xcode: true - xcode_archive_path: ./output/coverage/apple/macos/TestResult.xcresult + xcode_archive_path: ./client/src/output/coverage/apple/macos/TestResult.xcresult flags: unittests, apple, macos ios_debug_build: @@ -174,18 +174,18 @@ jobs: go-version-file: '${{ github.workspace }}/go.mod' - name: Build Tun2Socks (required for Test OutlineAppleLib) - run: npm run action tun2socks/build ios + run: npm run action client/src/tun2socks/build ios - name: Test OutlineAppleLib - run: npm run action cordova/test ios + run: npm run action client/src/cordova/test ios - name: Build iOS Client - run: npm run action cordova/build ios + run: npm run action client/src/cordova/build ios - uses: codecov/codecov-action@v3 with: xcode: true - xcode_archive_path: ./output/coverage/apple/ios/TestResult.xcresult + xcode_archive_path: ./client/src/output/coverage/apple/ios/TestResult.xcresult flags: unittests, apple, ios maccatalyst_debug_build: @@ -216,24 +216,24 @@ jobs: go-version-file: '${{ github.workspace }}/go.mod' - name: Build Tun2Socks (required for Test OutlineAppleLib) - run: npm run action tun2socks/build maccatalyst + run: npm run action client/src/tun2socks/build maccatalyst - name: Test OutlineAppleLib - run: npm run action cordova/test maccatalyst + run: npm run action client/src/cordova/test maccatalyst - name: Build Mac Catalyst Client - run: npm run action cordova/build maccatalyst + run: npm run action client/src/cordova/build maccatalyst - uses: codecov/codecov-action@v3 with: xcode: true - xcode_archive_path: ./output/coverage/apple/maccatalyst/TestResult.xcresult + xcode_archive_path: ./client/src/output/coverage/apple/maccatalyst/TestResult.xcresult flags: unittests, apple, maccatalyst android_debug_build: name: Android Debug Build runs-on: ubuntu-20.04 - timeout-minutes: 10 + timeout-minutes: 20 needs: web_test steps: - name: Checkout @@ -260,7 +260,7 @@ jobs: java-version: 11 - name: Setup Android - run: bash ./tools/build/setup_linux_android.sh + run: bash ./client/tools/build/setup_linux_android.sh - name: Build Android Client - run: npm run action cordova/build android -- --verbose + run: npm run action client/src/cordova/build android -- --verbose diff --git a/.gitignore b/.gitignore index ca0be6c62a..6856c1d84a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +node_modules .idea .vs/ .vscode @@ -5,27 +6,7 @@ *.env *.pdb *.sw? -/node_modules /server_manager/node_modules -/server_manager/do_install_script.ts -/server_manager/gcp_install_script.ts -/build +/server_manager/install_scripts/do_install_script.ts +/server_manager/install_scripts/gcp_install_script.ts /output -/platforms -/plugins -/third_party/Potatso/Pods -/www -coverage -info.txt -keystore.p12 -obj/ -Outline.apk -Outline.apks -packages/ -toc.pb -tools/OutlineService/OutlineService/bin/* -tools/smartdnsblock/bin/* -!tools/OutlineService/OutlineService/bin/*.exe -!tools/smartdnsblock/bin/*.exe -universal.apk -xcuserdata/ diff --git a/Makefile b/Makefile index e7da6e6b70..17a7512923 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,17 @@ -BUILDDIR=$(CURDIR)/output/build -GOBIN=$(CURDIR)/output/bin +BUILDDIR=$(CURDIR)/client/output/build +GOBIN=$(CURDIR)/client/output/bin GOMOBILE=$(GOBIN)/gomobile # Add GOBIN to $PATH so `gomobile` can find `gobind`. GOBIND=env PATH="$(GOBIN):$(PATH)" "$(GOMOBILE)" bind IMPORT_HOST=github.com -IMPORT_PATH=$(IMPORT_HOST)/Jigsaw-Code/outline-client +IMPORT_PATH=$(IMPORT_HOST)/Jigsaw-Code/outline-apps .PHONY: android apple linux windows browser all: android apple linux windows -ROOT_PKG=src/tun2socks +ROOT_PKG=client/src/tun2socks # Don't strip Android debug symbols so we can upload them to crash reporting tools. ANDROID_BUILD_CMD=$(GOBIND) -a -ldflags '-w' -target=android -androidapi 19 -tags android -work diff --git a/README.md b/README.md index 7e427791db..bd2986aed6 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,13 @@ The Outline Client is a cross-platform proxy client for Windows, macOS, iOS, And > [!NOTE] > Test coverage currently only tracks the Apple Libraries and core web view code. -The client's user interface is implemented in [Polymer](https://www.polymer-project.org/) 2.0. Platform support is provided by [Cordova](https://cordova.apache.org/) and [Electron](https://electronjs.org/), with additional native components in this repository. +We have two core apps: [Ouline Manager](./server_manager) and [Ouline Client](./client). To join our Outline Community, [sign up for the IFF Mattermost](https://wiki.digitalrights.community/index.php?title=IFF_Mattermost). #### Requirements for all builds -All builds require [Node](https://nodejs.org/) 18 (lts/hydrogen), and [Go](https://golang.org/) 1.20 installed in addition to other per-platform requirements. +### Outline Client > 💡 NOTE: if you have `nvm` installed, run `nvm use` to switch to the correct node version! @@ -44,7 +44,7 @@ npm install Outline clients share the same web app across all platforms. This code is located in the src/www directory. If you are making changes to the shared web app and do not need to test platform-specific functionality, you can test in a desktop browser by running: ```sh -npm run action src/www/start +npm run action client/src/www/start ``` The latter command will open a browser instance running the app. Browser platform development will use fake servers to test successful and unsuccessful connections. @@ -52,7 +52,7 @@ The latter command will open a browser instance running the app. Browser platfor The app logic is located in [src/www/app](src/www/app). UI components are located in [src/www/ui_components](src/www/ui_components). If you want to work specifically on an individual UI element, try the storybook!: ```sh -npm run action src/www/storybook +npm run action client/src/www/storybook ``` > [!NOTE] @@ -75,7 +75,7 @@ npm run action src/www/storybook Certain actions take configuration flags - but since we're running them through `npm`, you'll have to use the `--` seperator to funnel them through to the underlying process. For example, to set up a MacOS project in release mode, you'd run: ```sh -SENTRY_DSN= npm run action cordova/setup macos -- --buildMode=release --versionName= +SENTRY_DSN= npm run action client/src/cordova/setup macos -- --buildMode=release --versionName= ``` #### Life of a Packet diff --git a/.browserslistrc b/client/.browserslistrc similarity index 100% rename from .browserslistrc rename to client/.browserslistrc diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 0000000000..061ad13c3c --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,19 @@ +/node_modules +/build +/output +/platforms +/plugins +/third_party/Potatso/Pods +/www +coverage +info.txt +keystore.p12 +obj/ +Outline.apk +Outline.apks +packages/ +toc.pb +tools/smartdnsblock/bin/* +!tools/smartdnsblock/bin/*.exe +universal.apk +xcuserdata/ diff --git a/LICENSE b/client/LICENSE similarity index 100% rename from LICENSE rename to client/LICENSE diff --git a/client/README.md b/client/README.md new file mode 100644 index 0000000000..3787ff9d6b --- /dev/null +++ b/client/README.md @@ -0,0 +1,87 @@ +# Outline Client + +![Build and Test](https://github.com/Jigsaw-Code/outline-apps/actions/workflows/build_and_test_debug_client.yml/badge.svg?branch=master) + +> **Test coverage currently only tracks the Apple Libraries and core web view code:** +> +> [![codecov](https://codecov.io/gh/Jigsaw-Code/outline-apps/branch/master/graph/badge.svg?token=gasD8v5tjn)](https://codecov.io/gh/Jigsaw-Code/outline-apps) + +The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is designed for use with the [Outline Server](https://github.com/Jigsaw-Code/outline-server) software, but it is fully compatible with any [Shadowsocks](https://shadowsocks.org/) server. + +The client's user interface is implemented in [Polymer](https://www.polymer-project.org/) 2.0. Platform support is provided by [Cordova](https://cordova.apache.org/) and [Electron](https://electronjs.org/), with additional native components in this repository. + +To join our Outline Community, [sign up for the IFF Mattermost](https://internetfreedomfestival.org/wiki/index.php/IFF_Mattermost). + +## Requirements for all builds + +All builds require [Node](https://nodejs.org/) 18 (lts/hydrogen), and [Go](https://golang.org/) 1.20 installed in addition to other per-platform requirements. + +> 💡 NOTE: if you have `nvm` installed, run `nvm use` to switch to the correct node version! + +After cloning this repo, install all node dependencies: + +```sh +npm install +``` + +## Building the shared web app + +Outline clients share the same web app across all platforms. This code is located in the src/www directory. If you are making changes to the shared web app and do not need to test platform-specific functionality, you can test in a desktop browser by running: + +```sh +npm run action client/src/www/start +``` + +The latter command will open a browser instance running the app. Browser platform development will use fake servers to test successful and unsuccessful connections. + +The app logic is located in [src/www/app](src/www/app). UI components are located in [src/www/ui_components](src/www/ui_components). If you want to work specifically on an individual UI element, try the storybook!: + +```sh +npm run action client/src/www/storybook +``` + +> 💡 NOTE: every script in this repository can be run with `npm run action` - +> for a CLI-like experience, add something like +> +> ```sh +> alias outline="npm run action" +> ``` +> +> _(you can call it whatever you like)_ +> +> to your shell, then try `outline www/start`! + +## Passing configuration flags to actions + +Certain actions take configuration flags - but since we're running them through `npm`, you'll have to use the `--` seperator to funnel them through to the underlying process. For example, to set up a MacOS project in release mode, you'd run: + +```sh +SENTRY_DSN= npm run action client/src/cordova/setup macos -- --buildMode=release --versionName= +``` + +## Life of a Packet + +[How does the Outline Client work?](docs/life_of_a_packet.md) + +## Accepting a server invite + +[Looking for instructions on how to accept a server invite?](docs/invitation_instructions.md) + +## Platform-specific development + +Each platform is handled differently: + +1. [Developing for Apple **(MacOS and iOS)**](src/cordova/apple) +2. [Developing for **Android**](src/cordova/android) +3. [Developing for Electron **(Windows and Linux)**](src/electron) + +## Error reporting + +To enable error reporting through [Sentry](https://sentry.io/) for local builds, run: + +```bash +export SENTRY_DSN=[Sentry development API key] +[platform-specific build command] +``` + +Release builds on CI are configured with a production Sentry API key. diff --git a/config.xml b/client/config.xml similarity index 100% rename from config.xml rename to client/config.xml diff --git a/client/package.json b/client/package.json new file mode 100644 index 0000000000..e4c6055fdb --- /dev/null +++ b/client/package.json @@ -0,0 +1,148 @@ +{ + "name": "outline-client", + "version": "0.0.0", + "comments": { + "version": "The 'version' in this file is just a placeholder for 'npx generate-license-file', please do not change it.", + "codrova-osx": "Version-controlled platform config files at src/cordova/apple/xcode/osx/Outline/config.xml, src/cordova/apple/xcode/osx/osx.json, and src/cordova/apple/xcode/osx/www/cordova_plugins.js as a workaround for https://github.com/apache/cordova-osx/issues/106. Delete these files when the issue is fixed." + }, + "dependencies": { + "@material/mwc-button": "^0.25.3", + "@material/mwc-circular-progress": "^0.27.0", + "@material/mwc-formfield": "^0.25.3", + "@material/mwc-icon-button": "^0.25.3", + "@material/mwc-menu": "^0.25.3", + "@material/mwc-radio": "^0.25.3", + "@material/mwc-select": "^0.25.3", + "@material/mwc-textarea": "^0.25.3", + "@material/mwc-textfield": "^0.25.3", + "@polymer/app-layout": "^3.1.0", + "@polymer/app-localize-behavior": "^3.0.1", + "@polymer/app-route": "^3.0.2", + "@polymer/decorators": "^3.0.0", + "@polymer/font-roboto": "^3.0.2", + "@polymer/iron-icons": "^3.0.1", + "@polymer/iron-iconset-svg": "^3.0.1", + "@polymer/iron-pages": "^3.0.1", + "@polymer/paper-behaviors": "^3.0.1", + "@polymer/paper-button": "^3.0.1", + "@polymer/paper-card": "^3.0.1", + "@polymer/paper-dialog": "^3.0.1", + "@polymer/paper-dropdown-menu": "^3.1.0", + "@polymer/paper-icon-button": "^3.0.2", + "@polymer/paper-input": "^3.2.1", + "@polymer/paper-item": "^3.0.1", + "@polymer/paper-listbox": "^3.0.1", + "@polymer/paper-menu-button": "^3.0.1", + "@polymer/paper-ripple": "^3.0.2", + "@polymer/paper-styles": "^3.0.1", + "@polymer/paper-toast": "^3.0.1", + "@sentry/browser": "^7.31.1", + "@sentry/electron": "^4.2.0", + "@webcomponents/webcomponentsjs": "^2.4.4", + "auto-launch": "^5.0.5", + "browserslist": "^4.20.3", + "cordova-plugin-splashscreen": "^6.0.0", + "cordova-plugin-statusbar": "^2.2.3", + "electron-updater": "^5.0.5", + "lit": "^2.2.2", + "ShadowsocksConfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.1", + "socks": "^1.1.10", + "sudo-prompt": "^9.2.1", + "uuidv4": "^4.0.0", + "web-animations-js": "^2.3.2" + }, + "devDependencies": { + "@babel/core": "^7.12.10", + "@babel/polyfill": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@commitlint/config-conventional": "^16.2.4", + "@jsdevtools/coverage-istanbul-loader": "^3.0.5", + "@open-wc/testing": "^3.2.0", + "@open-wc/testing-karma": "^4.0.9", + "@rollup/plugin-image": "^2.1.1", + "@types/auto-launch": "^5.0.0", + "@types/cordova": "^0.0.34", + "@types/jasmine": "^4.3.6", + "@types/node": "^14.14.7", + "@types/polymer": "^1.2.9", + "@types/uuidv4": "^2.0.0", + "@typescript-eslint/eslint-plugin": "^5.32.0", + "@typescript-eslint/parser": "^5.32.0", + "@web/dev-server": "^0.1.35", + "@web/dev-server-esbuild": "^0.3.3", + "@web/dev-server-storybook": "^0.5.4", + "babel-loader": "^8.2.2", + "chalk": "^5.0.1", + "copy-dir": "^1.3.0", + "copy-webpack-plugin": "^5.1.1", + "cordova-android": "^11.0.0", + "cordova-browser": "~6.0.0", + "cordova-ios": "github:apache/cordova-ios#1a5cd45e2243b239b5045a0ade9d2da1d779b72a", + "cordova-lib": "^11.0.0", + "cordova-osx": "github:apache/cordova-osx", + "cordova-plugin-clipboard": "github:Jigsaw-Code/outline-cordova-plugin-clipboard#v2.0.0", + "cordova-plugin-outline": "file:src/cordova/plugin", + "cordova-webintent": "github:cordova-misc/cordova-webintent#v2.0.0", + "css-loader": "^5.0.1", + "deepmerge": "^4.3.1", + "electron": "19.1.9", + "electron-builder": "^23.6.0", + "electron-icon-maker": "^0.0.5", + "eslint": "^8.15.0", + "eslint-import-resolver-typescript": "^3.4.0", + "eslint-plugin-compat": "^4.0.2", + "eslint-plugin-import": "^2.26.0", + "esm": "^3.2.25", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.1.0", + "husky": "^1.3.1", + "i18n-strings-files": "^2.0.0", + "intl-messageformat": "^9.12.0", + "istanbul": "^0.4.5", + "karma": "^6.4.2", + "karma-chrome-launcher": "^3.1.0", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-jasmine": "^4.0.1", + "karma-webpack": "^5.0.0", + "minimist": "^1.2.6", + "node-fetch": "^3.3.0", + "node-gyp": "^10.0.1", + "postcss": "^7.0.39", + "postcss-rtl": "^1.7.3", + "prettier": "^2.8.0", + "pretty-quick": "^2.0.1", + "puppeteer": "^13.1.2", + "replace-in-file": "^6.3.5", + "rimraf": "^2.7.1", + "rmfr": "^2.0.0", + "style-loader": "^2.0.0", + "ts-loader": "^9.3.1", + "typescript": "^4.7.4", + "url": "^0.11.0", + "webpack": "^5.16.0", + "webpack-cli": "^4.4.0", + "webpack-dev-server": "^4.5.0", + "webpack-merge": "^5.8.0", + "webpack-shell-plugin-next": "^2.1.1", + "xmlbuilder2": "^3.1.1" + }, + "optionalDependencies": { + "ios-deploy": "^1.11.4" + }, + "cordova": { + "plugins": { + "cordova-plugin-outline": {}, + "cordova-plugin-splashscreen": {}, + "cordova-plugin-statusbar": {}, + "cordova-plugin-clipboard": {}, + "cordova-webintent": {} + }, + "platforms": [ + "browser", + "android", + "ios", + "osx" + ] + }, + "main": "output/electron/index.js" +} diff --git a/resources/electron/icon.png b/client/resources/electron/icon.png similarity index 100% rename from resources/electron/icon.png rename to client/resources/electron/icon.png diff --git a/resources/icons/android/icon_hdpi.png b/client/resources/icons/android/icon_hdpi.png similarity index 100% rename from resources/icons/android/icon_hdpi.png rename to client/resources/icons/android/icon_hdpi.png diff --git a/resources/icons/android/icon_mdpi.png b/client/resources/icons/android/icon_mdpi.png similarity index 100% rename from resources/icons/android/icon_mdpi.png rename to client/resources/icons/android/icon_mdpi.png diff --git a/resources/icons/android/icon_xhdpi.png b/client/resources/icons/android/icon_xhdpi.png similarity index 100% rename from resources/icons/android/icon_xhdpi.png rename to client/resources/icons/android/icon_xhdpi.png diff --git a/resources/icons/android/icon_xxhdpi.png b/client/resources/icons/android/icon_xxhdpi.png similarity index 100% rename from resources/icons/android/icon_xxhdpi.png rename to client/resources/icons/android/icon_xxhdpi.png diff --git a/resources/icons/android/icon_xxxhdpi.png b/client/resources/icons/android/icon_xxxhdpi.png similarity index 100% rename from resources/icons/android/icon_xxxhdpi.png rename to client/resources/icons/android/icon_xxxhdpi.png diff --git a/resources/icons/ios/Icon-1024.png b/client/resources/icons/ios/Icon-1024.png similarity index 100% rename from resources/icons/ios/Icon-1024.png rename to client/resources/icons/ios/Icon-1024.png diff --git a/resources/icons/ios/Icon-128.png b/client/resources/icons/ios/Icon-128.png similarity index 100% rename from resources/icons/ios/Icon-128.png rename to client/resources/icons/ios/Icon-128.png diff --git a/resources/icons/ios/Icon-128@2x.png b/client/resources/icons/ios/Icon-128@2x.png similarity index 100% rename from resources/icons/ios/Icon-128@2x.png rename to client/resources/icons/ios/Icon-128@2x.png diff --git a/resources/icons/ios/Icon-16.png b/client/resources/icons/ios/Icon-16.png similarity index 100% rename from resources/icons/ios/Icon-16.png rename to client/resources/icons/ios/Icon-16.png diff --git a/resources/icons/ios/Icon-16@2x.png b/client/resources/icons/ios/Icon-16@2x.png similarity index 100% rename from resources/icons/ios/Icon-16@2x.png rename to client/resources/icons/ios/Icon-16@2x.png diff --git a/resources/icons/ios/Icon-20.png b/client/resources/icons/ios/Icon-20.png similarity index 100% rename from resources/icons/ios/Icon-20.png rename to client/resources/icons/ios/Icon-20.png diff --git a/resources/icons/ios/Icon-20@2x.png b/client/resources/icons/ios/Icon-20@2x.png similarity index 100% rename from resources/icons/ios/Icon-20@2x.png rename to client/resources/icons/ios/Icon-20@2x.png diff --git a/resources/icons/ios/Icon-20@3x.png b/client/resources/icons/ios/Icon-20@3x.png similarity index 100% rename from resources/icons/ios/Icon-20@3x.png rename to client/resources/icons/ios/Icon-20@3x.png diff --git a/resources/icons/ios/Icon-24.png b/client/resources/icons/ios/Icon-24.png similarity index 100% rename from resources/icons/ios/Icon-24.png rename to client/resources/icons/ios/Icon-24.png diff --git a/resources/icons/ios/Icon-24@2x.png b/client/resources/icons/ios/Icon-24@2x.png similarity index 100% rename from resources/icons/ios/Icon-24@2x.png rename to client/resources/icons/ios/Icon-24@2x.png diff --git a/resources/icons/ios/Icon-29.png b/client/resources/icons/ios/Icon-29.png similarity index 100% rename from resources/icons/ios/Icon-29.png rename to client/resources/icons/ios/Icon-29.png diff --git a/resources/icons/ios/Icon-29@2x.png b/client/resources/icons/ios/Icon-29@2x.png similarity index 100% rename from resources/icons/ios/Icon-29@2x.png rename to client/resources/icons/ios/Icon-29@2x.png diff --git a/resources/icons/ios/Icon-29@3x.png b/client/resources/icons/ios/Icon-29@3x.png similarity index 100% rename from resources/icons/ios/Icon-29@3x.png rename to client/resources/icons/ios/Icon-29@3x.png diff --git a/resources/icons/ios/Icon-32@2x.png b/client/resources/icons/ios/Icon-32@2x.png similarity index 100% rename from resources/icons/ios/Icon-32@2x.png rename to client/resources/icons/ios/Icon-32@2x.png diff --git a/resources/icons/ios/Icon-40@2x.png b/client/resources/icons/ios/Icon-40@2x.png similarity index 100% rename from resources/icons/ios/Icon-40@2x.png rename to client/resources/icons/ios/Icon-40@2x.png diff --git a/resources/icons/ios/Icon-40@3x.png b/client/resources/icons/ios/Icon-40@3x.png similarity index 100% rename from resources/icons/ios/Icon-40@3x.png rename to client/resources/icons/ios/Icon-40@3x.png diff --git a/resources/icons/ios/Icon-50.png b/client/resources/icons/ios/Icon-50.png similarity index 100% rename from resources/icons/ios/Icon-50.png rename to client/resources/icons/ios/Icon-50.png diff --git a/resources/icons/ios/Icon-50@2x.png b/client/resources/icons/ios/Icon-50@2x.png similarity index 100% rename from resources/icons/ios/Icon-50@2x.png rename to client/resources/icons/ios/Icon-50@2x.png diff --git a/resources/icons/ios/Icon-512.png b/client/resources/icons/ios/Icon-512.png similarity index 100% rename from resources/icons/ios/Icon-512.png rename to client/resources/icons/ios/Icon-512.png diff --git a/resources/icons/ios/Icon-57.png b/client/resources/icons/ios/Icon-57.png similarity index 100% rename from resources/icons/ios/Icon-57.png rename to client/resources/icons/ios/Icon-57.png diff --git a/resources/icons/ios/Icon-57@2x.png b/client/resources/icons/ios/Icon-57@2x.png similarity index 100% rename from resources/icons/ios/Icon-57@2x.png rename to client/resources/icons/ios/Icon-57@2x.png diff --git a/resources/icons/ios/Icon-60@2x.png b/client/resources/icons/ios/Icon-60@2x.png similarity index 100% rename from resources/icons/ios/Icon-60@2x.png rename to client/resources/icons/ios/Icon-60@2x.png diff --git a/resources/icons/ios/Icon-60@3x.png b/client/resources/icons/ios/Icon-60@3x.png similarity index 100% rename from resources/icons/ios/Icon-60@3x.png rename to client/resources/icons/ios/Icon-60@3x.png diff --git a/resources/icons/ios/Icon-72.png b/client/resources/icons/ios/Icon-72.png similarity index 100% rename from resources/icons/ios/Icon-72.png rename to client/resources/icons/ios/Icon-72.png diff --git a/resources/icons/ios/Icon-72@2x.png b/client/resources/icons/ios/Icon-72@2x.png similarity index 100% rename from resources/icons/ios/Icon-72@2x.png rename to client/resources/icons/ios/Icon-72@2x.png diff --git a/resources/icons/ios/Icon-76.png b/client/resources/icons/ios/Icon-76.png similarity index 100% rename from resources/icons/ios/Icon-76.png rename to client/resources/icons/ios/Icon-76.png diff --git a/resources/icons/ios/Icon-76@2x.png b/client/resources/icons/ios/Icon-76@2x.png similarity index 100% rename from resources/icons/ios/Icon-76@2x.png rename to client/resources/icons/ios/Icon-76@2x.png diff --git a/resources/icons/ios/Icon-83.5@2x.png b/client/resources/icons/ios/Icon-83.5@2x.png similarity index 100% rename from resources/icons/ios/Icon-83.5@2x.png rename to client/resources/icons/ios/Icon-83.5@2x.png diff --git a/resources/icons/ios/icon-256.png b/client/resources/icons/ios/icon-256.png similarity index 100% rename from resources/icons/ios/icon-256.png rename to client/resources/icons/ios/icon-256.png diff --git a/resources/icons/ios/icon-256@2x.png b/client/resources/icons/ios/icon-256@2x.png similarity index 100% rename from resources/icons/ios/icon-256@2x.png rename to client/resources/icons/ios/icon-256@2x.png diff --git a/resources/icons/ios/icon-32.png b/client/resources/icons/ios/icon-32.png similarity index 100% rename from resources/icons/ios/icon-32.png rename to client/resources/icons/ios/icon-32.png diff --git a/resources/icons/ios/icon-512@2x.png b/client/resources/icons/ios/icon-512@2x.png similarity index 100% rename from resources/icons/ios/icon-512@2x.png rename to client/resources/icons/ios/icon-512@2x.png diff --git a/resources/icons/osx/icon-1024.png b/client/resources/icons/osx/icon-1024.png similarity index 100% rename from resources/icons/osx/icon-1024.png rename to client/resources/icons/osx/icon-1024.png diff --git a/resources/icons/osx/icon-128.png b/client/resources/icons/osx/icon-128.png similarity index 100% rename from resources/icons/osx/icon-128.png rename to client/resources/icons/osx/icon-128.png diff --git a/resources/icons/osx/icon-16.png b/client/resources/icons/osx/icon-16.png similarity index 100% rename from resources/icons/osx/icon-16.png rename to client/resources/icons/osx/icon-16.png diff --git a/resources/icons/osx/icon-256.png b/client/resources/icons/osx/icon-256.png similarity index 100% rename from resources/icons/osx/icon-256.png rename to client/resources/icons/osx/icon-256.png diff --git a/resources/icons/osx/icon-32.png b/client/resources/icons/osx/icon-32.png similarity index 100% rename from resources/icons/osx/icon-32.png rename to client/resources/icons/osx/icon-32.png diff --git a/resources/icons/osx/icon-512.png b/client/resources/icons/osx/icon-512.png similarity index 100% rename from resources/icons/osx/icon-512.png rename to client/resources/icons/osx/icon-512.png diff --git a/resources/icons/osx/icon-64.png b/client/resources/icons/osx/icon-64.png similarity index 100% rename from resources/icons/osx/icon-64.png rename to client/resources/icons/osx/icon-64.png diff --git a/resources/original_messages.json b/client/resources/original_messages.json similarity index 100% rename from resources/original_messages.json rename to client/resources/original_messages.json diff --git a/resources/splashscreen/android/splashscreen_hdpi.png b/client/resources/splashscreen/android/splashscreen_hdpi.png similarity index 100% rename from resources/splashscreen/android/splashscreen_hdpi.png rename to client/resources/splashscreen/android/splashscreen_hdpi.png diff --git a/resources/splashscreen/android/splashscreen_xhdpi.png b/client/resources/splashscreen/android/splashscreen_xhdpi.png similarity index 100% rename from resources/splashscreen/android/splashscreen_xhdpi.png rename to client/resources/splashscreen/android/splashscreen_xhdpi.png diff --git a/resources/splashscreen/android/splashscreen_xxhdpi.png b/client/resources/splashscreen/android/splashscreen_xxhdpi.png similarity index 100% rename from resources/splashscreen/android/splashscreen_xxhdpi.png rename to client/resources/splashscreen/android/splashscreen_xxhdpi.png diff --git a/resources/splashscreen/android/splashscreen_xxxhdpi.png b/client/resources/splashscreen/android/splashscreen_xxxhdpi.png similarity index 100% rename from resources/splashscreen/android/splashscreen_xxxhdpi.png rename to client/resources/splashscreen/android/splashscreen_xxxhdpi.png diff --git a/resources/splashscreen/ios/splashscreen@2x~universal~anyany.png b/client/resources/splashscreen/ios/splashscreen@2x~universal~anyany.png similarity index 100% rename from resources/splashscreen/ios/splashscreen@2x~universal~anyany.png rename to client/resources/splashscreen/ios/splashscreen@2x~universal~anyany.png diff --git a/resources/tray/connected.png b/client/resources/tray/connected.png similarity index 100% rename from resources/tray/connected.png rename to client/resources/tray/connected.png diff --git a/resources/tray/disconnected.png b/client/resources/tray/disconnected.png similarity index 100% rename from resources/tray/disconnected.png rename to client/resources/tray/disconnected.png diff --git a/src/build/download_file.mjs b/client/src/build/download_file.mjs similarity index 100% rename from src/build/download_file.mjs rename to client/src/build/download_file.mjs diff --git a/src/build/get_build_parameters.mjs b/client/src/build/get_build_parameters.mjs similarity index 100% rename from src/build/get_build_parameters.mjs rename to client/src/build/get_build_parameters.mjs diff --git a/src/build/get_file_checksum.mjs b/client/src/build/get_file_checksum.mjs similarity index 100% rename from src/build/get_file_checksum.mjs rename to client/src/build/get_file_checksum.mjs diff --git a/src/build/get_root_dir.mjs b/client/src/build/get_root_dir.mjs similarity index 88% rename from src/build/get_root_dir.mjs rename to client/src/build/get_root_dir.mjs index 646edc8ba2..f0e0e10bce 100644 --- a/src/build/get_root_dir.mjs +++ b/client/src/build/get_root_dir.mjs @@ -16,8 +16,7 @@ import path from 'path'; import url from 'url'; // WARNING: if you move this file, you MUST update this file path -const ROOT_DIR = path.resolve( - path.dirname(url.fileURLToPath(import.meta.url)), '..', '..'); +const ROOT_DIR = path.resolve(path.dirname(url.fileURLToPath(import.meta.url)), '..', '..'); export function getRootDir() { return ROOT_DIR; diff --git a/src/build/get_webpack_build_mode.mjs b/client/src/build/get_webpack_build_mode.mjs similarity index 100% rename from src/build/get_webpack_build_mode.mjs rename to client/src/build/get_webpack_build_mode.mjs diff --git a/src/build/run_action.mjs b/client/src/build/run_action.mjs similarity index 91% rename from src/build/run_action.mjs rename to client/src/build/run_action.mjs index 8189833c28..c84da3b121 100644 --- a/src/build/run_action.mjs +++ b/client/src/build/run_action.mjs @@ -27,11 +27,11 @@ import {spawnStream} from './spawn_stream.mjs'; const resolveActionPath = async actionPath => { if (!actionPath) return ''; - if (actionPath in JSON.parse(await readFile(path.join(getRootDir(), 'package.json'))).scripts) { + if (actionPath in JSON.parse(await readFile(path.resolve(getRootDir(), '../package.json'))).scripts) { return actionPath; } - const roots = [getRootDir(), path.join(getRootDir(), 'src')]; + const roots = [getRootDir(), path.resolve(getRootDir(), '..')]; const extensions = ['sh', 'mjs']; for (const root of roots) { @@ -111,7 +111,12 @@ export async function runAction(actionPath, ...parameters) { } async function main() { - process.env.ROOT_DIR ??= getRootDir(); + // TODO(daniellacosse): Hoist the build directory to the root of the project. + if (process.argv[2].startsWith('server_manager')) { + process.env.ROOT_DIR ??= path.resolve(getRootDir(), '..'); + } else { + process.env.ROOT_DIR ??= getRootDir(); + } process.env.OUTPUT_DIR ??= path.join(process.env.ROOT_DIR, 'output'); process.env.BUILD_DIR ??= path.join(process.env.OUTPUT_DIR, 'build'); process.env.COVERAGE_DIR ??= path.join(process.env.OUTPUT_DIR, 'coverage'); diff --git a/src/build/run_webpack.mjs b/client/src/build/run_webpack.mjs similarity index 100% rename from src/build/run_webpack.mjs rename to client/src/build/run_webpack.mjs diff --git a/src/build/spawn_stream.mjs b/client/src/build/spawn_stream.mjs similarity index 100% rename from src/build/spawn_stream.mjs rename to client/src/build/spawn_stream.mjs diff --git a/src/cordova/android/OutlineAndroidLib/.gitignore b/client/src/cordova/android/OutlineAndroidLib/.gitignore similarity index 100% rename from src/cordova/android/OutlineAndroidLib/.gitignore rename to client/src/cordova/android/OutlineAndroidLib/.gitignore diff --git a/src/cordova/android/OutlineAndroidLib/build.gradle b/client/src/cordova/android/OutlineAndroidLib/build.gradle similarity index 100% rename from src/cordova/android/OutlineAndroidLib/build.gradle rename to client/src/cordova/android/OutlineAndroidLib/build.gradle diff --git a/src/cordova/android/OutlineAndroidLib/gradle.properties b/client/src/cordova/android/OutlineAndroidLib/gradle.properties similarity index 100% rename from src/cordova/android/OutlineAndroidLib/gradle.properties rename to client/src/cordova/android/OutlineAndroidLib/gradle.properties diff --git a/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar b/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar rename to client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar diff --git a/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties b/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties rename to client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties diff --git a/src/cordova/android/OutlineAndroidLib/gradlew b/client/src/cordova/android/OutlineAndroidLib/gradlew similarity index 100% rename from src/cordova/android/OutlineAndroidLib/gradlew rename to client/src/cordova/android/OutlineAndroidLib/gradlew diff --git a/src/cordova/android/OutlineAndroidLib/gradlew.bat b/client/src/cordova/android/OutlineAndroidLib/gradlew.bat similarity index 100% rename from src/cordova/android/OutlineAndroidLib/gradlew.bat rename to client/src/cordova/android/OutlineAndroidLib/gradlew.bat diff --git a/src/cordova/android/OutlineAndroidLib/outline/.gitignore b/client/src/cordova/android/OutlineAndroidLib/outline/.gitignore similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/.gitignore rename to client/src/cordova/android/OutlineAndroidLib/outline/.gitignore diff --git a/src/cordova/android/OutlineAndroidLib/outline/build.gradle b/client/src/cordova/android/OutlineAndroidLib/outline/build.gradle similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/build.gradle rename to client/src/cordova/android/OutlineAndroidLib/outline/build.gradle diff --git a/src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro b/client/src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro rename to client/src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro diff --git a/src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro b/client/src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro rename to client/src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java diff --git a/src/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java b/client/src/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java similarity index 100% rename from src/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java rename to client/src/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java diff --git a/src/cordova/android/OutlineAndroidLib/settings.gradle b/client/src/cordova/android/OutlineAndroidLib/settings.gradle similarity index 100% rename from src/cordova/android/OutlineAndroidLib/settings.gradle rename to client/src/cordova/android/OutlineAndroidLib/settings.gradle diff --git a/src/cordova/android/README.md b/client/src/cordova/android/README.md similarity index 100% rename from src/cordova/android/README.md rename to client/src/cordova/android/README.md diff --git a/src/cordova/android/import_messages.mjs b/client/src/cordova/android/import_messages.mjs similarity index 94% rename from src/cordova/android/import_messages.mjs rename to client/src/cordova/android/import_messages.mjs index 14faab98f4..5315dc04a4 100644 --- a/src/cordova/android/import_messages.mjs +++ b/client/src/cordova/android/import_messages.mjs @@ -22,12 +22,7 @@ const XML_STRING_ID_PROPERTY = '@name'; const XML_TEXT_CONTENT = '#'; function escapeXmlCharacters(str) { - return str - .replace(/"/g, '\\"') - .replace(/'/g, "\\'") - .replace(//g, '\\>;') - .replace(/&/g, '\\&'); + return str.replace(/"/g, '\\"').replace(/'/g, "\\'").replace(//g, '\\>;').replace(/&/g, '\\&').replace(/\//g, "\\\\"); } function getNativeLocale(locale) { diff --git a/src/cordova/apple/OutlineAppleLib/.gitignore b/client/src/cordova/apple/OutlineAppleLib/.gitignore similarity index 100% rename from src/cordova/apple/OutlineAppleLib/.gitignore rename to client/src/cordova/apple/OutlineAppleLib/.gitignore diff --git a/src/cordova/apple/OutlineAppleLib/Package.swift b/client/src/cordova/apple/OutlineAppleLib/Package.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Package.swift rename to client/src/cordova/apple/OutlineAppleLib/Package.swift diff --git a/src/cordova/apple/OutlineAppleLib/README.md b/client/src/cordova/apple/OutlineAppleLib/README.md similarity index 100% rename from src/cordova/apple/OutlineAppleLib/README.md rename to client/src/cordova/apple/OutlineAppleLib/README.md diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift b/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift rename to client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift diff --git a/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m b/client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m rename to client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m diff --git a/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h b/client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h rename to client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h diff --git a/src/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift b/client/src/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift similarity index 100% rename from src/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift rename to client/src/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift diff --git a/src/cordova/apple/README.md b/client/src/cordova/apple/README.md similarity index 98% rename from src/cordova/apple/README.md rename to client/src/cordova/apple/README.md index dee5592a7a..75b65d56b8 100644 --- a/src/cordova/apple/README.md +++ b/client/src/cordova/apple/README.md @@ -94,7 +94,7 @@ log stream --info --predicate 'senderImagePath contains "Outline.app"' In the Console app, select the **Action > Include Info Messages** manu, and set the filter to "Library Path" "contains" "Outline.app": -image +image > 💡 Tip: You can **save searches** in the MacOS Console app. @@ -126,7 +126,7 @@ For more info, see [Debug, Profile, and Test Your App Extension](https://develop Sometimes the app will refuse to connect, with a `VpnStartFailure` error: -image +image If that happens, there are some things you can try. diff --git a/src/cordova/apple/import_messages.mjs b/client/src/cordova/apple/import_messages.mjs similarity index 100% rename from src/cordova/apple/import_messages.mjs rename to client/src/cordova/apple/import_messages.mjs diff --git a/src/cordova/apple/ios.xcworkspace/contents.xcworkspacedata b/client/src/cordova/apple/ios.xcworkspace/contents.xcworkspacedata similarity index 100% rename from src/cordova/apple/ios.xcworkspace/contents.xcworkspacedata rename to client/src/cordova/apple/ios.xcworkspace/contents.xcworkspacedata diff --git a/src/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/client/src/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from src/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to client/src/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/src/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/client/src/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from src/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to client/src/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/src/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved b/client/src/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from src/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to client/src/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/src/cordova/apple/macos.xcworkspace/contents.xcworkspacedata b/client/src/cordova/apple/macos.xcworkspace/contents.xcworkspacedata similarity index 100% rename from src/cordova/apple/macos.xcworkspace/contents.xcworkspacedata rename to client/src/cordova/apple/macos.xcworkspace/contents.xcworkspacedata diff --git a/src/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/client/src/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from src/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to client/src/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/src/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/client/src/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from src/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to client/src/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/src/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved b/client/src/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from src/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to client/src/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/src/cordova/apple/scripts/xconfig.sh b/client/src/cordova/apple/scripts/xconfig.sh similarity index 100% rename from src/cordova/apple/scripts/xconfig.sh rename to client/src/cordova/apple/scripts/xconfig.sh diff --git a/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj b/client/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj similarity index 100% rename from src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj rename to client/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj diff --git a/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme b/client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme similarity index 100% rename from src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme rename to client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme diff --git a/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme b/client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme similarity index 100% rename from src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme rename to client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/Contents.json b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/Contents.json rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128@2x.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128@2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128@2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128@2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16@2x.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16@2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16@2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16@2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256@2x.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256@2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256@2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256@2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32@2x.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32@2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32@2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32@2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png diff --git a/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512@2x.png b/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512@2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512@2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512@2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings diff --git a/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift rename to client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift diff --git a/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist b/client/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Outline-Info.plist rename to client/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist diff --git a/src/cordova/apple/xcode/ios/Outline/Outline.entitlements b/client/src/cordova/apple/xcode/ios/Outline/Outline.entitlements similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/Outline.entitlements rename to client/src/cordova/apple/xcode/ios/Outline/Outline.entitlements diff --git a/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist b/client/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist rename to client/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist diff --git a/src/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements b/client/src/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements similarity index 100% rename from src/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements rename to client/src/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements diff --git a/src/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements b/client/src/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements similarity index 100% rename from src/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements rename to client/src/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements diff --git a/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj b/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj similarity index 100% rename from src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj rename to client/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj diff --git a/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme b/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme similarity index 100% rename from src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme rename to client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme diff --git a/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme b/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme similarity index 100% rename from src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme rename to client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme diff --git a/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme b/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme similarity index 100% rename from src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme rename to client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme diff --git a/src/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m b/client/src/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m rename to client/src/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m diff --git a/src/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift b/client/src/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift rename to client/src/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift diff --git a/src/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift b/client/src/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift rename to client/src/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift diff --git a/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json b/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json rename to client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json diff --git a/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png b/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png rename to client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png diff --git a/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json b/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json rename to client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json diff --git a/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png b/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png rename to client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png diff --git a/src/cordova/apple/xcode/macos/Outline/MainViewController.xib b/client/src/cordova/apple/xcode/macos/Outline/MainViewController.xib similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/MainViewController.xib rename to client/src/cordova/apple/xcode/macos/Outline/MainViewController.xib diff --git a/src/cordova/apple/xcode/macos/Outline/Outline-Info.plist b/client/src/cordova/apple/xcode/macos/Outline/Outline-Info.plist similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Outline-Info.plist rename to client/src/cordova/apple/xcode/macos/Outline/Outline-Info.plist diff --git a/src/cordova/apple/xcode/macos/Outline/Outline.entitlements b/client/src/cordova/apple/xcode/macos/Outline/Outline.entitlements similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/Outline.entitlements rename to client/src/cordova/apple/xcode/macos/Outline/Outline.entitlements diff --git a/src/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist b/client/src/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist rename to client/src/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist diff --git a/src/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements b/client/src/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements rename to client/src/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements diff --git a/src/cordova/apple/xcode/macos/Outline/config.xml b/client/src/cordova/apple/xcode/macos/Outline/config.xml similarity index 100% rename from src/cordova/apple/xcode/macos/Outline/config.xml rename to client/src/cordova/apple/xcode/macos/Outline/config.xml diff --git a/src/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift b/client/src/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift similarity index 100% rename from src/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift rename to client/src/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift diff --git a/src/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard b/client/src/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard similarity index 100% rename from src/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard rename to client/src/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard diff --git a/src/cordova/apple/xcode/macos/OutlineLauncher/Info.plist b/client/src/cordova/apple/xcode/macos/OutlineLauncher/Info.plist similarity index 100% rename from src/cordova/apple/xcode/macos/OutlineLauncher/Info.plist rename to client/src/cordova/apple/xcode/macos/OutlineLauncher/Info.plist diff --git a/src/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements b/client/src/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements similarity index 100% rename from src/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements rename to client/src/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements diff --git a/src/cordova/apple/xcode/macos/osx.json b/client/src/cordova/apple/xcode/macos/osx.json similarity index 100% rename from src/cordova/apple/xcode/macos/osx.json rename to client/src/cordova/apple/xcode/macos/osx.json diff --git a/src/cordova/apple/xcode/macos/www/cordova_plugins.js b/client/src/cordova/apple/xcode/macos/www/cordova_plugins.js similarity index 100% rename from src/cordova/apple/xcode/macos/www/cordova_plugins.js rename to client/src/cordova/apple/xcode/macos/www/cordova_plugins.js diff --git a/src/cordova/build.action.mjs b/client/src/cordova/build.action.mjs similarity index 95% rename from src/cordova/build.action.mjs rename to client/src/cordova/build.action.mjs index bab23166ba..d4b12e345d 100644 --- a/src/cordova/build.action.mjs +++ b/client/src/cordova/build.action.mjs @@ -33,14 +33,17 @@ import {downloadHttpsFile} from '../build/download_file.mjs'; export async function main(...parameters) { const {platform, buildMode, verbose} = getBuildParameters(parameters); - await runAction('www/build', ...parameters); - await runAction('tun2socks/build', ...parameters); - await runAction('cordova/setup', ...parameters); + await runAction('client/src/www/build', ...parameters); + await runAction('client/src/tun2socks/build', ...parameters); + await runAction('client/src/cordova/setup', ...parameters); if (verbose) { cordova.on('verbose', message => console.debug(`[cordova:verbose] ${message}`)); } + // this is so cordova doesn't complain about not being in a cordova project + process.env.PWD = getRootDir(); + switch (platform + buildMode) { case 'android' + 'debug': return androidDebug(verbose); diff --git a/src/cordova/import_messages.action.mjs b/client/src/cordova/import_messages.action.mjs similarity index 100% rename from src/cordova/import_messages.action.mjs rename to client/src/cordova/import_messages.action.mjs diff --git a/src/cordova/plugin/README.md b/client/src/cordova/plugin/README.md similarity index 83% rename from src/cordova/plugin/README.md rename to client/src/cordova/plugin/README.md index 0936fc13a6..a79b6eb340 100644 --- a/src/cordova/plugin/README.md +++ b/client/src/cordova/plugin/README.md @@ -22,6 +22,6 @@ Native platforms consume [outline-go-tun2socks](https://github.com/Jigsaw-Code/o We use [Swift Packages](https://developer.apple.com/documentation/xcode/swift-packages) for third party dependencies: sentry-cocoa and CocoaLumberjack. -To upgrade the Swift Package dependencies, update the `version` field for the corresponding package under the `XCRemoteSwiftPackageReference` section in the Outline.pbxproj file for [macOS](https://github.com/Jigsaw-Code/outline-client/blob/master/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj) or [iOS](https://github.com/Jigsaw-Code/outline-client/blob/master/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj). +To upgrade the Swift Package dependencies, update the `version` field for the corresponding package under the `XCRemoteSwiftPackageReference` section in the Outline.pbxproj file for [macOS](https://github.com/Jigsaw-Code/outline-apps/blob/master/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj) or [iOS](https://github.com/Jigsaw-Code/outline-apps/blob/master/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj). Alternatively, open the xcworkspace file for the curresponding OS, and update the packages via the XCode UI. diff --git a/src/cordova/plugin/android/java/build-extras.gradle b/client/src/cordova/plugin/android/java/build-extras.gradle similarity index 100% rename from src/cordova/plugin/android/java/build-extras.gradle rename to client/src/cordova/plugin/android/java/build-extras.gradle diff --git a/src/cordova/plugin/android/java/org/outline/OutlinePlugin.java b/client/src/cordova/plugin/android/java/org/outline/OutlinePlugin.java similarity index 100% rename from src/cordova/plugin/android/java/org/outline/OutlinePlugin.java rename to client/src/cordova/plugin/android/java/org/outline/OutlinePlugin.java diff --git a/src/cordova/plugin/android/resources/bypass_subnets.xml b/client/src/cordova/plugin/android/resources/bypass_subnets.xml similarity index 100% rename from src/cordova/plugin/android/resources/bypass_subnets.xml rename to client/src/cordova/plugin/android/resources/bypass_subnets.xml diff --git a/src/cordova/plugin/android/resources/small_icon.png b/client/src/cordova/plugin/android/resources/small_icon.png similarity index 100% rename from src/cordova/plugin/android/resources/small_icon.png rename to client/src/cordova/plugin/android/resources/small_icon.png diff --git a/src/cordova/plugin/android/resources/strings/values-af/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-af/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-af/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-af/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-am/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-am/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-am/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-am/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ar/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ar/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ar/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ar/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-az/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-az/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-az/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-az/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-bg/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-bg/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-bg/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-bg/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-bn/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-bn/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-bn/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-bn/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-bs/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-bs/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-bs/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-bs/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ca/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ca/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ca/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ca/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-cs/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-cs/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-cs/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-cs/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-da/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-da/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-da/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-da/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-de/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-de/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-de/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-de/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-el/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-el/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-el/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-el/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-en/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-en/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-en/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-en/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-es/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-es/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-es/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-es/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-et/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-et/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-et/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-et/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-fa/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-fa/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-fa/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-fa/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-fi/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-fi/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-fi/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-fi/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-fil/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-fil/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-fil/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-fil/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-fr/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-fr/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-fr/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-fr/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-he/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-he/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-he/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-he/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-hi/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-hi/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-hi/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-hi/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-hr/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-hr/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-hr/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-hr/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-hu/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-hu/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-hu/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-hu/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-hy/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-hy/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-hy/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-hy/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-id/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-id/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-id/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-id/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-is/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-is/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-is/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-is/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-it/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-it/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-it/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-it/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ja/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ja/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ja/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ja/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ka/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ka/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ka/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ka/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-kk/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-kk/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-kk/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-kk/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-km/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-km/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-km/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-km/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ko/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ko/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ko/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ko/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-lo/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-lo/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-lo/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-lo/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-lt/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-lt/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-lt/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-lt/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-lv/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-lv/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-lv/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-lv/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-mk/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-mk/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-mk/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-mk/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-mn/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-mn/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-mn/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-mn/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-mr/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-mr/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-mr/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-mr/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ms/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ms/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ms/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ms/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-my/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-my/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-my/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-my/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ne/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ne/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ne/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ne/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-nl/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-nl/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-nl/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-nl/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-no/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-no/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-no/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-no/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-pl/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-pl/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-pl/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-pl/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ro/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ro/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ro/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ro/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ru/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ru/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ru/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ru/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-si/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-si/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-si/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-si/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-sk/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-sk/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-sk/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-sk/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-sl/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-sl/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-sl/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-sl/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-sq/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-sq/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-sq/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-sq/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-sr/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-sr/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-sr/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-sr/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-sv/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-sv/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-sv/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-sv/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-sw/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-sw/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-sw/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-sw/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ta/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ta/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ta/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ta/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-th/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-th/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-th/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-th/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-tr/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-tr/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-tr/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-tr/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-uk/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-uk/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-uk/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-uk/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-ur/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-ur/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-ur/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-ur/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-vi/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-vi/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-vi/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-vi/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml diff --git a/src/cordova/plugin/android/resources/strings/values/strings.xml b/client/src/cordova/plugin/android/resources/strings/values/strings.xml similarity index 100% rename from src/cordova/plugin/android/resources/strings/values/strings.xml rename to client/src/cordova/plugin/android/resources/strings/values/strings.xml diff --git a/src/cordova/plugin/android/scripts/copy_third_party.js b/client/src/cordova/plugin/android/scripts/copy_third_party.js similarity index 100% rename from src/cordova/plugin/android/scripts/copy_third_party.js rename to client/src/cordova/plugin/android/scripts/copy_third_party.js diff --git a/src/cordova/plugin/apple/src/OutlinePlugin.swift b/client/src/cordova/plugin/apple/src/OutlinePlugin.swift similarity index 100% rename from src/cordova/plugin/apple/src/OutlinePlugin.swift rename to client/src/cordova/plugin/apple/src/OutlinePlugin.swift diff --git a/src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h b/client/src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h similarity index 100% rename from src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h rename to client/src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h diff --git a/src/cordova/plugin/package.json b/client/src/cordova/plugin/package.json similarity index 100% rename from src/cordova/plugin/package.json rename to client/src/cordova/plugin/package.json diff --git a/src/cordova/plugin/plugin.xml b/client/src/cordova/plugin/plugin.xml similarity index 100% rename from src/cordova/plugin/plugin.xml rename to client/src/cordova/plugin/plugin.xml diff --git a/src/cordova/setup.action.mjs b/client/src/cordova/setup.action.mjs similarity index 96% rename from src/cordova/setup.action.mjs rename to client/src/cordova/setup.action.mjs index b12713fbe2..bd062e32ef 100644 --- a/src/cordova/setup.action.mjs +++ b/client/src/cordova/setup.action.mjs @@ -39,8 +39,8 @@ const WORKING_CORDOVA_OSX_COMMIT = '07e62a53aa6a8a828fd988bc9e884c38c3495a67'; export async function main(...parameters) { const {platform, buildMode, verbose, buildNumber, versionName} = getBuildParameters(parameters); - await runAction('www/build', ...parameters); - await runAction('tun2socks/build', ...parameters); + await runAction('client/src/www/build', ...parameters); + await runAction('client/src/tun2socks/build', ...parameters); await rmfr(path.resolve(getRootDir(), 'platforms')); await rmfr(path.resolve(getRootDir(), 'plugins')); @@ -49,6 +49,9 @@ export async function main(...parameters) { cordova.on('verbose', message => console.debug(`[cordova:verbose] ${message}`)); } + // this is so cordova doesn't complain about not being in a cordova project + process.env.PWD = getRootDir(); + switch (platform + buildMode) { case 'android' + 'debug': return androidDebug(verbose); diff --git a/src/cordova/test.action.mjs b/client/src/cordova/test.action.mjs similarity index 100% rename from src/cordova/test.action.mjs rename to client/src/cordova/test.action.mjs diff --git a/src/infrastructure/custom_error.ts b/client/src/infrastructure/custom_error.ts similarity index 100% rename from src/infrastructure/custom_error.ts rename to client/src/infrastructure/custom_error.ts diff --git a/src/infrastructure/electron/app_paths.ts b/client/src/infrastructure/electron/app_paths.ts similarity index 100% rename from src/infrastructure/electron/app_paths.ts rename to client/src/infrastructure/electron/app_paths.ts diff --git a/src/infrastructure/i18n.ts b/client/src/infrastructure/i18n.ts similarity index 100% rename from src/infrastructure/i18n.ts rename to client/src/infrastructure/i18n.ts diff --git a/src/infrastructure/memory_storage.ts b/client/src/infrastructure/memory_storage.ts similarity index 100% rename from src/infrastructure/memory_storage.ts rename to client/src/infrastructure/memory_storage.ts diff --git a/src/infrastructure/timeout_promise.ts b/client/src/infrastructure/timeout_promise.ts similarity index 100% rename from src/infrastructure/timeout_promise.ts rename to client/src/infrastructure/timeout_promise.ts diff --git a/src/tun2socks/build.action.mjs b/client/src/tun2socks/build.action.mjs similarity index 95% rename from src/tun2socks/build.action.mjs rename to client/src/tun2socks/build.action.mjs index c91c9889e6..f89b5019b1 100644 --- a/src/tun2socks/build.action.mjs +++ b/client/src/tun2socks/build.action.mjs @@ -37,7 +37,7 @@ export async function main(...parameters) { 'build', '-o', `output/build/${targetPlatform}/tun2socks`, - 'github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/electron' + 'github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/electron' ); } diff --git a/src/tun2socks/outline/client.go b/client/src/tun2socks/outline/client.go similarity index 100% rename from src/tun2socks/outline/client.go rename to client/src/tun2socks/outline/client.go diff --git a/src/tun2socks/outline/connectivity/connectivity.go b/client/src/tun2socks/outline/connectivity/connectivity.go similarity index 96% rename from src/tun2socks/outline/connectivity/connectivity.go rename to client/src/tun2socks/outline/connectivity/connectivity.go index 34c5ded2eb..b6e9175bec 100644 --- a/src/tun2socks/outline/connectivity/connectivity.go +++ b/client/src/tun2socks/outline/connectivity/connectivity.go @@ -21,8 +21,8 @@ import ( "net/http" "time" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/neterrors" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/neterrors" "github.com/Jigsaw-Code/outline-sdk/transport" ) @@ -119,7 +119,7 @@ func CheckTCPConnectivityWithHTTP(dialer transport.StreamDialer, targetURL strin if !hasPort(targetAddr) { targetAddr = net.JoinHostPort(targetAddr, "80") } - conn, err := dialer.Dial(ctx, targetAddr) + conn, err := dialer.DialStream(ctx, targetAddr) if err != nil { return &reachabilityError{err} } diff --git a/src/tun2socks/outline/connectivity/connectivity_test.go b/client/src/tun2socks/outline/connectivity/connectivity_test.go similarity index 100% rename from src/tun2socks/outline/connectivity/connectivity_test.go rename to client/src/tun2socks/outline/connectivity/connectivity_test.go diff --git a/src/tun2socks/outline/electron/main.go b/client/src/tun2socks/outline/electron/main.go similarity index 95% rename from src/tun2socks/outline/electron/main.go rename to client/src/tun2socks/outline/electron/main.go index 42bdae3d90..e2864c46fc 100644 --- a/src/tun2socks/outline/electron/main.go +++ b/client/src/tun2socks/outline/electron/main.go @@ -24,10 +24,10 @@ import ( "syscall" "time" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/internal/utf8" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/neterrors" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/shadowsocks" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/tun2socks" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/internal/utf8" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/neterrors" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/shadowsocks" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/tun2socks" "github.com/eycorsican/go-tun2socks/common/log" _ "github.com/eycorsican/go-tun2socks/common/log/simple" // Register a simple logger. "github.com/eycorsican/go-tun2socks/core" diff --git a/src/tun2socks/outline/internal/utf8/utf8.go b/client/src/tun2socks/outline/internal/utf8/utf8.go similarity index 100% rename from src/tun2socks/outline/internal/utf8/utf8.go rename to client/src/tun2socks/outline/internal/utf8/utf8.go diff --git a/src/tun2socks/outline/internal/utf8/utf8_test.go b/client/src/tun2socks/outline/internal/utf8/utf8_test.go similarity index 100% rename from src/tun2socks/outline/internal/utf8/utf8_test.go rename to client/src/tun2socks/outline/internal/utf8/utf8_test.go diff --git a/src/tun2socks/outline/neterrors/neterrors.go b/client/src/tun2socks/outline/neterrors/neterrors.go similarity index 95% rename from src/tun2socks/outline/neterrors/neterrors.go rename to client/src/tun2socks/outline/neterrors/neterrors.go index a95c9ffbfa..3ebebbc248 100644 --- a/src/tun2socks/outline/neterrors/neterrors.go +++ b/client/src/tun2socks/outline/neterrors/neterrors.go @@ -24,7 +24,7 @@ func (e Error) Number() int { return int(e) } -// Outline error codes. Must be kept in sync with definitions in https://github.com/Jigsaw-Code/outline-client/blob/master/src/www/model/errors.ts +// Outline error codes. Must be kept in sync with definitions in https://github.com/Jigsaw-Code/outline-apps/blob/master/src/www/model/errors.ts const ( NoError Error = 0 Unexpected Error = 1 diff --git a/src/tun2socks/outline/shadowsocks/client.go b/client/src/tun2socks/outline/shadowsocks/client.go similarity index 95% rename from src/tun2socks/outline/shadowsocks/client.go rename to client/src/tun2socks/outline/shadowsocks/client.go index a96b004b71..bacbc2c82b 100644 --- a/src/tun2socks/outline/shadowsocks/client.go +++ b/client/src/tun2socks/outline/shadowsocks/client.go @@ -25,9 +25,9 @@ import ( "strconv" "time" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/connectivity" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/internal/utf8" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/connectivity" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/internal/utf8" "github.com/Jigsaw-Code/outline-sdk/transport" "github.com/Jigsaw-Code/outline-sdk/transport/shadowsocks" "github.com/eycorsican/go-tun2socks/common/log" diff --git a/src/tun2socks/outline/shadowsocks/client_test.go b/client/src/tun2socks/outline/shadowsocks/client_test.go similarity index 100% rename from src/tun2socks/outline/shadowsocks/client_test.go rename to client/src/tun2socks/outline/shadowsocks/client_test.go diff --git a/src/tun2socks/outline/shadowsocks/config.go b/client/src/tun2socks/outline/shadowsocks/config.go similarity index 100% rename from src/tun2socks/outline/shadowsocks/config.go rename to client/src/tun2socks/outline/shadowsocks/config.go diff --git a/src/tun2socks/outline/shadowsocks/config_test.go b/client/src/tun2socks/outline/shadowsocks/config_test.go similarity index 100% rename from src/tun2socks/outline/shadowsocks/config_test.go rename to client/src/tun2socks/outline/shadowsocks/config_test.go diff --git a/src/tun2socks/outline/tun2socks/tcp.go b/client/src/tun2socks/outline/tun2socks/tcp.go similarity index 96% rename from src/tun2socks/outline/tun2socks/tcp.go rename to client/src/tun2socks/outline/tun2socks/tcp.go index 1bb6bd2c88..b1b92ac787 100644 --- a/src/tun2socks/outline/tun2socks/tcp.go +++ b/client/src/tun2socks/outline/tun2socks/tcp.go @@ -33,7 +33,7 @@ func NewTCPHandler(client transport.StreamDialer) core.TCPConnHandler { } func (h *tcpHandler) Handle(conn net.Conn, target *net.TCPAddr) error { - proxyConn, err := h.dialer.Dial(context.Background(), target.String()) + proxyConn, err := h.dialer.DialStream(context.Background(), target.String()) if err != nil { return err } diff --git a/src/tun2socks/outline/tun2socks/tunnel.go b/client/src/tun2socks/outline/tun2socks/tunnel.go similarity index 95% rename from src/tun2socks/outline/tun2socks/tunnel.go rename to client/src/tun2socks/outline/tun2socks/tunnel.go index 5944373ab8..17fc0d522b 100644 --- a/src/tun2socks/outline/tun2socks/tunnel.go +++ b/client/src/tun2socks/outline/tun2socks/tunnel.go @@ -25,8 +25,8 @@ import ( "github.com/Jigsaw-Code/outline-sdk/transport" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/connectivity" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/tunnel" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/connectivity" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/tunnel" ) // Tunnel represents a tunnel from a TUN device to a server. diff --git a/src/tun2socks/outline/tun2socks/tunnel_android.go b/client/src/tun2socks/outline/tun2socks/tunnel_android.go similarity index 92% rename from src/tun2socks/outline/tun2socks/tunnel_android.go rename to client/src/tun2socks/outline/tun2socks/tunnel_android.go index c9792fc858..f1ede839f4 100644 --- a/src/tun2socks/outline/tun2socks/tunnel_android.go +++ b/client/src/tun2socks/outline/tun2socks/tunnel_android.go @@ -17,8 +17,8 @@ package tun2socks import ( "runtime/debug" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/shadowsocks" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/tunnel" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/shadowsocks" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/tunnel" "github.com/eycorsican/go-tun2socks/common/log" ) diff --git a/src/tun2socks/outline/tun2socks/tunnel_darwin.go b/client/src/tun2socks/outline/tun2socks/tunnel_darwin.go similarity index 96% rename from src/tun2socks/outline/tun2socks/tunnel_darwin.go rename to client/src/tun2socks/outline/tun2socks/tunnel_darwin.go index 2caf3d06a8..a0ab3b3cad 100644 --- a/src/tun2socks/outline/tun2socks/tunnel_darwin.go +++ b/client/src/tun2socks/outline/tun2socks/tunnel_darwin.go @@ -20,7 +20,7 @@ import ( "runtime/debug" "time" - "github.com/Jigsaw-Code/outline-client/src/tun2socks/outline/shadowsocks" + "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/shadowsocks" ) // TunWriter is an interface that allows for outputting packets to the TUN (VPN). diff --git a/src/tun2socks/outline/tun2socks/udp.go b/client/src/tun2socks/outline/tun2socks/udp.go similarity index 100% rename from src/tun2socks/outline/tun2socks/udp.go rename to client/src/tun2socks/outline/tun2socks/udp.go diff --git a/src/tun2socks/tunnel/tun.go b/client/src/tun2socks/tunnel/tun.go similarity index 100% rename from src/tun2socks/tunnel/tun.go rename to client/src/tun2socks/tunnel/tun.go diff --git a/src/tun2socks/tunnel/tun_android.go b/client/src/tun2socks/tunnel/tun_android.go similarity index 100% rename from src/tun2socks/tunnel/tun_android.go rename to client/src/tun2socks/tunnel/tun_android.go diff --git a/src/tun2socks/tunnel/tunnel.go b/client/src/tun2socks/tunnel/tunnel.go similarity index 100% rename from src/tun2socks/tunnel/tunnel.go rename to client/src/tun2socks/tunnel/tunnel.go diff --git a/src/www/.storybook/main.js b/client/src/www/.storybook/main.js similarity index 100% rename from src/www/.storybook/main.js rename to client/src/www/.storybook/main.js diff --git a/src/www/.storybook/preview-head.html b/client/src/www/.storybook/preview-head.html similarity index 100% rename from src/www/.storybook/preview-head.html rename to client/src/www/.storybook/preview-head.html diff --git a/src/www/.storybook/preview.js b/client/src/www/.storybook/preview.js similarity index 100% rename from src/www/.storybook/preview.js rename to client/src/www/.storybook/preview.js diff --git a/src/www/TODO.spec.ts b/client/src/www/TODO.spec.ts similarity index 100% rename from src/www/TODO.spec.ts rename to client/src/www/TODO.spec.ts diff --git a/src/www/app/app.spec.ts b/client/src/www/app/app.spec.ts similarity index 100% rename from src/www/app/app.spec.ts rename to client/src/www/app/app.spec.ts diff --git a/src/www/app/app.ts b/client/src/www/app/app.ts similarity index 100% rename from src/www/app/app.ts rename to client/src/www/app/app.ts diff --git a/src/www/app/clipboard.ts b/client/src/www/app/clipboard.ts similarity index 100% rename from src/www/app/clipboard.ts rename to client/src/www/app/clipboard.ts diff --git a/src/www/app/cordova_main.ts b/client/src/www/app/cordova_main.ts similarity index 100% rename from src/www/app/cordova_main.ts rename to client/src/www/app/cordova_main.ts diff --git a/src/www/app/electron_main.ts b/client/src/www/app/electron_main.ts similarity index 98% rename from src/www/app/electron_main.ts rename to client/src/www/app/electron_main.ts index e4be0325c9..87dc973de5 100644 --- a/src/www/app/electron_main.ts +++ b/client/src/www/app/electron_main.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -/// +/// import 'web-animations-js/web-animations-next-lite.min.js'; import '@webcomponents/webcomponentsjs/webcomponents-bundle.js'; diff --git a/src/www/app/electron_outline_tunnel.ts b/client/src/www/app/electron_outline_tunnel.ts similarity index 100% rename from src/www/app/electron_outline_tunnel.ts rename to client/src/www/app/electron_outline_tunnel.ts diff --git a/src/www/app/environment.ts b/client/src/www/app/environment.ts similarity index 97% rename from src/www/app/environment.ts rename to client/src/www/app/environment.ts index b8a7be4066..3f21114cc6 100644 --- a/src/www/app/environment.ts +++ b/client/src/www/app/environment.ts @@ -15,7 +15,7 @@ export interface EnvironmentVariables { APP_VERSION: string; APP_BUILD_NUMBER: string; - SENTRY_DSN: string|undefined; + SENTRY_DSN: string | undefined; } // According to http://caniuse.com/#feat=fetch fetch didn't land iOS Safari diff --git a/src/www/app/fake_tunnel.ts b/client/src/www/app/fake_tunnel.ts similarity index 100% rename from src/www/app/fake_tunnel.ts rename to client/src/www/app/fake_tunnel.ts diff --git a/src/www/app/main.ts b/client/src/www/app/main.ts similarity index 100% rename from src/www/app/main.ts rename to client/src/www/app/main.ts diff --git a/src/www/app/outline_server_repository/access_key_serialization.ts b/client/src/www/app/outline_server_repository/access_key_serialization.ts similarity index 100% rename from src/www/app/outline_server_repository/access_key_serialization.ts rename to client/src/www/app/outline_server_repository/access_key_serialization.ts diff --git a/src/www/app/outline_server_repository/index.ts b/client/src/www/app/outline_server_repository/index.ts similarity index 100% rename from src/www/app/outline_server_repository/index.ts rename to client/src/www/app/outline_server_repository/index.ts diff --git a/src/www/app/outline_server_repository/outline_server_repository.spec.ts b/client/src/www/app/outline_server_repository/outline_server_repository.spec.ts similarity index 100% rename from src/www/app/outline_server_repository/outline_server_repository.spec.ts rename to client/src/www/app/outline_server_repository/outline_server_repository.spec.ts diff --git a/src/www/app/outline_server_repository/server.ts b/client/src/www/app/outline_server_repository/server.ts similarity index 100% rename from src/www/app/outline_server_repository/server.ts rename to client/src/www/app/outline_server_repository/server.ts diff --git a/src/www/app/platform.ts b/client/src/www/app/platform.ts similarity index 100% rename from src/www/app/platform.ts rename to client/src/www/app/platform.ts diff --git a/src/www/app/settings.spec.ts b/client/src/www/app/settings.spec.ts similarity index 100% rename from src/www/app/settings.spec.ts rename to client/src/www/app/settings.spec.ts diff --git a/src/www/app/settings.ts b/client/src/www/app/settings.ts similarity index 93% rename from src/www/app/settings.ts rename to client/src/www/app/settings.ts index 2cd7ecb9b0..c0d0fce6cf 100644 --- a/src/www/app/settings.ts +++ b/client/src/www/app/settings.ts @@ -20,7 +20,7 @@ interface StorageSettings { export enum SettingsKey { VPN_WARNING_DISMISSED = 'vpn-warning-dismissed', AUTO_CONNECT_DIALOG_DISMISSED = 'auto-connect-dialog-dismissed', - PRIVACY_ACK = 'privacy-ack' + PRIVACY_ACK = 'privacy-ack', } // Persistent storage for user settings that supports a limited set of keys. @@ -30,8 +30,9 @@ export class Settings { private readonly settings = new Map(); constructor( - private storage: Storage = window.localStorage, - private validKeys: string[] = Object.values(SettingsKey)) { + private storage: Storage = window.localStorage, + private validKeys: string[] = Object.values(SettingsKey) + ) { this.loadSettings(); } @@ -79,4 +80,3 @@ export class Settings { this.storage.setItem(Settings.STORAGE_KEY, storageSettingsJson); } } - diff --git a/src/www/app/tunnel.ts b/client/src/www/app/tunnel.ts similarity index 100% rename from src/www/app/tunnel.ts rename to client/src/www/app/tunnel.ts diff --git a/src/www/app/updater.ts b/client/src/www/app/updater.ts similarity index 95% rename from src/www/app/updater.ts rename to client/src/www/app/updater.ts index e0c747657a..09a435d304 100644 --- a/src/www/app/updater.ts +++ b/client/src/www/app/updater.ts @@ -20,7 +20,7 @@ export interface Updater { } export class AbstractUpdater implements Updater { - private listener: UpdateListener|null = null; + private listener: UpdateListener | null = null; setListener(listener: UpdateListener) { this.listener = listener; diff --git a/src/www/app/url_interceptor.ts b/client/src/www/app/url_interceptor.ts similarity index 100% rename from src/www/app/url_interceptor.ts rename to client/src/www/app/url_interceptor.ts diff --git a/src/www/app/vpn_installer.ts b/client/src/www/app/vpn_installer.ts similarity index 100% rename from src/www/app/vpn_installer.ts rename to client/src/www/app/vpn_installer.ts diff --git a/src/www/assets/brand-logo.png b/client/src/www/assets/brand-logo.png similarity index 100% rename from src/www/assets/brand-logo.png rename to client/src/www/assets/brand-logo.png diff --git a/src/www/assets/circle.png b/client/src/www/assets/circle.png similarity index 100% rename from src/www/assets/circle.png rename to client/src/www/assets/circle.png diff --git a/src/www/assets/icons/about.png b/client/src/www/assets/icons/about.png similarity index 100% rename from src/www/assets/icons/about.png rename to client/src/www/assets/icons/about.png diff --git a/src/www/assets/icons/add.png b/client/src/www/assets/icons/add.png similarity index 100% rename from src/www/assets/icons/add.png rename to client/src/www/assets/icons/add.png diff --git a/src/www/assets/icons/back.png b/client/src/www/assets/icons/back.png similarity index 100% rename from src/www/assets/icons/back.png rename to client/src/www/assets/icons/back.png diff --git a/src/www/assets/icons/change_language.png b/client/src/www/assets/icons/change_language.png similarity index 100% rename from src/www/assets/icons/change_language.png rename to client/src/www/assets/icons/change_language.png diff --git a/src/www/assets/icons/contact.png b/client/src/www/assets/icons/contact.png similarity index 100% rename from src/www/assets/icons/contact.png rename to client/src/www/assets/icons/contact.png diff --git a/src/www/assets/icons/feedback.png b/client/src/www/assets/icons/feedback.png similarity index 100% rename from src/www/assets/icons/feedback.png rename to client/src/www/assets/icons/feedback.png diff --git a/src/www/assets/icons/help.png b/client/src/www/assets/icons/help.png similarity index 100% rename from src/www/assets/icons/help.png rename to client/src/www/assets/icons/help.png diff --git a/src/www/assets/icons/menu.png b/client/src/www/assets/icons/menu.png similarity index 100% rename from src/www/assets/icons/menu.png rename to client/src/www/assets/icons/menu.png diff --git a/src/www/assets/icons/outline.png b/client/src/www/assets/icons/outline.png similarity index 100% rename from src/www/assets/icons/outline.png rename to client/src/www/assets/icons/outline.png diff --git a/src/www/assets/icons/quit.png b/client/src/www/assets/icons/quit.png similarity index 100% rename from src/www/assets/icons/quit.png rename to client/src/www/assets/icons/quit.png diff --git a/src/www/assets/jigsaw-logo.png b/client/src/www/assets/jigsaw-logo.png similarity index 100% rename from src/www/assets/jigsaw-logo.png rename to client/src/www/assets/jigsaw-logo.png diff --git a/src/www/assets/jigsaw-logo.svg b/client/src/www/assets/jigsaw-logo.svg similarity index 100% rename from src/www/assets/jigsaw-logo.svg rename to client/src/www/assets/jigsaw-logo.svg diff --git a/src/www/assets/logo-nav.png b/client/src/www/assets/logo-nav.png similarity index 100% rename from src/www/assets/logo-nav.png rename to client/src/www/assets/logo-nav.png diff --git a/src/www/assets/material_icons.woff2 b/client/src/www/assets/material_icons.woff2 similarity index 100% rename from src/www/assets/material_icons.woff2 rename to client/src/www/assets/material_icons.woff2 diff --git a/src/www/assets/outline-client-logo.png b/client/src/www/assets/outline-client-logo.png similarity index 100% rename from src/www/assets/outline-client-logo.png rename to client/src/www/assets/outline-client-logo.png diff --git a/src/www/assets/outline-client-logo.svg b/client/src/www/assets/outline-client-logo.svg similarity index 100% rename from src/www/assets/outline-client-logo.svg rename to client/src/www/assets/outline-client-logo.svg diff --git a/src/www/assets/privacy-lock.png b/client/src/www/assets/privacy-lock.png similarity index 100% rename from src/www/assets/privacy-lock.png rename to client/src/www/assets/privacy-lock.png diff --git a/src/www/build.action.mjs b/client/src/www/build.action.mjs similarity index 100% rename from src/www/build.action.mjs rename to client/src/www/build.action.mjs diff --git a/src/www/favicon.ico b/client/src/www/favicon.ico similarity index 100% rename from src/www/favicon.ico rename to client/src/www/favicon.ico diff --git a/src/www/get_browser_webpack_config.mjs b/client/src/www/get_browser_webpack_config.mjs similarity index 100% rename from src/www/get_browser_webpack_config.mjs rename to client/src/www/get_browser_webpack_config.mjs diff --git a/src/www/index_cordova.html b/client/src/www/index_cordova.html similarity index 100% rename from src/www/index_cordova.html rename to client/src/www/index_cordova.html diff --git a/src/www/index_electron.html b/client/src/www/index_electron.html similarity index 100% rename from src/www/index_electron.html rename to client/src/www/index_electron.html diff --git a/src/www/karma.conf.js b/client/src/www/karma.conf.js similarity index 96% rename from src/www/karma.conf.js rename to client/src/www/karma.conf.js index 5e17bc1bf8..937e07e56a 100644 --- a/src/www/karma.conf.js +++ b/client/src/www/karma.conf.js @@ -14,7 +14,7 @@ const path = require('path'); -module.exports = async function(config) { +module.exports = async function (config) { const testConfig = await import('./webpack_test.mjs'); config.set({ diff --git a/src/www/messages/af.json b/client/src/www/messages/af.json similarity index 100% rename from src/www/messages/af.json rename to client/src/www/messages/af.json diff --git a/src/www/messages/am.json b/client/src/www/messages/am.json similarity index 100% rename from src/www/messages/am.json rename to client/src/www/messages/am.json diff --git a/src/www/messages/ar.json b/client/src/www/messages/ar.json similarity index 100% rename from src/www/messages/ar.json rename to client/src/www/messages/ar.json diff --git a/src/www/messages/az.json b/client/src/www/messages/az.json similarity index 100% rename from src/www/messages/az.json rename to client/src/www/messages/az.json diff --git a/src/www/messages/bg.json b/client/src/www/messages/bg.json similarity index 100% rename from src/www/messages/bg.json rename to client/src/www/messages/bg.json diff --git a/src/www/messages/bn.json b/client/src/www/messages/bn.json similarity index 100% rename from src/www/messages/bn.json rename to client/src/www/messages/bn.json diff --git a/src/www/messages/bs.json b/client/src/www/messages/bs.json similarity index 100% rename from src/www/messages/bs.json rename to client/src/www/messages/bs.json diff --git a/src/www/messages/ca.json b/client/src/www/messages/ca.json similarity index 100% rename from src/www/messages/ca.json rename to client/src/www/messages/ca.json diff --git a/src/www/messages/cs.json b/client/src/www/messages/cs.json similarity index 100% rename from src/www/messages/cs.json rename to client/src/www/messages/cs.json diff --git a/src/www/messages/da.json b/client/src/www/messages/da.json similarity index 100% rename from src/www/messages/da.json rename to client/src/www/messages/da.json diff --git a/src/www/messages/de.json b/client/src/www/messages/de.json similarity index 100% rename from src/www/messages/de.json rename to client/src/www/messages/de.json diff --git a/src/www/messages/el.json b/client/src/www/messages/el.json similarity index 100% rename from src/www/messages/el.json rename to client/src/www/messages/el.json diff --git a/src/www/messages/en-GB.json b/client/src/www/messages/en-GB.json similarity index 100% rename from src/www/messages/en-GB.json rename to client/src/www/messages/en-GB.json diff --git a/src/www/messages/en.json b/client/src/www/messages/en.json similarity index 100% rename from src/www/messages/en.json rename to client/src/www/messages/en.json diff --git a/src/www/messages/es-419.json b/client/src/www/messages/es-419.json similarity index 100% rename from src/www/messages/es-419.json rename to client/src/www/messages/es-419.json diff --git a/src/www/messages/es.json b/client/src/www/messages/es.json similarity index 100% rename from src/www/messages/es.json rename to client/src/www/messages/es.json diff --git a/src/www/messages/et.json b/client/src/www/messages/et.json similarity index 100% rename from src/www/messages/et.json rename to client/src/www/messages/et.json diff --git a/src/www/messages/fa.json b/client/src/www/messages/fa.json similarity index 100% rename from src/www/messages/fa.json rename to client/src/www/messages/fa.json diff --git a/src/www/messages/fi.json b/client/src/www/messages/fi.json similarity index 100% rename from src/www/messages/fi.json rename to client/src/www/messages/fi.json diff --git a/src/www/messages/fil.json b/client/src/www/messages/fil.json similarity index 100% rename from src/www/messages/fil.json rename to client/src/www/messages/fil.json diff --git a/src/www/messages/fr.json b/client/src/www/messages/fr.json similarity index 100% rename from src/www/messages/fr.json rename to client/src/www/messages/fr.json diff --git a/src/www/messages/he.json b/client/src/www/messages/he.json similarity index 100% rename from src/www/messages/he.json rename to client/src/www/messages/he.json diff --git a/src/www/messages/hi.json b/client/src/www/messages/hi.json similarity index 100% rename from src/www/messages/hi.json rename to client/src/www/messages/hi.json diff --git a/src/www/messages/hr.json b/client/src/www/messages/hr.json similarity index 100% rename from src/www/messages/hr.json rename to client/src/www/messages/hr.json diff --git a/src/www/messages/hu.json b/client/src/www/messages/hu.json similarity index 100% rename from src/www/messages/hu.json rename to client/src/www/messages/hu.json diff --git a/src/www/messages/hy.json b/client/src/www/messages/hy.json similarity index 100% rename from src/www/messages/hy.json rename to client/src/www/messages/hy.json diff --git a/src/www/messages/id.json b/client/src/www/messages/id.json similarity index 100% rename from src/www/messages/id.json rename to client/src/www/messages/id.json diff --git a/src/www/messages/is.json b/client/src/www/messages/is.json similarity index 100% rename from src/www/messages/is.json rename to client/src/www/messages/is.json diff --git a/src/www/messages/it.json b/client/src/www/messages/it.json similarity index 100% rename from src/www/messages/it.json rename to client/src/www/messages/it.json diff --git a/src/www/messages/ja.json b/client/src/www/messages/ja.json similarity index 100% rename from src/www/messages/ja.json rename to client/src/www/messages/ja.json diff --git a/src/www/messages/ka.json b/client/src/www/messages/ka.json similarity index 100% rename from src/www/messages/ka.json rename to client/src/www/messages/ka.json diff --git a/src/www/messages/kk.json b/client/src/www/messages/kk.json similarity index 100% rename from src/www/messages/kk.json rename to client/src/www/messages/kk.json diff --git a/src/www/messages/km.json b/client/src/www/messages/km.json similarity index 100% rename from src/www/messages/km.json rename to client/src/www/messages/km.json diff --git a/src/www/messages/ko.json b/client/src/www/messages/ko.json similarity index 100% rename from src/www/messages/ko.json rename to client/src/www/messages/ko.json diff --git a/src/www/messages/lo.json b/client/src/www/messages/lo.json similarity index 100% rename from src/www/messages/lo.json rename to client/src/www/messages/lo.json diff --git a/src/www/messages/lt.json b/client/src/www/messages/lt.json similarity index 100% rename from src/www/messages/lt.json rename to client/src/www/messages/lt.json diff --git a/src/www/messages/lv.json b/client/src/www/messages/lv.json similarity index 100% rename from src/www/messages/lv.json rename to client/src/www/messages/lv.json diff --git a/src/www/messages/mk.json b/client/src/www/messages/mk.json similarity index 100% rename from src/www/messages/mk.json rename to client/src/www/messages/mk.json diff --git a/src/www/messages/mn.json b/client/src/www/messages/mn.json similarity index 100% rename from src/www/messages/mn.json rename to client/src/www/messages/mn.json diff --git a/src/www/messages/mr.json b/client/src/www/messages/mr.json similarity index 100% rename from src/www/messages/mr.json rename to client/src/www/messages/mr.json diff --git a/src/www/messages/ms.json b/client/src/www/messages/ms.json similarity index 100% rename from src/www/messages/ms.json rename to client/src/www/messages/ms.json diff --git a/src/www/messages/my.json b/client/src/www/messages/my.json similarity index 100% rename from src/www/messages/my.json rename to client/src/www/messages/my.json diff --git a/src/www/messages/ne.json b/client/src/www/messages/ne.json similarity index 100% rename from src/www/messages/ne.json rename to client/src/www/messages/ne.json diff --git a/src/www/messages/nl.json b/client/src/www/messages/nl.json similarity index 100% rename from src/www/messages/nl.json rename to client/src/www/messages/nl.json diff --git a/src/www/messages/no.json b/client/src/www/messages/no.json similarity index 100% rename from src/www/messages/no.json rename to client/src/www/messages/no.json diff --git a/src/www/messages/pl.json b/client/src/www/messages/pl.json similarity index 100% rename from src/www/messages/pl.json rename to client/src/www/messages/pl.json diff --git a/src/www/messages/pt-BR.json b/client/src/www/messages/pt-BR.json similarity index 100% rename from src/www/messages/pt-BR.json rename to client/src/www/messages/pt-BR.json diff --git a/src/www/messages/pt-PT.json b/client/src/www/messages/pt-PT.json similarity index 100% rename from src/www/messages/pt-PT.json rename to client/src/www/messages/pt-PT.json diff --git a/src/www/messages/ro.json b/client/src/www/messages/ro.json similarity index 100% rename from src/www/messages/ro.json rename to client/src/www/messages/ro.json diff --git a/src/www/messages/ru.json b/client/src/www/messages/ru.json similarity index 100% rename from src/www/messages/ru.json rename to client/src/www/messages/ru.json diff --git a/src/www/messages/si.json b/client/src/www/messages/si.json similarity index 100% rename from src/www/messages/si.json rename to client/src/www/messages/si.json diff --git a/src/www/messages/sk.json b/client/src/www/messages/sk.json similarity index 100% rename from src/www/messages/sk.json rename to client/src/www/messages/sk.json diff --git a/src/www/messages/sl.json b/client/src/www/messages/sl.json similarity index 100% rename from src/www/messages/sl.json rename to client/src/www/messages/sl.json diff --git a/src/www/messages/sq.json b/client/src/www/messages/sq.json similarity index 100% rename from src/www/messages/sq.json rename to client/src/www/messages/sq.json diff --git a/src/www/messages/sr-Latn.json b/client/src/www/messages/sr-Latn.json similarity index 100% rename from src/www/messages/sr-Latn.json rename to client/src/www/messages/sr-Latn.json diff --git a/src/www/messages/sr.json b/client/src/www/messages/sr.json similarity index 100% rename from src/www/messages/sr.json rename to client/src/www/messages/sr.json diff --git a/src/www/messages/sv.json b/client/src/www/messages/sv.json similarity index 100% rename from src/www/messages/sv.json rename to client/src/www/messages/sv.json diff --git a/src/www/messages/sw.json b/client/src/www/messages/sw.json similarity index 100% rename from src/www/messages/sw.json rename to client/src/www/messages/sw.json diff --git a/src/www/messages/ta.json b/client/src/www/messages/ta.json similarity index 100% rename from src/www/messages/ta.json rename to client/src/www/messages/ta.json diff --git a/src/www/messages/th.json b/client/src/www/messages/th.json similarity index 100% rename from src/www/messages/th.json rename to client/src/www/messages/th.json diff --git a/src/www/messages/tr.json b/client/src/www/messages/tr.json similarity index 100% rename from src/www/messages/tr.json rename to client/src/www/messages/tr.json diff --git a/src/www/messages/uk.json b/client/src/www/messages/uk.json similarity index 100% rename from src/www/messages/uk.json rename to client/src/www/messages/uk.json diff --git a/src/www/messages/ur.json b/client/src/www/messages/ur.json similarity index 100% rename from src/www/messages/ur.json rename to client/src/www/messages/ur.json diff --git a/src/www/messages/vi.json b/client/src/www/messages/vi.json similarity index 100% rename from src/www/messages/vi.json rename to client/src/www/messages/vi.json diff --git a/src/www/messages/zh-CN.json b/client/src/www/messages/zh-CN.json similarity index 100% rename from src/www/messages/zh-CN.json rename to client/src/www/messages/zh-CN.json diff --git a/src/www/messages/zh-TW.json b/client/src/www/messages/zh-TW.json similarity index 100% rename from src/www/messages/zh-TW.json rename to client/src/www/messages/zh-TW.json diff --git a/src/www/model/errors.ts b/client/src/www/model/errors.ts similarity index 100% rename from src/www/model/errors.ts rename to client/src/www/model/errors.ts diff --git a/src/www/model/events.spec.ts b/client/src/www/model/events.spec.ts similarity index 99% rename from src/www/model/events.spec.ts rename to client/src/www/model/events.spec.ts index 22583bf672..e510b8b630 100644 --- a/src/www/model/events.spec.ts +++ b/client/src/www/model/events.spec.ts @@ -21,7 +21,7 @@ import { ServerForgotten, ServerReconnecting, ServerRenamed, -} from "./events"; +} from './events'; describe('EventQueue', () => { it('subscribe registers listeners to corresponding event', () => { diff --git a/src/www/model/events.ts b/client/src/www/model/events.ts similarity index 100% rename from src/www/model/events.ts rename to client/src/www/model/events.ts diff --git a/src/www/model/server.ts b/client/src/www/model/server.ts similarity index 100% rename from src/www/model/server.ts rename to client/src/www/model/server.ts diff --git a/src/www/shared/error_reporter.ts b/client/src/www/shared/error_reporter.ts similarity index 100% rename from src/www/shared/error_reporter.ts rename to client/src/www/shared/error_reporter.ts diff --git a/src/www/start.action.mjs b/client/src/www/start.action.mjs similarity index 92% rename from src/www/start.action.mjs rename to client/src/www/start.action.mjs index 739bde0664..a45bca81d2 100644 --- a/src/www/start.action.mjs +++ b/client/src/www/start.action.mjs @@ -23,11 +23,11 @@ import {getBrowserWebpackConfig} from './get_browser_webpack_config.mjs'; * @description Starts the web app for development. */ export async function main() { - await runAction('www/build', 'browser'); + await runAction('client/src/www/build', 'browser'); // TODO(daniellacosse): Browser-only webpack setup that's extended both by electron and cordova. // Currently, only the cordova web build works in standalone mode. - await runAction('cordova/setup', 'browser'); + await runAction('client/src/cordova/setup', 'browser'); const webpackConfig = getBrowserWebpackConfig('browser', 'debug'); diff --git a/src/www/storybook.action.mjs b/client/src/www/storybook.action.mjs similarity index 100% rename from src/www/storybook.action.mjs rename to client/src/www/storybook.action.mjs diff --git a/src/www/style.css b/client/src/www/style.css similarity index 100% rename from src/www/style.css rename to client/src/www/style.css diff --git a/src/www/test.action.mjs b/client/src/www/test.action.mjs similarity index 100% rename from src/www/test.action.mjs rename to client/src/www/test.action.mjs diff --git a/src/www/testing/localize.ts b/client/src/www/testing/localize.ts similarity index 100% rename from src/www/testing/localize.ts rename to client/src/www/testing/localize.ts diff --git a/src/www/tsconfig.json b/client/src/www/tsconfig.json similarity index 100% rename from src/www/tsconfig.json rename to client/src/www/tsconfig.json diff --git a/src/www/types/clipboard.d.ts b/client/src/www/types/clipboard.d.ts similarity index 100% rename from src/www/types/clipboard.d.ts rename to client/src/www/types/clipboard.d.ts diff --git a/src/www/types/shims.d.ts b/client/src/www/types/shims.d.ts similarity index 100% rename from src/www/types/shims.d.ts rename to client/src/www/types/shims.d.ts diff --git a/src/www/types/webintents.d.ts b/client/src/www/types/webintents.d.ts similarity index 100% rename from src/www/types/webintents.d.ts rename to client/src/www/types/webintents.d.ts diff --git a/src/www/ui_components/about-view.js b/client/src/www/ui_components/about-view.js similarity index 100% rename from src/www/ui_components/about-view.js rename to client/src/www/ui_components/about-view.js diff --git a/src/www/ui_components/add-server-view.js b/client/src/www/ui_components/add-server-view.js similarity index 95% rename from src/www/ui_components/add-server-view.js rename to client/src/www/ui_components/add-server-view.js index ff68736466..db55c4a407 100644 --- a/src/www/ui_components/add-server-view.js +++ b/client/src/www/ui_components/add-server-view.js @@ -190,9 +190,7 @@ Polymer({
[[localize('server-access-key-detected')]]
-
- [[localize('server-detected')]] -
+
[[localize('server-detected')]]
@@ -229,7 +227,7 @@ Polymer({ }, }, - ready: function() { + ready: function () { this.$.serverDetectedSheet.addEventListener('opened-changed', this._openChanged.bind(this)); this.$.addServerSheet.addEventListener('opened-changed', this._openChanged.bind(this)); // Workaround for --paper-input-container-input-[focus|invalid] not getting applied. @@ -238,27 +236,27 @@ Polymer({ this.$.accessKeyInput.addEventListener('invalid-changed', this._inputInvalidChanged.bind(this)); }, - openAddServerSheet: function() { + openAddServerSheet: function () { this.$.serverDetectedSheet.close(); this.$.addServerSheet.open(); }, - openAddServerConfirmationSheet: function(accessKey) { + openAddServerConfirmationSheet: function (accessKey) { this.$.addServerSheet.close(); this.accessKey = accessKey; this.$.serverDetectedSheet.open(); }, - isAddingServer: function() { + isAddingServer: function () { return this.$.serverDetectedSheet.opened; }, - close: function() { + close: function () { this.$.addServerSheet.close(); this.$.serverDetectedSheet.close(); }, - _accessKeyChanged: function() { + _accessKeyChanged: function () { // Use debounce to detect when the user has stopped typing. this.debounce( 'accessKeyChanged', @@ -269,7 +267,7 @@ Polymer({ ); }, - _addServerFromInput: function() { + _addServerFromInput: function () { var accessKeyInput = this.$.accessKeyInput; if (!this.accessKey || this.accessKey === '') { accessKeyInput.invalid = false; @@ -280,18 +278,18 @@ Polymer({ } }, - _addDetectedServer: function() { + _addDetectedServer: function () { this.fire('AddServerRequested', {accessKey: this.accessKey}); this.close(); }, - _ignoreDetectedServer: function() { + _ignoreDetectedServer: function () { this.fire('IgnoreServerRequested', {accessKey: this.accessKey}); this.close(); }, // Event listeners - _openChanged: function(event) { + _openChanged: function (event) { var dialog = event.target; if (dialog.opened) { // Scroll the page to the bottom to prevent the dialog from moving when the keyboard @@ -306,7 +304,7 @@ Polymer({ } }, - _inputFocusChanged: function(event) { + _inputFocusChanged: function (event) { var input = event.target; if (input.focused) { this.$.accessKeyInput.label = ''; @@ -316,7 +314,7 @@ Polymer({ input.toggleClass('input-focus', input.focused); }, - _inputInvalidChanged: function(event) { + _inputInvalidChanged: function (event) { var input = event.target; input.toggleClass('input-invalid', input.invalid); if (input.invalid) { @@ -326,7 +324,7 @@ Polymer({ } }, - _disallowScroll: function(event) { + _disallowScroll: function (event) { event.preventDefault(); }, diff --git a/src/www/ui_components/app-root.js b/client/src/www/ui_components/app-root.js similarity index 95% rename from src/www/ui_components/app-root.js rename to client/src/www/ui_components/app-root.js index 17c43a4762..8b97c79cc4 100644 --- a/src/www/ui_components/app-root.js +++ b/client/src/www/ui_components/app-root.js @@ -36,7 +36,6 @@ import '@polymer/paper-item/paper-item.js'; import '@polymer/paper-item/paper-icon-item.js'; import '@polymer/paper-listbox/paper-listbox.js'; import '@polymer/paper-toast/paper-toast.js'; -import 'outline-i18n/index.js'; import './about-view.js'; import './add-server-view.js'; import './feedback-view.js'; @@ -55,6 +54,49 @@ import {mixinBehaviors} from '@polymer/polymer/lib/legacy/class.js'; import {html} from '@polymer/polymer/lib/utils/html-tag.js'; import {PolymerElement} from '@polymer/polymer/polymer-element.js'; +function makeLookUpLanguage(availableLanguages) { + return languageId => { + languageId = languageId.toLowerCase(); + for (const availableLanguage of availableLanguages) { + const parts = availableLanguage.toLowerCase().split('-'); + while (parts.length) { + const joined = parts.join('-'); + if (languageId === joined) { + return availableLanguage; + } + parts.pop(); + } + } + }; +} + +function getBrowserLanguages() { + // Ensure that navigator.languages is defined and not empty, as can be the case with some browsers + // (i.e. Chrome 59 on Electron). + const languages = navigator.languages; + if (languages && languages.length > 0) { + return languages; + } + return [navigator.language]; +} + +window.OutlineI18n = { + getBestMatchingLanguage(available) { + const lookUpAvailable = makeLookUpLanguage(available); + for (const candidate of getBrowserLanguages()) { + const parts = candidate.split('-'); + while (parts.length) { + const joined = parts.join('-'); + const closest = lookUpAvailable(joined); + if (closest) { + return closest; + } + parts.pop(); + } + } + }, +}; + // Workaround: // https://github.com/PolymerElements/paper-menu-button/issues/101#issuecomment-297856912 PaperMenuButton.prototype.properties.restoreFocusOnClose.value = false; @@ -765,7 +807,7 @@ export class AppRoot extends mixinBehaviors([AppLocalizeBehavior], PolymerElemen _computeLanguage(availableLanguages, defaultLanguage) { const overrideLanguage = window.localStorage.getItem('overrideLanguage'); - const bestMatchingLanguage = OutlineI18n.getBestMatchingLanguage(Object.keys(availableLanguages)); + const bestMatchingLanguage = window.OutlineI18n.getBestMatchingLanguage(Object.keys(availableLanguages)); return overrideLanguage || bestMatchingLanguage || defaultLanguage; } diff --git a/src/www/ui_components/feedback-view.js b/client/src/www/ui_components/feedback-view.js similarity index 100% rename from src/www/ui_components/feedback-view.js rename to client/src/www/ui_components/feedback-view.js diff --git a/src/www/ui_components/language-view.js b/client/src/www/ui_components/language-view.js similarity index 100% rename from src/www/ui_components/language-view.js rename to client/src/www/ui_components/language-view.js diff --git a/src/www/ui_components/licenses-view.js b/client/src/www/ui_components/licenses-view.js similarity index 65% rename from src/www/ui_components/licenses-view.js rename to client/src/www/ui_components/licenses-view.js index 909bad1f0f..ed960d56b4 100644 --- a/src/www/ui_components/licenses-view.js +++ b/client/src/www/ui_components/licenses-view.js @@ -15,7 +15,7 @@ */ import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js'; -import {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js' +import {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js'; import {html} from '@polymer/polymer/lib/utils/html-tag.js'; Polymer({ @@ -36,7 +36,7 @@ Polymer({ -`, + `, is: 'licenses-view', @@ -49,27 +49,30 @@ Polymer({ _licensesLoaded: false, - ready: function() { + ready: function () { // This complexity is to avoid unconditionally loading the (huge) license // text at startup. var appRoot = dom(this).getOwnerRoot().host; - window.addEventListener('location-changed', function() { - if (this._licensesLoaded || appRoot.page !== 'licenses') { - return; - } + window.addEventListener( + 'location-changed', + function () { + if (this._licensesLoaded || appRoot.page !== 'licenses') { + return; + } - var xhr = new XMLHttpRequest(); - xhr.onload = () => { - this.$.licensesText.innerText = xhr.responseText; - this._licensesLoaded = true; - }; - xhr.onerror = () => { - console.error('could not load license.txt'); - }; - // This path works in both Cordova and Electron. - // Do *not* add a leading slash. - xhr.open('GET', 'ui_components/licenses/licenses.txt', true); - xhr.send(); - }.bind(this)); - } + var xhr = new XMLHttpRequest(); + xhr.onload = () => { + this.$.licensesText.innerText = xhr.responseText; + this._licensesLoaded = true; + }; + xhr.onerror = () => { + console.error('could not load license.txt'); + }; + // This path works in both Cordova and Electron. + // Do *not* add a leading slash. + xhr.open('GET', 'ui_components/licenses/licenses.txt', true); + xhr.send(); + }.bind(this) + ); + }, }); diff --git a/src/www/ui_components/licenses/README.md b/client/src/www/ui_components/licenses/README.md similarity index 100% rename from src/www/ui_components/licenses/README.md rename to client/src/www/ui_components/licenses/README.md diff --git a/src/www/ui_components/licenses/licenses.txt b/client/src/www/ui_components/licenses/licenses.txt similarity index 100% rename from src/www/ui_components/licenses/licenses.txt rename to client/src/www/ui_components/licenses/licenses.txt diff --git a/src/www/ui_components/licenses/third_party.sh b/client/src/www/ui_components/licenses/third_party.sh similarity index 100% rename from src/www/ui_components/licenses/third_party.sh rename to client/src/www/ui_components/licenses/third_party.sh diff --git a/src/www/ui_components/outline-icons.js b/client/src/www/ui_components/outline-icons.js similarity index 99% rename from src/www/ui_components/outline-icons.js rename to client/src/www/ui_components/outline-icons.js index 7f3ff31b15..69531368e5 100644 --- a/src/www/ui_components/outline-icons.js +++ b/client/src/www/ui_components/outline-icons.js @@ -27,4 +27,3 @@ $_documentContainer.innerHTML = `[[localize(titleLocalizationKey)]]
[[localize(detailLocalizationKey)]]
- + [[localize(linkTextLocalizationKey)]] - [[localize(dismissButtonTextLocalizationKey)]] + [[localize(dismissButtonTextLocalizationKey)]]
-`, + `, is: 'user-comms-dialog', @@ -130,22 +132,22 @@ Polymer({ fireEventOnHide: String, }, - show: function() { + show: function () { this.$.wrapper.classList.add('active'); }, - hide: function() { + hide: function () { this.$.wrapper.classList.remove('active'); }, - _dismiss: function() { + _dismiss: function () { this.hide(); if (!!this.fireEventOnHide) { this.fire(this.fireEventOnHide); } }, - _shouldHideLink: function() { + _shouldHideLink: function () { return !this.linkUrl; - } + }, }); diff --git a/src/www/views/contact_view/app_type.ts b/client/src/www/views/contact_view/app_type.ts similarity index 100% rename from src/www/views/contact_view/app_type.ts rename to client/src/www/views/contact_view/app_type.ts diff --git a/src/www/views/contact_view/index.spec.ts b/client/src/www/views/contact_view/index.spec.ts similarity index 100% rename from src/www/views/contact_view/index.spec.ts rename to client/src/www/views/contact_view/index.spec.ts diff --git a/src/www/views/contact_view/index.ts b/client/src/www/views/contact_view/index.ts similarity index 100% rename from src/www/views/contact_view/index.ts rename to client/src/www/views/contact_view/index.ts diff --git a/src/www/views/contact_view/issue_type.ts b/client/src/www/views/contact_view/issue_type.ts similarity index 100% rename from src/www/views/contact_view/issue_type.ts rename to client/src/www/views/contact_view/issue_type.ts diff --git a/src/www/views/contact_view/stories.ts b/client/src/www/views/contact_view/stories.ts similarity index 100% rename from src/www/views/contact_view/stories.ts rename to client/src/www/views/contact_view/stories.ts diff --git a/src/www/views/contact_view/support_form/index.spec.ts b/client/src/www/views/contact_view/support_form/index.spec.ts similarity index 100% rename from src/www/views/contact_view/support_form/index.spec.ts rename to client/src/www/views/contact_view/support_form/index.spec.ts diff --git a/src/www/views/contact_view/support_form/index.ts b/client/src/www/views/contact_view/support_form/index.ts similarity index 100% rename from src/www/views/contact_view/support_form/index.ts rename to client/src/www/views/contact_view/support_form/index.ts diff --git a/src/www/views/contact_view/support_form/stories.ts b/client/src/www/views/contact_view/support_form/stories.ts similarity index 100% rename from src/www/views/contact_view/support_form/stories.ts rename to client/src/www/views/contact_view/support_form/stories.ts diff --git a/src/www/views/servers_view/index.ts b/client/src/www/views/servers_view/index.ts similarity index 100% rename from src/www/views/servers_view/index.ts rename to client/src/www/views/servers_view/index.ts diff --git a/src/www/views/servers_view/server_connection_indicator/index.ts b/client/src/www/views/servers_view/server_connection_indicator/index.ts similarity index 100% rename from src/www/views/servers_view/server_connection_indicator/index.ts rename to client/src/www/views/servers_view/server_connection_indicator/index.ts diff --git a/src/www/views/servers_view/server_connection_indicator/stories.ts b/client/src/www/views/servers_view/server_connection_indicator/stories.ts similarity index 100% rename from src/www/views/servers_view/server_connection_indicator/stories.ts rename to client/src/www/views/servers_view/server_connection_indicator/stories.ts diff --git a/src/www/views/servers_view/server_list/index.ts b/client/src/www/views/servers_view/server_list/index.ts similarity index 100% rename from src/www/views/servers_view/server_list/index.ts rename to client/src/www/views/servers_view/server_list/index.ts diff --git a/src/www/views/servers_view/server_list/stories.ts b/client/src/www/views/servers_view/server_list/stories.ts similarity index 100% rename from src/www/views/servers_view/server_list/stories.ts rename to client/src/www/views/servers_view/server_list/stories.ts diff --git a/src/www/views/servers_view/server_list_item/index.ts b/client/src/www/views/servers_view/server_list_item/index.ts similarity index 100% rename from src/www/views/servers_view/server_list_item/index.ts rename to client/src/www/views/servers_view/server_list_item/index.ts diff --git a/src/www/views/servers_view/server_list_item/server_card/index.ts b/client/src/www/views/servers_view/server_list_item/server_card/index.ts similarity index 99% rename from src/www/views/servers_view/server_list_item/server_card/index.ts rename to client/src/www/views/servers_view/server_list_item/server_card/index.ts index 52a218a52f..9771cbe6c6 100644 --- a/src/www/views/servers_view/server_list_item/server_card/index.ts +++ b/client/src/www/views/servers_view/server_list_item/server_card/index.ts @@ -98,7 +98,7 @@ const sharedCSS = css` font-size: var(--server-name-size); margin-bottom: var(--outline-mini-gutter); /* To break the line in case a sequence of word characters is longer than the line. - See https://github.com/Jigsaw-Code/outline-client/issues/1372. */ + See https://github.com/Jigsaw-Code/outline-apps/issues/1372. */ word-break: break-all; } diff --git a/src/www/views/servers_view/server_list_item/server_card/stories.ts b/client/src/www/views/servers_view/server_list_item/server_card/stories.ts similarity index 100% rename from src/www/views/servers_view/server_list_item/server_card/stories.ts rename to client/src/www/views/servers_view/server_list_item/server_card/stories.ts diff --git a/src/www/webpack_base.mjs b/client/src/www/webpack_base.mjs similarity index 100% rename from src/www/webpack_base.mjs rename to client/src/www/webpack_base.mjs diff --git a/src/www/webpack_cordova.mjs b/client/src/www/webpack_cordova.mjs similarity index 100% rename from src/www/webpack_cordova.mjs rename to client/src/www/webpack_cordova.mjs diff --git a/src/www/webpack_css_rtl_loader.cjs b/client/src/www/webpack_css_rtl_loader.cjs similarity index 100% rename from src/www/webpack_css_rtl_loader.cjs rename to client/src/www/webpack_css_rtl_loader.cjs diff --git a/src/www/webpack_electron.mjs b/client/src/www/webpack_electron.mjs similarity index 100% rename from src/www/webpack_electron.mjs rename to client/src/www/webpack_electron.mjs diff --git a/src/www/webpack_test.mjs b/client/src/www/webpack_test.mjs similarity index 100% rename from src/www/webpack_test.mjs rename to client/src/www/webpack_test.mjs diff --git a/tools/OutlineService/OutlineService.sln b/client/tools/OutlineService/OutlineService.sln similarity index 100% rename from tools/OutlineService/OutlineService.sln rename to client/tools/OutlineService/OutlineService.sln diff --git a/tools/OutlineService/OutlineService/App.config b/client/tools/OutlineService/OutlineService/App.config similarity index 100% rename from tools/OutlineService/OutlineService/App.config rename to client/tools/OutlineService/OutlineService/App.config diff --git a/tools/OutlineService/OutlineService/OutlineService.Designer.cs b/client/tools/OutlineService/OutlineService/OutlineService.Designer.cs similarity index 100% rename from tools/OutlineService/OutlineService/OutlineService.Designer.cs rename to client/tools/OutlineService/OutlineService/OutlineService.Designer.cs diff --git a/tools/OutlineService/OutlineService/OutlineService.cs b/client/tools/OutlineService/OutlineService/OutlineService.cs similarity index 99% rename from tools/OutlineService/OutlineService/OutlineService.cs rename to client/tools/OutlineService/OutlineService/OutlineService.cs index 71da846c61..654dfeec0f 100755 --- a/tools/OutlineService/OutlineService/OutlineService.cs +++ b/client/tools/OutlineService/OutlineService/OutlineService.cs @@ -564,7 +564,7 @@ private void StartSmartDnsBlock() // This is for Windows 7: without it, the process exits immediately, presumably // because stdin isn't connected to anything: - // https://github.com/Jigsaw-Code/outline-client/issues/415 + // https://github.com/Jigsaw-Code/outline-apps/issues/415 // // This seems to make no difference on Windows 8 and 10. smartDnsBlock.StartInfo.RedirectStandardInput = true; diff --git a/tools/OutlineService/OutlineService/OutlineService.csproj b/client/tools/OutlineService/OutlineService/OutlineService.csproj similarity index 100% rename from tools/OutlineService/OutlineService/OutlineService.csproj rename to client/tools/OutlineService/OutlineService/OutlineService.csproj diff --git a/tools/OutlineService/OutlineService/OutlineService.resx b/client/tools/OutlineService/OutlineService/OutlineService.resx similarity index 100% rename from tools/OutlineService/OutlineService/OutlineService.resx rename to client/tools/OutlineService/OutlineService/OutlineService.resx diff --git a/tools/OutlineService/OutlineService/Program.cs b/client/tools/OutlineService/OutlineService/Program.cs similarity index 100% rename from tools/OutlineService/OutlineService/Program.cs rename to client/tools/OutlineService/OutlineService/Program.cs diff --git a/tools/OutlineService/OutlineService/Properties/AssemblyInfo.cs b/client/tools/OutlineService/OutlineService/Properties/AssemblyInfo.cs similarity index 100% rename from tools/OutlineService/OutlineService/Properties/AssemblyInfo.cs rename to client/tools/OutlineService/OutlineService/Properties/AssemblyInfo.cs diff --git a/tools/OutlineService/OutlineService/bin/OutlineService.exe b/client/tools/OutlineService/OutlineService/bin/OutlineService.exe similarity index 100% rename from tools/OutlineService/OutlineService/bin/OutlineService.exe rename to client/tools/OutlineService/OutlineService/bin/OutlineService.exe diff --git a/tools/OutlineService/OutlineService/bin/Release/OutlineService.exe.config b/client/tools/OutlineService/OutlineService/bin/Release/OutlineService.exe.config similarity index 100% rename from tools/OutlineService/OutlineService/bin/Release/OutlineService.exe.config rename to client/tools/OutlineService/OutlineService/bin/Release/OutlineService.exe.config diff --git a/tools/OutlineService/OutlineService/packages.config b/client/tools/OutlineService/OutlineService/packages.config similarity index 100% rename from tools/OutlineService/OutlineService/packages.config rename to client/tools/OutlineService/OutlineService/packages.config diff --git a/tools/build/Dockerfile b/client/tools/build/Dockerfile similarity index 100% rename from tools/build/Dockerfile rename to client/tools/build/Dockerfile diff --git a/tools/build/README.md b/client/tools/build/README.md similarity index 100% rename from tools/build/README.md rename to client/tools/build/README.md diff --git a/tools/build/android_tools_versions.sh b/client/tools/build/android_tools_versions.sh similarity index 100% rename from tools/build/android_tools_versions.sh rename to client/tools/build/android_tools_versions.sh diff --git a/tools/build/build.action.sh b/client/tools/build/build.action.sh similarity index 100% rename from tools/build/build.action.sh rename to client/tools/build/build.action.sh diff --git a/tools/build/build.sh b/client/tools/build/build.sh similarity index 100% rename from tools/build/build.sh rename to client/tools/build/build.sh diff --git a/tools/build/setup_linux_android.sh b/client/tools/build/setup_linux_android.sh similarity index 100% rename from tools/build/setup_linux_android.sh rename to client/tools/build/setup_linux_android.sh diff --git a/tools/build/setup_macos_android.sh b/client/tools/build/setup_macos_android.sh similarity index 100% rename from tools/build/setup_macos_android.sh rename to client/tools/build/setup_macos_android.sh diff --git a/tools/find_tap_name/bin/386/find_tap_name.exe b/client/tools/find_tap_name/bin/386/find_tap_name.exe similarity index 100% rename from tools/find_tap_name/bin/386/find_tap_name.exe rename to client/tools/find_tap_name/bin/386/find_tap_name.exe diff --git a/tools/find_tap_name/bin/amd64/find_tap_name.exe b/client/tools/find_tap_name/bin/amd64/find_tap_name.exe similarity index 100% rename from tools/find_tap_name/bin/amd64/find_tap_name.exe rename to client/tools/find_tap_name/bin/amd64/find_tap_name.exe diff --git a/tools/find_tap_name/build.action.sh b/client/tools/find_tap_name/build.action.sh similarity index 100% rename from tools/find_tap_name/build.action.sh rename to client/tools/find_tap_name/build.action.sh diff --git a/tools/find_tap_name/main.go b/client/tools/find_tap_name/main.go similarity index 100% rename from tools/find_tap_name/main.go rename to client/tools/find_tap_name/main.go diff --git a/tools/outline_proxy_controller/.gitignore b/client/tools/outline_proxy_controller/.gitignore similarity index 100% rename from tools/outline_proxy_controller/.gitignore rename to client/tools/outline_proxy_controller/.gitignore diff --git a/tools/outline_proxy_controller/CMakeLists.txt b/client/tools/outline_proxy_controller/CMakeLists.txt similarity index 100% rename from tools/outline_proxy_controller/CMakeLists.txt rename to client/tools/outline_proxy_controller/CMakeLists.txt diff --git a/tools/outline_proxy_controller/Dockerfile b/client/tools/outline_proxy_controller/Dockerfile similarity index 100% rename from tools/outline_proxy_controller/Dockerfile rename to client/tools/outline_proxy_controller/Dockerfile diff --git a/tools/outline_proxy_controller/OutlineProxyControllerConfig.h.in b/client/tools/outline_proxy_controller/OutlineProxyControllerConfig.h.in similarity index 100% rename from tools/outline_proxy_controller/OutlineProxyControllerConfig.h.in rename to client/tools/outline_proxy_controller/OutlineProxyControllerConfig.h.in diff --git a/tools/outline_proxy_controller/README.md b/client/tools/outline_proxy_controller/README.md similarity index 100% rename from tools/outline_proxy_controller/README.md rename to client/tools/outline_proxy_controller/README.md diff --git a/tools/outline_proxy_controller/build.action.sh b/client/tools/outline_proxy_controller/build.action.sh similarity index 100% rename from tools/outline_proxy_controller/build.action.sh rename to client/tools/outline_proxy_controller/build.action.sh diff --git a/tools/outline_proxy_controller/dist/OutlineProxyController b/client/tools/outline_proxy_controller/dist/OutlineProxyController similarity index 100% rename from tools/outline_proxy_controller/dist/OutlineProxyController rename to client/tools/outline_proxy_controller/dist/OutlineProxyController diff --git a/tools/outline_proxy_controller/dist/install_linux_service.sh b/client/tools/outline_proxy_controller/dist/install_linux_service.sh similarity index 100% rename from tools/outline_proxy_controller/dist/install_linux_service.sh rename to client/tools/outline_proxy_controller/dist/install_linux_service.sh diff --git a/tools/outline_proxy_controller/dist/outline_proxy_controller.service b/client/tools/outline_proxy_controller/dist/outline_proxy_controller.service similarity index 100% rename from tools/outline_proxy_controller/dist/outline_proxy_controller.service rename to client/tools/outline_proxy_controller/dist/outline_proxy_controller.service diff --git a/tools/outline_proxy_controller/logger.cpp b/client/tools/outline_proxy_controller/logger.cpp similarity index 100% rename from tools/outline_proxy_controller/logger.cpp rename to client/tools/outline_proxy_controller/logger.cpp diff --git a/tools/outline_proxy_controller/logger.h b/client/tools/outline_proxy_controller/logger.h similarity index 100% rename from tools/outline_proxy_controller/logger.h rename to client/tools/outline_proxy_controller/logger.h diff --git a/tools/outline_proxy_controller/network_monitor.cpp b/client/tools/outline_proxy_controller/network_monitor.cpp similarity index 100% rename from tools/outline_proxy_controller/network_monitor.cpp rename to client/tools/outline_proxy_controller/network_monitor.cpp diff --git a/tools/outline_proxy_controller/network_monitor.h b/client/tools/outline_proxy_controller/network_monitor.h similarity index 100% rename from tools/outline_proxy_controller/network_monitor.h rename to client/tools/outline_proxy_controller/network_monitor.h diff --git a/tools/outline_proxy_controller/outline_controller_server.cpp b/client/tools/outline_proxy_controller/outline_controller_server.cpp similarity index 100% rename from tools/outline_proxy_controller/outline_controller_server.cpp rename to client/tools/outline_proxy_controller/outline_controller_server.cpp diff --git a/tools/outline_proxy_controller/outline_controller_server.h b/client/tools/outline_proxy_controller/outline_controller_server.h similarity index 100% rename from tools/outline_proxy_controller/outline_controller_server.h rename to client/tools/outline_proxy_controller/outline_controller_server.h diff --git a/tools/outline_proxy_controller/outline_daemon.cpp b/client/tools/outline_proxy_controller/outline_daemon.cpp similarity index 100% rename from tools/outline_proxy_controller/outline_daemon.cpp rename to client/tools/outline_proxy_controller/outline_daemon.cpp diff --git a/tools/outline_proxy_controller/outline_error.cpp b/client/tools/outline_proxy_controller/outline_error.cpp similarity index 100% rename from tools/outline_proxy_controller/outline_error.cpp rename to client/tools/outline_proxy_controller/outline_error.cpp diff --git a/tools/outline_proxy_controller/outline_error.h b/client/tools/outline_proxy_controller/outline_error.h similarity index 100% rename from tools/outline_proxy_controller/outline_error.h rename to client/tools/outline_proxy_controller/outline_error.h diff --git a/tools/outline_proxy_controller/outline_proxy_controller.cpp b/client/tools/outline_proxy_controller/outline_proxy_controller.cpp similarity index 100% rename from tools/outline_proxy_controller/outline_proxy_controller.cpp rename to client/tools/outline_proxy_controller/outline_proxy_controller.cpp diff --git a/tools/outline_proxy_controller/outline_proxy_controller.h b/client/tools/outline_proxy_controller/outline_proxy_controller.h similarity index 100% rename from tools/outline_proxy_controller/outline_proxy_controller.h rename to client/tools/outline_proxy_controller/outline_proxy_controller.h diff --git a/tools/smartdnsblock/README.md b/client/tools/smartdnsblock/README.md similarity index 100% rename from tools/smartdnsblock/README.md rename to client/tools/smartdnsblock/README.md diff --git a/tools/smartdnsblock/bin/smartdnsblock.exe b/client/tools/smartdnsblock/bin/smartdnsblock.exe similarity index 100% rename from tools/smartdnsblock/bin/smartdnsblock.exe rename to client/tools/smartdnsblock/bin/smartdnsblock.exe diff --git a/tools/smartdnsblock/smartdnsblock.sln b/client/tools/smartdnsblock/smartdnsblock.sln similarity index 100% rename from tools/smartdnsblock/smartdnsblock.sln rename to client/tools/smartdnsblock/smartdnsblock.sln diff --git a/tools/smartdnsblock/smartdnsblock/smartdnsblock.cpp b/client/tools/smartdnsblock/smartdnsblock/smartdnsblock.cpp similarity index 100% rename from tools/smartdnsblock/smartdnsblock/smartdnsblock.cpp rename to client/tools/smartdnsblock/smartdnsblock/smartdnsblock.cpp diff --git a/tools/smartdnsblock/smartdnsblock/smartdnsblock.filters b/client/tools/smartdnsblock/smartdnsblock/smartdnsblock.filters similarity index 100% rename from tools/smartdnsblock/smartdnsblock/smartdnsblock.filters rename to client/tools/smartdnsblock/smartdnsblock/smartdnsblock.filters diff --git a/tools/smartdnsblock/smartdnsblock/smartdnsblock.user b/client/tools/smartdnsblock/smartdnsblock/smartdnsblock.user similarity index 100% rename from tools/smartdnsblock/smartdnsblock/smartdnsblock.user rename to client/tools/smartdnsblock/smartdnsblock/smartdnsblock.user diff --git a/tools/smartdnsblock/smartdnsblock/smartdnsblock.vcxproj b/client/tools/smartdnsblock/smartdnsblock/smartdnsblock.vcxproj similarity index 100% rename from tools/smartdnsblock/smartdnsblock/smartdnsblock.vcxproj rename to client/tools/smartdnsblock/smartdnsblock/smartdnsblock.vcxproj diff --git a/tsconfig.json b/client/tsconfig.json similarity index 95% rename from tsconfig.json rename to client/tsconfig.json index 33fb161c84..f6dbb97233 100644 --- a/tsconfig.json +++ b/client/tsconfig.json @@ -11,7 +11,7 @@ "outDir": "build", "removeComments": false, "resolveJsonModule": true, - "rootDir": "./", + "rootDir": "../", "skipLibCheck": true, "target": "es2017", "lib": ["es2022"] diff --git a/commitlint.config.js b/commitlint.config.js index b04e929554..cf3506a771 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -5,7 +5,8 @@ module.exports = { 2, 'always', [ - 'build', + 'client', + 'client/build', 'client/cordova', 'client/cordova/android', 'client/cordova/apple', diff --git a/go.mod b/go.mod index efbd0781fc..8e523a1957 100644 --- a/go.mod +++ b/go.mod @@ -1,24 +1,23 @@ -module github.com/Jigsaw-Code/outline-client +module github.com/Jigsaw-Code/outline-apps go 1.20 require ( - github.com/Jigsaw-Code/outline-sdk v0.0.9 - github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20230807220427-893de7fdc6b8 + github.com/Jigsaw-Code/outline-sdk v0.0.14-0.20240216220040-f741c57bf854 + github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240223000159-142376ee10ea github.com/crazy-max/xgo v0.30.0 github.com/eycorsican/go-tun2socks v1.16.11 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.8.2 golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a golang.org/x/sys v0.15.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/miekg/dns v1.1.54 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/shadowsocks/go-shadowsocks2 v0.1.5 // indirect github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 // indirect - golang.org/x/crypto v0.16.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 // indirect diff --git a/go.sum b/go.sum index 1ba35cb8e4..050bc7f12c 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,10 @@ -github.com/Jigsaw-Code/outline-sdk v0.0.9 h1:FuyrqJ5OBh5y8mpXkSomdGJreGi8bAOWRXRNB2B+Hdc= -github.com/Jigsaw-Code/outline-sdk v0.0.9/go.mod h1:hhlKz0+r9wSDFT8usvN8Zv/BFToCIFAUn1P2Qk8G2CM= -github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20230807220427-893de7fdc6b8 h1:BxOHmmuppPM8K0DGUsfvajKF4PKfGxv9boNDhmbszFU= -github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20230807220427-893de7fdc6b8/go.mod h1:tBqJXpVm+kym+EAUdwNodcFxy872FfjVErfj8Br+gs0= +github.com/Jigsaw-Code/outline-sdk v0.0.14-0.20240216220040-f741c57bf854 h1:SXp/tNjb70hpjF/MXAuLDkgCttlRA9qxLR7FCosGydg= +github.com/Jigsaw-Code/outline-sdk v0.0.14-0.20240216220040-f741c57bf854/go.mod h1:9cEaF6sWWMzY8orcUI9pV5D0oFp2FZArTSyJiYtMQQs= +github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240223000159-142376ee10ea h1:SAzKKkOum6WMxylAivTbUjKAwhaUU3RXO53k9qagi0A= +github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240223000159-142376ee10ea/go.mod h1:lYYruRIG1B5nVqkGQZajQK5jS2BIkMaEBM7yjzl5fIo= github.com/crazy-max/xgo v0.30.0 h1:2uunjwLBrVu5LKIS1dIDXz9U5OIX4H5LEsC3P6wFTto= github.com/crazy-max/xgo v0.30.0/go.mod h1:m/aqfKaN/cYzfw+Pzk7Mk0tkmShg3/rCS4Zdhdugi4o= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/eycorsican/go-tun2socks v1.16.11 h1:+hJDNgisrYaGEqoSxhdikMgMJ4Ilfwm/IZDrWRrbaH8= @@ -11,8 +12,6 @@ github.com/eycorsican/go-tun2socks v1.16.11/go.mod h1:wgB2BFT8ZaPKyKOQ/5dljMG/YI github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/miekg/dns v1.1.54 h1:5jon9mWcb0sFJGpnI99tOMhCPyJ+RPVz5b63MQG0VWI= -github.com/miekg/dns v1.1.54/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg= @@ -22,12 +21,17 @@ github.com/shadowsocks/go-shadowsocks2 v0.1.5/go.mod h1:AGGpIoek4HRno4xzyFiAtLHk github.com/songgao/water v0.0.0-20190725173103-fd331bda3f4b/go.mod h1:P5HUIBuIWKbyjl083/loAegFkfbFNx5i2qEP4CNbm7E= github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 h1:TG/diQgUe0pntT/2D9tmUCz4VNwm9MfrtPr0SU2qSX8= github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8/go.mod h1:P5HUIBuIWKbyjl083/loAegFkfbFNx5i2qEP4CNbm7E= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= @@ -48,5 +52,6 @@ golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/list.action.mjs b/list.action.mjs index 47d37bf181..51de1058e6 100644 --- a/list.action.mjs +++ b/list.action.mjs @@ -16,7 +16,7 @@ import url from 'url'; import * as globby from 'globby'; import path from 'path'; import fs from 'fs/promises'; -import {getRootDir} from './src/build/get_root_dir.mjs'; +import {getRootDir} from './client/src/build/get_root_dir.mjs'; /** * @description returns a list of all valid actions to run diff --git a/package-lock.json b/package-lock.json index 0ca8655d96..9792272bd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,25 @@ { - "name": "outline-client", + "name": "outline-apps", "version": "0.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "outline-client", - "version": "0.0.0", + "name": "outline-apps", "workspaces": [ - "src/cordova/plugin", - "server_manager" + "server_manager", + "client" ], + "devDependencies": { + "electron-builder": "^24.13.3" + }, + "engines": { + "node": "18.x.x" + } + }, + "client": { + "name": "outline-client", + "version": "0.0.0", "dependencies": { "@material/mwc-button": "^0.25.3", "@material/mwc-circular-progress": "^0.27.0", @@ -91,7 +100,7 @@ "cordova-webintent": "github:cordova-misc/cordova-webintent#v2.0.0", "css-loader": "^5.0.1", "deepmerge": "^4.3.1", - "electron": "^19.1.9", + "electron": "19.1.9", "electron-builder": "^23.6.0", "electron-icon-maker": "^0.0.5", "eslint": "^8.15.0", @@ -101,6 +110,7 @@ "esm": "^3.2.25", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.1.0", + "husky": "^1.3.1", "i18n-strings-files": "^2.0.0", "intl-messageformat": "^9.12.0", "istanbul": "^0.4.5", @@ -112,7 +122,6 @@ "minimist": "^1.2.6", "node-fetch": "^3.3.0", "node-gyp": "^10.0.1", - "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", "postcss": "^7.0.39", "postcss-rtl": "^1.7.3", "prettier": "^2.8.0", @@ -132,13 +141,304 @@ "webpack-shell-plugin-next": "^2.1.1", "xmlbuilder2": "^3.1.1" }, + "optionalDependencies": { + "ios-deploy": "^1.11.4" + } + }, + "client/node_modules/@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, "engines": { - "node": "18.x.x" + "node": ">=8.6" + } + }, + "client/node_modules/@electron/universal/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" + } + }, + "client/node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "client/node_modules/app-builder-lib": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "client/node_modules/builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "client/node_modules/builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "client/node_modules/builder-util/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" + } + }, + "client/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "client/node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" + } + }, + "client/node_modules/dir-compare/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "client/node_modules/dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "dev": true, + "dependencies": { + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" }, "optionalDependencies": { - "ios-deploy": "^1.11.4" + "dmg-license": "^1.0.11" + } + }, + "client/node_modules/electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "dev": true, + "dependencies": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "client/node_modules/electron-builder/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" + } + }, + "client/node_modules/electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "client/node_modules/electron-publish/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" + } + }, + "client/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, + "client/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "client/src/cordova/plugin": { + "name": "cordova-plugin-outline", + "version": "0.0.0", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "dev": true, @@ -1881,9 +2181,9 @@ } }, "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==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.1.tgz", + "integrity": "sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -1929,24 +2229,6 @@ "node": ">=12" } }, - "node_modules/@electron/universal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", - "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", - "dev": true, - "dependencies": { - "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.1.0", - "debug": "^4.3.1", - "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@eslint/eslintrc": { "version": "1.3.0", "dev": true, @@ -6523,17 +6805,19 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.11", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "dev": true, - "license": "MIT" + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@types/yauzl": { "version": "2.10.0", @@ -7303,6 +7587,15 @@ } } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -7629,91 +7922,6 @@ "node": ">= 8" } }, - "node_modules/app-builder-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", - "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", - "dev": true - }, - "node_modules/app-builder-lib": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", - "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", - "dev": true, - "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.2.1", - "@malept/flatpak-bundler": "^0.4.0", - "7zip-bin": "~5.1.1", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.7", - "electron-osx-sign": "^0.6.0", - "electron-publish": "23.6.0", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.10", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^3.1.2", - "read-config-file": "6.2.0", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.7", - "tar": "^6.1.11", - "temp-file": "^3.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/app-builder-lib/node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", @@ -7760,6 +7968,62 @@ "node": ">=4" } }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "peer": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -9407,31 +9671,6 @@ "dev": true, "license": "MIT" }, - "node_modules/builder-util": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", - "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", - "dev": true, - "dependencies": { - "@types/debug": "^4.1.6", - "@types/fs-extra": "^9.0.11", - "7zip-bin": "~5.1.1", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" - } - }, "node_modules/builder-util-runtime": { "version": "9.0.3", "license": "MIT", @@ -9443,49 +9682,6 @@ "node": ">=12.0.0" } }, - "node_modules/builder-util/node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/builder-util/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/builder-util/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/builtin-modules": { "version": "3.3.0", "dev": true, @@ -9630,6 +9826,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/callsites": { "version": "3.1.0", "dev": true, @@ -10310,6 +10539,37 @@ "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==", "dev": true }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/compressible": { "version": "2.0.18", "dev": true, @@ -11486,7 +11746,7 @@ "license": "MIT" }, "node_modules/cordova-plugin-outline": { - "resolved": "src/cordova/plugin", + "resolved": "client/src/cordova/plugin", "link": true }, "node_modules/cordova-plugin-splashscreen": { @@ -11676,6 +11936,71 @@ "node": ">= 0.10" } }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", @@ -11686,6 +12011,48 @@ "buffer": "^5.1.0" } }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "peer": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "peer": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "dev": true, @@ -12569,45 +12936,6 @@ "node": ">=0.3.1" } }, - "node_modules/dir-compare": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", - "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", - "dev": true, - "dependencies": { - "buffer-equal": "1.0.0", - "colors": "1.0.3", - "commander": "2.9.0", - "minimatch": "3.0.4" - }, - "bin": { - "dircompare": "src/cli/dircompare.js" - } - }, - "node_modules/dir-compare/node_modules/commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", - "dev": true, - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/dir-compare/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "dev": true, @@ -12619,50 +12947,6 @@ "node": ">=8" } }, - "node_modules/dmg-builder": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", - "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", - "dev": true, - "dependencies": { - "app-builder-lib": "23.6.0", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "fs-extra": "^10.0.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" - }, - "optionalDependencies": { - "dmg-license": "^1.0.11" - } - }, - "node_modules/dmg-builder/node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/dmg-builder/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/dmg-license": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", @@ -13147,23 +13431,22 @@ } }, "node_modules/electron-builder": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", - "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz", + "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", "dev": true, "dependencies": { - "@types/yargs": "^17.0.1", - "app-builder-lib": "23.6.0", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "dmg-builder": "23.6.0", - "fs-extra": "^10.0.0", + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "dmg-builder": "24.13.3", + "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", - "read-config-file": "6.2.0", - "simple-update-notifier": "^1.0.7", - "yargs": "^17.5.1" + "read-config-file": "6.3.2", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" }, "bin": { "electron-builder": "cli.js", @@ -13173,10 +13456,142 @@ "node": ">=14.0.0" } }, + "node_modules/electron-builder/node_modules/@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/electron-builder/node_modules/@electron/universal/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-builder/node_modules/7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", + "dev": true + }, + "node_modules/electron-builder/node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "node_modules/electron-builder/node_modules/app-builder-lib": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.13.3.tgz", + "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.2.1", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.5.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "electron-publish": "24.13.1", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "24.13.3", + "electron-builder-squirrel-windows": "24.13.3" + } + }, + "node_modules/electron-builder/node_modules/app-builder-lib/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/electron-builder/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/electron-builder/node_modules/builder-util": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", + "integrity": "sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, "node_modules/electron-builder/node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -13188,8 +13603,9 @@ }, "node_modules/electron-builder/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13201,10 +13617,66 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/electron-builder/node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "node_modules/electron-builder/node_modules/dmg-builder": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.13.3.tgz", + "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", + "dev": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/electron-builder/node_modules/electron-builder-squirrel-windows": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", + "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", + "dev": true, + "peer": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "archiver": "^5.3.1", + "builder-util": "24.13.1", + "fs-extra": "^10.1.0" + } + }, + "node_modules/electron-builder/node_modules/electron-publish": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", + "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13214,6 +13686,62 @@ "node": ">=12" } }, + "node_modules/electron-builder/node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/electron-builder/node_modules/read-config-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", + "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", + "dev": true, + "dependencies": { + "config-file-ts": "^0.2.4", + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/electron-builder/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-builder/node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/electron-icon-maker": { "version": "0.0.5", "dev": true, @@ -13290,64 +13818,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/electron-publish": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", - "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", - "dev": true, - "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "fs-extra": "^10.0.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" - } - }, - "node_modules/electron-publish/node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/electron-publish/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/electron-publish/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.659", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.659.tgz", @@ -16013,6 +16483,15 @@ "node": ">=4" } }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "dev": true, @@ -17760,6 +18239,234 @@ "ms": "^2.0.0" } }, + "node_modules/husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "bin": { + "husky-upgrade": "lib/upgrader/bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/husky/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/husky/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/husky/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/husky/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/husky/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/husky/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/husky/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/husky/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/husky/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/husky/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/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/i18n-strings-files": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/i18n-strings-files/-/i18n-strings-files-2.0.0.tgz", @@ -20483,10 +21190,31 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "peer": true + }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", "license": "MIT" }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "peer": true + }, "node_modules/lodash.isdate": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isdate/-/lodash.isdate-4.0.1.tgz", @@ -20503,6 +21231,13 @@ "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "peer": true + }, "node_modules/lodash.memoize": { "version": "4.1.2", "dev": true, @@ -20519,6 +21254,13 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "peer": true + }, "node_modules/lodash.uniq": { "version": "4.5.0", "dev": true, @@ -23402,11 +24144,9 @@ "os-tmpdir": "^1.0.0" } }, - "node_modules/outline-i18n": { - "version": "0.0.7", - "resolved": "git+ssh://git@github.com/Jigsaw-Code/outline-i18n.git#4642c3657074246b8eca09486941434718f66608", - "dev": true, - "license": "Apache-2.0" + "node_modules/outline-client": { + "resolved": "client", + "link": true }, "node_modules/outline-manager": { "resolved": "server_manager", @@ -24156,16 +24896,27 @@ "node": ">= 0.4.0" } }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, "node_modules/plist": { - "version": "3.0.6", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "dev": true, - "license": "MIT", "dependencies": { + "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" }, "engines": { - "node": ">=6" + "node": ">=10.4.0" } }, "node_modules/plugin-error": { @@ -25401,6 +26152,20 @@ "node": ">=10" } }, + "node_modules/read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", + "dev": true, + "dependencies": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/read-pkg-up": { "version": "1.0.1", "dev": true, @@ -25494,6 +26259,42 @@ "semver": "bin/semver" } }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/readable-stream": { "version": "2.3.7", "dev": true, @@ -25508,6 +26309,39 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/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, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/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, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "3.6.0", "dev": true, @@ -26676,6 +27510,18 @@ "node": ">=4" } }, + "node_modules/run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true, + "bin": { + "run-node": "run-node" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -26847,8 +27693,7 @@ "node_modules/semver-compare": { "version": "1.0.0", "dev": true, - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/semver-greatest-satisfied-range": { "version": "1.1.0", @@ -27760,9 +28605,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true, "optional": true }, @@ -31602,6 +32447,58 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "peer": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/zwitch": { "version": "1.0.5", "dev": true, @@ -31689,39 +32586,6 @@ "webpack-node-externals": "^3.0.0" } }, - "server_manager/node_modules/@electron/universal": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz", - "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==", - "dev": true, - "dependencies": { - "@electron/asar": "^3.2.1", - "@malept/cross-spawn-promise": "^1.1.0", - "debug": "^4.3.1", - "dir-compare": "^3.0.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" - }, - "engines": { - "node": ">=8.6" - } - }, - "server_manager/node_modules/@electron/universal/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" - } - }, "server_manager/node_modules/@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", @@ -31786,12 +32650,6 @@ } } }, - "server_manager/node_modules/7zip-bin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", - "dev": true - }, "server_manager/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -31829,57 +32687,6 @@ "node": ">=0.10.0" } }, - "server_manager/node_modules/app-builder-lib": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.9.1.tgz", - "integrity": "sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==", - "dev": true, - "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.1.0", - "@electron/osx-sign": "1.0.5", - "@electron/universal": "1.4.1", - "@malept/flatpak-bundler": "^0.4.0", - "@types/fs-extra": "9.0.13", - "7zip-bin": "~5.2.0", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.8", - "electron-publish": "24.8.1", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^5.0.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^5.1.1", - "read-config-file": "6.3.2", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.8", - "tar": "^6.1.12", - "temp-file": "^3.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "server_manager/node_modules/app-builder-lib/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" - } - }, "server_manager/node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -31916,52 +32723,6 @@ "integrity": "sha512-epsm3Z92j5xwek9p97pVw3KbsNc0F4QnbYh+N93SpbJYuHFQQ/UAh6K+bKFGyLePH3Hudtl/Sa95Quqp0gX8IQ==", "dev": true }, - "server_manager/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" - } - }, - "server_manager/node_modules/builder-util": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.8.1.tgz", - "integrity": "sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==", - "dev": true, - "dependencies": { - "@types/debug": "^4.1.6", - "7zip-bin": "~5.2.0", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" - } - }, - "server_manager/node_modules/builder-util-runtime": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", - "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "server_manager/node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", @@ -31971,22 +32732,6 @@ "node": ">=0.10.0" } }, - "server_manager/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" - } - }, "server_manager/node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -32200,33 +32945,6 @@ "node": ">=0.10.0" } }, - "server_manager/node_modules/dir-compare": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", - "dev": true, - "dependencies": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" - } - }, - "server_manager/node_modules/dmg-builder": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.9.1.tgz", - "integrity": "sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==", - "dev": true, - "dependencies": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "fs-extra": "^10.1.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" - }, - "optionalDependencies": { - "dmg-license": "^1.0.11" - } - }, "server_manager/node_modules/dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -32235,32 +32953,6 @@ "node": ">=8" } }, - "server_manager/node_modules/electron-builder": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.9.1.tgz", - "integrity": "sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==", - "dev": true, - "dependencies": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "dmg-builder": "24.9.1", - "fs-extra": "^10.1.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.3.2", - "simple-update-notifier": "2.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "electron-builder": "cli.js", - "install-app-deps": "install-app-deps.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, "server_manager/node_modules/electron-icon-maker": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/electron-icon-maker/-/electron-icon-maker-0.0.4.tgz", @@ -32275,21 +32967,6 @@ "electron-icon-maker": "index.js" } }, - "server_manager/node_modules/electron-publish": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.8.1.tgz", - "integrity": "sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==", - "dev": true, - "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "fs-extra": "^10.1.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" - } - }, "server_manager/node_modules/electron-updater": { "version": "4.6.5", "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.5.tgz", @@ -32457,18 +33134,6 @@ "node": ">=0.10.0" } }, - "server_manager/node_modules/isbinaryfile": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", - "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", - "dev": true, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, "server_manager/node_modules/jimp": { "version": "0.2.28", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", @@ -32601,32 +33266,6 @@ "node": ">=0.10.0" } }, - "server_manager/node_modules/read-config-file": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", - "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", - "dev": true, - "dependencies": { - "config-file-ts": "^0.2.4", - "dotenv": "^9.0.2", - "dotenv-expand": "^5.1.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.0", - "lazy-val": "^1.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "server_manager/node_modules/read-config-file/node_modules/dotenv": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", - "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "server_manager/node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -32681,18 +33320,6 @@ "randombytes": "^2.1.0" } }, - "server_manager/node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, "server_manager/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -32860,7 +33487,8 @@ }, "src/cordova/plugin": { "name": "cordova-plugin-outline", - "version": "0.0.0" + "version": "0.0.0", + "extraneous": true } }, "dependencies": { @@ -33944,9 +34572,9 @@ } }, "@electron/notarize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", - "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.1.tgz", + "integrity": "sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -33981,21 +34609,6 @@ } } }, - "@electron/universal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", - "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", - "dev": true, - "requires": { - "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.1.0", - "debug": "^4.3.1", - "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" - } - }, "@eslint/eslintrc": { "version": "1.3.0", "dev": true, @@ -37880,14 +38493,18 @@ } }, "@types/yargs": { - "version": "17.0.11", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "21.0.0", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "@types/yauzl": { @@ -38454,6 +39071,12 @@ "dev": true, "requires": {} }, + "@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -38675,78 +39298,6 @@ "picomatch": "^2.0.4" } }, - "app-builder-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", - "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", - "dev": true - }, - "app-builder-lib": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", - "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", - "dev": true, - "requires": { - "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.2.1", - "@malept/flatpak-bundler": "^0.4.0", - "7zip-bin": "~5.1.1", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.7", - "electron-osx-sign": "^0.6.0", - "electron-publish": "23.6.0", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.10", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^3.1.2", - "read-config-file": "6.2.0", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.7", - "tar": "^6.1.11", - "temp-file": "^3.4.0" - }, - "dependencies": { - "builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "sax": "^1.2.4" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", @@ -38784,6 +39335,55 @@ } } }, + "archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "peer": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "peer": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + } + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -39963,64 +40563,6 @@ "version": "1.1.2", "dev": true }, - "builder-util": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", - "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", - "dev": true, - "requires": { - "@types/debug": "^4.1.6", - "@types/fs-extra": "^9.0.11", - "7zip-bin": "~5.1.1", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" - }, - "dependencies": { - "builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "sax": "^1.2.4" - } - }, - "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" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, "builder-util-runtime": { "version": "9.0.3", "requires": { @@ -40138,6 +40680,32 @@ "get-intrinsic": "^1.0.2" } }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, "callsites": { "version": "3.1.0", "dev": true @@ -40596,6 +41164,33 @@ "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==", "dev": true }, + "compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "peer": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "compressible": { "version": "2.0.18", "dev": true, @@ -41433,7 +42028,7 @@ "from": "cordova-plugin-clipboard@github:Jigsaw-Code/outline-cordova-plugin-clipboard#v2.0.0" }, "cordova-plugin-outline": { - "version": "file:src/cordova/plugin" + "version": "file:client/src/cordova/plugin" }, "cordova-plugin-splashscreen": { "version": "6.0.2" @@ -41542,6 +42137,61 @@ "vary": "^1" } }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + } + } + }, "crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", @@ -41552,6 +42202,38 @@ "buffer": "^5.1.0" } }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "peer": true + }, + "crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "peer": true, + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "cross-fetch": { "version": "3.1.5", "dev": true, @@ -42162,38 +42844,6 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "dir-compare": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", - "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", - "dev": true, - "requires": { - "buffer-equal": "1.0.0", - "colors": "1.0.3", - "commander": "2.9.0", - "minimatch": "3.0.4" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, "dir-glob": { "version": "3.0.1", "dev": true, @@ -42201,44 +42851,6 @@ "path-type": "^4.0.0" } }, - "dmg-builder": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", - "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", - "dev": true, - "requires": { - "app-builder-lib": "23.6.0", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "dmg-license": "^1.0.11", - "fs-extra": "^10.0.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" - }, - "dependencies": { - "builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "sax": "^1.2.4" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, "dmg-license": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", @@ -42620,29 +43232,148 @@ } }, "electron-builder": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", - "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz", + "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", "dev": true, "requires": { - "@types/yargs": "^17.0.1", - "app-builder-lib": "23.6.0", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "dmg-builder": "23.6.0", - "fs-extra": "^10.0.0", + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "dmg-builder": "24.13.3", + "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", - "read-config-file": "6.2.0", - "simple-update-notifier": "^1.0.7", - "yargs": "^17.5.1" + "read-config-file": "6.3.2", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" }, "dependencies": { + "@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "requires": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "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" + } + } + } + }, + "7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", + "dev": true + }, + "app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "app-builder-lib": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.13.3.tgz", + "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", + "dev": true, + "requires": { + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.2.1", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.5.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "electron-publish": "24.13.1", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + }, + "builder-util": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", + "integrity": "sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==", + "dev": true, + "requires": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, "builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", "dev": true, "requires": { "debug": "^4.3.4", @@ -42651,20 +43382,115 @@ }, "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" } }, + "dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "dmg-builder": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.13.3.tgz", + "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", + "dev": true, + "requires": { + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "dmg-license": "^1.0.11", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + } + }, + "electron-builder-squirrel-windows": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", + "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", + "dev": true, + "peer": true, + "requires": { + "app-builder-lib": "24.13.3", + "archiver": "^5.3.1", + "builder-util": "24.13.1", + "fs-extra": "^10.1.0" + } + }, + "electron-publish": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", + "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, "fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } + }, + "isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true + }, + "read-config-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", + "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", + "dev": true, + "requires": { + "config-file-ts": "^0.2.4", + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } } } }, @@ -42727,54 +43553,6 @@ } } }, - "electron-publish": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", - "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", - "dev": true, - "requires": { - "@types/fs-extra": "^9.0.11", - "builder-util": "23.6.0", - "builder-util-runtime": "9.1.1", - "chalk": "^4.1.1", - "fs-extra": "^10.0.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" - }, - "dependencies": { - "builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "sax": "^1.2.4" - } - }, - "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" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, "electron-to-chromium": { "version": "1.4.659", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.659.tgz", @@ -44726,6 +45504,12 @@ "npm-conf": "^1.1.0" } }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, "get-stream": { "version": "6.0.1", "dev": true @@ -46016,6 +46800,178 @@ "ms": "^2.0.0" } }, + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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" + } + } + } + }, "i18n-strings-files": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/i18n-strings-files/-/i18n-strings-files-2.0.0.tgz", @@ -47974,9 +48930,30 @@ "version": "4.0.8", "dev": true }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "peer": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "peer": true + }, "lodash.escaperegexp": { "version": "4.1.2" }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "peer": true + }, "lodash.isdate": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isdate/-/lodash.isdate-4.0.1.tgz", @@ -47992,6 +48969,13 @@ "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "peer": true + }, "lodash.memoize": { "version": "4.1.2", "dev": true @@ -48006,6 +48990,13 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "peer": true + }, "lodash.uniq": { "version": "4.5.0", "dev": true @@ -50096,10 +51087,372 @@ "os-tmpdir": "^1.0.0" } }, - "outline-i18n": { - "version": "git+ssh://git@github.com/Jigsaw-Code/outline-i18n.git#4642c3657074246b8eca09486941434718f66608", - "dev": true, - "from": "outline-i18n@Jigsaw-Code/outline-i18n#v0.0.7" + "outline-client": { + "version": "file:client", + "requires": { + "@babel/core": "^7.12.10", + "@babel/polyfill": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@commitlint/config-conventional": "^16.2.4", + "@jsdevtools/coverage-istanbul-loader": "^3.0.5", + "@material/mwc-button": "^0.25.3", + "@material/mwc-circular-progress": "^0.27.0", + "@material/mwc-formfield": "^0.25.3", + "@material/mwc-icon-button": "^0.25.3", + "@material/mwc-menu": "^0.25.3", + "@material/mwc-radio": "^0.25.3", + "@material/mwc-select": "^0.25.3", + "@material/mwc-textarea": "^0.25.3", + "@material/mwc-textfield": "^0.25.3", + "@open-wc/testing": "^3.2.0", + "@open-wc/testing-karma": "^4.0.9", + "@polymer/app-layout": "^3.1.0", + "@polymer/app-localize-behavior": "^3.0.1", + "@polymer/app-route": "^3.0.2", + "@polymer/decorators": "^3.0.0", + "@polymer/font-roboto": "^3.0.2", + "@polymer/iron-icons": "^3.0.1", + "@polymer/iron-iconset-svg": "^3.0.1", + "@polymer/iron-pages": "^3.0.1", + "@polymer/paper-behaviors": "^3.0.1", + "@polymer/paper-button": "^3.0.1", + "@polymer/paper-card": "^3.0.1", + "@polymer/paper-dialog": "^3.0.1", + "@polymer/paper-dropdown-menu": "^3.1.0", + "@polymer/paper-icon-button": "^3.0.2", + "@polymer/paper-input": "^3.2.1", + "@polymer/paper-item": "^3.0.1", + "@polymer/paper-listbox": "^3.0.1", + "@polymer/paper-menu-button": "^3.0.1", + "@polymer/paper-ripple": "^3.0.2", + "@polymer/paper-styles": "^3.0.1", + "@polymer/paper-toast": "^3.0.1", + "@rollup/plugin-image": "^2.1.1", + "@sentry/browser": "^7.31.1", + "@sentry/electron": "^4.2.0", + "@types/auto-launch": "^5.0.0", + "@types/cordova": "^0.0.34", + "@types/jasmine": "^4.3.6", + "@types/node": "^14.14.7", + "@types/polymer": "^1.2.9", + "@types/uuidv4": "^2.0.0", + "@typescript-eslint/eslint-plugin": "^5.32.0", + "@typescript-eslint/parser": "^5.32.0", + "@web/dev-server": "^0.1.35", + "@web/dev-server-esbuild": "^0.3.3", + "@web/dev-server-storybook": "^0.5.4", + "@webcomponents/webcomponentsjs": "^2.4.4", + "auto-launch": "^5.0.5", + "babel-loader": "^8.2.2", + "browserslist": "^4.20.3", + "chalk": "^5.0.1", + "copy-dir": "^1.3.0", + "copy-webpack-plugin": "^5.1.1", + "cordova-android": "^11.0.0", + "cordova-browser": "~6.0.0", + "cordova-ios": "github:apache/cordova-ios#1a5cd45e2243b239b5045a0ade9d2da1d779b72a", + "cordova-lib": "^11.0.0", + "cordova-osx": "github:apache/cordova-osx", + "cordova-plugin-clipboard": "github:Jigsaw-Code/outline-cordova-plugin-clipboard#v2.0.0", + "cordova-plugin-outline": "file:src/cordova/plugin", + "cordova-plugin-splashscreen": "^6.0.0", + "cordova-plugin-statusbar": "^2.2.3", + "cordova-webintent": "github:cordova-misc/cordova-webintent#v2.0.0", + "css-loader": "^5.0.1", + "deepmerge": "^4.3.1", + "electron": "19.1.9", + "electron-builder": "^23.6.0", + "electron-icon-maker": "^0.0.5", + "electron-updater": "^5.0.5", + "eslint": "^8.15.0", + "eslint-import-resolver-typescript": "^3.4.0", + "eslint-plugin-compat": "^4.0.2", + "eslint-plugin-import": "^2.26.0", + "esm": "^3.2.25", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.1.0", + "husky": "^1.3.1", + "i18n-strings-files": "^2.0.0", + "intl-messageformat": "^9.12.0", + "ios-deploy": "^1.11.4", + "istanbul": "^0.4.5", + "karma": "^6.4.2", + "karma-chrome-launcher": "^3.1.0", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-jasmine": "^4.0.1", + "karma-webpack": "^5.0.0", + "lit": "^2.2.2", + "minimist": "^1.2.6", + "node-fetch": "^3.3.0", + "node-gyp": "^10.0.1", + "postcss": "^7.0.39", + "postcss-rtl": "^1.7.3", + "prettier": "^2.8.0", + "pretty-quick": "^2.0.1", + "puppeteer": "^13.1.2", + "replace-in-file": "^6.3.5", + "rimraf": "^2.7.1", + "rmfr": "^2.0.0", + "ShadowsocksConfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.1", + "socks": "^1.1.10", + "style-loader": "^2.0.0", + "sudo-prompt": "^9.2.1", + "ts-loader": "^9.3.1", + "typescript": "^4.7.4", + "url": "^0.11.0", + "uuidv4": "^4.0.0", + "web-animations-js": "^2.3.2", + "webpack": "^5.16.0", + "webpack-cli": "^4.4.0", + "webpack-dev-server": "^4.5.0", + "webpack-merge": "^5.8.0", + "webpack-shell-plugin-next": "^2.1.1", + "xmlbuilder2": "^3.1.1" + }, + "dependencies": { + "@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "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" + } + } + } + }, + "app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "app-builder-lib": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + "dev": true, + "requires": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" + } + }, + "builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "dev": true, + "requires": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + }, + "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" + } + } + } + }, + "builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "sax": "^1.2.4" + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "dev": true, + "requires": { + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "dmg-license": "^1.0.11", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + } + }, + "electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "dev": true, + "requires": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" + }, + "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" + } + } + } + }, + "electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.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" + } + } + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } }, "outline-manager": { "version": "file:server_manager", @@ -50175,35 +51528,6 @@ "webpack-node-externals": "^3.0.0" }, "dependencies": { - "@electron/universal": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz", - "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==", - "dev": true, - "requires": { - "@electron/asar": "^3.2.1", - "@malept/cross-spawn-promise": "^1.1.0", - "debug": "^4.3.1", - "dir-compare": "^3.0.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" - }, - "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" - } - } - } - }, "@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", @@ -50245,12 +51569,6 @@ "dev": true, "requires": {} }, - "7zip-bin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", - "dev": true - }, "ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -50278,53 +51596,6 @@ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, - "app-builder-lib": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.9.1.tgz", - "integrity": "sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==", - "dev": true, - "requires": { - "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.1.0", - "@electron/osx-sign": "1.0.5", - "@electron/universal": "1.4.1", - "@malept/flatpak-bundler": "^0.4.0", - "@types/fs-extra": "9.0.13", - "7zip-bin": "~5.2.0", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.8", - "electron-publish": "24.8.1", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^5.0.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^5.1.1", - "read-config-file": "6.3.2", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.8", - "tar": "^6.1.12", - "temp-file": "^3.4.0" - }, - "dependencies": { - "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" - } - } - } - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -50352,65 +51623,12 @@ "integrity": "sha512-epsm3Z92j5xwek9p97pVw3KbsNc0F4QnbYh+N93SpbJYuHFQQ/UAh6K+bKFGyLePH3Hudtl/Sa95Quqp0gX8IQ==", "dev": true }, - "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" - } - }, - "builder-util": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.8.1.tgz", - "integrity": "sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==", - "dev": true, - "requires": { - "@types/debug": "^4.1.6", - "7zip-bin": "~5.2.0", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" - } - }, - "builder-util-runtime": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", - "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "sax": "^1.2.4" - } - }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true }, - "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" - } - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -50545,55 +51763,11 @@ } } }, - "dir-compare": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" - } - }, - "dmg-builder": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.9.1.tgz", - "integrity": "sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==", - "dev": true, - "requires": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "dmg-license": "^1.0.11", - "fs-extra": "^10.1.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" - } - }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" }, - "electron-builder": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.9.1.tgz", - "integrity": "sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==", - "dev": true, - "requires": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "dmg-builder": "24.9.1", - "fs-extra": "^10.1.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.3.2", - "simple-update-notifier": "2.0.0", - "yargs": "^17.6.2" - } - }, "electron-icon-maker": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/electron-icon-maker/-/electron-icon-maker-0.0.4.tgz", @@ -50605,21 +51779,6 @@ "jimp": "^0.2.27" } }, - "electron-publish": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.8.1.tgz", - "integrity": "sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==", - "dev": true, - "requires": { - "@types/fs-extra": "^9.0.11", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "fs-extra": "^10.1.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" - } - }, "electron-updater": { "version": "4.6.5", "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.5.tgz", @@ -50755,12 +51914,6 @@ "number-is-nan": "^1.0.0" } }, - "isbinaryfile": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", - "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", - "dev": true - }, "jimp": { "version": "0.2.28", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", @@ -50883,28 +52036,6 @@ "integrity": "sha512-5NLTTdX45dKFtG8CX5pKmvS9V5u9wBE+gkklN7xhDuhq3pA2I4O7ALfKxosCMcLHOhkxj6GNacZhfXtp5nlCdg==", "dev": true }, - "read-config-file": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", - "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", - "dev": true, - "requires": { - "config-file-ts": "^0.2.4", - "dotenv": "^9.0.2", - "dotenv-expand": "^5.1.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.0", - "lazy-val": "^1.0.4" - }, - "dependencies": { - "dotenv": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", - "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", - "dev": true - } - } - }, "rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -50943,15 +52074,6 @@ "randombytes": "^2.1.0" } }, - "simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "requires": { - "semver": "^7.5.3" - } - }, "slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -51580,10 +52702,22 @@ "version": "0.4.0", "dev": true }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, "plist": { - "version": "3.0.6", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "dev": true, "requires": { + "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } @@ -52487,6 +53621,49 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, "read-pkg-up": { "version": "1.0.1", "dev": true, @@ -52565,6 +53742,38 @@ "util-deprecate": "~1.0.1" } }, + "readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "peer": true, + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "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, + "peer": true, + "requires": { + "balanced-match": "^1.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, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "readdirp": { "version": "3.6.0", "dev": true, @@ -53395,6 +54604,12 @@ } } }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, "run-parallel": { "version": "1.2.0", "dev": true, @@ -53520,8 +54735,7 @@ }, "semver-compare": { "version": "1.0.0", - "dev": true, - "optional": true + "dev": true }, "semver-greatest-satisfied-range": { "version": "1.1.0", @@ -54225,9 +55439,9 @@ } }, "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true, "optional": true }, @@ -56957,6 +58171,51 @@ "version": "0.1.0", "dev": true }, + "zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "peer": true, + "requires": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "peer": true, + "requires": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "zwitch": { "version": "1.0.5", "dev": true diff --git a/package.json b/package.json index 97a245d847..97b94ee88a 100644 --- a/package.json +++ b/package.json @@ -1,167 +1,26 @@ { - "name": "outline-client", - "version": "0.0.0", + "name": "outline-apps", "productName": "Outline", "scripts": { "action:help": "npm run action list", "action:list": "npm run action list", - "action": "node src/build/run_action.mjs", - "clean": "rimraf build output node_modules www platforms plugins third_party/jsign/*.jar", + "action": "node ./client/src/build/run_action.mjs", + "clean": "rimraf client/build client/output node_modules client/node_modules client/www client/platforms client/plugins third_party/jsign/*.jar", "format:all": "prettier --write \"**/*.{cjs,mjs,html,js,json,md,ts}\"", "format": "pretty-quick --staged --pattern \"**/*.{cjs,mjs,html,js,json,md,ts}\"", - "lint:ts": "eslint --ext ts,mjs src", + "lint:ts": "eslint --ext ts,mjs client/src", "lint": "npm run lint:ts", "reset": "npm run clean && npm ci" }, - "comments": { - "version": "The 'version' in this file is just a placeholder for 'npx generate-license-file', please do not change it.", - "codrova-osx": "Version-controlled platform config files at src/cordova/apple/xcode/osx/Outline/config.xml, src/cordova/apple/xcode/osx/osx.json, and src/cordova/apple/xcode/osx/www/cordova_plugins.js as a workaround for https://github.com/apache/cordova-osx/issues/106. Delete these files when the issue is fixed." - }, - "dependencies": { - "@material/mwc-button": "^0.25.3", - "@material/mwc-circular-progress": "^0.27.0", - "@material/mwc-formfield": "^0.25.3", - "@material/mwc-icon-button": "^0.25.3", - "@material/mwc-menu": "^0.25.3", - "@material/mwc-radio": "^0.25.3", - "@material/mwc-select": "^0.25.3", - "@material/mwc-textarea": "^0.25.3", - "@material/mwc-textfield": "^0.25.3", - "@polymer/app-layout": "^3.1.0", - "@polymer/app-localize-behavior": "^3.0.1", - "@polymer/app-route": "^3.0.2", - "@polymer/decorators": "^3.0.0", - "@polymer/font-roboto": "^3.0.2", - "@polymer/iron-icons": "^3.0.1", - "@polymer/iron-iconset-svg": "^3.0.1", - "@polymer/iron-pages": "^3.0.1", - "@polymer/paper-behaviors": "^3.0.1", - "@polymer/paper-button": "^3.0.1", - "@polymer/paper-card": "^3.0.1", - "@polymer/paper-dialog": "^3.0.1", - "@polymer/paper-dropdown-menu": "^3.1.0", - "@polymer/paper-icon-button": "^3.0.2", - "@polymer/paper-input": "^3.2.1", - "@polymer/paper-item": "^3.0.1", - "@polymer/paper-listbox": "^3.0.1", - "@polymer/paper-menu-button": "^3.0.1", - "@polymer/paper-ripple": "^3.0.2", - "@polymer/paper-styles": "^3.0.1", - "@polymer/paper-toast": "^3.0.1", - "@sentry/browser": "^7.31.1", - "@sentry/electron": "^4.2.0", - "@webcomponents/webcomponentsjs": "^2.4.4", - "auto-launch": "^5.0.5", - "browserslist": "^4.20.3", - "cordova-plugin-splashscreen": "^6.0.0", - "cordova-plugin-statusbar": "^2.2.3", - "electron-updater": "^5.0.5", - "lit": "^2.2.2", - "ShadowsocksConfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.1", - "socks": "^1.1.10", - "sudo-prompt": "^9.2.1", - "uuidv4": "^4.0.0", - "web-animations-js": "^2.3.2" - }, "engines": { "node": "18.x.x" }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "^7.12.11", - "@commitlint/config-conventional": "^16.2.4", - "@jsdevtools/coverage-istanbul-loader": "^3.0.5", - "@open-wc/testing": "^3.2.0", - "@open-wc/testing-karma": "^4.0.9", - "@rollup/plugin-image": "^2.1.1", - "@types/auto-launch": "^5.0.0", - "@types/cordova": "^0.0.34", - "@types/jasmine": "^4.3.6", - "@types/node": "^14.14.7", - "@types/polymer": "^1.2.9", - "@types/uuidv4": "^2.0.0", - "@typescript-eslint/eslint-plugin": "^5.32.0", - "@typescript-eslint/parser": "^5.32.0", - "@web/dev-server": "^0.1.35", - "@web/dev-server-esbuild": "^0.3.3", - "@web/dev-server-storybook": "^0.5.4", - "babel-loader": "^8.2.2", - "chalk": "^5.0.1", - "copy-dir": "^1.3.0", - "copy-webpack-plugin": "^5.1.1", - "cordova-android": "^11.0.0", - "cordova-browser": "~6.0.0", - "cordova-ios": "github:apache/cordova-ios#1a5cd45e2243b239b5045a0ade9d2da1d779b72a", - "cordova-lib": "^11.0.0", - "cordova-osx": "github:apache/cordova-osx", - "cordova-plugin-clipboard": "github:Jigsaw-Code/outline-cordova-plugin-clipboard#v2.0.0", - "cordova-plugin-outline": "file:src/cordova/plugin", - "cordova-webintent": "github:cordova-misc/cordova-webintent#v2.0.0", - "css-loader": "^5.0.1", - "deepmerge": "^4.3.1", - "electron": "^19.1.9", - "electron-builder": "^23.6.0", - "electron-icon-maker": "^0.0.5", - "eslint": "^8.15.0", - "eslint-import-resolver-typescript": "^3.4.0", - "eslint-plugin-compat": "^4.0.2", - "eslint-plugin-import": "^2.26.0", - "esm": "^3.2.25", - "file-loader": "^6.2.0", - "html-webpack-plugin": "^5.1.0", - "i18n-strings-files": "^2.0.0", - "intl-messageformat": "^9.12.0", - "istanbul": "^0.4.5", - "karma": "^6.4.2", - "karma-chrome-launcher": "^3.1.0", - "karma-coverage-istanbul-reporter": "^3.0.3", - "karma-jasmine": "^4.0.1", - "karma-webpack": "^5.0.0", - "minimist": "^1.2.6", - "node-fetch": "^3.3.0", - "node-gyp": "^10.0.1", - "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", - "postcss": "^7.0.39", - "postcss-rtl": "^1.7.3", - "prettier": "^2.8.0", - "pretty-quick": "^2.0.1", - "puppeteer": "^13.1.2", - "replace-in-file": "^6.3.5", - "rimraf": "^2.7.1", - "rmfr": "^2.0.0", - "style-loader": "^2.0.0", - "ts-loader": "^9.3.1", - "typescript": "^4.7.4", - "url": "^0.11.0", - "webpack": "^5.16.0", - "webpack-cli": "^4.4.0", - "webpack-dev-server": "^4.5.0", - "webpack-merge": "^5.8.0", - "webpack-shell-plugin-next": "^2.1.1", - "xmlbuilder2": "^3.1.1" - }, - "optionalDependencies": { - "ios-deploy": "^1.11.4" - }, - "main": "build/electron/electron/index.js", - "cordova": { - "plugins": { - "cordova-plugin-outline": {}, - "cordova-plugin-splashscreen": {}, - "cordova-plugin-statusbar": {}, - "cordova-plugin-clipboard": {}, - "cordova-webintent": {} - }, - "platforms": [ - "browser", - "android", - "ios", - "osx" - ] - }, + "private": true, "workspaces": [ - "src/cordova/plugin", - "server_manager" - ] + "server_manager", + "client" + ], + "devDependencies": { + "electron-builder": "^24.13.3" + } } diff --git a/server_manager/electron_app/build.action.sh b/server_manager/electron_app/build.action.sh index 4972b352be..473da04464 100755 --- a/server_manager/electron_app/build.action.sh +++ b/server_manager/electron_app/build.action.sh @@ -50,7 +50,7 @@ if [[ -z "${WEBPACK_MODE:-}" ]]; then fi # Build the Web App. -node src/build/run_action.mjs server_manager/web_app/build +node client/src/build/run_action.mjs server_manager/web_app/build # Compile the Electron main process and preload to the app root folder. # Since Node.js on Cygwin doesn't like absolute Unix-style paths, diff --git a/server_manager/electron_app/package.action.sh b/server_manager/electron_app/package.action.sh index ac019925aa..dc772090fd 100755 --- a/server_manager/electron_app/package.action.sh +++ b/server_manager/electron_app/package.action.sh @@ -97,7 +97,7 @@ function main() { *) ;; esac done - node src/build/run_action.mjs server_manager/electron_app/build --buildMode="${BUILD_MODE}" --versionName="${version_name}" + node client/src/build/run_action.mjs server_manager/electron_app/build --buildMode="${BUILD_MODE}" --versionName="${version_name}" package_electron finish_yaml_files "${staging_percentage}" } diff --git a/server_manager/electron_app/start.action.sh b/server_manager/electron_app/start.action.sh index 4ab5424951..ca03d8b01d 100755 --- a/server_manager/electron_app/start.action.sh +++ b/server_manager/electron_app/start.action.sh @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -node src/build/run_action.mjs server_manager/electron_app/build "$@" +node client/src/build/run_action.mjs server_manager/electron_app/build "$@" cd "${BUILD_DIR}/server_manager/electron_app/static" diff --git a/server_manager/web_app/build.action.sh b/server_manager/web_app/build.action.sh index 8d2230ded6..55234af2fd 100755 --- a/server_manager/web_app/build.action.sh +++ b/server_manager/web_app/build.action.sh @@ -19,7 +19,7 @@ set -eu readonly OUT_DIR="${BUILD_DIR}/server_manager/web_app" rm -rf "${OUT_DIR}" -node src/build/run_action.mjs server_manager/web_app/build_install_script +node client/src/build/run_action.mjs server_manager/web_app/build_install_script # Node.js on Cygwin doesn't like absolute Unix-style paths. # So, we use a relative path as input to webpack. diff --git a/server_manager/web_app/start.action.sh b/server_manager/web_app/start.action.sh index 5321eaa68e..fe142ec0f2 100755 --- a/server_manager/web_app/start.action.sh +++ b/server_manager/web_app/start.action.sh @@ -18,6 +18,6 @@ set -eu rm -rf "${BUILD_DIR}/server_manager/web_app" -node src/build/run_action.mjs server_manager/web_app/build_install_script +node client/src/build/run_action.mjs server_manager/web_app/build_install_script webpack-dev-server --config=src/server_manager/browser.webpack.js --open diff --git a/src/electron/build.action.mjs b/src/electron/build.action.mjs index 5afa64b7ab..9b5b5a4f66 100644 --- a/src/electron/build.action.mjs +++ b/src/electron/build.action.mjs @@ -13,13 +13,13 @@ // limitations under the License. import minimist from 'minimist'; -import {getBuildParameters} from '../build/get_build_parameters.mjs'; -import {runAction} from '../build/run_action.mjs'; +import {getBuildParameters} from '../../client/src/build/get_build_parameters.mjs'; +import {runAction} from '../../client/src/build/run_action.mjs'; import electron, {Platform} from 'electron-builder'; import copydir from 'copy-dir'; import fs from 'fs/promises'; import url from 'url'; -import {getRootDir} from '../build/get_root_dir.mjs'; +import {getRootDir} from '../../client/src/build/get_root_dir.mjs'; import path from 'path'; const ELECTRON_BUILD_DIR = 'build'; @@ -48,9 +48,9 @@ export async function main(...parameters) { ); } - await runAction('www/build', ...parameters); - await runAction('tun2socks/build', ...parameters); - await runAction('electron/build_main', ...parameters); + await runAction('client/src/www/build', ...parameters); + await runAction('client/src/tun2socks/build', ...parameters); + await runAction('src/electron/build_main', ...parameters); await copydir.sync( path.join(getRootDir(), 'src', 'electron', 'icons'), diff --git a/src/electron/build_main.action.mjs b/src/electron/build_main.action.mjs index 3016726230..0dd6825b66 100644 --- a/src/electron/build_main.action.mjs +++ b/src/electron/build_main.action.mjs @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -import {getBuildParameters} from '../build/get_build_parameters.mjs'; -import {getWebpackBuildMode} from '../build/get_webpack_build_mode.mjs'; -import {runAction} from '../build/run_action.mjs'; -import {runWebpack} from '../build/run_webpack.mjs'; +import {getBuildParameters} from '../../client/src/build/get_build_parameters.mjs'; +import {getWebpackBuildMode} from '../../client/src/build/get_webpack_build_mode.mjs'; +import {runAction} from '../../client/src/build/run_action.mjs'; +import {runWebpack} from '../../client/src/build/run_webpack.mjs'; import electronMainWebpackConfigs from './webpack_electron_main.mjs'; import fs from 'fs/promises'; import path from 'path'; @@ -36,7 +36,7 @@ export async function main(...parameters) { ); } - await runAction('www/build', ...parameters); + await runAction('client/src/www/build', ...parameters); // TODO(daniellacosse): separate building the preload script out into its own separate step await runWebpack( diff --git a/src/electron/electron-builder.json b/src/electron/electron-builder.json index 1fb45d7ae0..76ade7c8e5 100644 --- a/src/electron/electron-builder.json +++ b/src/electron/electron-builder.json @@ -1,6 +1,6 @@ { "files": ["build/electron", "www", "resources/tray", "!node_modules/electron"], - "asarUnpack": ["third_party", "tools"], + "asarUnpack": ["output", "tools"], "artifactName": "Outline-Client.${ext}", "directories": { "output": "output/build/dist" diff --git a/src/electron/go_vpn_tunnel.ts b/src/electron/go_vpn_tunnel.ts index 33d11bb2f2..99f61a2651 100755 --- a/src/electron/go_vpn_tunnel.ts +++ b/src/electron/go_vpn_tunnel.ts @@ -221,7 +221,7 @@ class GoTun2socks { private readonly process: ChildProcessHelper; constructor(private readonly config: ShadowsocksSessionConfig) { - this.process = new ChildProcessHelper(pathToEmbeddedBinary('outline-go-tun2socks', 'tun2socks')); + this.process = new ChildProcessHelper(pathToEmbeddedBinary('tun2socks')); } async start(isUdpEnabled: boolean): Promise { diff --git a/src/electron/start.action.mjs b/src/electron/start.action.mjs index 59efac9fff..9ef335799d 100644 --- a/src/electron/start.action.mjs +++ b/src/electron/start.action.mjs @@ -15,10 +15,10 @@ import url from 'url'; import electron from 'electron'; -import {runAction} from '../build/run_action.mjs'; -import {getBuildParameters} from '../build/get_build_parameters.mjs'; -import {getRootDir} from '../build/get_root_dir.mjs'; -import {spawnStream} from '../build/spawn_stream.mjs'; +import {runAction} from '../../client/src/build/run_action.mjs'; +import {getBuildParameters} from '../../client/src/build/get_build_parameters.mjs'; +import {getRootDir} from '../../client/src/build/get_root_dir.mjs'; +import {spawnStream} from '../../client/src/build/spawn_stream.mjs'; /** * @description Builds and starts the electron application. diff --git a/src/electron/tsconfig.json b/src/electron/tsconfig.json index 9a97ef96b1..89375e09b8 100644 --- a/src/electron/tsconfig.json +++ b/src/electron/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../www/tsconfig.json", + "extends": "../../client/src/www/tsconfig.json", "compilerOptions": { "outDir": "../../build/electron" } diff --git a/third_party/jsign/index.mjs b/third_party/jsign/index.mjs index d5cf3e10b2..ad8ed8c58e 100644 --- a/third_party/jsign/index.mjs +++ b/third_party/jsign/index.mjs @@ -15,9 +15,9 @@ import {spawn} from 'node:child_process'; import {resolve} from 'node:path'; -import {downloadHttpsFile} from '../../src/build/download_file.mjs'; -import {getFileChecksum} from '../../src/build/get_file_checksum.mjs'; -import {getRootDir} from '../../src/build/get_root_dir.mjs'; +import {downloadHttpsFile} from '../../client/src/build/download_file.mjs'; +import {getFileChecksum} from '../../client/src/build/get_file_checksum.mjs'; +import {getRootDir} from '../../client/src/build/get_root_dir.mjs'; /** * Run jsign.jar to sign `fileToSign` with a list of cli arguments stored in `options`.