From aaedd5ad1914dc48ac28f9f696836af0b81ee421 Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:28:27 -0400 Subject: [PATCH 1/6] initial commit --- .../android/OutlineAndroidLib/.gitignore | 0 .../android/OutlineAndroidLib/build.gradle | 0 .../OutlineAndroidLib/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../cordova/android/OutlineAndroidLib/gradlew | 0 .../android/OutlineAndroidLib/gradlew.bat | 0 .../OutlineAndroidLib/outline/.gitignore | 0 .../OutlineAndroidLib/outline/build.gradle | 0 .../outline/consumer-rules.pro | 0 .../outline/proguard-rules.pro | 0 .../org/outline/vpn/VpnTunnelStoreTest.java | 0 .../outline/src/main/AndroidManifest.xml | 0 .../aidl/org/outline/IVpnTunnelService.aidl | 0 .../main/aidl/org/outline/TunnelConfig.aidl | 0 .../shadowsocks/ShadowsocksConfig.aidl | 0 .../java/org/outline/log/OutlineLogger.java | 0 .../org/outline/log/SentryErrorReporter.java | 0 .../org/outline/vpn/VpnServiceStarter.java | 0 .../main/java/org/outline/vpn/VpnTunnel.java | 0 .../org/outline/vpn/VpnTunnelService.java | 0 .../java/org/outline/vpn/VpnTunnelStore.java | 0 .../java/org/outline/vpn/VpnTunnelTest.java | 0 .../android/OutlineAndroidLib/settings.gradle | 0 client/{src => }/cordova/android/README.md | 0 .../cordova/android/import_messages.mjs | 0 .../cordova/apple/OutlineAppleLib/.gitignore | 0 .../apple/OutlineAppleLib/Package.swift | 0 .../cordova/apple/OutlineAppleLib/README.md | 0 .../OutlineCatalystApp/CatalystApp.swift | 0 .../OutlineCatalystApp/NSObject+Outline.swift | 0 .../Sources/OutlineLauncher/AppDelegate.swift | 0 .../NSNotification+Outline.swift | 0 .../OutlineSentryLogger.swift | 0 .../Sources/OutlineTunnel/OutlineTunnel.swift | 0 .../OutlineTunnel/OutlineTunnelStore.swift | 0 .../Sources/OutlineTunnel/OutlineVpn.swift | 0 .../Sources/OutlineTunnel/Subnet.swift | 0 .../PacketTunnelProvider.m | 0 .../include/PacketTunnelProvider.h | 0 .../OutlineTunnelTest/OutlineTunnelTest.swift | 0 client/{src => }/cordova/apple/README.md | 0 .../cordova/apple/import_messages.mjs | 0 .../ios.xcworkspace/contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../cordova/apple/scripts/xconfig.sh | 0 .../ios/Outline.xcodeproj/project.pbxproj | 0 .../xcshareddata/xcschemes/Outline.xcscheme | 0 .../xcschemes/VpnExtension.xcscheme | 0 .../AppIcon.appiconset/icon-1024.png | Bin .../AppIcon.appiconset/icon-128.png | Bin .../AppIcon.appiconset/icon-16.png | Bin .../AppIcon.appiconset/icon-256.png | Bin .../AppIcon.appiconset/icon-32.png | Bin .../AppIcon.appiconset/icon-512.png | Bin .../ios/Outline/Classes/AppDelegate+Outline.h | 0 .../ios/Outline/Classes/AppDelegate+Outline.m | 0 .../AppKitBridge/AppKitController.swift | 0 .../Classes/AppKitBridge/AppKitIntegration.h | 0 .../Resources/Assets.xcassets/Contents.json | 0 .../Contents.json | 0 .../outline-black-off-2x.png | Bin .../Contents.json | 0 .../outline-black-on-2x.png | Bin .../Strings/af.lproj/Localizable.strings | 0 .../Strings/am.lproj/Localizable.strings | 0 .../Strings/ar.lproj/Localizable.strings | 0 .../Strings/az.lproj/Localizable.strings | 0 .../Strings/bg.lproj/Localizable.strings | 0 .../Strings/bn.lproj/Localizable.strings | 0 .../Strings/bs.lproj/Localizable.strings | 0 .../Strings/ca.lproj/Localizable.strings | 0 .../Strings/cs.lproj/Localizable.strings | 0 .../Strings/da.lproj/Localizable.strings | 0 .../Strings/de.lproj/Localizable.strings | 0 .../Strings/el.lproj/Localizable.strings | 0 .../Strings/en-GB.lproj/Localizable.strings | 0 .../Strings/en.lproj/Localizable.strings | 0 .../Strings/es-419.lproj/Localizable.strings | 0 .../Strings/es.lproj/Localizable.strings | 0 .../Strings/et.lproj/Localizable.strings | 0 .../Strings/fa.lproj/Localizable.strings | 0 .../Strings/fi.lproj/Localizable.strings | 0 .../Strings/fil.lproj/Localizable.strings | 0 .../Strings/fr.lproj/Localizable.strings | 0 .../Strings/he.lproj/Localizable.strings | 0 .../Strings/hi.lproj/Localizable.strings | 0 .../Strings/hr.lproj/Localizable.strings | 0 .../Strings/hu.lproj/Localizable.strings | 0 .../Strings/hy.lproj/Localizable.strings | 0 .../Strings/id.lproj/Localizable.strings | 0 .../Strings/is.lproj/Localizable.strings | 0 .../Strings/it.lproj/Localizable.strings | 0 .../Strings/ja.lproj/Localizable.strings | 0 .../Strings/ka.lproj/Localizable.strings | 0 .../Strings/kk.lproj/Localizable.strings | 0 .../Strings/km.lproj/Localizable.strings | 0 .../Strings/ko.lproj/Localizable.strings | 0 .../Strings/lo.lproj/Localizable.strings | 0 .../Strings/lt.lproj/Localizable.strings | 0 .../Strings/lv.lproj/Localizable.strings | 0 .../Strings/mk.lproj/Localizable.strings | 0 .../Strings/mn.lproj/Localizable.strings | 0 .../Strings/mr.lproj/Localizable.strings | 0 .../Strings/ms.lproj/Localizable.strings | 0 .../Strings/my.lproj/Localizable.strings | 0 .../Strings/ne.lproj/Localizable.strings | 0 .../Strings/nl.lproj/Localizable.strings | 0 .../Strings/no.lproj/Localizable.strings | 0 .../Strings/pl.lproj/Localizable.strings | 0 .../Strings/pt-BR.lproj/Localizable.strings | 0 .../Strings/pt-PT.lproj/Localizable.strings | 0 .../Strings/ro.lproj/Localizable.strings | 0 .../Strings/ru.lproj/Localizable.strings | 0 .../Strings/si.lproj/Localizable.strings | 0 .../Strings/sk.lproj/Localizable.strings | 0 .../Strings/sl.lproj/Localizable.strings | 0 .../Strings/sq.lproj/Localizable.strings | 0 .../Strings/sr-Latn.lproj/Localizable.strings | 0 .../Strings/sr.lproj/Localizable.strings | 0 .../Strings/sv.lproj/Localizable.strings | 0 .../Strings/sw.lproj/Localizable.strings | 0 .../Strings/ta.lproj/Localizable.strings | 0 .../Strings/th.lproj/Localizable.strings | 0 .../Strings/tr.lproj/Localizable.strings | 0 .../Strings/uk.lproj/Localizable.strings | 0 .../Strings/ur.lproj/Localizable.strings | 0 .../Strings/vi.lproj/Localizable.strings | 0 .../Strings/zh-Hans.lproj/Localizable.strings | 0 .../Strings/zh-Hant.lproj/Localizable.strings | 0 .../AppKitBridge/StatusItemController.swift | 0 .../xcode/ios/Outline/Outline-Info.plist | 0 .../xcode/ios/Outline/Outline.entitlements | 0 .../xcode/ios/Outline/VpnExtension-Info.plist | 0 .../ios/Outline/VpnExtension.entitlements | 0 .../OutlineLauncher.entitlements | 0 .../macos/Outline.xcodeproj/project.pbxproj | 0 .../xcshareddata/xcschemes/Outline.xcscheme | 0 .../xcschemes/OutlineLauncher.xcscheme | 0 .../xcschemes/VpnExtension.xcscheme | 0 .../xcode/macos/Outline/Classes/AppDelegate.m | 0 .../Outline/Classes/CDVMacOsUrlHandler.swift | 0 .../macos/Outline/Classes/EventMonitor.swift | 0 .../Contents.json | 0 .../outline-black-off-2x.png | Bin .../Contents.json | 0 .../outline-black-on-2x.png | Bin .../macos/Outline/MainViewController.xib | 0 .../xcode/macos/Outline/Outline-Info.plist | 0 .../xcode/macos/Outline/Outline.entitlements | 0 .../macos/Outline/VpnExtension-Info.plist | 0 .../macos/Outline/VpnExtension.entitlements | 0 .../apple/xcode/macos/Outline/config.xml | 0 .../macos/OutlineLauncher/AppDelegate.swift | 0 .../Base.lproj/Main.storyboard | 0 .../xcode/macos/OutlineLauncher/Info.plist | 0 .../OutlineLauncher.entitlements | 0 .../cordova/apple/xcode/macos/osx.json | 0 .../apple/xcode/macos/www/cordova_plugins.js | 0 client/{src => }/cordova/build.action.mjs | 8 +-- .../cordova/import_messages.action.mjs | 0 client/{src => }/cordova/plugin/README.md | 0 .../plugin/android/java/build-extras.gradle | 0 .../java/org/outline/OutlinePlugin.java | 0 .../android/resources/bypass_subnets.xml | 0 .../plugin/android/resources/small_icon.png | Bin .../resources/strings/values-af/strings.xml | 0 .../resources/strings/values-am/strings.xml | 0 .../resources/strings/values-ar/strings.xml | 0 .../resources/strings/values-az/strings.xml | 0 .../strings/values-b+sr+Latn/strings.xml | 0 .../resources/strings/values-bg/strings.xml | 0 .../resources/strings/values-bn/strings.xml | 0 .../resources/strings/values-bs/strings.xml | 0 .../resources/strings/values-ca/strings.xml | 0 .../resources/strings/values-cs/strings.xml | 0 .../resources/strings/values-da/strings.xml | 0 .../resources/strings/values-de/strings.xml | 0 .../resources/strings/values-el/strings.xml | 0 .../strings/values-en-rGB/strings.xml | 0 .../resources/strings/values-en/strings.xml | 0 .../resources/strings/values-es/strings.xml | 0 .../resources/strings/values-et/strings.xml | 0 .../resources/strings/values-fa/strings.xml | 0 .../resources/strings/values-fi/strings.xml | 0 .../resources/strings/values-fil/strings.xml | 0 .../resources/strings/values-fr/strings.xml | 0 .../resources/strings/values-he/strings.xml | 0 .../resources/strings/values-hi/strings.xml | 0 .../resources/strings/values-hr/strings.xml | 0 .../resources/strings/values-hu/strings.xml | 0 .../resources/strings/values-hy/strings.xml | 0 .../resources/strings/values-id/strings.xml | 0 .../resources/strings/values-is/strings.xml | 0 .../resources/strings/values-it/strings.xml | 0 .../resources/strings/values-ja/strings.xml | 0 .../resources/strings/values-ka/strings.xml | 0 .../resources/strings/values-kk/strings.xml | 0 .../resources/strings/values-km/strings.xml | 0 .../resources/strings/values-ko/strings.xml | 0 .../resources/strings/values-lo/strings.xml | 0 .../resources/strings/values-lt/strings.xml | 0 .../resources/strings/values-lv/strings.xml | 0 .../resources/strings/values-mk/strings.xml | 0 .../resources/strings/values-mn/strings.xml | 0 .../resources/strings/values-mr/strings.xml | 0 .../resources/strings/values-ms/strings.xml | 0 .../resources/strings/values-my/strings.xml | 0 .../resources/strings/values-ne/strings.xml | 0 .../resources/strings/values-nl/strings.xml | 0 .../resources/strings/values-no/strings.xml | 0 .../resources/strings/values-pl/strings.xml | 0 .../strings/values-pt-rBR/strings.xml | 0 .../strings/values-pt-rPT/strings.xml | 0 .../resources/strings/values-ro/strings.xml | 0 .../resources/strings/values-ru/strings.xml | 0 .../resources/strings/values-si/strings.xml | 0 .../resources/strings/values-sk/strings.xml | 0 .../resources/strings/values-sl/strings.xml | 0 .../resources/strings/values-sq/strings.xml | 0 .../resources/strings/values-sr/strings.xml | 0 .../resources/strings/values-sv/strings.xml | 0 .../resources/strings/values-sw/strings.xml | 0 .../resources/strings/values-ta/strings.xml | 0 .../resources/strings/values-th/strings.xml | 0 .../resources/strings/values-tr/strings.xml | 0 .../resources/strings/values-uk/strings.xml | 0 .../resources/strings/values-ur/strings.xml | 0 .../resources/strings/values-vi/strings.xml | 0 .../strings/values-zh-rCN/strings.xml | 0 .../strings/values-zh-rTW/strings.xml | 0 .../resources/strings/values/strings.xml | 0 .../android/scripts/copy_third_party.js | 0 .../plugin/apple/src/OutlinePlugin.swift | 0 .../apple/src/macos/Outline-Bridging-Header.h | 0 client/{src => }/cordova/plugin/package.json | 0 client/{src => }/cordova/plugin/plugin.xml | 0 client/{src => }/cordova/setup.action.mjs | 0 client/{src => }/cordova/test.action.mjs | 0 {src => client}/electron/README.md | 0 {src => client}/electron/add_tap_device.bat | 0 {src => client}/electron/build.action.mjs | 0 .../electron/build_main.action.mjs | 0 {src => client}/electron/connectivity.ts | 0 .../electron/custom_install_steps.nsh | 0 .../electron/electron-builder.json | 0 .../electron/find_tap_device_name.bat | 0 {src => client}/electron/go_vpn_tunnel.ts | 0 {src => client}/electron/icons/mac/icon.icns | Bin .../electron/icons/png/1024x1024.png | Bin .../electron/icons/png/128x128.png | Bin {src => client}/electron/icons/png/16x16.png | Bin {src => client}/electron/icons/png/24x24.png | Bin .../electron/icons/png/256x256.png | Bin {src => client}/electron/icons/png/32x32.png | Bin {src => client}/electron/icons/png/48x48.png | Bin .../electron/icons/png/512x512.png | Bin {src => client}/electron/icons/png/64x64.png | Bin {src => client}/electron/icons/win/icon.ico | Bin {src => client}/electron/index.ts | 0 .../electron/install_windows_service.bat | 0 {src => client}/electron/preload.d.ts | 0 {src => client}/electron/preload.ts | 0 {src => client}/electron/process.ts | 0 {src => client}/electron/routing_service.ts | 0 {src => client}/electron/start.action.mjs | 0 {src => client}/electron/tsconfig.json | 0 {src => client}/electron/tunnel_store.ts | 0 .../electron/types/socks/index.d.ts | 0 {src => client}/electron/vpn_tunnel.ts | 0 .../electron/webpack_electron_main.mjs | 0 .../digicert-usb-config/eToken-macos.cfg | 0 .../digicert-usb-config/eToken-windows.cfg | 0 .../electron_builder_signing_plugin.cjs | 0 .../sign_windows_executable.action.mjs | 0 .../{src => }/infrastructure/custom_error.ts | 0 .../infrastructure/electron/app_paths.ts | 0 client/{src => }/infrastructure/i18n.ts | 0 .../infrastructure/memory_storage.ts | 0 .../infrastructure/timeout_promise.ts | 0 client/src/build/get_build_parameters.mjs | 60 ------------------ client/src/build/get_webpack_build_mode.mjs | 31 --------- client/src/build/run_webpack.mjs | 35 ---------- client/tsconfig.json | 2 +- client/{src => }/tun2socks/Taskfile.yml | 0 client/{src => }/tun2socks/build.action.mjs | 0 client/{src => }/tun2socks/outline/client.go | 0 .../outline/connectivity/connectivity.go | 0 .../outline/connectivity/connectivity_test.go | 0 .../tun2socks/outline/electron/main.go | 0 .../tun2socks/outline/internal/utf8/utf8.go | 0 .../outline/internal/utf8/utf8_test.go | 0 .../tun2socks/outline/neterrors/neterrors.go | 0 .../tun2socks/outline/shadowsocks/client.go | 0 .../outline/shadowsocks/client_test.go | 0 .../tun2socks/outline/shadowsocks/config.go | 0 .../outline/shadowsocks/config_test.go | 0 .../tun2socks/outline/tun2socks/tcp.go | 0 .../tun2socks/outline/tun2socks/tunnel.go | 0 .../outline/tun2socks/tunnel_android.go | 0 .../outline/tun2socks/tunnel_darwin.go | 0 .../tun2socks/outline/tun2socks/udp.go | 0 client/{src => }/tun2socks/tunnel/tun.go | 0 .../{src => }/tun2socks/tunnel/tun_android.go | 0 client/{src => }/tun2socks/tunnel/tunnel.go | 0 client/{src/www => web}/.storybook/main.js | 0 .../www => web}/.storybook/preview-head.html | 0 client/{src/www => web}/.storybook/preview.js | 0 client/{src/www => web}/TODO.spec.ts | 0 client/{src/www => web}/app/app.spec.ts | 0 client/{src/www => web}/app/app.ts | 0 client/{src/www => web}/app/clipboard.ts | 0 client/{src/www => web}/app/cordova_main.ts | 0 client/{src/www => web}/app/electron_main.ts | 0 .../app/electron_outline_tunnel.ts | 0 client/{src/www => web}/app/environment.ts | 0 client/{src/www => web}/app/fake_tunnel.ts | 0 client/{src/www => web}/app/main.ts | 14 ++-- .../access_key_serialization.ts | 0 .../app/outline_server_repository/index.ts | 0 .../outline_server_repository.spec.ts | 0 .../app/outline_server_repository/server.ts | 0 client/{src/www => web}/app/platform.ts | 0 client/{src/www => web}/app/settings.spec.ts | 0 client/{src/www => web}/app/settings.ts | 0 client/{src/www => web}/app/tunnel.ts | 0 client/{src/www => web}/app/updater.ts | 0 .../{src/www => web}/app/url_interceptor.ts | 0 client/{src/www => web}/app/vpn_installer.ts | 0 client/{src/www => web}/assets/brand-logo.png | Bin client/{src/www => web}/assets/circle.png | Bin .../{src/www => web}/assets/icons/about.png | Bin client/{src/www => web}/assets/icons/add.png | Bin client/{src/www => web}/assets/icons/back.png | Bin .../assets/icons/change_language.png | Bin .../{src/www => web}/assets/icons/contact.png | Bin .../www => web}/assets/icons/feedback.png | Bin client/{src/www => web}/assets/icons/help.png | Bin client/{src/www => web}/assets/icons/menu.png | Bin .../{src/www => web}/assets/icons/outline.png | Bin client/{src/www => web}/assets/icons/quit.png | Bin .../{src/www => web}/assets/jigsaw-logo.png | Bin .../{src/www => web}/assets/jigsaw-logo.svg | 0 client/{src/www => web}/assets/logo-nav.png | Bin .../www => web}/assets/material_icons.woff2 | Bin .../assets/outline-client-logo.png | Bin .../assets/outline-client-logo.svg | 0 .../{src/www => web}/assets/privacy-lock.png | Bin client/{src/www => web}/build.action.mjs | 0 client/{src/www => web}/favicon.ico | Bin .../get_browser_webpack_config.mjs | 0 client/{src/www => web}/index_cordova.html | 0 client/{src/www => web}/index_electron.html | 0 client/{src/www => web}/karma.conf.js | 0 client/{src/www => web}/messages/af.json | 0 client/{src/www => web}/messages/am.json | 0 client/{src/www => web}/messages/ar.json | 0 client/{src/www => web}/messages/az.json | 0 client/{src/www => web}/messages/bg.json | 0 client/{src/www => web}/messages/bn.json | 0 client/{src/www => web}/messages/bs.json | 0 client/{src/www => web}/messages/ca.json | 0 client/{src/www => web}/messages/cs.json | 0 client/{src/www => web}/messages/da.json | 0 client/{src/www => web}/messages/de.json | 0 client/{src/www => web}/messages/el.json | 0 client/{src/www => web}/messages/en-GB.json | 0 client/{src/www => web}/messages/en.json | 0 client/{src/www => web}/messages/es-419.json | 0 client/{src/www => web}/messages/es.json | 0 client/{src/www => web}/messages/et.json | 0 client/{src/www => web}/messages/fa.json | 0 client/{src/www => web}/messages/fi.json | 0 client/{src/www => web}/messages/fil.json | 0 client/{src/www => web}/messages/fr.json | 0 client/{src/www => web}/messages/he.json | 0 client/{src/www => web}/messages/hi.json | 0 client/{src/www => web}/messages/hr.json | 0 client/{src/www => web}/messages/hu.json | 0 client/{src/www => web}/messages/hy.json | 0 client/{src/www => web}/messages/id.json | 0 client/{src/www => web}/messages/is.json | 0 client/{src/www => web}/messages/it.json | 0 client/{src/www => web}/messages/ja.json | 0 client/{src/www => web}/messages/ka.json | 0 client/{src/www => web}/messages/kk.json | 0 client/{src/www => web}/messages/km.json | 0 client/{src/www => web}/messages/ko.json | 0 client/{src/www => web}/messages/lo.json | 0 client/{src/www => web}/messages/lt.json | 0 client/{src/www => web}/messages/lv.json | 0 client/{src/www => web}/messages/mk.json | 0 client/{src/www => web}/messages/mn.json | 0 client/{src/www => web}/messages/mr.json | 0 client/{src/www => web}/messages/ms.json | 0 client/{src/www => web}/messages/my.json | 0 client/{src/www => web}/messages/ne.json | 0 client/{src/www => web}/messages/nl.json | 0 client/{src/www => web}/messages/no.json | 0 client/{src/www => web}/messages/pl.json | 0 client/{src/www => web}/messages/pt-BR.json | 0 client/{src/www => web}/messages/pt-PT.json | 0 client/{src/www => web}/messages/ro.json | 0 client/{src/www => web}/messages/ru.json | 0 client/{src/www => web}/messages/si.json | 0 client/{src/www => web}/messages/sk.json | 0 client/{src/www => web}/messages/sl.json | 0 client/{src/www => web}/messages/sq.json | 0 client/{src/www => web}/messages/sr-Latn.json | 0 client/{src/www => web}/messages/sr.json | 0 client/{src/www => web}/messages/sv.json | 0 client/{src/www => web}/messages/sw.json | 0 client/{src/www => web}/messages/ta.json | 0 client/{src/www => web}/messages/th.json | 0 client/{src/www => web}/messages/tr.json | 0 client/{src/www => web}/messages/uk.json | 0 client/{src/www => web}/messages/ur.json | 0 client/{src/www => web}/messages/vi.json | 0 client/{src/www => web}/messages/zh-CN.json | 0 client/{src/www => web}/messages/zh-TW.json | 0 client/{src/www => web}/model/errors.ts | 0 client/{src/www => web}/model/events.spec.ts | 0 client/{src/www => web}/model/events.ts | 0 client/{src/www => web}/model/server.ts | 0 .../{src/www => web}/shared/error_reporter.ts | 0 client/{src/www => web}/start.action.mjs | 0 client/{src/www => web}/storybook.action.mjs | 0 client/{src/www => web}/style.css | 0 client/{src/www => web}/test.action.mjs | 0 client/{src/www => web}/testing/localize.ts | 0 client/{src/www => web}/tsconfig.json | 0 client/{src/www => web}/types/clipboard.d.ts | 0 client/{src/www => web}/types/shims.d.ts | 0 client/{src/www => web}/types/webintents.d.ts | 0 .../www => web}/ui_components/about-view.js | 0 .../ui_components/add-server-view.js | 0 .../www => web}/ui_components/app-root.js | 4 +- .../ui_components/feedback-view.js | 0 .../ui_components/language-view.js | 0 .../ui_components/licenses-view.js | 0 .../ui_components/licenses/README.md | 0 .../ui_components/licenses/licenses.txt | 0 .../ui_components/licenses/third_party.sh | 0 .../ui_components/outline-icons.js | 0 .../www => web}/ui_components/privacy-view.js | 0 .../ui_components/server-rename-dialog.js | 0 .../ui_components/user-comms-dialog.js | 0 .../views/contact_view/app_type.ts | 0 .../views/contact_view/index.spec.ts | 0 .../www => web}/views/contact_view/index.ts | 0 .../views/contact_view/issue_type.ts | 0 .../www => web}/views/contact_view/stories.ts | 0 .../contact_view/support_form/index.spec.ts | 0 .../views/contact_view/support_form/index.ts | 0 .../contact_view/support_form/stories.ts | 0 .../www => web}/views/servers_view/index.ts | 0 .../server_connection_indicator/index.ts | 0 .../server_connection_indicator/stories.ts | 0 .../views/servers_view/server_list/index.ts | 0 .../views/servers_view/server_list/stories.ts | 0 .../servers_view/server_list_item/index.ts | 0 .../server_list_item/server_card/index.ts | 0 .../server_list_item/server_card/stories.ts | 0 client/{src/www => web}/webpack_base.mjs | 0 client/{src/www => web}/webpack_cordova.mjs | 0 .../www => web}/webpack_css_rtl_loader.cjs | 0 client/{src/www => web}/webpack_electron.mjs | 0 client/{src/www => web}/webpack_test.mjs | 0 474 files changed, 14 insertions(+), 140 deletions(-) rename client/{src => }/cordova/android/OutlineAndroidLib/.gitignore (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/build.gradle (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/gradle.properties (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/gradlew (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/gradlew.bat (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/.gitignore (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/build.gradle (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java (100%) rename client/{src => }/cordova/android/OutlineAndroidLib/settings.gradle (100%) rename client/{src => }/cordova/android/README.md (100%) rename client/{src => }/cordova/android/import_messages.mjs (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/.gitignore (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Package.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/README.md (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h (100%) rename client/{src => }/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift (100%) rename client/{src => }/cordova/apple/README.md (100%) rename client/{src => }/cordova/apple/import_messages.mjs (100%) rename client/{src => }/cordova/apple/ios.xcworkspace/contents.xcworkspacedata (100%) rename client/{src => }/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename client/{src => }/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename client/{src => }/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%) rename client/{src => }/cordova/apple/macos.xcworkspace/contents.xcworkspacedata (100%) rename client/{src => }/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename client/{src => }/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename client/{src => }/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%) rename client/{src => }/cordova/apple/scripts/xconfig.sh (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Outline-Info.plist (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/Outline.entitlements (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist (100%) rename client/{src => }/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements (100%) rename client/{src => }/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/MainViewController.xib (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Outline-Info.plist (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/Outline.entitlements (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements (100%) rename client/{src => }/cordova/apple/xcode/macos/Outline/config.xml (100%) rename client/{src => }/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift (100%) rename client/{src => }/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard (100%) rename client/{src => }/cordova/apple/xcode/macos/OutlineLauncher/Info.plist (100%) rename client/{src => }/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements (100%) rename client/{src => }/cordova/apple/xcode/macos/osx.json (100%) rename client/{src => }/cordova/apple/xcode/macos/www/cordova_plugins.js (100%) rename client/{src => }/cordova/build.action.mjs (95%) rename client/{src => }/cordova/import_messages.action.mjs (100%) rename client/{src => }/cordova/plugin/README.md (100%) rename client/{src => }/cordova/plugin/android/java/build-extras.gradle (100%) rename client/{src => }/cordova/plugin/android/java/org/outline/OutlinePlugin.java (100%) rename client/{src => }/cordova/plugin/android/resources/bypass_subnets.xml (100%) rename client/{src => }/cordova/plugin/android/resources/small_icon.png (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-af/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-am/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ar/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-az/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-bg/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-bn/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-bs/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ca/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-cs/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-da/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-de/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-el/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-en/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-es/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-et/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-fa/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-fi/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-fil/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-fr/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-he/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-hi/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-hr/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-hu/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-hy/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-id/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-is/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-it/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ja/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ka/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-kk/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-km/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ko/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-lo/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-lt/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-lv/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-mk/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-mn/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-mr/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ms/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-my/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ne/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-nl/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-no/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-pl/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ro/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ru/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-si/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-sk/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-sl/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-sq/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-sr/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-sv/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-sw/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ta/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-th/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-tr/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-uk/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-ur/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-vi/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml (100%) rename client/{src => }/cordova/plugin/android/resources/strings/values/strings.xml (100%) rename client/{src => }/cordova/plugin/android/scripts/copy_third_party.js (100%) rename client/{src => }/cordova/plugin/apple/src/OutlinePlugin.swift (100%) rename client/{src => }/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h (100%) rename client/{src => }/cordova/plugin/package.json (100%) rename client/{src => }/cordova/plugin/plugin.xml (100%) rename client/{src => }/cordova/setup.action.mjs (100%) rename client/{src => }/cordova/test.action.mjs (100%) rename {src => client}/electron/README.md (100%) rename {src => client}/electron/add_tap_device.bat (100%) rename {src => client}/electron/build.action.mjs (100%) rename {src => client}/electron/build_main.action.mjs (100%) rename {src => client}/electron/connectivity.ts (100%) rename {src => client}/electron/custom_install_steps.nsh (100%) rename {src => client}/electron/electron-builder.json (100%) rename {src => client}/electron/find_tap_device_name.bat (100%) rename {src => client}/electron/go_vpn_tunnel.ts (100%) rename {src => client}/electron/icons/mac/icon.icns (100%) rename {src => client}/electron/icons/png/1024x1024.png (100%) rename {src => client}/electron/icons/png/128x128.png (100%) rename {src => client}/electron/icons/png/16x16.png (100%) rename {src => client}/electron/icons/png/24x24.png (100%) rename {src => client}/electron/icons/png/256x256.png (100%) rename {src => client}/electron/icons/png/32x32.png (100%) rename {src => client}/electron/icons/png/48x48.png (100%) rename {src => client}/electron/icons/png/512x512.png (100%) rename {src => client}/electron/icons/png/64x64.png (100%) rename {src => client}/electron/icons/win/icon.ico (100%) rename {src => client}/electron/index.ts (100%) rename {src => client}/electron/install_windows_service.bat (100%) rename {src => client}/electron/preload.d.ts (100%) rename {src => client}/electron/preload.ts (100%) rename {src => client}/electron/process.ts (100%) rename {src => client}/electron/routing_service.ts (100%) rename {src => client}/electron/start.action.mjs (100%) rename {src => client}/electron/tsconfig.json (100%) rename {src => client}/electron/tunnel_store.ts (100%) rename {src => client}/electron/types/socks/index.d.ts (100%) rename {src => client}/electron/vpn_tunnel.ts (100%) rename {src => client}/electron/webpack_electron_main.mjs (100%) rename {src => client}/electron/windows/digicert-usb-config/eToken-macos.cfg (100%) rename {src => client}/electron/windows/digicert-usb-config/eToken-windows.cfg (100%) rename {src => client}/electron/windows/electron_builder_signing_plugin.cjs (100%) rename {src => client}/electron/windows/sign_windows_executable.action.mjs (100%) rename client/{src => }/infrastructure/custom_error.ts (100%) rename client/{src => }/infrastructure/electron/app_paths.ts (100%) rename client/{src => }/infrastructure/i18n.ts (100%) rename client/{src => }/infrastructure/memory_storage.ts (100%) rename client/{src => }/infrastructure/timeout_promise.ts (100%) delete mode 100644 client/src/build/get_build_parameters.mjs delete mode 100644 client/src/build/get_webpack_build_mode.mjs delete mode 100644 client/src/build/run_webpack.mjs rename client/{src => }/tun2socks/Taskfile.yml (100%) rename client/{src => }/tun2socks/build.action.mjs (100%) rename client/{src => }/tun2socks/outline/client.go (100%) rename client/{src => }/tun2socks/outline/connectivity/connectivity.go (100%) rename client/{src => }/tun2socks/outline/connectivity/connectivity_test.go (100%) rename client/{src => }/tun2socks/outline/electron/main.go (100%) rename client/{src => }/tun2socks/outline/internal/utf8/utf8.go (100%) rename client/{src => }/tun2socks/outline/internal/utf8/utf8_test.go (100%) rename client/{src => }/tun2socks/outline/neterrors/neterrors.go (100%) rename client/{src => }/tun2socks/outline/shadowsocks/client.go (100%) rename client/{src => }/tun2socks/outline/shadowsocks/client_test.go (100%) rename client/{src => }/tun2socks/outline/shadowsocks/config.go (100%) rename client/{src => }/tun2socks/outline/shadowsocks/config_test.go (100%) rename client/{src => }/tun2socks/outline/tun2socks/tcp.go (100%) rename client/{src => }/tun2socks/outline/tun2socks/tunnel.go (100%) rename client/{src => }/tun2socks/outline/tun2socks/tunnel_android.go (100%) rename client/{src => }/tun2socks/outline/tun2socks/tunnel_darwin.go (100%) rename client/{src => }/tun2socks/outline/tun2socks/udp.go (100%) rename client/{src => }/tun2socks/tunnel/tun.go (100%) rename client/{src => }/tun2socks/tunnel/tun_android.go (100%) rename client/{src => }/tun2socks/tunnel/tunnel.go (100%) rename client/{src/www => web}/.storybook/main.js (100%) rename client/{src/www => web}/.storybook/preview-head.html (100%) rename client/{src/www => web}/.storybook/preview.js (100%) rename client/{src/www => web}/TODO.spec.ts (100%) rename client/{src/www => web}/app/app.spec.ts (100%) rename client/{src/www => web}/app/app.ts (100%) rename client/{src/www => web}/app/clipboard.ts (100%) rename client/{src/www => web}/app/cordova_main.ts (100%) rename client/{src/www => web}/app/electron_main.ts (100%) rename client/{src/www => web}/app/electron_outline_tunnel.ts (100%) rename client/{src/www => web}/app/environment.ts (100%) rename client/{src/www => web}/app/fake_tunnel.ts (100%) rename client/{src/www => web}/app/main.ts (94%) rename client/{src/www => web}/app/outline_server_repository/access_key_serialization.ts (100%) rename client/{src/www => web}/app/outline_server_repository/index.ts (100%) rename client/{src/www => web}/app/outline_server_repository/outline_server_repository.spec.ts (100%) rename client/{src/www => web}/app/outline_server_repository/server.ts (100%) rename client/{src/www => web}/app/platform.ts (100%) rename client/{src/www => web}/app/settings.spec.ts (100%) rename client/{src/www => web}/app/settings.ts (100%) rename client/{src/www => web}/app/tunnel.ts (100%) rename client/{src/www => web}/app/updater.ts (100%) rename client/{src/www => web}/app/url_interceptor.ts (100%) rename client/{src/www => web}/app/vpn_installer.ts (100%) rename client/{src/www => web}/assets/brand-logo.png (100%) rename client/{src/www => web}/assets/circle.png (100%) rename client/{src/www => web}/assets/icons/about.png (100%) rename client/{src/www => web}/assets/icons/add.png (100%) rename client/{src/www => web}/assets/icons/back.png (100%) rename client/{src/www => web}/assets/icons/change_language.png (100%) rename client/{src/www => web}/assets/icons/contact.png (100%) rename client/{src/www => web}/assets/icons/feedback.png (100%) rename client/{src/www => web}/assets/icons/help.png (100%) rename client/{src/www => web}/assets/icons/menu.png (100%) rename client/{src/www => web}/assets/icons/outline.png (100%) rename client/{src/www => web}/assets/icons/quit.png (100%) rename client/{src/www => web}/assets/jigsaw-logo.png (100%) rename client/{src/www => web}/assets/jigsaw-logo.svg (100%) rename client/{src/www => web}/assets/logo-nav.png (100%) rename client/{src/www => web}/assets/material_icons.woff2 (100%) rename client/{src/www => web}/assets/outline-client-logo.png (100%) rename client/{src/www => web}/assets/outline-client-logo.svg (100%) rename client/{src/www => web}/assets/privacy-lock.png (100%) rename client/{src/www => web}/build.action.mjs (100%) rename client/{src/www => web}/favicon.ico (100%) rename client/{src/www => web}/get_browser_webpack_config.mjs (100%) rename client/{src/www => web}/index_cordova.html (100%) rename client/{src/www => web}/index_electron.html (100%) rename client/{src/www => web}/karma.conf.js (100%) rename client/{src/www => web}/messages/af.json (100%) rename client/{src/www => web}/messages/am.json (100%) rename client/{src/www => web}/messages/ar.json (100%) rename client/{src/www => web}/messages/az.json (100%) rename client/{src/www => web}/messages/bg.json (100%) rename client/{src/www => web}/messages/bn.json (100%) rename client/{src/www => web}/messages/bs.json (100%) rename client/{src/www => web}/messages/ca.json (100%) rename client/{src/www => web}/messages/cs.json (100%) rename client/{src/www => web}/messages/da.json (100%) rename client/{src/www => web}/messages/de.json (100%) rename client/{src/www => web}/messages/el.json (100%) rename client/{src/www => web}/messages/en-GB.json (100%) rename client/{src/www => web}/messages/en.json (100%) rename client/{src/www => web}/messages/es-419.json (100%) rename client/{src/www => web}/messages/es.json (100%) rename client/{src/www => web}/messages/et.json (100%) rename client/{src/www => web}/messages/fa.json (100%) rename client/{src/www => web}/messages/fi.json (100%) rename client/{src/www => web}/messages/fil.json (100%) rename client/{src/www => web}/messages/fr.json (100%) rename client/{src/www => web}/messages/he.json (100%) rename client/{src/www => web}/messages/hi.json (100%) rename client/{src/www => web}/messages/hr.json (100%) rename client/{src/www => web}/messages/hu.json (100%) rename client/{src/www => web}/messages/hy.json (100%) rename client/{src/www => web}/messages/id.json (100%) rename client/{src/www => web}/messages/is.json (100%) rename client/{src/www => web}/messages/it.json (100%) rename client/{src/www => web}/messages/ja.json (100%) rename client/{src/www => web}/messages/ka.json (100%) rename client/{src/www => web}/messages/kk.json (100%) rename client/{src/www => web}/messages/km.json (100%) rename client/{src/www => web}/messages/ko.json (100%) rename client/{src/www => web}/messages/lo.json (100%) rename client/{src/www => web}/messages/lt.json (100%) rename client/{src/www => web}/messages/lv.json (100%) rename client/{src/www => web}/messages/mk.json (100%) rename client/{src/www => web}/messages/mn.json (100%) rename client/{src/www => web}/messages/mr.json (100%) rename client/{src/www => web}/messages/ms.json (100%) rename client/{src/www => web}/messages/my.json (100%) rename client/{src/www => web}/messages/ne.json (100%) rename client/{src/www => web}/messages/nl.json (100%) rename client/{src/www => web}/messages/no.json (100%) rename client/{src/www => web}/messages/pl.json (100%) rename client/{src/www => web}/messages/pt-BR.json (100%) rename client/{src/www => web}/messages/pt-PT.json (100%) rename client/{src/www => web}/messages/ro.json (100%) rename client/{src/www => web}/messages/ru.json (100%) rename client/{src/www => web}/messages/si.json (100%) rename client/{src/www => web}/messages/sk.json (100%) rename client/{src/www => web}/messages/sl.json (100%) rename client/{src/www => web}/messages/sq.json (100%) rename client/{src/www => web}/messages/sr-Latn.json (100%) rename client/{src/www => web}/messages/sr.json (100%) rename client/{src/www => web}/messages/sv.json (100%) rename client/{src/www => web}/messages/sw.json (100%) rename client/{src/www => web}/messages/ta.json (100%) rename client/{src/www => web}/messages/th.json (100%) rename client/{src/www => web}/messages/tr.json (100%) rename client/{src/www => web}/messages/uk.json (100%) rename client/{src/www => web}/messages/ur.json (100%) rename client/{src/www => web}/messages/vi.json (100%) rename client/{src/www => web}/messages/zh-CN.json (100%) rename client/{src/www => web}/messages/zh-TW.json (100%) rename client/{src/www => web}/model/errors.ts (100%) rename client/{src/www => web}/model/events.spec.ts (100%) rename client/{src/www => web}/model/events.ts (100%) rename client/{src/www => web}/model/server.ts (100%) rename client/{src/www => web}/shared/error_reporter.ts (100%) rename client/{src/www => web}/start.action.mjs (100%) rename client/{src/www => web}/storybook.action.mjs (100%) rename client/{src/www => web}/style.css (100%) rename client/{src/www => web}/test.action.mjs (100%) rename client/{src/www => web}/testing/localize.ts (100%) rename client/{src/www => web}/tsconfig.json (100%) rename client/{src/www => web}/types/clipboard.d.ts (100%) rename client/{src/www => web}/types/shims.d.ts (100%) rename client/{src/www => web}/types/webintents.d.ts (100%) rename client/{src/www => web}/ui_components/about-view.js (100%) rename client/{src/www => web}/ui_components/add-server-view.js (100%) rename client/{src/www => web}/ui_components/app-root.js (99%) rename client/{src/www => web}/ui_components/feedback-view.js (100%) rename client/{src/www => web}/ui_components/language-view.js (100%) rename client/{src/www => web}/ui_components/licenses-view.js (100%) rename client/{src/www => web}/ui_components/licenses/README.md (100%) rename client/{src/www => web}/ui_components/licenses/licenses.txt (100%) rename client/{src/www => web}/ui_components/licenses/third_party.sh (100%) rename client/{src/www => web}/ui_components/outline-icons.js (100%) rename client/{src/www => web}/ui_components/privacy-view.js (100%) rename client/{src/www => web}/ui_components/server-rename-dialog.js (100%) rename client/{src/www => web}/ui_components/user-comms-dialog.js (100%) rename client/{src/www => web}/views/contact_view/app_type.ts (100%) rename client/{src/www => web}/views/contact_view/index.spec.ts (100%) rename client/{src/www => web}/views/contact_view/index.ts (100%) rename client/{src/www => web}/views/contact_view/issue_type.ts (100%) rename client/{src/www => web}/views/contact_view/stories.ts (100%) rename client/{src/www => web}/views/contact_view/support_form/index.spec.ts (100%) rename client/{src/www => web}/views/contact_view/support_form/index.ts (100%) rename client/{src/www => web}/views/contact_view/support_form/stories.ts (100%) rename client/{src/www => web}/views/servers_view/index.ts (100%) rename client/{src/www => web}/views/servers_view/server_connection_indicator/index.ts (100%) rename client/{src/www => web}/views/servers_view/server_connection_indicator/stories.ts (100%) rename client/{src/www => web}/views/servers_view/server_list/index.ts (100%) rename client/{src/www => web}/views/servers_view/server_list/stories.ts (100%) rename client/{src/www => web}/views/servers_view/server_list_item/index.ts (100%) rename client/{src/www => web}/views/servers_view/server_list_item/server_card/index.ts (100%) rename client/{src/www => web}/views/servers_view/server_list_item/server_card/stories.ts (100%) rename client/{src/www => web}/webpack_base.mjs (100%) rename client/{src/www => web}/webpack_cordova.mjs (100%) rename client/{src/www => web}/webpack_css_rtl_loader.cjs (100%) rename client/{src/www => web}/webpack_electron.mjs (100%) rename client/{src/www => web}/webpack_test.mjs (100%) diff --git a/client/src/cordova/android/OutlineAndroidLib/.gitignore b/client/cordova/android/OutlineAndroidLib/.gitignore similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/.gitignore rename to client/cordova/android/OutlineAndroidLib/.gitignore diff --git a/client/src/cordova/android/OutlineAndroidLib/build.gradle b/client/cordova/android/OutlineAndroidLib/build.gradle similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/build.gradle rename to client/cordova/android/OutlineAndroidLib/build.gradle diff --git a/client/src/cordova/android/OutlineAndroidLib/gradle.properties b/client/cordova/android/OutlineAndroidLib/gradle.properties similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/gradle.properties rename to client/cordova/android/OutlineAndroidLib/gradle.properties diff --git a/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar b/client/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar rename to client/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.jar diff --git a/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties b/client/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties rename to client/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties diff --git a/client/src/cordova/android/OutlineAndroidLib/gradlew b/client/cordova/android/OutlineAndroidLib/gradlew similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/gradlew rename to client/cordova/android/OutlineAndroidLib/gradlew diff --git a/client/src/cordova/android/OutlineAndroidLib/gradlew.bat b/client/cordova/android/OutlineAndroidLib/gradlew.bat similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/gradlew.bat rename to client/cordova/android/OutlineAndroidLib/gradlew.bat diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/.gitignore b/client/cordova/android/OutlineAndroidLib/outline/.gitignore similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/.gitignore rename to client/cordova/android/OutlineAndroidLib/outline/.gitignore diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/build.gradle b/client/cordova/android/OutlineAndroidLib/outline/build.gradle similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/build.gradle rename to client/cordova/android/OutlineAndroidLib/outline/build.gradle diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro b/client/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro rename to client/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro b/client/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro rename to client/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java b/client/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java rename to client/cordova/android/OutlineAndroidLib/outline/src/androidTest/java/org/outline/vpn/VpnTunnelStoreTest.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml b/client/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml rename to client/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl b/client/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl rename to client/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/IVpnTunnelService.aidl diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl b/client/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl rename to client/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl b/client/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl rename to client/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/shadowsocks/ShadowsocksConfig.aidl diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java b/client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java rename to client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/OutlineLogger.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java b/client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java rename to client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java b/client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java rename to client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnServiceStarter.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java b/client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java rename to client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java b/client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java rename to client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java b/client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java rename to client/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelStore.java diff --git a/client/src/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java b/client/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java rename to client/cordova/android/OutlineAndroidLib/outline/src/test/java/org/outline/vpn/VpnTunnelTest.java diff --git a/client/src/cordova/android/OutlineAndroidLib/settings.gradle b/client/cordova/android/OutlineAndroidLib/settings.gradle similarity index 100% rename from client/src/cordova/android/OutlineAndroidLib/settings.gradle rename to client/cordova/android/OutlineAndroidLib/settings.gradle diff --git a/client/src/cordova/android/README.md b/client/cordova/android/README.md similarity index 100% rename from client/src/cordova/android/README.md rename to client/cordova/android/README.md diff --git a/client/src/cordova/android/import_messages.mjs b/client/cordova/android/import_messages.mjs similarity index 100% rename from client/src/cordova/android/import_messages.mjs rename to client/cordova/android/import_messages.mjs diff --git a/client/src/cordova/apple/OutlineAppleLib/.gitignore b/client/cordova/apple/OutlineAppleLib/.gitignore similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/.gitignore rename to client/cordova/apple/OutlineAppleLib/.gitignore diff --git a/client/src/cordova/apple/OutlineAppleLib/Package.swift b/client/cordova/apple/OutlineAppleLib/Package.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Package.swift rename to client/cordova/apple/OutlineAppleLib/Package.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/README.md b/client/cordova/apple/OutlineAppleLib/README.md similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/README.md rename to client/cordova/apple/OutlineAppleLib/README.md diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/CatalystApp.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineLauncher/AppDelegate.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineNotification/NSNotification+Outline.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineSentryLogger/OutlineSentryLogger.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnel.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineTunnelStore.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/OutlineVpn.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift b/client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift rename to client/cordova/apple/OutlineAppleLib/Sources/OutlineTunnel/Subnet.swift diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m b/client/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m rename to client/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/PacketTunnelProvider.m diff --git a/client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h b/client/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h rename to client/cordova/apple/OutlineAppleLib/Sources/PacketTunnelProvider/include/PacketTunnelProvider.h diff --git a/client/src/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift b/client/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift similarity index 100% rename from client/src/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift rename to client/cordova/apple/OutlineAppleLib/Tests/OutlineTunnelTest/OutlineTunnelTest.swift diff --git a/client/src/cordova/apple/README.md b/client/cordova/apple/README.md similarity index 100% rename from client/src/cordova/apple/README.md rename to client/cordova/apple/README.md diff --git a/client/src/cordova/apple/import_messages.mjs b/client/cordova/apple/import_messages.mjs similarity index 100% rename from client/src/cordova/apple/import_messages.mjs rename to client/cordova/apple/import_messages.mjs diff --git a/client/src/cordova/apple/ios.xcworkspace/contents.xcworkspacedata b/client/cordova/apple/ios.xcworkspace/contents.xcworkspacedata similarity index 100% rename from client/src/cordova/apple/ios.xcworkspace/contents.xcworkspacedata rename to client/cordova/apple/ios.xcworkspace/contents.xcworkspacedata diff --git a/client/src/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/client/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from client/src/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to client/cordova/apple/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/client/src/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/client/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from client/src/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to client/cordova/apple/ios.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/client/src/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved b/client/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from client/src/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to client/cordova/apple/ios.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/client/src/cordova/apple/macos.xcworkspace/contents.xcworkspacedata b/client/cordova/apple/macos.xcworkspace/contents.xcworkspacedata similarity index 100% rename from client/src/cordova/apple/macos.xcworkspace/contents.xcworkspacedata rename to client/cordova/apple/macos.xcworkspace/contents.xcworkspacedata diff --git a/client/src/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/client/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from client/src/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to client/cordova/apple/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/client/src/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/client/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from client/src/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to client/cordova/apple/macos.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/client/src/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved b/client/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from client/src/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to client/cordova/apple/macos.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/client/src/cordova/apple/scripts/xconfig.sh b/client/cordova/apple/scripts/xconfig.sh similarity index 100% rename from client/src/cordova/apple/scripts/xconfig.sh rename to client/cordova/apple/scripts/xconfig.sh diff --git a/client/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj b/client/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj rename to client/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj diff --git a/client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme b/client/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme rename to client/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme diff --git a/client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme b/client/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme rename to client/cordova/apple/xcode/ios/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme diff --git a/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png rename to client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-1024.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png b/client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png rename to client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-128.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png b/client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png rename to client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-16.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png b/client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png rename to client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-256.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png b/client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png rename to client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-32.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png b/client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png rename to client/cordova/apple/xcode/ios/Outline/Assets.xcassets/AppIcon.appiconset/icon-512.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h b/client/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h rename to client/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.h diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m b/client/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m rename to client/cordova/apple/xcode/ios/Outline/Classes/AppDelegate+Outline.m diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitController.swift diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/AppKitIntegration.h diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png b/client/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 client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png b/client/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 client/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/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift b/client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift rename to client/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/StatusItemController.swift diff --git a/client/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist b/client/cordova/apple/xcode/ios/Outline/Outline-Info.plist similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist rename to client/cordova/apple/xcode/ios/Outline/Outline-Info.plist diff --git a/client/src/cordova/apple/xcode/ios/Outline/Outline.entitlements b/client/cordova/apple/xcode/ios/Outline/Outline.entitlements similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/Outline.entitlements rename to client/cordova/apple/xcode/ios/Outline/Outline.entitlements diff --git a/client/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist b/client/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist rename to client/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist diff --git a/client/src/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements b/client/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements similarity index 100% rename from client/src/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements rename to client/cordova/apple/xcode/ios/Outline/VpnExtension.entitlements diff --git a/client/src/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements b/client/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements similarity index 100% rename from client/src/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements rename to client/cordova/apple/xcode/ios/OutlineLauncher/OutlineLauncher.entitlements diff --git a/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj b/client/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj rename to client/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj diff --git a/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme b/client/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme rename to client/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/Outline.xcscheme diff --git a/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme b/client/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme rename to client/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/OutlineLauncher.xcscheme diff --git a/client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme b/client/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme rename to client/cordova/apple/xcode/macos/Outline.xcodeproj/xcshareddata/xcschemes/VpnExtension.xcscheme diff --git a/client/src/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m b/client/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m rename to client/cordova/apple/xcode/macos/Outline/Classes/AppDelegate.m diff --git a/client/src/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift b/client/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift rename to client/cordova/apple/xcode/macos/Outline/Classes/CDVMacOsUrlHandler.swift diff --git a/client/src/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift b/client/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift rename to client/cordova/apple/xcode/macos/Outline/Classes/EventMonitor.swift diff --git a/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json b/client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json rename to client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/Contents.json diff --git a/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png b/client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png rename to client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImage.imageset/outline-black-off-2x.png diff --git a/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json b/client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json rename to client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/Contents.json diff --git a/client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png b/client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png rename to client/cordova/apple/xcode/macos/Outline/Images.xcassets/StatusBarButtonImageConnected.imageset/outline-black-on-2x.png diff --git a/client/src/cordova/apple/xcode/macos/Outline/MainViewController.xib b/client/cordova/apple/xcode/macos/Outline/MainViewController.xib similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/MainViewController.xib rename to client/cordova/apple/xcode/macos/Outline/MainViewController.xib diff --git a/client/src/cordova/apple/xcode/macos/Outline/Outline-Info.plist b/client/cordova/apple/xcode/macos/Outline/Outline-Info.plist similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Outline-Info.plist rename to client/cordova/apple/xcode/macos/Outline/Outline-Info.plist diff --git a/client/src/cordova/apple/xcode/macos/Outline/Outline.entitlements b/client/cordova/apple/xcode/macos/Outline/Outline.entitlements similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/Outline.entitlements rename to client/cordova/apple/xcode/macos/Outline/Outline.entitlements diff --git a/client/src/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist b/client/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist rename to client/cordova/apple/xcode/macos/Outline/VpnExtension-Info.plist diff --git a/client/src/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements b/client/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements rename to client/cordova/apple/xcode/macos/Outline/VpnExtension.entitlements diff --git a/client/src/cordova/apple/xcode/macos/Outline/config.xml b/client/cordova/apple/xcode/macos/Outline/config.xml similarity index 100% rename from client/src/cordova/apple/xcode/macos/Outline/config.xml rename to client/cordova/apple/xcode/macos/Outline/config.xml diff --git a/client/src/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift b/client/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift similarity index 100% rename from client/src/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift rename to client/cordova/apple/xcode/macos/OutlineLauncher/AppDelegate.swift diff --git a/client/src/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard b/client/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard similarity index 100% rename from client/src/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard rename to client/cordova/apple/xcode/macos/OutlineLauncher/Base.lproj/Main.storyboard diff --git a/client/src/cordova/apple/xcode/macos/OutlineLauncher/Info.plist b/client/cordova/apple/xcode/macos/OutlineLauncher/Info.plist similarity index 100% rename from client/src/cordova/apple/xcode/macos/OutlineLauncher/Info.plist rename to client/cordova/apple/xcode/macos/OutlineLauncher/Info.plist diff --git a/client/src/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements b/client/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements similarity index 100% rename from client/src/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements rename to client/cordova/apple/xcode/macos/OutlineLauncher/OutlineLauncher.entitlements diff --git a/client/src/cordova/apple/xcode/macos/osx.json b/client/cordova/apple/xcode/macos/osx.json similarity index 100% rename from client/src/cordova/apple/xcode/macos/osx.json rename to client/cordova/apple/xcode/macos/osx.json diff --git a/client/src/cordova/apple/xcode/macos/www/cordova_plugins.js b/client/cordova/apple/xcode/macos/www/cordova_plugins.js similarity index 100% rename from client/src/cordova/apple/xcode/macos/www/cordova_plugins.js rename to client/cordova/apple/xcode/macos/www/cordova_plugins.js diff --git a/client/src/cordova/build.action.mjs b/client/cordova/build.action.mjs similarity index 95% rename from client/src/cordova/build.action.mjs rename to client/cordova/build.action.mjs index cb18eed7bd..9a39c6f0f1 100644 --- a/client/src/cordova/build.action.mjs +++ b/client/cordova/build.action.mjs @@ -19,10 +19,10 @@ import fs from 'node:fs/promises'; import cordovaLib from 'cordova-lib'; const {cordova} = cordovaLib; -import {runAction} from '../../../src/build/run_action.mjs'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; -import {spawnStream} from '../../../src/build/spawn_stream.mjs'; -import {downloadHttpsFile} from '../../../src/build/download_file.mjs'; +import {runAction} from '../../src/build/run_action.mjs'; +import {getRootDir} from '../../src/build/get_root_dir.mjs'; +import {spawnStream} from '../../src/build/spawn_stream.mjs'; +import {downloadHttpsFile} from '../../src/build/download_file.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; diff --git a/client/src/cordova/import_messages.action.mjs b/client/cordova/import_messages.action.mjs similarity index 100% rename from client/src/cordova/import_messages.action.mjs rename to client/cordova/import_messages.action.mjs diff --git a/client/src/cordova/plugin/README.md b/client/cordova/plugin/README.md similarity index 100% rename from client/src/cordova/plugin/README.md rename to client/cordova/plugin/README.md diff --git a/client/src/cordova/plugin/android/java/build-extras.gradle b/client/cordova/plugin/android/java/build-extras.gradle similarity index 100% rename from client/src/cordova/plugin/android/java/build-extras.gradle rename to client/cordova/plugin/android/java/build-extras.gradle diff --git a/client/src/cordova/plugin/android/java/org/outline/OutlinePlugin.java b/client/cordova/plugin/android/java/org/outline/OutlinePlugin.java similarity index 100% rename from client/src/cordova/plugin/android/java/org/outline/OutlinePlugin.java rename to client/cordova/plugin/android/java/org/outline/OutlinePlugin.java diff --git a/client/src/cordova/plugin/android/resources/bypass_subnets.xml b/client/cordova/plugin/android/resources/bypass_subnets.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/bypass_subnets.xml rename to client/cordova/plugin/android/resources/bypass_subnets.xml diff --git a/client/src/cordova/plugin/android/resources/small_icon.png b/client/cordova/plugin/android/resources/small_icon.png similarity index 100% rename from client/src/cordova/plugin/android/resources/small_icon.png rename to client/cordova/plugin/android/resources/small_icon.png diff --git a/client/src/cordova/plugin/android/resources/strings/values-af/strings.xml b/client/cordova/plugin/android/resources/strings/values-af/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-af/strings.xml rename to client/cordova/plugin/android/resources/strings/values-af/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-am/strings.xml b/client/cordova/plugin/android/resources/strings/values-am/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-am/strings.xml rename to client/cordova/plugin/android/resources/strings/values-am/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ar/strings.xml b/client/cordova/plugin/android/resources/strings/values-ar/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ar/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ar/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-az/strings.xml b/client/cordova/plugin/android/resources/strings/values-az/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-az/strings.xml rename to client/cordova/plugin/android/resources/strings/values-az/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml b/client/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml rename to client/cordova/plugin/android/resources/strings/values-b+sr+Latn/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-bg/strings.xml b/client/cordova/plugin/android/resources/strings/values-bg/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-bg/strings.xml rename to client/cordova/plugin/android/resources/strings/values-bg/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-bn/strings.xml b/client/cordova/plugin/android/resources/strings/values-bn/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-bn/strings.xml rename to client/cordova/plugin/android/resources/strings/values-bn/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-bs/strings.xml b/client/cordova/plugin/android/resources/strings/values-bs/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-bs/strings.xml rename to client/cordova/plugin/android/resources/strings/values-bs/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ca/strings.xml b/client/cordova/plugin/android/resources/strings/values-ca/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ca/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ca/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-cs/strings.xml b/client/cordova/plugin/android/resources/strings/values-cs/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-cs/strings.xml rename to client/cordova/plugin/android/resources/strings/values-cs/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-da/strings.xml b/client/cordova/plugin/android/resources/strings/values-da/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-da/strings.xml rename to client/cordova/plugin/android/resources/strings/values-da/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-de/strings.xml b/client/cordova/plugin/android/resources/strings/values-de/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-de/strings.xml rename to client/cordova/plugin/android/resources/strings/values-de/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-el/strings.xml b/client/cordova/plugin/android/resources/strings/values-el/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-el/strings.xml rename to client/cordova/plugin/android/resources/strings/values-el/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml b/client/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml rename to client/cordova/plugin/android/resources/strings/values-en-rGB/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-en/strings.xml b/client/cordova/plugin/android/resources/strings/values-en/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-en/strings.xml rename to client/cordova/plugin/android/resources/strings/values-en/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-es/strings.xml b/client/cordova/plugin/android/resources/strings/values-es/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-es/strings.xml rename to client/cordova/plugin/android/resources/strings/values-es/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-et/strings.xml b/client/cordova/plugin/android/resources/strings/values-et/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-et/strings.xml rename to client/cordova/plugin/android/resources/strings/values-et/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-fa/strings.xml b/client/cordova/plugin/android/resources/strings/values-fa/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-fa/strings.xml rename to client/cordova/plugin/android/resources/strings/values-fa/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-fi/strings.xml b/client/cordova/plugin/android/resources/strings/values-fi/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-fi/strings.xml rename to client/cordova/plugin/android/resources/strings/values-fi/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-fil/strings.xml b/client/cordova/plugin/android/resources/strings/values-fil/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-fil/strings.xml rename to client/cordova/plugin/android/resources/strings/values-fil/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-fr/strings.xml b/client/cordova/plugin/android/resources/strings/values-fr/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-fr/strings.xml rename to client/cordova/plugin/android/resources/strings/values-fr/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-he/strings.xml b/client/cordova/plugin/android/resources/strings/values-he/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-he/strings.xml rename to client/cordova/plugin/android/resources/strings/values-he/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-hi/strings.xml b/client/cordova/plugin/android/resources/strings/values-hi/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-hi/strings.xml rename to client/cordova/plugin/android/resources/strings/values-hi/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-hr/strings.xml b/client/cordova/plugin/android/resources/strings/values-hr/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-hr/strings.xml rename to client/cordova/plugin/android/resources/strings/values-hr/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-hu/strings.xml b/client/cordova/plugin/android/resources/strings/values-hu/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-hu/strings.xml rename to client/cordova/plugin/android/resources/strings/values-hu/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-hy/strings.xml b/client/cordova/plugin/android/resources/strings/values-hy/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-hy/strings.xml rename to client/cordova/plugin/android/resources/strings/values-hy/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-id/strings.xml b/client/cordova/plugin/android/resources/strings/values-id/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-id/strings.xml rename to client/cordova/plugin/android/resources/strings/values-id/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-is/strings.xml b/client/cordova/plugin/android/resources/strings/values-is/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-is/strings.xml rename to client/cordova/plugin/android/resources/strings/values-is/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-it/strings.xml b/client/cordova/plugin/android/resources/strings/values-it/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-it/strings.xml rename to client/cordova/plugin/android/resources/strings/values-it/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ja/strings.xml b/client/cordova/plugin/android/resources/strings/values-ja/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ja/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ja/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ka/strings.xml b/client/cordova/plugin/android/resources/strings/values-ka/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ka/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ka/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-kk/strings.xml b/client/cordova/plugin/android/resources/strings/values-kk/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-kk/strings.xml rename to client/cordova/plugin/android/resources/strings/values-kk/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-km/strings.xml b/client/cordova/plugin/android/resources/strings/values-km/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-km/strings.xml rename to client/cordova/plugin/android/resources/strings/values-km/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ko/strings.xml b/client/cordova/plugin/android/resources/strings/values-ko/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ko/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ko/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-lo/strings.xml b/client/cordova/plugin/android/resources/strings/values-lo/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-lo/strings.xml rename to client/cordova/plugin/android/resources/strings/values-lo/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-lt/strings.xml b/client/cordova/plugin/android/resources/strings/values-lt/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-lt/strings.xml rename to client/cordova/plugin/android/resources/strings/values-lt/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-lv/strings.xml b/client/cordova/plugin/android/resources/strings/values-lv/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-lv/strings.xml rename to client/cordova/plugin/android/resources/strings/values-lv/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-mk/strings.xml b/client/cordova/plugin/android/resources/strings/values-mk/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-mk/strings.xml rename to client/cordova/plugin/android/resources/strings/values-mk/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-mn/strings.xml b/client/cordova/plugin/android/resources/strings/values-mn/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-mn/strings.xml rename to client/cordova/plugin/android/resources/strings/values-mn/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-mr/strings.xml b/client/cordova/plugin/android/resources/strings/values-mr/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-mr/strings.xml rename to client/cordova/plugin/android/resources/strings/values-mr/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ms/strings.xml b/client/cordova/plugin/android/resources/strings/values-ms/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ms/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ms/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-my/strings.xml b/client/cordova/plugin/android/resources/strings/values-my/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-my/strings.xml rename to client/cordova/plugin/android/resources/strings/values-my/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ne/strings.xml b/client/cordova/plugin/android/resources/strings/values-ne/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ne/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ne/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-nl/strings.xml b/client/cordova/plugin/android/resources/strings/values-nl/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-nl/strings.xml rename to client/cordova/plugin/android/resources/strings/values-nl/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-no/strings.xml b/client/cordova/plugin/android/resources/strings/values-no/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-no/strings.xml rename to client/cordova/plugin/android/resources/strings/values-no/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-pl/strings.xml b/client/cordova/plugin/android/resources/strings/values-pl/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-pl/strings.xml rename to client/cordova/plugin/android/resources/strings/values-pl/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml b/client/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml rename to client/cordova/plugin/android/resources/strings/values-pt-rBR/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml b/client/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml rename to client/cordova/plugin/android/resources/strings/values-pt-rPT/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ro/strings.xml b/client/cordova/plugin/android/resources/strings/values-ro/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ro/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ro/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ru/strings.xml b/client/cordova/plugin/android/resources/strings/values-ru/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ru/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ru/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-si/strings.xml b/client/cordova/plugin/android/resources/strings/values-si/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-si/strings.xml rename to client/cordova/plugin/android/resources/strings/values-si/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-sk/strings.xml b/client/cordova/plugin/android/resources/strings/values-sk/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-sk/strings.xml rename to client/cordova/plugin/android/resources/strings/values-sk/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-sl/strings.xml b/client/cordova/plugin/android/resources/strings/values-sl/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-sl/strings.xml rename to client/cordova/plugin/android/resources/strings/values-sl/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-sq/strings.xml b/client/cordova/plugin/android/resources/strings/values-sq/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-sq/strings.xml rename to client/cordova/plugin/android/resources/strings/values-sq/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-sr/strings.xml b/client/cordova/plugin/android/resources/strings/values-sr/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-sr/strings.xml rename to client/cordova/plugin/android/resources/strings/values-sr/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-sv/strings.xml b/client/cordova/plugin/android/resources/strings/values-sv/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-sv/strings.xml rename to client/cordova/plugin/android/resources/strings/values-sv/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-sw/strings.xml b/client/cordova/plugin/android/resources/strings/values-sw/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-sw/strings.xml rename to client/cordova/plugin/android/resources/strings/values-sw/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ta/strings.xml b/client/cordova/plugin/android/resources/strings/values-ta/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ta/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ta/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-th/strings.xml b/client/cordova/plugin/android/resources/strings/values-th/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-th/strings.xml rename to client/cordova/plugin/android/resources/strings/values-th/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-tr/strings.xml b/client/cordova/plugin/android/resources/strings/values-tr/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-tr/strings.xml rename to client/cordova/plugin/android/resources/strings/values-tr/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-uk/strings.xml b/client/cordova/plugin/android/resources/strings/values-uk/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-uk/strings.xml rename to client/cordova/plugin/android/resources/strings/values-uk/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-ur/strings.xml b/client/cordova/plugin/android/resources/strings/values-ur/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-ur/strings.xml rename to client/cordova/plugin/android/resources/strings/values-ur/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-vi/strings.xml b/client/cordova/plugin/android/resources/strings/values-vi/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-vi/strings.xml rename to client/cordova/plugin/android/resources/strings/values-vi/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml b/client/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml rename to client/cordova/plugin/android/resources/strings/values-zh-rCN/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml b/client/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml rename to client/cordova/plugin/android/resources/strings/values-zh-rTW/strings.xml diff --git a/client/src/cordova/plugin/android/resources/strings/values/strings.xml b/client/cordova/plugin/android/resources/strings/values/strings.xml similarity index 100% rename from client/src/cordova/plugin/android/resources/strings/values/strings.xml rename to client/cordova/plugin/android/resources/strings/values/strings.xml diff --git a/client/src/cordova/plugin/android/scripts/copy_third_party.js b/client/cordova/plugin/android/scripts/copy_third_party.js similarity index 100% rename from client/src/cordova/plugin/android/scripts/copy_third_party.js rename to client/cordova/plugin/android/scripts/copy_third_party.js diff --git a/client/src/cordova/plugin/apple/src/OutlinePlugin.swift b/client/cordova/plugin/apple/src/OutlinePlugin.swift similarity index 100% rename from client/src/cordova/plugin/apple/src/OutlinePlugin.swift rename to client/cordova/plugin/apple/src/OutlinePlugin.swift diff --git a/client/src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h b/client/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h similarity index 100% rename from client/src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h rename to client/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h diff --git a/client/src/cordova/plugin/package.json b/client/cordova/plugin/package.json similarity index 100% rename from client/src/cordova/plugin/package.json rename to client/cordova/plugin/package.json diff --git a/client/src/cordova/plugin/plugin.xml b/client/cordova/plugin/plugin.xml similarity index 100% rename from client/src/cordova/plugin/plugin.xml rename to client/cordova/plugin/plugin.xml diff --git a/client/src/cordova/setup.action.mjs b/client/cordova/setup.action.mjs similarity index 100% rename from client/src/cordova/setup.action.mjs rename to client/cordova/setup.action.mjs diff --git a/client/src/cordova/test.action.mjs b/client/cordova/test.action.mjs similarity index 100% rename from client/src/cordova/test.action.mjs rename to client/cordova/test.action.mjs diff --git a/src/electron/README.md b/client/electron/README.md similarity index 100% rename from src/electron/README.md rename to client/electron/README.md diff --git a/src/electron/add_tap_device.bat b/client/electron/add_tap_device.bat similarity index 100% rename from src/electron/add_tap_device.bat rename to client/electron/add_tap_device.bat diff --git a/src/electron/build.action.mjs b/client/electron/build.action.mjs similarity index 100% rename from src/electron/build.action.mjs rename to client/electron/build.action.mjs diff --git a/src/electron/build_main.action.mjs b/client/electron/build_main.action.mjs similarity index 100% rename from src/electron/build_main.action.mjs rename to client/electron/build_main.action.mjs diff --git a/src/electron/connectivity.ts b/client/electron/connectivity.ts similarity index 100% rename from src/electron/connectivity.ts rename to client/electron/connectivity.ts diff --git a/src/electron/custom_install_steps.nsh b/client/electron/custom_install_steps.nsh similarity index 100% rename from src/electron/custom_install_steps.nsh rename to client/electron/custom_install_steps.nsh diff --git a/src/electron/electron-builder.json b/client/electron/electron-builder.json similarity index 100% rename from src/electron/electron-builder.json rename to client/electron/electron-builder.json diff --git a/src/electron/find_tap_device_name.bat b/client/electron/find_tap_device_name.bat similarity index 100% rename from src/electron/find_tap_device_name.bat rename to client/electron/find_tap_device_name.bat diff --git a/src/electron/go_vpn_tunnel.ts b/client/electron/go_vpn_tunnel.ts similarity index 100% rename from src/electron/go_vpn_tunnel.ts rename to client/electron/go_vpn_tunnel.ts diff --git a/src/electron/icons/mac/icon.icns b/client/electron/icons/mac/icon.icns similarity index 100% rename from src/electron/icons/mac/icon.icns rename to client/electron/icons/mac/icon.icns diff --git a/src/electron/icons/png/1024x1024.png b/client/electron/icons/png/1024x1024.png similarity index 100% rename from src/electron/icons/png/1024x1024.png rename to client/electron/icons/png/1024x1024.png diff --git a/src/electron/icons/png/128x128.png b/client/electron/icons/png/128x128.png similarity index 100% rename from src/electron/icons/png/128x128.png rename to client/electron/icons/png/128x128.png diff --git a/src/electron/icons/png/16x16.png b/client/electron/icons/png/16x16.png similarity index 100% rename from src/electron/icons/png/16x16.png rename to client/electron/icons/png/16x16.png diff --git a/src/electron/icons/png/24x24.png b/client/electron/icons/png/24x24.png similarity index 100% rename from src/electron/icons/png/24x24.png rename to client/electron/icons/png/24x24.png diff --git a/src/electron/icons/png/256x256.png b/client/electron/icons/png/256x256.png similarity index 100% rename from src/electron/icons/png/256x256.png rename to client/electron/icons/png/256x256.png diff --git a/src/electron/icons/png/32x32.png b/client/electron/icons/png/32x32.png similarity index 100% rename from src/electron/icons/png/32x32.png rename to client/electron/icons/png/32x32.png diff --git a/src/electron/icons/png/48x48.png b/client/electron/icons/png/48x48.png similarity index 100% rename from src/electron/icons/png/48x48.png rename to client/electron/icons/png/48x48.png diff --git a/src/electron/icons/png/512x512.png b/client/electron/icons/png/512x512.png similarity index 100% rename from src/electron/icons/png/512x512.png rename to client/electron/icons/png/512x512.png diff --git a/src/electron/icons/png/64x64.png b/client/electron/icons/png/64x64.png similarity index 100% rename from src/electron/icons/png/64x64.png rename to client/electron/icons/png/64x64.png diff --git a/src/electron/icons/win/icon.ico b/client/electron/icons/win/icon.ico similarity index 100% rename from src/electron/icons/win/icon.ico rename to client/electron/icons/win/icon.ico diff --git a/src/electron/index.ts b/client/electron/index.ts similarity index 100% rename from src/electron/index.ts rename to client/electron/index.ts diff --git a/src/electron/install_windows_service.bat b/client/electron/install_windows_service.bat similarity index 100% rename from src/electron/install_windows_service.bat rename to client/electron/install_windows_service.bat diff --git a/src/electron/preload.d.ts b/client/electron/preload.d.ts similarity index 100% rename from src/electron/preload.d.ts rename to client/electron/preload.d.ts diff --git a/src/electron/preload.ts b/client/electron/preload.ts similarity index 100% rename from src/electron/preload.ts rename to client/electron/preload.ts diff --git a/src/electron/process.ts b/client/electron/process.ts similarity index 100% rename from src/electron/process.ts rename to client/electron/process.ts diff --git a/src/electron/routing_service.ts b/client/electron/routing_service.ts similarity index 100% rename from src/electron/routing_service.ts rename to client/electron/routing_service.ts diff --git a/src/electron/start.action.mjs b/client/electron/start.action.mjs similarity index 100% rename from src/electron/start.action.mjs rename to client/electron/start.action.mjs diff --git a/src/electron/tsconfig.json b/client/electron/tsconfig.json similarity index 100% rename from src/electron/tsconfig.json rename to client/electron/tsconfig.json diff --git a/src/electron/tunnel_store.ts b/client/electron/tunnel_store.ts similarity index 100% rename from src/electron/tunnel_store.ts rename to client/electron/tunnel_store.ts diff --git a/src/electron/types/socks/index.d.ts b/client/electron/types/socks/index.d.ts similarity index 100% rename from src/electron/types/socks/index.d.ts rename to client/electron/types/socks/index.d.ts diff --git a/src/electron/vpn_tunnel.ts b/client/electron/vpn_tunnel.ts similarity index 100% rename from src/electron/vpn_tunnel.ts rename to client/electron/vpn_tunnel.ts diff --git a/src/electron/webpack_electron_main.mjs b/client/electron/webpack_electron_main.mjs similarity index 100% rename from src/electron/webpack_electron_main.mjs rename to client/electron/webpack_electron_main.mjs diff --git a/src/electron/windows/digicert-usb-config/eToken-macos.cfg b/client/electron/windows/digicert-usb-config/eToken-macos.cfg similarity index 100% rename from src/electron/windows/digicert-usb-config/eToken-macos.cfg rename to client/electron/windows/digicert-usb-config/eToken-macos.cfg diff --git a/src/electron/windows/digicert-usb-config/eToken-windows.cfg b/client/electron/windows/digicert-usb-config/eToken-windows.cfg similarity index 100% rename from src/electron/windows/digicert-usb-config/eToken-windows.cfg rename to client/electron/windows/digicert-usb-config/eToken-windows.cfg diff --git a/src/electron/windows/electron_builder_signing_plugin.cjs b/client/electron/windows/electron_builder_signing_plugin.cjs similarity index 100% rename from src/electron/windows/electron_builder_signing_plugin.cjs rename to client/electron/windows/electron_builder_signing_plugin.cjs diff --git a/src/electron/windows/sign_windows_executable.action.mjs b/client/electron/windows/sign_windows_executable.action.mjs similarity index 100% rename from src/electron/windows/sign_windows_executable.action.mjs rename to client/electron/windows/sign_windows_executable.action.mjs diff --git a/client/src/infrastructure/custom_error.ts b/client/infrastructure/custom_error.ts similarity index 100% rename from client/src/infrastructure/custom_error.ts rename to client/infrastructure/custom_error.ts diff --git a/client/src/infrastructure/electron/app_paths.ts b/client/infrastructure/electron/app_paths.ts similarity index 100% rename from client/src/infrastructure/electron/app_paths.ts rename to client/infrastructure/electron/app_paths.ts diff --git a/client/src/infrastructure/i18n.ts b/client/infrastructure/i18n.ts similarity index 100% rename from client/src/infrastructure/i18n.ts rename to client/infrastructure/i18n.ts diff --git a/client/src/infrastructure/memory_storage.ts b/client/infrastructure/memory_storage.ts similarity index 100% rename from client/src/infrastructure/memory_storage.ts rename to client/infrastructure/memory_storage.ts diff --git a/client/src/infrastructure/timeout_promise.ts b/client/infrastructure/timeout_promise.ts similarity index 100% rename from client/src/infrastructure/timeout_promise.ts rename to client/infrastructure/timeout_promise.ts diff --git a/client/src/build/get_build_parameters.mjs b/client/src/build/get_build_parameters.mjs deleted file mode 100644 index b897650184..0000000000 --- a/client/src/build/get_build_parameters.mjs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2022 The Outline Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import minimist from 'minimist'; - -const VALID_PLATFORMS = ['linux', 'windows', 'ios', 'macos', 'maccatalyst', 'android', 'browser']; -const VALID_BUILD_MODES = ['debug', 'release']; - -const MS_PER_HOUR = 1000 * 60 * 60; - -/* - Inputs: - => cliParameters: the list of action arguments passed in - - Outputs: - => an object containing the specificed platform and buildMode. -*/ -export function getBuildParameters(cliArguments) { - const { - _: [platform = 'browser'], - buildMode = 'debug', - verbose = false, - versionName = '0.0.0', - sentryDsn = process.env.SENTRY_DSN, - } = minimist(cliArguments); - - if (platform && !VALID_PLATFORMS.includes(platform)) { - throw new TypeError( - `Platform "${platform}" is not a valid target for Outline Client. Must be one of ${VALID_PLATFORMS.join(', ')}` - ); - } - - if (buildMode && !VALID_BUILD_MODES.includes(buildMode)) { - throw new TypeError( - `Build mode "${buildMode}" is not a valid build mode for Outline Client. Must be one of ${VALID_BUILD_MODES.join( - ', ' - )}` - ); - } - - return { - platform, - buildMode, - verbose, - versionName: buildMode === 'release' ? versionName : `${versionName}-${buildMode}`, - sentryDsn, - buildNumber: Math.floor(Date.now() / MS_PER_HOUR), - }; -} diff --git a/client/src/build/get_webpack_build_mode.mjs b/client/src/build/get_webpack_build_mode.mjs deleted file mode 100644 index a6ff2b8ff4..0000000000 --- a/client/src/build/get_webpack_build_mode.mjs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2022 The Outline Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/* - Inputs: - => buildMode: the outline build mode - - Outputs: - => the appropriate webpack mode for this type of build -*/ -export function getWebpackBuildMode(buildMode) { - switch (buildMode) { - case 'debug': - return 'development'; - case 'release': - return 'production'; - default: - throw new TypeError('get_webpack_mode requires a buildMode argument of debug or release'); - } -} diff --git a/client/src/build/run_webpack.mjs b/client/src/build/run_webpack.mjs deleted file mode 100644 index 3995634292..0000000000 --- a/client/src/build/run_webpack.mjs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2022 The Outline Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import webpack from 'webpack'; - -export const runWebpack = webpackConfig => - new Promise((resolve, reject) => { - webpack(webpackConfig, (error, stats) => { - if (error || stats.hasErrors()) { - reject( - error || - stats - .toJson() - ?.errors.reduce( - (errorMessages, {message}) => (message ? `${errorMessages}\n${message}` : errorMessages), - '' - ) || - 'Unknown Webpack error.' - ); - } - - resolve(stats); - }); - }); diff --git a/client/tsconfig.json b/client/tsconfig.json index f6dbb97233..237f1020eb 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -17,5 +17,5 @@ "lib": ["es2022"] }, "exclude": ["*.cjs", "*.js", "*.mjs", "**/*.spec.ts"], - "include": ["src"] + "include": ["src", "cordova", "infrastructure", "web"] } diff --git a/client/src/tun2socks/Taskfile.yml b/client/tun2socks/Taskfile.yml similarity index 100% rename from client/src/tun2socks/Taskfile.yml rename to client/tun2socks/Taskfile.yml diff --git a/client/src/tun2socks/build.action.mjs b/client/tun2socks/build.action.mjs similarity index 100% rename from client/src/tun2socks/build.action.mjs rename to client/tun2socks/build.action.mjs diff --git a/client/src/tun2socks/outline/client.go b/client/tun2socks/outline/client.go similarity index 100% rename from client/src/tun2socks/outline/client.go rename to client/tun2socks/outline/client.go diff --git a/client/src/tun2socks/outline/connectivity/connectivity.go b/client/tun2socks/outline/connectivity/connectivity.go similarity index 100% rename from client/src/tun2socks/outline/connectivity/connectivity.go rename to client/tun2socks/outline/connectivity/connectivity.go diff --git a/client/src/tun2socks/outline/connectivity/connectivity_test.go b/client/tun2socks/outline/connectivity/connectivity_test.go similarity index 100% rename from client/src/tun2socks/outline/connectivity/connectivity_test.go rename to client/tun2socks/outline/connectivity/connectivity_test.go diff --git a/client/src/tun2socks/outline/electron/main.go b/client/tun2socks/outline/electron/main.go similarity index 100% rename from client/src/tun2socks/outline/electron/main.go rename to client/tun2socks/outline/electron/main.go diff --git a/client/src/tun2socks/outline/internal/utf8/utf8.go b/client/tun2socks/outline/internal/utf8/utf8.go similarity index 100% rename from client/src/tun2socks/outline/internal/utf8/utf8.go rename to client/tun2socks/outline/internal/utf8/utf8.go diff --git a/client/src/tun2socks/outline/internal/utf8/utf8_test.go b/client/tun2socks/outline/internal/utf8/utf8_test.go similarity index 100% rename from client/src/tun2socks/outline/internal/utf8/utf8_test.go rename to client/tun2socks/outline/internal/utf8/utf8_test.go diff --git a/client/src/tun2socks/outline/neterrors/neterrors.go b/client/tun2socks/outline/neterrors/neterrors.go similarity index 100% rename from client/src/tun2socks/outline/neterrors/neterrors.go rename to client/tun2socks/outline/neterrors/neterrors.go diff --git a/client/src/tun2socks/outline/shadowsocks/client.go b/client/tun2socks/outline/shadowsocks/client.go similarity index 100% rename from client/src/tun2socks/outline/shadowsocks/client.go rename to client/tun2socks/outline/shadowsocks/client.go diff --git a/client/src/tun2socks/outline/shadowsocks/client_test.go b/client/tun2socks/outline/shadowsocks/client_test.go similarity index 100% rename from client/src/tun2socks/outline/shadowsocks/client_test.go rename to client/tun2socks/outline/shadowsocks/client_test.go diff --git a/client/src/tun2socks/outline/shadowsocks/config.go b/client/tun2socks/outline/shadowsocks/config.go similarity index 100% rename from client/src/tun2socks/outline/shadowsocks/config.go rename to client/tun2socks/outline/shadowsocks/config.go diff --git a/client/src/tun2socks/outline/shadowsocks/config_test.go b/client/tun2socks/outline/shadowsocks/config_test.go similarity index 100% rename from client/src/tun2socks/outline/shadowsocks/config_test.go rename to client/tun2socks/outline/shadowsocks/config_test.go diff --git a/client/src/tun2socks/outline/tun2socks/tcp.go b/client/tun2socks/outline/tun2socks/tcp.go similarity index 100% rename from client/src/tun2socks/outline/tun2socks/tcp.go rename to client/tun2socks/outline/tun2socks/tcp.go diff --git a/client/src/tun2socks/outline/tun2socks/tunnel.go b/client/tun2socks/outline/tun2socks/tunnel.go similarity index 100% rename from client/src/tun2socks/outline/tun2socks/tunnel.go rename to client/tun2socks/outline/tun2socks/tunnel.go diff --git a/client/src/tun2socks/outline/tun2socks/tunnel_android.go b/client/tun2socks/outline/tun2socks/tunnel_android.go similarity index 100% rename from client/src/tun2socks/outline/tun2socks/tunnel_android.go rename to client/tun2socks/outline/tun2socks/tunnel_android.go diff --git a/client/src/tun2socks/outline/tun2socks/tunnel_darwin.go b/client/tun2socks/outline/tun2socks/tunnel_darwin.go similarity index 100% rename from client/src/tun2socks/outline/tun2socks/tunnel_darwin.go rename to client/tun2socks/outline/tun2socks/tunnel_darwin.go diff --git a/client/src/tun2socks/outline/tun2socks/udp.go b/client/tun2socks/outline/tun2socks/udp.go similarity index 100% rename from client/src/tun2socks/outline/tun2socks/udp.go rename to client/tun2socks/outline/tun2socks/udp.go diff --git a/client/src/tun2socks/tunnel/tun.go b/client/tun2socks/tunnel/tun.go similarity index 100% rename from client/src/tun2socks/tunnel/tun.go rename to client/tun2socks/tunnel/tun.go diff --git a/client/src/tun2socks/tunnel/tun_android.go b/client/tun2socks/tunnel/tun_android.go similarity index 100% rename from client/src/tun2socks/tunnel/tun_android.go rename to client/tun2socks/tunnel/tun_android.go diff --git a/client/src/tun2socks/tunnel/tunnel.go b/client/tun2socks/tunnel/tunnel.go similarity index 100% rename from client/src/tun2socks/tunnel/tunnel.go rename to client/tun2socks/tunnel/tunnel.go diff --git a/client/src/www/.storybook/main.js b/client/web/.storybook/main.js similarity index 100% rename from client/src/www/.storybook/main.js rename to client/web/.storybook/main.js diff --git a/client/src/www/.storybook/preview-head.html b/client/web/.storybook/preview-head.html similarity index 100% rename from client/src/www/.storybook/preview-head.html rename to client/web/.storybook/preview-head.html diff --git a/client/src/www/.storybook/preview.js b/client/web/.storybook/preview.js similarity index 100% rename from client/src/www/.storybook/preview.js rename to client/web/.storybook/preview.js diff --git a/client/src/www/TODO.spec.ts b/client/web/TODO.spec.ts similarity index 100% rename from client/src/www/TODO.spec.ts rename to client/web/TODO.spec.ts diff --git a/client/src/www/app/app.spec.ts b/client/web/app/app.spec.ts similarity index 100% rename from client/src/www/app/app.spec.ts rename to client/web/app/app.spec.ts diff --git a/client/src/www/app/app.ts b/client/web/app/app.ts similarity index 100% rename from client/src/www/app/app.ts rename to client/web/app/app.ts diff --git a/client/src/www/app/clipboard.ts b/client/web/app/clipboard.ts similarity index 100% rename from client/src/www/app/clipboard.ts rename to client/web/app/clipboard.ts diff --git a/client/src/www/app/cordova_main.ts b/client/web/app/cordova_main.ts similarity index 100% rename from client/src/www/app/cordova_main.ts rename to client/web/app/cordova_main.ts diff --git a/client/src/www/app/electron_main.ts b/client/web/app/electron_main.ts similarity index 100% rename from client/src/www/app/electron_main.ts rename to client/web/app/electron_main.ts diff --git a/client/src/www/app/electron_outline_tunnel.ts b/client/web/app/electron_outline_tunnel.ts similarity index 100% rename from client/src/www/app/electron_outline_tunnel.ts rename to client/web/app/electron_outline_tunnel.ts diff --git a/client/src/www/app/environment.ts b/client/web/app/environment.ts similarity index 100% rename from client/src/www/app/environment.ts rename to client/web/app/environment.ts diff --git a/client/src/www/app/fake_tunnel.ts b/client/web/app/fake_tunnel.ts similarity index 100% rename from client/src/www/app/fake_tunnel.ts rename to client/web/app/fake_tunnel.ts diff --git a/client/src/www/app/main.ts b/client/web/app/main.ts similarity index 94% rename from client/src/www/app/main.ts rename to client/web/app/main.ts index bd8afb11b4..d23716a633 100644 --- a/client/src/www/app/main.ts +++ b/client/web/app/main.ts @@ -14,15 +14,15 @@ import '../ui_components/app-root.js'; -import {EventQueue} from '../model/events'; +import {EventQueue} from '../model/events.js'; -import {App} from './app'; -import {onceEnvVars} from './environment'; -import {OutlineServerRepository} from './outline_server_repository'; +import {App} from './app.js'; +import {onceEnvVars} from './environment.js'; +import {OutlineServerRepository} from './outline_server_repository/index.js'; import {makeConfig, SIP002_URI} from 'ShadowsocksConfig'; -import {OutlinePlatform} from './platform'; -import {Settings} from './settings'; -import {TunnelFactory} from './tunnel'; +import {OutlinePlatform} from './platform.js'; +import {Settings} from './settings.js'; +import {TunnelFactory} from './tunnel.js'; import {Localizer} from 'src/infrastructure/i18n.js'; // Used to determine whether to use Polymer functionality on app initialization failure. diff --git a/client/src/www/app/outline_server_repository/access_key_serialization.ts b/client/web/app/outline_server_repository/access_key_serialization.ts similarity index 100% rename from client/src/www/app/outline_server_repository/access_key_serialization.ts rename to client/web/app/outline_server_repository/access_key_serialization.ts diff --git a/client/src/www/app/outline_server_repository/index.ts b/client/web/app/outline_server_repository/index.ts similarity index 100% rename from client/src/www/app/outline_server_repository/index.ts rename to client/web/app/outline_server_repository/index.ts diff --git a/client/src/www/app/outline_server_repository/outline_server_repository.spec.ts b/client/web/app/outline_server_repository/outline_server_repository.spec.ts similarity index 100% rename from client/src/www/app/outline_server_repository/outline_server_repository.spec.ts rename to client/web/app/outline_server_repository/outline_server_repository.spec.ts diff --git a/client/src/www/app/outline_server_repository/server.ts b/client/web/app/outline_server_repository/server.ts similarity index 100% rename from client/src/www/app/outline_server_repository/server.ts rename to client/web/app/outline_server_repository/server.ts diff --git a/client/src/www/app/platform.ts b/client/web/app/platform.ts similarity index 100% rename from client/src/www/app/platform.ts rename to client/web/app/platform.ts diff --git a/client/src/www/app/settings.spec.ts b/client/web/app/settings.spec.ts similarity index 100% rename from client/src/www/app/settings.spec.ts rename to client/web/app/settings.spec.ts diff --git a/client/src/www/app/settings.ts b/client/web/app/settings.ts similarity index 100% rename from client/src/www/app/settings.ts rename to client/web/app/settings.ts diff --git a/client/src/www/app/tunnel.ts b/client/web/app/tunnel.ts similarity index 100% rename from client/src/www/app/tunnel.ts rename to client/web/app/tunnel.ts diff --git a/client/src/www/app/updater.ts b/client/web/app/updater.ts similarity index 100% rename from client/src/www/app/updater.ts rename to client/web/app/updater.ts diff --git a/client/src/www/app/url_interceptor.ts b/client/web/app/url_interceptor.ts similarity index 100% rename from client/src/www/app/url_interceptor.ts rename to client/web/app/url_interceptor.ts diff --git a/client/src/www/app/vpn_installer.ts b/client/web/app/vpn_installer.ts similarity index 100% rename from client/src/www/app/vpn_installer.ts rename to client/web/app/vpn_installer.ts diff --git a/client/src/www/assets/brand-logo.png b/client/web/assets/brand-logo.png similarity index 100% rename from client/src/www/assets/brand-logo.png rename to client/web/assets/brand-logo.png diff --git a/client/src/www/assets/circle.png b/client/web/assets/circle.png similarity index 100% rename from client/src/www/assets/circle.png rename to client/web/assets/circle.png diff --git a/client/src/www/assets/icons/about.png b/client/web/assets/icons/about.png similarity index 100% rename from client/src/www/assets/icons/about.png rename to client/web/assets/icons/about.png diff --git a/client/src/www/assets/icons/add.png b/client/web/assets/icons/add.png similarity index 100% rename from client/src/www/assets/icons/add.png rename to client/web/assets/icons/add.png diff --git a/client/src/www/assets/icons/back.png b/client/web/assets/icons/back.png similarity index 100% rename from client/src/www/assets/icons/back.png rename to client/web/assets/icons/back.png diff --git a/client/src/www/assets/icons/change_language.png b/client/web/assets/icons/change_language.png similarity index 100% rename from client/src/www/assets/icons/change_language.png rename to client/web/assets/icons/change_language.png diff --git a/client/src/www/assets/icons/contact.png b/client/web/assets/icons/contact.png similarity index 100% rename from client/src/www/assets/icons/contact.png rename to client/web/assets/icons/contact.png diff --git a/client/src/www/assets/icons/feedback.png b/client/web/assets/icons/feedback.png similarity index 100% rename from client/src/www/assets/icons/feedback.png rename to client/web/assets/icons/feedback.png diff --git a/client/src/www/assets/icons/help.png b/client/web/assets/icons/help.png similarity index 100% rename from client/src/www/assets/icons/help.png rename to client/web/assets/icons/help.png diff --git a/client/src/www/assets/icons/menu.png b/client/web/assets/icons/menu.png similarity index 100% rename from client/src/www/assets/icons/menu.png rename to client/web/assets/icons/menu.png diff --git a/client/src/www/assets/icons/outline.png b/client/web/assets/icons/outline.png similarity index 100% rename from client/src/www/assets/icons/outline.png rename to client/web/assets/icons/outline.png diff --git a/client/src/www/assets/icons/quit.png b/client/web/assets/icons/quit.png similarity index 100% rename from client/src/www/assets/icons/quit.png rename to client/web/assets/icons/quit.png diff --git a/client/src/www/assets/jigsaw-logo.png b/client/web/assets/jigsaw-logo.png similarity index 100% rename from client/src/www/assets/jigsaw-logo.png rename to client/web/assets/jigsaw-logo.png diff --git a/client/src/www/assets/jigsaw-logo.svg b/client/web/assets/jigsaw-logo.svg similarity index 100% rename from client/src/www/assets/jigsaw-logo.svg rename to client/web/assets/jigsaw-logo.svg diff --git a/client/src/www/assets/logo-nav.png b/client/web/assets/logo-nav.png similarity index 100% rename from client/src/www/assets/logo-nav.png rename to client/web/assets/logo-nav.png diff --git a/client/src/www/assets/material_icons.woff2 b/client/web/assets/material_icons.woff2 similarity index 100% rename from client/src/www/assets/material_icons.woff2 rename to client/web/assets/material_icons.woff2 diff --git a/client/src/www/assets/outline-client-logo.png b/client/web/assets/outline-client-logo.png similarity index 100% rename from client/src/www/assets/outline-client-logo.png rename to client/web/assets/outline-client-logo.png diff --git a/client/src/www/assets/outline-client-logo.svg b/client/web/assets/outline-client-logo.svg similarity index 100% rename from client/src/www/assets/outline-client-logo.svg rename to client/web/assets/outline-client-logo.svg diff --git a/client/src/www/assets/privacy-lock.png b/client/web/assets/privacy-lock.png similarity index 100% rename from client/src/www/assets/privacy-lock.png rename to client/web/assets/privacy-lock.png diff --git a/client/src/www/build.action.mjs b/client/web/build.action.mjs similarity index 100% rename from client/src/www/build.action.mjs rename to client/web/build.action.mjs diff --git a/client/src/www/favicon.ico b/client/web/favicon.ico similarity index 100% rename from client/src/www/favicon.ico rename to client/web/favicon.ico diff --git a/client/src/www/get_browser_webpack_config.mjs b/client/web/get_browser_webpack_config.mjs similarity index 100% rename from client/src/www/get_browser_webpack_config.mjs rename to client/web/get_browser_webpack_config.mjs diff --git a/client/src/www/index_cordova.html b/client/web/index_cordova.html similarity index 100% rename from client/src/www/index_cordova.html rename to client/web/index_cordova.html diff --git a/client/src/www/index_electron.html b/client/web/index_electron.html similarity index 100% rename from client/src/www/index_electron.html rename to client/web/index_electron.html diff --git a/client/src/www/karma.conf.js b/client/web/karma.conf.js similarity index 100% rename from client/src/www/karma.conf.js rename to client/web/karma.conf.js diff --git a/client/src/www/messages/af.json b/client/web/messages/af.json similarity index 100% rename from client/src/www/messages/af.json rename to client/web/messages/af.json diff --git a/client/src/www/messages/am.json b/client/web/messages/am.json similarity index 100% rename from client/src/www/messages/am.json rename to client/web/messages/am.json diff --git a/client/src/www/messages/ar.json b/client/web/messages/ar.json similarity index 100% rename from client/src/www/messages/ar.json rename to client/web/messages/ar.json diff --git a/client/src/www/messages/az.json b/client/web/messages/az.json similarity index 100% rename from client/src/www/messages/az.json rename to client/web/messages/az.json diff --git a/client/src/www/messages/bg.json b/client/web/messages/bg.json similarity index 100% rename from client/src/www/messages/bg.json rename to client/web/messages/bg.json diff --git a/client/src/www/messages/bn.json b/client/web/messages/bn.json similarity index 100% rename from client/src/www/messages/bn.json rename to client/web/messages/bn.json diff --git a/client/src/www/messages/bs.json b/client/web/messages/bs.json similarity index 100% rename from client/src/www/messages/bs.json rename to client/web/messages/bs.json diff --git a/client/src/www/messages/ca.json b/client/web/messages/ca.json similarity index 100% rename from client/src/www/messages/ca.json rename to client/web/messages/ca.json diff --git a/client/src/www/messages/cs.json b/client/web/messages/cs.json similarity index 100% rename from client/src/www/messages/cs.json rename to client/web/messages/cs.json diff --git a/client/src/www/messages/da.json b/client/web/messages/da.json similarity index 100% rename from client/src/www/messages/da.json rename to client/web/messages/da.json diff --git a/client/src/www/messages/de.json b/client/web/messages/de.json similarity index 100% rename from client/src/www/messages/de.json rename to client/web/messages/de.json diff --git a/client/src/www/messages/el.json b/client/web/messages/el.json similarity index 100% rename from client/src/www/messages/el.json rename to client/web/messages/el.json diff --git a/client/src/www/messages/en-GB.json b/client/web/messages/en-GB.json similarity index 100% rename from client/src/www/messages/en-GB.json rename to client/web/messages/en-GB.json diff --git a/client/src/www/messages/en.json b/client/web/messages/en.json similarity index 100% rename from client/src/www/messages/en.json rename to client/web/messages/en.json diff --git a/client/src/www/messages/es-419.json b/client/web/messages/es-419.json similarity index 100% rename from client/src/www/messages/es-419.json rename to client/web/messages/es-419.json diff --git a/client/src/www/messages/es.json b/client/web/messages/es.json similarity index 100% rename from client/src/www/messages/es.json rename to client/web/messages/es.json diff --git a/client/src/www/messages/et.json b/client/web/messages/et.json similarity index 100% rename from client/src/www/messages/et.json rename to client/web/messages/et.json diff --git a/client/src/www/messages/fa.json b/client/web/messages/fa.json similarity index 100% rename from client/src/www/messages/fa.json rename to client/web/messages/fa.json diff --git a/client/src/www/messages/fi.json b/client/web/messages/fi.json similarity index 100% rename from client/src/www/messages/fi.json rename to client/web/messages/fi.json diff --git a/client/src/www/messages/fil.json b/client/web/messages/fil.json similarity index 100% rename from client/src/www/messages/fil.json rename to client/web/messages/fil.json diff --git a/client/src/www/messages/fr.json b/client/web/messages/fr.json similarity index 100% rename from client/src/www/messages/fr.json rename to client/web/messages/fr.json diff --git a/client/src/www/messages/he.json b/client/web/messages/he.json similarity index 100% rename from client/src/www/messages/he.json rename to client/web/messages/he.json diff --git a/client/src/www/messages/hi.json b/client/web/messages/hi.json similarity index 100% rename from client/src/www/messages/hi.json rename to client/web/messages/hi.json diff --git a/client/src/www/messages/hr.json b/client/web/messages/hr.json similarity index 100% rename from client/src/www/messages/hr.json rename to client/web/messages/hr.json diff --git a/client/src/www/messages/hu.json b/client/web/messages/hu.json similarity index 100% rename from client/src/www/messages/hu.json rename to client/web/messages/hu.json diff --git a/client/src/www/messages/hy.json b/client/web/messages/hy.json similarity index 100% rename from client/src/www/messages/hy.json rename to client/web/messages/hy.json diff --git a/client/src/www/messages/id.json b/client/web/messages/id.json similarity index 100% rename from client/src/www/messages/id.json rename to client/web/messages/id.json diff --git a/client/src/www/messages/is.json b/client/web/messages/is.json similarity index 100% rename from client/src/www/messages/is.json rename to client/web/messages/is.json diff --git a/client/src/www/messages/it.json b/client/web/messages/it.json similarity index 100% rename from client/src/www/messages/it.json rename to client/web/messages/it.json diff --git a/client/src/www/messages/ja.json b/client/web/messages/ja.json similarity index 100% rename from client/src/www/messages/ja.json rename to client/web/messages/ja.json diff --git a/client/src/www/messages/ka.json b/client/web/messages/ka.json similarity index 100% rename from client/src/www/messages/ka.json rename to client/web/messages/ka.json diff --git a/client/src/www/messages/kk.json b/client/web/messages/kk.json similarity index 100% rename from client/src/www/messages/kk.json rename to client/web/messages/kk.json diff --git a/client/src/www/messages/km.json b/client/web/messages/km.json similarity index 100% rename from client/src/www/messages/km.json rename to client/web/messages/km.json diff --git a/client/src/www/messages/ko.json b/client/web/messages/ko.json similarity index 100% rename from client/src/www/messages/ko.json rename to client/web/messages/ko.json diff --git a/client/src/www/messages/lo.json b/client/web/messages/lo.json similarity index 100% rename from client/src/www/messages/lo.json rename to client/web/messages/lo.json diff --git a/client/src/www/messages/lt.json b/client/web/messages/lt.json similarity index 100% rename from client/src/www/messages/lt.json rename to client/web/messages/lt.json diff --git a/client/src/www/messages/lv.json b/client/web/messages/lv.json similarity index 100% rename from client/src/www/messages/lv.json rename to client/web/messages/lv.json diff --git a/client/src/www/messages/mk.json b/client/web/messages/mk.json similarity index 100% rename from client/src/www/messages/mk.json rename to client/web/messages/mk.json diff --git a/client/src/www/messages/mn.json b/client/web/messages/mn.json similarity index 100% rename from client/src/www/messages/mn.json rename to client/web/messages/mn.json diff --git a/client/src/www/messages/mr.json b/client/web/messages/mr.json similarity index 100% rename from client/src/www/messages/mr.json rename to client/web/messages/mr.json diff --git a/client/src/www/messages/ms.json b/client/web/messages/ms.json similarity index 100% rename from client/src/www/messages/ms.json rename to client/web/messages/ms.json diff --git a/client/src/www/messages/my.json b/client/web/messages/my.json similarity index 100% rename from client/src/www/messages/my.json rename to client/web/messages/my.json diff --git a/client/src/www/messages/ne.json b/client/web/messages/ne.json similarity index 100% rename from client/src/www/messages/ne.json rename to client/web/messages/ne.json diff --git a/client/src/www/messages/nl.json b/client/web/messages/nl.json similarity index 100% rename from client/src/www/messages/nl.json rename to client/web/messages/nl.json diff --git a/client/src/www/messages/no.json b/client/web/messages/no.json similarity index 100% rename from client/src/www/messages/no.json rename to client/web/messages/no.json diff --git a/client/src/www/messages/pl.json b/client/web/messages/pl.json similarity index 100% rename from client/src/www/messages/pl.json rename to client/web/messages/pl.json diff --git a/client/src/www/messages/pt-BR.json b/client/web/messages/pt-BR.json similarity index 100% rename from client/src/www/messages/pt-BR.json rename to client/web/messages/pt-BR.json diff --git a/client/src/www/messages/pt-PT.json b/client/web/messages/pt-PT.json similarity index 100% rename from client/src/www/messages/pt-PT.json rename to client/web/messages/pt-PT.json diff --git a/client/src/www/messages/ro.json b/client/web/messages/ro.json similarity index 100% rename from client/src/www/messages/ro.json rename to client/web/messages/ro.json diff --git a/client/src/www/messages/ru.json b/client/web/messages/ru.json similarity index 100% rename from client/src/www/messages/ru.json rename to client/web/messages/ru.json diff --git a/client/src/www/messages/si.json b/client/web/messages/si.json similarity index 100% rename from client/src/www/messages/si.json rename to client/web/messages/si.json diff --git a/client/src/www/messages/sk.json b/client/web/messages/sk.json similarity index 100% rename from client/src/www/messages/sk.json rename to client/web/messages/sk.json diff --git a/client/src/www/messages/sl.json b/client/web/messages/sl.json similarity index 100% rename from client/src/www/messages/sl.json rename to client/web/messages/sl.json diff --git a/client/src/www/messages/sq.json b/client/web/messages/sq.json similarity index 100% rename from client/src/www/messages/sq.json rename to client/web/messages/sq.json diff --git a/client/src/www/messages/sr-Latn.json b/client/web/messages/sr-Latn.json similarity index 100% rename from client/src/www/messages/sr-Latn.json rename to client/web/messages/sr-Latn.json diff --git a/client/src/www/messages/sr.json b/client/web/messages/sr.json similarity index 100% rename from client/src/www/messages/sr.json rename to client/web/messages/sr.json diff --git a/client/src/www/messages/sv.json b/client/web/messages/sv.json similarity index 100% rename from client/src/www/messages/sv.json rename to client/web/messages/sv.json diff --git a/client/src/www/messages/sw.json b/client/web/messages/sw.json similarity index 100% rename from client/src/www/messages/sw.json rename to client/web/messages/sw.json diff --git a/client/src/www/messages/ta.json b/client/web/messages/ta.json similarity index 100% rename from client/src/www/messages/ta.json rename to client/web/messages/ta.json diff --git a/client/src/www/messages/th.json b/client/web/messages/th.json similarity index 100% rename from client/src/www/messages/th.json rename to client/web/messages/th.json diff --git a/client/src/www/messages/tr.json b/client/web/messages/tr.json similarity index 100% rename from client/src/www/messages/tr.json rename to client/web/messages/tr.json diff --git a/client/src/www/messages/uk.json b/client/web/messages/uk.json similarity index 100% rename from client/src/www/messages/uk.json rename to client/web/messages/uk.json diff --git a/client/src/www/messages/ur.json b/client/web/messages/ur.json similarity index 100% rename from client/src/www/messages/ur.json rename to client/web/messages/ur.json diff --git a/client/src/www/messages/vi.json b/client/web/messages/vi.json similarity index 100% rename from client/src/www/messages/vi.json rename to client/web/messages/vi.json diff --git a/client/src/www/messages/zh-CN.json b/client/web/messages/zh-CN.json similarity index 100% rename from client/src/www/messages/zh-CN.json rename to client/web/messages/zh-CN.json diff --git a/client/src/www/messages/zh-TW.json b/client/web/messages/zh-TW.json similarity index 100% rename from client/src/www/messages/zh-TW.json rename to client/web/messages/zh-TW.json diff --git a/client/src/www/model/errors.ts b/client/web/model/errors.ts similarity index 100% rename from client/src/www/model/errors.ts rename to client/web/model/errors.ts diff --git a/client/src/www/model/events.spec.ts b/client/web/model/events.spec.ts similarity index 100% rename from client/src/www/model/events.spec.ts rename to client/web/model/events.spec.ts diff --git a/client/src/www/model/events.ts b/client/web/model/events.ts similarity index 100% rename from client/src/www/model/events.ts rename to client/web/model/events.ts diff --git a/client/src/www/model/server.ts b/client/web/model/server.ts similarity index 100% rename from client/src/www/model/server.ts rename to client/web/model/server.ts diff --git a/client/src/www/shared/error_reporter.ts b/client/web/shared/error_reporter.ts similarity index 100% rename from client/src/www/shared/error_reporter.ts rename to client/web/shared/error_reporter.ts diff --git a/client/src/www/start.action.mjs b/client/web/start.action.mjs similarity index 100% rename from client/src/www/start.action.mjs rename to client/web/start.action.mjs diff --git a/client/src/www/storybook.action.mjs b/client/web/storybook.action.mjs similarity index 100% rename from client/src/www/storybook.action.mjs rename to client/web/storybook.action.mjs diff --git a/client/src/www/style.css b/client/web/style.css similarity index 100% rename from client/src/www/style.css rename to client/web/style.css diff --git a/client/src/www/test.action.mjs b/client/web/test.action.mjs similarity index 100% rename from client/src/www/test.action.mjs rename to client/web/test.action.mjs diff --git a/client/src/www/testing/localize.ts b/client/web/testing/localize.ts similarity index 100% rename from client/src/www/testing/localize.ts rename to client/web/testing/localize.ts diff --git a/client/src/www/tsconfig.json b/client/web/tsconfig.json similarity index 100% rename from client/src/www/tsconfig.json rename to client/web/tsconfig.json diff --git a/client/src/www/types/clipboard.d.ts b/client/web/types/clipboard.d.ts similarity index 100% rename from client/src/www/types/clipboard.d.ts rename to client/web/types/clipboard.d.ts diff --git a/client/src/www/types/shims.d.ts b/client/web/types/shims.d.ts similarity index 100% rename from client/src/www/types/shims.d.ts rename to client/web/types/shims.d.ts diff --git a/client/src/www/types/webintents.d.ts b/client/web/types/webintents.d.ts similarity index 100% rename from client/src/www/types/webintents.d.ts rename to client/web/types/webintents.d.ts diff --git a/client/src/www/ui_components/about-view.js b/client/web/ui_components/about-view.js similarity index 100% rename from client/src/www/ui_components/about-view.js rename to client/web/ui_components/about-view.js diff --git a/client/src/www/ui_components/add-server-view.js b/client/web/ui_components/add-server-view.js similarity index 100% rename from client/src/www/ui_components/add-server-view.js rename to client/web/ui_components/add-server-view.js diff --git a/client/src/www/ui_components/app-root.js b/client/web/ui_components/app-root.js similarity index 99% rename from client/src/www/ui_components/app-root.js rename to client/web/ui_components/app-root.js index dae3997229..ea1d1b4310 100644 --- a/client/src/www/ui_components/app-root.js +++ b/client/web/ui_components/app-root.js @@ -43,8 +43,8 @@ import './language-view.js'; import './licenses-view.js'; import './outline-icons.js'; import './privacy-view.js'; -import '../views/contact_view'; -import '../views/servers_view'; +import '../views/contact_view/index.js'; +import '../views/servers_view/index.js'; import './server-rename-dialog.js'; import './user-comms-dialog.js'; diff --git a/client/src/www/ui_components/feedback-view.js b/client/web/ui_components/feedback-view.js similarity index 100% rename from client/src/www/ui_components/feedback-view.js rename to client/web/ui_components/feedback-view.js diff --git a/client/src/www/ui_components/language-view.js b/client/web/ui_components/language-view.js similarity index 100% rename from client/src/www/ui_components/language-view.js rename to client/web/ui_components/language-view.js diff --git a/client/src/www/ui_components/licenses-view.js b/client/web/ui_components/licenses-view.js similarity index 100% rename from client/src/www/ui_components/licenses-view.js rename to client/web/ui_components/licenses-view.js diff --git a/client/src/www/ui_components/licenses/README.md b/client/web/ui_components/licenses/README.md similarity index 100% rename from client/src/www/ui_components/licenses/README.md rename to client/web/ui_components/licenses/README.md diff --git a/client/src/www/ui_components/licenses/licenses.txt b/client/web/ui_components/licenses/licenses.txt similarity index 100% rename from client/src/www/ui_components/licenses/licenses.txt rename to client/web/ui_components/licenses/licenses.txt diff --git a/client/src/www/ui_components/licenses/third_party.sh b/client/web/ui_components/licenses/third_party.sh similarity index 100% rename from client/src/www/ui_components/licenses/third_party.sh rename to client/web/ui_components/licenses/third_party.sh diff --git a/client/src/www/ui_components/outline-icons.js b/client/web/ui_components/outline-icons.js similarity index 100% rename from client/src/www/ui_components/outline-icons.js rename to client/web/ui_components/outline-icons.js diff --git a/client/src/www/ui_components/privacy-view.js b/client/web/ui_components/privacy-view.js similarity index 100% rename from client/src/www/ui_components/privacy-view.js rename to client/web/ui_components/privacy-view.js diff --git a/client/src/www/ui_components/server-rename-dialog.js b/client/web/ui_components/server-rename-dialog.js similarity index 100% rename from client/src/www/ui_components/server-rename-dialog.js rename to client/web/ui_components/server-rename-dialog.js diff --git a/client/src/www/ui_components/user-comms-dialog.js b/client/web/ui_components/user-comms-dialog.js similarity index 100% rename from client/src/www/ui_components/user-comms-dialog.js rename to client/web/ui_components/user-comms-dialog.js diff --git a/client/src/www/views/contact_view/app_type.ts b/client/web/views/contact_view/app_type.ts similarity index 100% rename from client/src/www/views/contact_view/app_type.ts rename to client/web/views/contact_view/app_type.ts diff --git a/client/src/www/views/contact_view/index.spec.ts b/client/web/views/contact_view/index.spec.ts similarity index 100% rename from client/src/www/views/contact_view/index.spec.ts rename to client/web/views/contact_view/index.spec.ts diff --git a/client/src/www/views/contact_view/index.ts b/client/web/views/contact_view/index.ts similarity index 100% rename from client/src/www/views/contact_view/index.ts rename to client/web/views/contact_view/index.ts diff --git a/client/src/www/views/contact_view/issue_type.ts b/client/web/views/contact_view/issue_type.ts similarity index 100% rename from client/src/www/views/contact_view/issue_type.ts rename to client/web/views/contact_view/issue_type.ts diff --git a/client/src/www/views/contact_view/stories.ts b/client/web/views/contact_view/stories.ts similarity index 100% rename from client/src/www/views/contact_view/stories.ts rename to client/web/views/contact_view/stories.ts diff --git a/client/src/www/views/contact_view/support_form/index.spec.ts b/client/web/views/contact_view/support_form/index.spec.ts similarity index 100% rename from client/src/www/views/contact_view/support_form/index.spec.ts rename to client/web/views/contact_view/support_form/index.spec.ts diff --git a/client/src/www/views/contact_view/support_form/index.ts b/client/web/views/contact_view/support_form/index.ts similarity index 100% rename from client/src/www/views/contact_view/support_form/index.ts rename to client/web/views/contact_view/support_form/index.ts diff --git a/client/src/www/views/contact_view/support_form/stories.ts b/client/web/views/contact_view/support_form/stories.ts similarity index 100% rename from client/src/www/views/contact_view/support_form/stories.ts rename to client/web/views/contact_view/support_form/stories.ts diff --git a/client/src/www/views/servers_view/index.ts b/client/web/views/servers_view/index.ts similarity index 100% rename from client/src/www/views/servers_view/index.ts rename to client/web/views/servers_view/index.ts diff --git a/client/src/www/views/servers_view/server_connection_indicator/index.ts b/client/web/views/servers_view/server_connection_indicator/index.ts similarity index 100% rename from client/src/www/views/servers_view/server_connection_indicator/index.ts rename to client/web/views/servers_view/server_connection_indicator/index.ts diff --git a/client/src/www/views/servers_view/server_connection_indicator/stories.ts b/client/web/views/servers_view/server_connection_indicator/stories.ts similarity index 100% rename from client/src/www/views/servers_view/server_connection_indicator/stories.ts rename to client/web/views/servers_view/server_connection_indicator/stories.ts diff --git a/client/src/www/views/servers_view/server_list/index.ts b/client/web/views/servers_view/server_list/index.ts similarity index 100% rename from client/src/www/views/servers_view/server_list/index.ts rename to client/web/views/servers_view/server_list/index.ts diff --git a/client/src/www/views/servers_view/server_list/stories.ts b/client/web/views/servers_view/server_list/stories.ts similarity index 100% rename from client/src/www/views/servers_view/server_list/stories.ts rename to client/web/views/servers_view/server_list/stories.ts diff --git a/client/src/www/views/servers_view/server_list_item/index.ts b/client/web/views/servers_view/server_list_item/index.ts similarity index 100% rename from client/src/www/views/servers_view/server_list_item/index.ts rename to client/web/views/servers_view/server_list_item/index.ts diff --git a/client/src/www/views/servers_view/server_list_item/server_card/index.ts b/client/web/views/servers_view/server_list_item/server_card/index.ts similarity index 100% rename from client/src/www/views/servers_view/server_list_item/server_card/index.ts rename to client/web/views/servers_view/server_list_item/server_card/index.ts diff --git a/client/src/www/views/servers_view/server_list_item/server_card/stories.ts b/client/web/views/servers_view/server_list_item/server_card/stories.ts similarity index 100% rename from client/src/www/views/servers_view/server_list_item/server_card/stories.ts rename to client/web/views/servers_view/server_list_item/server_card/stories.ts diff --git a/client/src/www/webpack_base.mjs b/client/web/webpack_base.mjs similarity index 100% rename from client/src/www/webpack_base.mjs rename to client/web/webpack_base.mjs diff --git a/client/src/www/webpack_cordova.mjs b/client/web/webpack_cordova.mjs similarity index 100% rename from client/src/www/webpack_cordova.mjs rename to client/web/webpack_cordova.mjs diff --git a/client/src/www/webpack_css_rtl_loader.cjs b/client/web/webpack_css_rtl_loader.cjs similarity index 100% rename from client/src/www/webpack_css_rtl_loader.cjs rename to client/web/webpack_css_rtl_loader.cjs diff --git a/client/src/www/webpack_electron.mjs b/client/web/webpack_electron.mjs similarity index 100% rename from client/src/www/webpack_electron.mjs rename to client/web/webpack_electron.mjs diff --git a/client/src/www/webpack_test.mjs b/client/web/webpack_test.mjs similarity index 100% rename from client/src/www/webpack_test.mjs rename to client/web/webpack_test.mjs From 3e42a72d88949f6aabb92fa9956bb7513feeafad Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:32:31 -0400 Subject: [PATCH 2/6] shotgun approach --- .../workflows/build_and_test_debug_client.yml | 32 +++++++++---------- Taskfile.yml | 2 +- client/README.md | 6 ++-- .../ios/Outline.xcodeproj/project.pbxproj | 2 +- .../macos/Outline.xcodeproj/project.pbxproj | 2 +- client/cordova/build.action.mjs | 18 +++++------ client/cordova/import_messages.action.mjs | 2 +- client/cordova/setup.action.mjs | 10 +++--- client/cordova/test.action.mjs | 4 +-- client/electron/build.action.mjs | 6 ++-- client/electron/build_main.action.mjs | 8 ++--- client/electron/connectivity.ts | 4 +-- client/electron/go_vpn_tunnel.ts | 8 ++--- client/electron/index.ts | 6 ++-- client/electron/routing_service.ts | 6 ++-- client/electron/start.action.mjs | 8 ++--- client/electron/tsconfig.json | 2 +- client/electron/tunnel_store.ts | 2 +- client/electron/vpn_tunnel.ts | 2 +- client/tun2socks/build.action.mjs | 2 +- .../outline/connectivity/connectivity.go | 4 +-- client/tun2socks/outline/electron/main.go | 8 ++--- .../tun2socks/outline/shadowsocks/client.go | 6 ++-- client/tun2socks/outline/tun2socks/tunnel.go | 4 +-- .../outline/tun2socks/tunnel_android.go | 4 +-- .../outline/tun2socks/tunnel_darwin.go | 2 +- client/web/app/electron_main.ts | 2 +- client/web/build.action.mjs | 2 +- client/web/start.action.mjs | 6 ++-- client/web/storybook.action.mjs | 2 +- client/web/test.action.mjs | 2 +- client/web/webpack_cordova.mjs | 2 +- package-lock.json | 6 ++-- 33 files changed, 91 insertions(+), 91 deletions(-) diff --git a/.github/workflows/build_and_test_debug_client.yml b/.github/workflows/build_and_test_debug_client.yml index f7c5ce58f0..0b0f6a1b1d 100644 --- a/.github/workflows/build_and_test_debug_client.yml +++ b/.github/workflows/build_and_test_debug_client.yml @@ -37,14 +37,14 @@ jobs: run: npm run action lint - name: Build Web App - run: npm run action client/src/www/build + run: npm run action client/www/build - name: Test Web App - run: npm run action client/src/www/test + run: npm run action client/www/test - uses: codecov/codecov-action@v3 with: - files: ./client/src/output/coverage/www/coverage-final.json + files: ./client/output/coverage/www/coverage-final.json flags: unittests, www linux_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 client/src/tun2socks/build macos + run: npm run action client/tun2socks/build macos - name: Test OutlineAppleLib - run: npm run action client/src/cordova/test macos + run: npm run action client/cordova/test macos - name: Build MacOS Client - run: npm run action client/src/cordova/build macos + run: npm run action client/cordova/build macos - uses: codecov/codecov-action@v3 with: xcode: true - xcode_archive_path: ./client/src/output/coverage/apple/macos/TestResult.xcresult + xcode_archive_path: ./client/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 client/src/tun2socks/build ios + run: npm run action client/tun2socks/build ios - name: Test OutlineAppleLib - run: npm run action client/src/cordova/test ios + run: npm run action client/cordova/test ios - name: Build iOS Client - run: npm run action client/src/cordova/build ios + run: npm run action client/cordova/build ios - uses: codecov/codecov-action@v3 with: xcode: true - xcode_archive_path: ./client/src/output/coverage/apple/ios/TestResult.xcresult + xcode_archive_path: ./client/output/coverage/apple/ios/TestResult.xcresult flags: unittests, apple, ios maccatalyst_debug_build: @@ -216,18 +216,18 @@ jobs: go-version-file: '${{ github.workspace }}/go.mod' - name: Build Tun2Socks (required for Test OutlineAppleLib) - run: npm run action client/src/tun2socks/build maccatalyst + run: npm run action client/tun2socks/build maccatalyst - name: Test OutlineAppleLib - run: npm run action client/src/cordova/test maccatalyst + run: npm run action client/cordova/test maccatalyst - name: Build Mac Catalyst Client - run: npm run action client/src/cordova/build maccatalyst + run: npm run action client/cordova/build maccatalyst - uses: codecov/codecov-action@v3 with: xcode: true - xcode_archive_path: ./client/src/output/coverage/apple/maccatalyst/TestResult.xcresult + xcode_archive_path: ./client/output/coverage/apple/maccatalyst/TestResult.xcresult flags: unittests, apple, maccatalyst android_debug_build: @@ -263,4 +263,4 @@ jobs: run: bash ./client/tools/build/setup_linux_android.sh - name: Build Android Client - run: npm run action client/src/cordova/build android -- --verbose + run: npm run action client/cordova/build android -- --verbose diff --git a/Taskfile.yml b/Taskfile.yml index d9e9815e45..fbb9164b39 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -5,7 +5,7 @@ set: [pipefail] run: when_changed includes: - client:tun2socks: ./client/src/tun2socks/Taskfile.yml + client:tun2socks: ./client/tun2socks/Taskfile.yml tasks: clean: diff --git a/client/README.md b/client/README.md index d5c5b148c7..a7659ac6c4 100644 --- a/client/README.md +++ b/client/README.md @@ -27,7 +27,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 client/src/www/start +npm run action client/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. @@ -35,7 +35,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 client/src/www/storybook +npm run action client/www/storybook ``` > [!NOTE] @@ -55,7 +55,7 @@ npm run action client/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 client/src/cordova/setup macos -- --buildMode=release --versionName= +SENTRY_DSN= npm run action client/cordova/setup macos -- --buildMode=release --versionName= ``` ## Life of a Packet diff --git a/client/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj b/client/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj index cdea364310..f151498647 100755 --- a/client/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj +++ b/client/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj @@ -255,7 +255,7 @@ EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../../www; sourceTree = ""; }; EB87FDF41871DAF40020F90C /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = ../../config.xml; sourceTree = ""; }; ED33DF2A687741AEAF9F8254 /* Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = ""; }; - F63DC2162970AFE600D92E0A /* OutlineAppleLib */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = OutlineAppleLib; path = ../../src/cordova/apple/OutlineAppleLib; sourceTree = ""; }; + F63DC2162970AFE600D92E0A /* OutlineAppleLib */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = OutlineAppleLib; path = ..//cordova/apple/OutlineAppleLib; sourceTree = ""; }; F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = Outline/config.xml; sourceTree = ""; }; FC55AB411F4F960A0056F12C /* VpnExtension-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "VpnExtension-Info.plist"; path = "Outline/VpnExtension-Info.plist"; sourceTree = SOURCE_ROOT; }; FC8C310A1FAA814A004262BE /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; diff --git a/client/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj b/client/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj index 985e1bee13..f6de7ad9ac 100644 --- a/client/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj +++ b/client/cordova/apple/xcode/macos/Outline.xcodeproj/project.pbxproj @@ -118,7 +118,7 @@ 70DAA8D91908785C00AF3749 /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = ""; }; A508014170A1492DB0D800B3 /* Outline-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = "Outline-Bridging-Header.h"; sourceTree = ""; }; AA09EA80E0C54DFFB24A1810 /* OutlinePlugin.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = OutlinePlugin.swift; path = "cordova-plugin-outline/OutlinePlugin.swift"; sourceTree = ""; }; - F63DC21E2970B23B00D92E0A /* OutlineAppleLib */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = OutlineAppleLib; path = ../../src/cordova/apple/OutlineAppleLib; sourceTree = ""; }; + F63DC21E2970B23B00D92E0A /* OutlineAppleLib */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = OutlineAppleLib; path = ..//cordova/apple/OutlineAppleLib; sourceTree = ""; }; FC0799E62037532900A1C822 /* OutlineLauncher.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OutlineLauncher.app; sourceTree = BUILT_PRODUCTS_DIR; }; FC0799E82037532A00A1C822 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; FC0799EF2037532A00A1C822 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; diff --git a/client/cordova/build.action.mjs b/client/cordova/build.action.mjs index 9a39c6f0f1..d0b29537a9 100644 --- a/client/cordova/build.action.mjs +++ b/client/cordova/build.action.mjs @@ -19,10 +19,10 @@ import fs from 'node:fs/promises'; import cordovaLib from 'cordova-lib'; const {cordova} = cordovaLib; -import {runAction} from '../../src/build/run_action.mjs'; -import {getRootDir} from '../../src/build/get_root_dir.mjs'; -import {spawnStream} from '../../src/build/spawn_stream.mjs'; -import {downloadHttpsFile} from '../../src/build/download_file.mjs'; +import {runAction} from '..//src/build/run_action.mjs'; +import {getRootDir} from '..//src/build/get_root_dir.mjs'; +import {spawnStream} from '..//src/build/spawn_stream.mjs'; +import {downloadHttpsFile} from '..//src/build/download_file.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; @@ -34,9 +34,9 @@ import {getBuildParameters} from '../build/get_build_parameters.mjs'; export async function main(...parameters) { const {platform, buildMode, verbose} = getBuildParameters(parameters); - await runAction('client/src/www/build', ...parameters); - await runAction('client/src/tun2socks/build', ...parameters); - await runAction('client/src/cordova/setup', ...parameters); + await runAction('client/www/build', ...parameters); + await runAction('client/tun2socks/build', ...parameters); + await runAction('client/cordova/setup', ...parameters); if (verbose) { cordova.on('verbose', message => console.debug(`[cordova:verbose] ${message}`)); @@ -132,7 +132,7 @@ async function androidDebug(verbose) { argv: [ // Path is relative to /platforms/android/. // See https://docs.gradle.org/current/userguide/composite_builds.html#command_line_composite - '--gradleArg=--include-build=../../src/cordova/android/OutlineAndroidLib', + '--gradleArg=--include-build=..//cordova/android/OutlineAndroidLib', verbose ? '--gradleArg=--info' : '--gradleArg=--quiet', ], }, @@ -156,7 +156,7 @@ async function androidRelease(ksPassword, ksContents, javaPath, verbose) { argv: [ // Path is relative to /platforms/android/. // See https://docs.gradle.org/current/userguide/composite_builds.html#command_line_composite - '--gradleArg=--include-build=../../src/cordova/android/OutlineAndroidLib', + '--gradleArg=--include-build=..//cordova/android/OutlineAndroidLib', verbose ? '--gradleArg=--info' : '--gradleArg=--quiet', `--keystore=${keystorePath}`, '--alias=privatekey', diff --git a/client/cordova/import_messages.action.mjs b/client/cordova/import_messages.action.mjs index d6ff6c46a3..461000f25f 100644 --- a/client/cordova/import_messages.action.mjs +++ b/client/cordova/import_messages.action.mjs @@ -16,7 +16,7 @@ import chalk from 'chalk'; import minimist from 'minimist'; import path from 'path'; import url from 'url'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; import {readFile, readdir, mkdir} from 'fs/promises'; import * as ANDROID_IMPORTER from './android/import_messages.mjs'; import * as IOS_IMPORTER from './apple/import_messages.mjs'; diff --git a/client/cordova/setup.action.mjs b/client/cordova/setup.action.mjs index 2bf5af0278..889959a358 100644 --- a/client/cordova/setup.action.mjs +++ b/client/cordova/setup.action.mjs @@ -21,9 +21,9 @@ import replace from 'replace-in-file'; import cordovaLib from 'cordova-lib'; const {cordova} = cordovaLib; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; -import {runAction} from '../../../src/build/run_action.mjs'; -import {spawnStream} from '../../../src/build/spawn_stream.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; +import {runAction} from '../..//src/build/run_action.mjs'; +import {spawnStream} from '../..//src/build/spawn_stream.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; import chalk from 'chalk'; @@ -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('client/src/www/build', ...parameters); - await runAction('client/src/tun2socks/build', ...parameters); + await runAction('client/www/build', ...parameters); + await runAction('client/tun2socks/build', ...parameters); await rmfr(path.resolve(getRootDir(), 'platforms')); await rmfr(path.resolve(getRootDir(), 'plugins')); diff --git a/client/cordova/test.action.mjs b/client/cordova/test.action.mjs index 8b5fdede8f..c0acf56d90 100644 --- a/client/cordova/test.action.mjs +++ b/client/cordova/test.action.mjs @@ -19,8 +19,8 @@ import path from 'path'; import fs from 'fs/promises'; import rmfr from 'rmfr'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; -import {spawnStream} from '../../../src/build/spawn_stream.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; +import {spawnStream} from '../..//src/build/spawn_stream.mjs'; const APPLE_ROOT = path.join(getRootDir(), 'client', 'src', 'cordova', 'apple'); const APPLE_LIBRARY_NAME = 'OutlineAppleLib'; diff --git a/client/electron/build.action.mjs b/client/electron/build.action.mjs index 88502d1dad..0ed0d1ad37 100644 --- a/client/electron/build.action.mjs +++ b/client/electron/build.action.mjs @@ -14,7 +14,7 @@ import minimist from 'minimist'; import {runAction} from '../build/run_action.mjs'; -import {getBuildParameters} from '../../client/src/build/get_build_parameters.mjs'; +import {getBuildParameters} from '../../client/build/get_build_parameters.mjs'; import electron, {Platform} from 'electron-builder'; import copydir from 'copy-dir'; import fs from 'fs/promises'; @@ -48,8 +48,8 @@ export async function main(...parameters) { ); } - await runAction('client/src/www/build', ...parameters); - await runAction('client/src/tun2socks/build', ...parameters); + await runAction('client/www/build', ...parameters); + await runAction('client/tun2socks/build', ...parameters); await runAction('src/electron/build_main', ...parameters); await copydir.sync( diff --git a/client/electron/build_main.action.mjs b/client/electron/build_main.action.mjs index 2506acdf39..d5f616880c 100644 --- a/client/electron/build_main.action.mjs +++ b/client/electron/build_main.action.mjs @@ -13,9 +13,9 @@ // limitations under the License. import {runAction} from '../build/run_action.mjs'; -import {getBuildParameters} from '../../client/src/build/get_build_parameters.mjs'; -import {getWebpackBuildMode} from '../../client/src/build/get_webpack_build_mode.mjs'; -import {runWebpack} from '../../client/src/build/run_webpack.mjs'; +import {getBuildParameters} from '../../client/build/get_build_parameters.mjs'; +import {getWebpackBuildMode} from '../../client/build/get_webpack_build_mode.mjs'; +import {runWebpack} from '../../client/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('client/src/www/build', ...parameters); + await runAction('client/www/build', ...parameters); // TODO(daniellacosse): separate building the preload script out into its own separate step await runWebpack( diff --git a/client/electron/connectivity.ts b/client/electron/connectivity.ts index e1b8bfa8a4..283a56b99d 100644 --- a/client/electron/connectivity.ts +++ b/client/electron/connectivity.ts @@ -14,8 +14,8 @@ import * as dns from 'dns'; -import {timeoutPromise} from '../../client/src/infrastructure/timeout_promise'; -import * as errors from '../../client/src/www/model/errors'; +import {timeoutPromise} from '../../client/infrastructure/timeout_promise'; +import * as errors from '../../client/www/model/errors'; const DNS_LOOKUP_TIMEOUT_MS = 10000; diff --git a/client/electron/go_vpn_tunnel.ts b/client/electron/go_vpn_tunnel.ts index e808b8102a..eec101d08f 100755 --- a/client/electron/go_vpn_tunnel.ts +++ b/client/electron/go_vpn_tunnel.ts @@ -15,10 +15,10 @@ import {powerMonitor} from 'electron'; import {platform} from 'os'; -import {pathToEmbeddedBinary} from '../../client/src/infrastructure/electron/app_paths'; -import {ShadowsocksSessionConfig} from '../../client/src/www/app/tunnel'; -import {TunnelStatus} from '../../client/src/www/app/tunnel'; -import {ErrorCode, fromErrorCode, UnexpectedPluginError} from '../../client/src/www/model/errors'; +import {pathToEmbeddedBinary} from '../../client/infrastructure/electron/app_paths'; +import {ShadowsocksSessionConfig} from '../../client/www/app/tunnel'; +import {TunnelStatus} from '../../client/www/app/tunnel'; +import {ErrorCode, fromErrorCode, UnexpectedPluginError} from '../../client/www/model/errors'; import {ChildProcessHelper, ProcessTerminatedExitCodeError, ProcessTerminatedSignalError} from './process'; import {RoutingDaemon} from './routing_service'; diff --git a/client/electron/index.ts b/client/electron/index.ts index f0afcd1990..dab99993af 100644 --- a/client/electron/index.ts +++ b/client/electron/index.ts @@ -23,10 +23,10 @@ import * as process from 'process'; import * as url from 'url'; import autoLaunch = require('auto-launch'); // tslint:disable-line -import * as errors from '../../client/src/www/model/errors'; +import * as errors from '../../client/www/model/errors'; -import {ShadowsocksSessionConfig} from '../../client/src/www/app/tunnel'; -import {TunnelStatus} from '../../client/src/www/app/tunnel'; +import {ShadowsocksSessionConfig} from '../../client/www/app/tunnel'; +import {TunnelStatus} from '../../client/www/app/tunnel'; import {GoVpnTunnel} from './go_vpn_tunnel'; import {installRoutingServices, RoutingDaemon} from './routing_service'; import {TunnelStore, SerializableTunnel} from './tunnel_store'; diff --git a/client/electron/routing_service.ts b/client/electron/routing_service.ts index a2b3612eb8..ead1b74234 100755 --- a/client/electron/routing_service.ts +++ b/client/electron/routing_service.ts @@ -19,9 +19,9 @@ import {platform, userInfo} from 'os'; import * as path from 'path'; import * as sudo from 'sudo-prompt'; -import {getAppPath} from '../../client/src/infrastructure/electron/app_paths'; -import {TunnelStatus} from '../../client/src/www/app/tunnel'; -import {ErrorCode, SystemConfigurationException} from '../../client/src/www/model/errors'; +import {getAppPath} from '../../client/infrastructure/electron/app_paths'; +import {TunnelStatus} from '../../client/www/app/tunnel'; +import {ErrorCode, SystemConfigurationException} from '../../client/www/model/errors'; const isLinux = platform() === 'linux'; const isWindows = platform() === 'win32'; diff --git a/client/electron/start.action.mjs b/client/electron/start.action.mjs index 9ef335799d..202277e97d 100644 --- a/client/electron/start.action.mjs +++ b/client/electron/start.action.mjs @@ -15,10 +15,10 @@ import url from 'url'; import electron from 'electron'; -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'; +import {runAction} from '../../client/build/run_action.mjs'; +import {getBuildParameters} from '../../client/build/get_build_parameters.mjs'; +import {getRootDir} from '../../client/build/get_root_dir.mjs'; +import {spawnStream} from '../../client/build/spawn_stream.mjs'; /** * @description Builds and starts the electron application. diff --git a/client/electron/tsconfig.json b/client/electron/tsconfig.json index 89375e09b8..250734fd0d 100644 --- a/client/electron/tsconfig.json +++ b/client/electron/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../client/src/www/tsconfig.json", + "extends": "../../client/www/tsconfig.json", "compilerOptions": { "outDir": "../../build/electron" } diff --git a/client/electron/tunnel_store.ts b/client/electron/tunnel_store.ts index 44743c6efc..7c0b3b9f86 100755 --- a/client/electron/tunnel_store.ts +++ b/client/electron/tunnel_store.ts @@ -15,7 +15,7 @@ import * as fs from 'fs'; import * as path from 'path'; -import {ShadowsocksSessionConfig} from '../../client/src/www/app/tunnel'; +import {ShadowsocksSessionConfig} from '../../client/www/app/tunnel'; // Format to store a tunnel configuration. export interface SerializableTunnel { diff --git a/client/electron/vpn_tunnel.ts b/client/electron/vpn_tunnel.ts index 12cca0981d..fe096687b0 100755 --- a/client/electron/vpn_tunnel.ts +++ b/client/electron/vpn_tunnel.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import {TunnelStatus} from '../../client/src/www/app/tunnel'; +import {TunnelStatus} from '../../client/www/app/tunnel'; // Represents a VPN tunnel to a proxy server. export interface VpnTunnel { diff --git a/client/tun2socks/build.action.mjs b/client/tun2socks/build.action.mjs index e3cf2918ff..c0fe2a36c4 100644 --- a/client/tun2socks/build.action.mjs +++ b/client/tun2socks/build.action.mjs @@ -13,7 +13,7 @@ // limitations under the License. import url from 'url'; -import {spawnStream} from '../../../src/build/spawn_stream.mjs'; +import {spawnStream} from '../..//src/build/spawn_stream.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; /** diff --git a/client/tun2socks/outline/connectivity/connectivity.go b/client/tun2socks/outline/connectivity/connectivity.go index b6e9175bec..0114c328e0 100644 --- a/client/tun2socks/outline/connectivity/connectivity.go +++ b/client/tun2socks/outline/connectivity/connectivity.go @@ -21,8 +21,8 @@ import ( "net/http" "time" - "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-apps/client/tun2socks/outline" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/neterrors" "github.com/Jigsaw-Code/outline-sdk/transport" ) diff --git a/client/tun2socks/outline/electron/main.go b/client/tun2socks/outline/electron/main.go index e2864c46fc..a77c8f920f 100644 --- a/client/tun2socks/outline/electron/main.go +++ b/client/tun2socks/outline/electron/main.go @@ -24,10 +24,10 @@ import ( "syscall" "time" - "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/Jigsaw-Code/outline-apps/client/tun2socks/outline/internal/utf8" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/neterrors" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/shadowsocks" + "github.com/Jigsaw-Code/outline-apps/client/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/client/tun2socks/outline/shadowsocks/client.go b/client/tun2socks/outline/shadowsocks/client.go index bacbc2c82b..6437bb0b47 100644 --- a/client/tun2socks/outline/shadowsocks/client.go +++ b/client/tun2socks/outline/shadowsocks/client.go @@ -25,9 +25,9 @@ import ( "strconv" "time" - "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-apps/client/tun2socks/outline" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/connectivity" + "github.com/Jigsaw-Code/outline-apps/client/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/client/tun2socks/outline/tun2socks/tunnel.go b/client/tun2socks/outline/tun2socks/tunnel.go index 17fc0d522b..b169f977b0 100644 --- a/client/tun2socks/outline/tun2socks/tunnel.go +++ b/client/tun2socks/outline/tun2socks/tunnel.go @@ -25,8 +25,8 @@ import ( "github.com/Jigsaw-Code/outline-sdk/transport" - "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/connectivity" - "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/tunnel" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/connectivity" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/tunnel" ) // Tunnel represents a tunnel from a TUN device to a server. diff --git a/client/tun2socks/outline/tun2socks/tunnel_android.go b/client/tun2socks/outline/tun2socks/tunnel_android.go index f1ede839f4..50fbf38a80 100644 --- a/client/tun2socks/outline/tun2socks/tunnel_android.go +++ b/client/tun2socks/outline/tun2socks/tunnel_android.go @@ -17,8 +17,8 @@ package tun2socks import ( "runtime/debug" - "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/shadowsocks" - "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/tunnel" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/shadowsocks" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/tunnel" "github.com/eycorsican/go-tun2socks/common/log" ) diff --git a/client/tun2socks/outline/tun2socks/tunnel_darwin.go b/client/tun2socks/outline/tun2socks/tunnel_darwin.go index a0ab3b3cad..8ffd7dfbb0 100644 --- a/client/tun2socks/outline/tun2socks/tunnel_darwin.go +++ b/client/tun2socks/outline/tun2socks/tunnel_darwin.go @@ -20,7 +20,7 @@ import ( "runtime/debug" "time" - "github.com/Jigsaw-Code/outline-apps/client/src/tun2socks/outline/shadowsocks" + "github.com/Jigsaw-Code/outline-apps/client/tun2socks/outline/shadowsocks" ) // TunWriter is an interface that allows for outputting packets to the TUN (VPN). diff --git a/client/web/app/electron_main.ts b/client/web/app/electron_main.ts index 87dc973de5..9baeacd8dd 100644 --- a/client/web/app/electron_main.ts +++ b/client/web/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/client/web/build.action.mjs b/client/web/build.action.mjs index 6daf6277e1..0083ef8ec2 100644 --- a/client/web/build.action.mjs +++ b/client/web/build.action.mjs @@ -19,7 +19,7 @@ import rmfr from 'rmfr'; import {runWebpack} from '../build/run_webpack.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; import {getBrowserWebpackConfig} from './get_browser_webpack_config.mjs'; diff --git a/client/web/start.action.mjs b/client/web/start.action.mjs index 4e996fe6c5..8befdb7730 100644 --- a/client/web/start.action.mjs +++ b/client/web/start.action.mjs @@ -16,18 +16,18 @@ import url from 'url'; import webpack from 'webpack'; import WebpackServer from 'webpack-dev-server'; -import {runAction} from '../../../src/build/run_action.mjs'; +import {runAction} from '../..//src/build/run_action.mjs'; import {getBrowserWebpackConfig} from './get_browser_webpack_config.mjs'; /** * @description Starts the web app for development. */ export async function main() { - await runAction('client/src/www/build', 'browser'); + await runAction('client/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('client/src/cordova/setup', 'browser'); + await runAction('client/cordova/setup', 'browser'); const webpackConfig = getBrowserWebpackConfig('browser', 'debug'); diff --git a/client/web/storybook.action.mjs b/client/web/storybook.action.mjs index 705d59d8a9..6ed5728605 100644 --- a/client/web/storybook.action.mjs +++ b/client/web/storybook.action.mjs @@ -20,7 +20,7 @@ import {fromRollup} from '@web/dev-server-rollup'; import image from '@rollup/plugin-image'; import path from 'path'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; const WWW_PATH = ['src', 'www']; const STORYBOOK_PATH = [...WWW_PATH, '.storybook']; diff --git a/client/web/test.action.mjs b/client/web/test.action.mjs index 8276fec953..10279e334c 100644 --- a/client/web/test.action.mjs +++ b/client/web/test.action.mjs @@ -17,7 +17,7 @@ import url from 'url'; import karma from 'karma'; import puppeteer from 'puppeteer'; import path from 'path'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; const KARMA_CONFIG_PATH = ['client', 'src', 'www', 'karma.conf.js']; diff --git a/client/web/webpack_cordova.mjs b/client/web/webpack_cordova.mjs index 6f6c24ce2a..a7f24b5662 100644 --- a/client/web/webpack_cordova.mjs +++ b/client/web/webpack_cordova.mjs @@ -18,7 +18,7 @@ import webpack from 'webpack'; import {baseConfig, browserConfig, require, __dirname, TS_LOADER, GENERATE_CSS_RTL_LOADER} from './webpack_base.mjs'; import {merge} from 'webpack-merge'; -import {getRootDir} from '../../../src/build/get_root_dir.mjs'; +import {getRootDir} from '../..//src/build/get_root_dir.mjs'; const BABEL_LOADER = { loader: 'babel-loader', diff --git a/package-lock.json b/package-lock.json index d5e246cd3b..eaa24ff289 100644 --- a/package-lock.json +++ b/package-lock.json @@ -434,7 +434,7 @@ "node": ">=10" } }, - "client/src/cordova/plugin": { + "client/cordova/plugin": { "name": "cordova-plugin-outline", "version": "0.0.0", "dev": true @@ -11746,7 +11746,7 @@ "license": "MIT" }, "node_modules/cordova-plugin-outline": { - "resolved": "client/src/cordova/plugin", + "resolved": "client/cordova/plugin", "link": true }, "node_modules/cordova-plugin-splashscreen": { @@ -42028,7 +42028,7 @@ "from": "cordova-plugin-clipboard@github:Jigsaw-Code/outline-cordova-plugin-clipboard#v2.0.0" }, "cordova-plugin-outline": { - "version": "file:client/src/cordova/plugin" + "version": "file:client/cordova/plugin" }, "cordova-plugin-splashscreen": { "version": "6.0.2" From 16ae202b6edcca532f4a2281913fdba2825eacf9 Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:49:50 -0400 Subject: [PATCH 3/6] update package-lock and bad string substitutions --- client/cordova/build.action.mjs | 8 ++++---- client/web/build.action.mjs | 2 +- client/web/start.action.mjs | 2 +- package-lock.json | 23 +++++++++++++---------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/client/cordova/build.action.mjs b/client/cordova/build.action.mjs index d0b29537a9..72b9d6bc56 100644 --- a/client/cordova/build.action.mjs +++ b/client/cordova/build.action.mjs @@ -19,10 +19,10 @@ import fs from 'node:fs/promises'; import cordovaLib from 'cordova-lib'; const {cordova} = cordovaLib; -import {runAction} from '..//src/build/run_action.mjs'; -import {getRootDir} from '..//src/build/get_root_dir.mjs'; -import {spawnStream} from '..//src/build/spawn_stream.mjs'; -import {downloadHttpsFile} from '..//src/build/download_file.mjs'; +import {runAction} from '../src/build/run_action.mjs'; +import {getRootDir} from '../src/build/get_root_dir.mjs'; +import {spawnStream} from '../src/build/spawn_stream.mjs'; +import {downloadHttpsFile} from '../src/build/download_file.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; diff --git a/client/web/build.action.mjs b/client/web/build.action.mjs index 0083ef8ec2..355f2c42ee 100644 --- a/client/web/build.action.mjs +++ b/client/web/build.action.mjs @@ -19,7 +19,7 @@ import rmfr from 'rmfr'; import {runWebpack} from '../build/run_webpack.mjs'; import {getBuildParameters} from '../build/get_build_parameters.mjs'; -import {getRootDir} from '../..//src/build/get_root_dir.mjs'; +import {getRootDir} from '../../src/build/get_root_dir.mjs'; import {getBrowserWebpackConfig} from './get_browser_webpack_config.mjs'; diff --git a/client/web/start.action.mjs b/client/web/start.action.mjs index 8befdb7730..e7d5dc3165 100644 --- a/client/web/start.action.mjs +++ b/client/web/start.action.mjs @@ -16,7 +16,7 @@ import url from 'url'; import webpack from 'webpack'; import WebpackServer from 'webpack-dev-server'; -import {runAction} from '../..//src/build/run_action.mjs'; +import {runAction} from '../../src/build/run_action.mjs'; import {getBrowserWebpackConfig} from './get_browser_webpack_config.mjs'; /** diff --git a/package-lock.json b/package-lock.json index eaa24ff289..d52535fe1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -145,6 +145,11 @@ "ios-deploy": "^1.11.4" } }, + "client/cordova/plugin": { + "name": "cordova-plugin-outline", + "version": "0.0.0", + "extraneous": true + }, "client/node_modules/@electron/universal": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", @@ -287,6 +292,10 @@ "node": ">= 0.6.x" } }, + "client/node_modules/cordova-plugin-outline": { + "resolved": "client/src/cordova/plugin", + "link": true + }, "client/node_modules/dir-compare": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", @@ -434,9 +443,7 @@ "node": ">=10" } }, - "client/cordova/plugin": { - "name": "cordova-plugin-outline", - "version": "0.0.0", + "client/src/cordova/plugin": { "dev": true }, "node_modules/@ampproject/remapping": { @@ -11745,10 +11752,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cordova-plugin-outline": { - "resolved": "client/cordova/plugin", - "link": true - }, "node_modules/cordova-plugin-splashscreen": { "version": "6.0.2", "license": "Apache-2.0", @@ -42027,9 +42030,6 @@ "dev": true, "from": "cordova-plugin-clipboard@github:Jigsaw-Code/outline-cordova-plugin-clipboard#v2.0.0" }, - "cordova-plugin-outline": { - "version": "file:client/cordova/plugin" - }, "cordova-plugin-splashscreen": { "version": "6.0.2" }, @@ -51335,6 +51335,9 @@ "graceful-readlink": ">= 1.0.0" } }, + "cordova-plugin-outline": { + "version": "file:client/src/cordova/plugin" + }, "dir-compare": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", From ce6fdc17eab35ac572e803266d04088c76a22acd Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:09:08 -0400 Subject: [PATCH 4/6] replace client/src with client --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index d52535fe1f..a5a2d9ae48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -293,7 +293,7 @@ } }, "client/node_modules/cordova-plugin-outline": { - "resolved": "client/src/cordova/plugin", + "resolved": "client/cordova/plugin", "link": true }, "client/node_modules/dir-compare": { @@ -443,7 +443,7 @@ "node": ">=10" } }, - "client/src/cordova/plugin": { + "client/cordova/plugin": { "dev": true }, "node_modules/@ampproject/remapping": { @@ -51336,7 +51336,7 @@ } }, "cordova-plugin-outline": { - "version": "file:client/src/cordova/plugin" + "version": "file:client/cordova/plugin" }, "dir-compare": { "version": "2.4.0", diff --git a/package.json b/package.json index 5699358bc1..bd586ad28d 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "clean": "rimraf client/build client/output node_modules client/node_modules client/www client/platforms client/plugins third_party/jsign/*.jar && go run github.com/go-task/task/v3/cmd/task clean", "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 client/src", + "lint:ts": "eslint --ext ts,mjs client", "lint": "npm run lint:ts", "reset": "npm run clean && npm ci" }, From f0193d4d327360085563b1ecba58632401ba704a Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:39:11 -0400 Subject: [PATCH 5/6] more path updates --- .eslintrc.json | 34 +++++++++---------- .github/CODEOWNERS | 2 +- .../workflows/build_and_test_debug_client.yml | 6 ++-- .github/workflows/pull_request_checks.yml | 4 +-- client/.gitignore | 1 - client/README.md | 8 ++--- client/cordova/apple/xcode/macos/osx.json | 4 +-- .../apple/xcode/macos/www/cordova_plugins.js | 4 +-- client/cordova/build.action.mjs | 4 +-- client/cordova/setup.action.mjs | 2 +- client/cordova/test.action.mjs | 2 +- client/electron/build.action.mjs | 2 +- client/electron/build_main.action.mjs | 2 +- client/electron/connectivity.ts | 2 +- client/electron/go_vpn_tunnel.ts | 6 ++-- client/electron/index.ts | 8 ++--- client/electron/routing_service.ts | 4 +-- client/electron/tsconfig.json | 4 +-- client/electron/tunnel_store.ts | 2 +- client/electron/vpn_tunnel.ts | 2 +- client/package.json | 2 +- .../outline_controller_server.h | 2 +- .../outline_proxy_controller/outline_error.h | 2 +- .../tun2socks/outline/neterrors/neterrors.go | 2 +- client/web/build.action.mjs | 4 +-- client/web/environment.json | 1 + client/web/start.action.mjs | 2 +- client/web/test.action.mjs | 2 +- client/web/tsconfig.json | 4 +-- client/web/ui_components/licenses/README.md | 4 +-- client/web/webpack_base.mjs | 2 +- package-lock.json | 6 ++-- 32 files changed, 68 insertions(+), 68 deletions(-) create mode 100644 client/web/environment.json diff --git a/.eslintrc.json b/.eslintrc.json index cf573c4859..bdb0a2eef1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -25,37 +25,37 @@ "from": ".", "except": ["./src/infrastructure", "./node_modules"] }, - // Similar to above but for src/www/model, but you can use files from both the - // src/www/model and src/www/infrastructure paths. + // Similar to above but for web/model, but you can use files from both the + // web/model and web/infrastructure paths. { - "target": "./src/www/model", + "target": "./web/model", "from": ".", - "except": ["./src/www/model", "./src/infrastructure", "./node_modules"] + "except": ["./web/model", "./src/infrastructure", "./node_modules"] }, // Prevents the internals of the outline_server_repository from being used publicly in the app. { - "target": "./src/www/app/*.ts", - "from": "./src/www/app/outline_server_repository/server.ts" + "target": "./web/app/*.ts", + "from": "./web/app/outline_server_repository/server.ts" }, { - "target": "./src/www/app/*.ts", - "from": "./src/www/app/outline_server_repository/access_key_serialization.ts" + "target": "./web/app/*.ts", + "from": "./web/app/outline_server_repository/access_key_serialization.ts" }, { - "target": "./src/www/views", - "from": "./src/www/model" + "target": "./web/views", + "from": "./web/model" }, { - "target": "./src/www/ui_components", - "from": "./src/www/model" + "target": "./web/ui_components", + "from": "./web/model" }, { - "target": "./src/www/views", - "from": "./src/www/app" + "target": "./web/views", + "from": "./web/app" }, { - "target": "./src/www/ui_components", - "from": "./src/www/app" + "target": "./web/ui_components", + "from": "./web/app" } ] } @@ -94,7 +94,7 @@ }, // No need to check browser compatibility for electron files { - "files": ["./src/www/app/electron_main.ts"], + "files": ["./web/app/electron_main.ts"], "rules": { "compat/compat": "off" } diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 917fc8e934..e5042b4677 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -5,4 +5,4 @@ /third_party/ @Jigsaw-Code/outline-networking-owners /tools/ @Jigsaw-Code/outline-networking-owners -/src/www/model/ @fortuna +/web/model/ @fortuna diff --git a/.github/workflows/build_and_test_debug_client.yml b/.github/workflows/build_and_test_debug_client.yml index 0b0f6a1b1d..b1b8a993e8 100644 --- a/.github/workflows/build_and_test_debug_client.yml +++ b/.github/workflows/build_and_test_debug_client.yml @@ -37,14 +37,14 @@ jobs: run: npm run action lint - name: Build Web App - run: npm run action client/www/build + run: npm run action client/web/build - name: Test Web App - run: npm run action client/www/test + run: npm run action client/web/test - uses: codecov/codecov-action@v3 with: - files: ./client/output/coverage/www/coverage-final.json + files: ./client/output/coverage/web/coverage-final.json flags: unittests, www linux_debug_build: diff --git a/.github/workflows/pull_request_checks.yml b/.github/workflows/pull_request_checks.yml index aeb4753c2c..ae60682f77 100644 --- a/.github/workflows/pull_request_checks.yml +++ b/.github/workflows/pull_request_checks.yml @@ -56,8 +56,8 @@ jobs: LICENSE package-lock.json resources - src/www/assets/** - src/www/messages/** + web/assets/** + web/messages/** third_party/** with: sizes: > diff --git a/client/.gitignore b/client/.gitignore index 061ad13c3c..f6718b983a 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -1,5 +1,4 @@ /node_modules -/build /output /platforms /plugins diff --git a/client/README.md b/client/README.md index a7659ac6c4..1c00f3e9ab 100644 --- a/client/README.md +++ b/client/README.md @@ -24,18 +24,18 @@ 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: +Outline clients share the same web app across all platforms. This code is located in the web 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/www/start +npm run action client/web/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!: +The app logic is located in [web/app](web/app). UI components are located in [web/ui_components](web/ui_components). If you want to work specifically on an individual UI element, try the storybook!: ```sh -npm run action client/www/storybook +npm run action client/web/storybook ``` > [!NOTE] diff --git a/client/cordova/apple/xcode/macos/osx.json b/client/cordova/apple/xcode/macos/osx.json index e80c4faf33..5142f267db 100644 --- a/client/cordova/apple/xcode/macos/osx.json +++ b/client/cordova/apple/xcode/macos/osx.json @@ -34,7 +34,7 @@ "modules": [ { "id": "cordova-plugin-clipboard.Clipboard", - "file": "plugins/cordova-plugin-clipboard/www/clipboard.js", + "file": "plugins/cordova-plugin-clipboard/web/clipboard.js", "pluginId": "cordova-plugin-clipboard", "clobbers": [ "cordova.plugins.clipboard" @@ -42,7 +42,7 @@ }, { "id": "cordova-webintent.WebIntent", - "file": "plugins/cordova-webintent/www/webintent.js", + "file": "plugins/cordova-webintent/web/webintent.js", "pluginId": "cordova-webintent", "clobbers": [ "WebIntent" diff --git a/client/cordova/apple/xcode/macos/www/cordova_plugins.js b/client/cordova/apple/xcode/macos/www/cordova_plugins.js index 471088fcd3..33938c8e53 100644 --- a/client/cordova/apple/xcode/macos/www/cordova_plugins.js +++ b/client/cordova/apple/xcode/macos/www/cordova_plugins.js @@ -2,7 +2,7 @@ cordova.define('cordova/plugin_list', function(require, exports, module) { module.exports = [ { "id": "cordova-plugin-clipboard.Clipboard", - "file": "plugins/cordova-plugin-clipboard/www/clipboard.js", + "file": "plugins/cordova-plugin-clipboard/web/clipboard.js", "pluginId": "cordova-plugin-clipboard", "clobbers": [ "cordova.plugins.clipboard" @@ -10,7 +10,7 @@ cordova.define('cordova/plugin_list', function(require, exports, module) { }, { "id": "cordova-webintent.WebIntent", - "file": "plugins/cordova-webintent/www/webintent.js", + "file": "plugins/cordova-webintent/web/webintent.js", "pluginId": "cordova-webintent", "clobbers": [ "WebIntent" diff --git a/client/cordova/build.action.mjs b/client/cordova/build.action.mjs index 72b9d6bc56..32354698d7 100644 --- a/client/cordova/build.action.mjs +++ b/client/cordova/build.action.mjs @@ -34,7 +34,7 @@ import {getBuildParameters} from '../build/get_build_parameters.mjs'; export async function main(...parameters) { const {platform, buildMode, verbose} = getBuildParameters(parameters); - await runAction('client/www/build', ...parameters); + await runAction('client/web/build', ...parameters); await runAction('client/tun2socks/build', ...parameters); await runAction('client/cordova/setup', ...parameters); @@ -95,7 +95,7 @@ function getXcodeBuildArgs(platform) { } return [ '-workspace', - path.join(getRootDir(), 'client', 'src', 'cordova', 'apple', workspaceFilename), + path.join(getRootDir(), 'client', 'cordova', 'apple', workspaceFilename), '-scheme', 'Outline', '-destination', diff --git a/client/cordova/setup.action.mjs b/client/cordova/setup.action.mjs index 889959a358..ad797aa7ee 100644 --- a/client/cordova/setup.action.mjs +++ b/client/cordova/setup.action.mjs @@ -39,7 +39,7 @@ const WORKING_CORDOVA_OSX_COMMIT = '07e62a53aa6a8a828fd988bc9e884c38c3495a67'; export async function main(...parameters) { const {platform, buildMode, verbose, buildNumber, versionName} = getBuildParameters(parameters); - await runAction('client/www/build', ...parameters); + await runAction('client/web/build', ...parameters); await runAction('client/tun2socks/build', ...parameters); await rmfr(path.resolve(getRootDir(), 'platforms')); diff --git a/client/cordova/test.action.mjs b/client/cordova/test.action.mjs index c0acf56d90..bf8e99bbf5 100644 --- a/client/cordova/test.action.mjs +++ b/client/cordova/test.action.mjs @@ -22,7 +22,7 @@ import rmfr from 'rmfr'; import {getRootDir} from '../..//src/build/get_root_dir.mjs'; import {spawnStream} from '../..//src/build/spawn_stream.mjs'; -const APPLE_ROOT = path.join(getRootDir(), 'client', 'src', 'cordova', 'apple'); +const APPLE_ROOT = path.join(getRootDir(), 'client', 'cordova', 'apple'); const APPLE_LIBRARY_NAME = 'OutlineAppleLib'; const SUPPORTED_PLATFORMS = new Set(['ios', 'macos', 'maccatalyst']); diff --git a/client/electron/build.action.mjs b/client/electron/build.action.mjs index 0ed0d1ad37..0178e0fff1 100644 --- a/client/electron/build.action.mjs +++ b/client/electron/build.action.mjs @@ -48,7 +48,7 @@ export async function main(...parameters) { ); } - await runAction('client/www/build', ...parameters); + await runAction('client/web/build', ...parameters); await runAction('client/tun2socks/build', ...parameters); await runAction('src/electron/build_main', ...parameters); diff --git a/client/electron/build_main.action.mjs b/client/electron/build_main.action.mjs index d5f616880c..76190cfa20 100644 --- a/client/electron/build_main.action.mjs +++ b/client/electron/build_main.action.mjs @@ -36,7 +36,7 @@ export async function main(...parameters) { ); } - await runAction('client/www/build', ...parameters); + await runAction('client/web/build', ...parameters); // TODO(daniellacosse): separate building the preload script out into its own separate step await runWebpack( diff --git a/client/electron/connectivity.ts b/client/electron/connectivity.ts index 283a56b99d..62b8fe4bc2 100644 --- a/client/electron/connectivity.ts +++ b/client/electron/connectivity.ts @@ -15,7 +15,7 @@ import * as dns from 'dns'; import {timeoutPromise} from '../../client/infrastructure/timeout_promise'; -import * as errors from '../../client/www/model/errors'; +import * as errors from '../../client/web/model/errors'; const DNS_LOOKUP_TIMEOUT_MS = 10000; diff --git a/client/electron/go_vpn_tunnel.ts b/client/electron/go_vpn_tunnel.ts index eec101d08f..d32a91f5bf 100755 --- a/client/electron/go_vpn_tunnel.ts +++ b/client/electron/go_vpn_tunnel.ts @@ -16,9 +16,9 @@ import {powerMonitor} from 'electron'; import {platform} from 'os'; import {pathToEmbeddedBinary} from '../../client/infrastructure/electron/app_paths'; -import {ShadowsocksSessionConfig} from '../../client/www/app/tunnel'; -import {TunnelStatus} from '../../client/www/app/tunnel'; -import {ErrorCode, fromErrorCode, UnexpectedPluginError} from '../../client/www/model/errors'; +import {ShadowsocksSessionConfig} from '../../client/web/app/tunnel'; +import {TunnelStatus} from '../../client/web/app/tunnel'; +import {ErrorCode, fromErrorCode, UnexpectedPluginError} from '../../client/web/model/errors'; import {ChildProcessHelper, ProcessTerminatedExitCodeError, ProcessTerminatedSignalError} from './process'; import {RoutingDaemon} from './routing_service'; diff --git a/client/electron/index.ts b/client/electron/index.ts index dab99993af..3dedfcf463 100644 --- a/client/electron/index.ts +++ b/client/electron/index.ts @@ -23,10 +23,10 @@ import * as process from 'process'; import * as url from 'url'; import autoLaunch = require('auto-launch'); // tslint:disable-line -import * as errors from '../../client/www/model/errors'; +import * as errors from '../../client/web/model/errors'; -import {ShadowsocksSessionConfig} from '../../client/www/app/tunnel'; -import {TunnelStatus} from '../../client/www/app/tunnel'; +import {ShadowsocksSessionConfig} from '../../client/web/app/tunnel'; +import {TunnelStatus} from '../../client/web/app/tunnel'; import {GoVpnTunnel} from './go_vpn_tunnel'; import {installRoutingServices, RoutingDaemon} from './routing_service'; import {TunnelStore, SerializableTunnel} from './tunnel_store'; @@ -145,7 +145,7 @@ function setupWindow(): void { mainWindow.setIcon(path.join(app.getAppPath(), 'build', 'icons', 'png', '64x64.png')); } - const pathToIndexHtml = path.join(app.getAppPath(), 'client', 'www', 'index_electron.html'); + const pathToIndexHtml = path.join(app.getAppPath(), 'client', 'web', 'index_electron.html'); const webAppUrl = new url.URL(`file://${pathToIndexHtml}`); // Debug mode, etc. diff --git a/client/electron/routing_service.ts b/client/electron/routing_service.ts index ead1b74234..c672eaa040 100755 --- a/client/electron/routing_service.ts +++ b/client/electron/routing_service.ts @@ -20,8 +20,8 @@ import * as path from 'path'; import * as sudo from 'sudo-prompt'; import {getAppPath} from '../../client/infrastructure/electron/app_paths'; -import {TunnelStatus} from '../../client/www/app/tunnel'; -import {ErrorCode, SystemConfigurationException} from '../../client/www/model/errors'; +import {TunnelStatus} from '../../client/web/app/tunnel'; +import {ErrorCode, SystemConfigurationException} from '../../client/web/model/errors'; const isLinux = platform() === 'linux'; const isWindows = platform() === 'win32'; diff --git a/client/electron/tsconfig.json b/client/electron/tsconfig.json index 250734fd0d..50838aba08 100644 --- a/client/electron/tsconfig.json +++ b/client/electron/tsconfig.json @@ -1,6 +1,6 @@ { - "extends": "../../client/www/tsconfig.json", + "extends": "../web/tsconfig.json", "compilerOptions": { - "outDir": "../../build/electron" + "outDir": "../output/electron" } } diff --git a/client/electron/tunnel_store.ts b/client/electron/tunnel_store.ts index 7c0b3b9f86..4bdb4cc043 100755 --- a/client/electron/tunnel_store.ts +++ b/client/electron/tunnel_store.ts @@ -15,7 +15,7 @@ import * as fs from 'fs'; import * as path from 'path'; -import {ShadowsocksSessionConfig} from '../../client/www/app/tunnel'; +import {ShadowsocksSessionConfig} from '../../client/web/app/tunnel'; // Format to store a tunnel configuration. export interface SerializableTunnel { diff --git a/client/electron/vpn_tunnel.ts b/client/electron/vpn_tunnel.ts index fe096687b0..3a3fa57ba0 100755 --- a/client/electron/vpn_tunnel.ts +++ b/client/electron/vpn_tunnel.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import {TunnelStatus} from '../../client/www/app/tunnel'; +import {TunnelStatus} from '../../client/web/app/tunnel'; // Represents a VPN tunnel to a proxy server. export interface VpnTunnel { diff --git a/client/package.json b/client/package.json index 557e46cdc0..83cce5c4d5 100644 --- a/client/package.json +++ b/client/package.json @@ -3,7 +3,7 @@ "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." + "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/web/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", diff --git a/client/tools/outline_proxy_controller/outline_controller_server.h b/client/tools/outline_proxy_controller/outline_controller_server.h index 55517999db..ba0ff2a06b 100644 --- a/client/tools/outline_proxy_controller/outline_controller_server.h +++ b/client/tools/outline_proxy_controller/outline_controller_server.h @@ -69,7 +69,7 @@ class OutlineClientSession : public std::enable_shared_from_this MonitorNetworkChanges(); private: - /** @brief `TunnelStatus` in "src/www/app/tunnel.ts" */ + /** @brief `TunnelStatus` in "web/app/tunnel.ts" */ enum class ConnectionState : int { kConnected = 0, kDisconnected = 1, diff --git a/client/tools/outline_proxy_controller/outline_error.h b/client/tools/outline_proxy_controller/outline_error.h index fa648e099b..c5949058e7 100644 --- a/client/tools/outline_proxy_controller/outline_error.h +++ b/client/tools/outline_proxy_controller/outline_error.h @@ -23,7 +23,7 @@ namespace outline { /** * @brief The standard error code constants used by outline. - * @remarks The codes are copied from "/src/www/model/errors.ts". + * @remarks The codes are copied from "/web/model/errors.ts". */ enum class ErrorCode { kOk = 0, diff --git a/client/tun2socks/outline/neterrors/neterrors.go b/client/tun2socks/outline/neterrors/neterrors.go index 3ebebbc248..6ec175ba1d 100644 --- a/client/tun2socks/outline/neterrors/neterrors.go +++ b/client/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-apps/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/web/model/errors.ts const ( NoError Error = 0 Unexpected Error = 1 diff --git a/client/web/build.action.mjs b/client/web/build.action.mjs index 355f2c42ee..006c3d0d11 100644 --- a/client/web/build.action.mjs +++ b/client/web/build.action.mjs @@ -56,10 +56,10 @@ export async function main(...parameters) { } } - await fs.mkdir(path.resolve(getRootDir(), 'client', 'www'), {recursive: true}); + await fs.mkdir(path.resolve(getRootDir(), 'client', 'web'), {recursive: true}); await fs.writeFile( - path.resolve(getRootDir(), 'client', 'www', 'environment.json'), + path.resolve(getRootDir(), 'client', 'web', 'environment.json'), JSON.stringify({ SENTRY_DSN: sentryDsn, APP_VERSION: versionName, diff --git a/client/web/environment.json b/client/web/environment.json new file mode 100644 index 0000000000..fc6ea72ff2 --- /dev/null +++ b/client/web/environment.json @@ -0,0 +1 @@ +{"APP_VERSION":"0.0.0-debug","APP_BUILD_NUMBER":475939} \ No newline at end of file diff --git a/client/web/start.action.mjs b/client/web/start.action.mjs index e7d5dc3165..7e1588d284 100644 --- a/client/web/start.action.mjs +++ b/client/web/start.action.mjs @@ -23,7 +23,7 @@ import {getBrowserWebpackConfig} from './get_browser_webpack_config.mjs'; * @description Starts the web app for development. */ export async function main() { - await runAction('client/www/build', 'browser'); + await runAction('client/web/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. diff --git a/client/web/test.action.mjs b/client/web/test.action.mjs index 10279e334c..786db83cc2 100644 --- a/client/web/test.action.mjs +++ b/client/web/test.action.mjs @@ -19,7 +19,7 @@ import puppeteer from 'puppeteer'; import path from 'path'; import {getRootDir} from '../..//src/build/get_root_dir.mjs'; -const KARMA_CONFIG_PATH = ['client', 'src', 'www', 'karma.conf.js']; +const KARMA_CONFIG_PATH = ['client', 'web', 'karma.conf.js']; /** * @description Runs the Karma tests against the web UI. diff --git a/client/web/tsconfig.json b/client/web/tsconfig.json index 93c6c6f982..6408374c98 100644 --- a/client/web/tsconfig.json +++ b/client/web/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", "compilerOptions": { - "outDir": "../../www", + "outDir": "../www", "lib": ["es2022", "dom", "dom.iterable"] } } diff --git a/client/web/ui_components/licenses/README.md b/client/web/ui_components/licenses/README.md index dc3d92fa3e..5d7bfaa45d 100644 --- a/client/web/ui_components/licenses/README.md +++ b/client/web/ui_components/licenses/README.md @@ -4,7 +4,7 @@ - `cd` to the root of your clone of this repo. - Ensure `node_modules` is up to date by running `npm ci`. -- `npx generate-license-file --input package.json --output src/www/ui_components/licenses/licenses.txt` -- `./src/www/ui_components/licenses/third_party.sh >> ./src/www/ui_components/licenses/licenses.txt` +- `npx generate-license-file --input package.json --output web/ui_components/licenses/licenses.txt` +- `./web/ui_components/licenses/third_party.sh >> ./web/ui_components/licenses/licenses.txt` Done! diff --git a/client/web/webpack_base.mjs b/client/web/webpack_base.mjs index ef7cec8cf5..139a3b4905 100644 --- a/client/web/webpack_base.mjs +++ b/client/web/webpack_base.mjs @@ -55,7 +55,7 @@ export const baseConfig = { export const browserConfig = { entry: [path.resolve(__dirname, 'style.css')], output: { - path: path.resolve(__dirname, '..', '..', 'www'), + path: path.resolve(__dirname, '..', 'www'), filename: 'main.js', }, module: { diff --git a/package-lock.json b/package-lock.json index a5a2d9ae48..c0a44758e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -148,7 +148,7 @@ "client/cordova/plugin": { "name": "cordova-plugin-outline", "version": "0.0.0", - "extraneous": true + "dev": true }, "client/node_modules/@electron/universal": { "version": "1.2.1", @@ -443,8 +443,8 @@ "node": ">=10" } }, - "client/cordova/plugin": { - "dev": true + "client/src/cordova/plugin": { + "extraneous": true }, "node_modules/@ampproject/remapping": { "version": "2.2.0", From 005d7920564475e8d9772762772a655dec83cbd9 Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:48:48 -0400 Subject: [PATCH 6/6] add back client/build --- .gitignore | 1 - client/build/get_build_parameters.mjs | 59 +++++++++++++++++++++++++ client/build/get_webpack_build_mode.mjs | 30 +++++++++++++ client/build/run_webpack.mjs | 36 +++++++++++++++ package.json | 2 +- 5 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 client/build/get_build_parameters.mjs create mode 100644 client/build/get_webpack_build_mode.mjs create mode 100644 client/build/run_webpack.mjs diff --git a/.gitignore b/.gitignore index d96680ec27..ffa60dc99d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,3 @@ node_modules /server_manager/install_scripts/do_install_script.ts /server_manager/install_scripts/gcp_install_script.ts /output -/build diff --git a/client/build/get_build_parameters.mjs b/client/build/get_build_parameters.mjs new file mode 100644 index 0000000000..6f331f40e2 --- /dev/null +++ b/client/build/get_build_parameters.mjs @@ -0,0 +1,59 @@ +// Copyright 2022 The Outline Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import minimist from 'minimist'; + +const VALID_PLATFORMS = ['linux', 'windows', 'ios', 'macos', 'maccatalyst', 'android', 'browser']; +const VALID_BUILD_MODES = ['debug', 'release']; + +const MS_PER_HOUR = 1000 * 60 * 60; + +/* + Inputs: + => cliParameters: the list of action arguments passed in + Outputs: + => an object containing the specificed platform and buildMode. +*/ +export function getBuildParameters(cliArguments) { + const { + _: [platform = 'browser'], + buildMode = 'debug', + verbose = false, + versionName = '0.0.0', + sentryDsn = process.env.SENTRY_DSN, + } = minimist(cliArguments); + + if (platform && !VALID_PLATFORMS.includes(platform)) { + throw new TypeError( + `Platform "${platform}" is not a valid target for Outline Client. Must be one of ${VALID_PLATFORMS.join(', ')}` + ); + } + + if (buildMode && !VALID_BUILD_MODES.includes(buildMode)) { + throw new TypeError( + `Build mode "${buildMode}" is not a valid build mode for Outline Client. Must be one of ${VALID_BUILD_MODES.join( + ', ' + )}` + ); + } + + return { + platform, + buildMode, + verbose, + versionName: buildMode === 'release' ? versionName : `${versionName}-${buildMode}`, + sentryDsn, + buildNumber: Math.floor(Date.now() / MS_PER_HOUR), + }; +} diff --git a/client/build/get_webpack_build_mode.mjs b/client/build/get_webpack_build_mode.mjs new file mode 100644 index 0000000000..7e86cd98d9 --- /dev/null +++ b/client/build/get_webpack_build_mode.mjs @@ -0,0 +1,30 @@ +// Copyright 2022 The Outline Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* + Inputs: + => buildMode: the outline build mode + Outputs: + => the appropriate webpack mode for this type of build +*/ +export function getWebpackBuildMode(buildMode) { + switch (buildMode) { + case 'debug': + return 'development'; + case 'release': + return 'production'; + default: + throw new TypeError('get_webpack_mode requires a buildMode argument of debug or release'); + } +} diff --git a/client/build/run_webpack.mjs b/client/build/run_webpack.mjs new file mode 100644 index 0000000000..0f45a78a20 --- /dev/null +++ b/client/build/run_webpack.mjs @@ -0,0 +1,36 @@ +// Copyright 2022 The Outline Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import webpack from 'webpack'; + +export const runWebpack = webpackConfig => + new Promise((resolve, reject) => { + webpack(webpackConfig, (error, stats) => { + if (error || stats.hasErrors()) { + reject( + error || + stats + .toJson() + ?.errors.reduce( + (errorMessages, {message}) => (message ? `${errorMessages}\n${message}` : errorMessages), + '' + ) || + 'Unknown Webpack error.' + ); + } + + resolve(stats); + }); + }); + \ No newline at end of file diff --git a/package.json b/package.json index bd586ad28d..f411f34c71 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "action:help": "npm run action list", "action:list": "npm run action list", "action": "node ./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 && go run github.com/go-task/task/v3/cmd/task clean", + "clean": "rimraf client/output node_modules client/node_modules client/www client/platforms client/plugins third_party/jsign/*.jar && go run github.com/go-task/task/v3/cmd/task clean", "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 client",