diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 5d0463465ae..74c6961fc59 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -34,8 +34,10 @@ "build:renderer": "cross-env NODE_ENV=production webpack --config webpack.config.js --config-name renderer", "build:renderer:dev": "cross-env NODE_ENV=development webpack --config webpack.config.js --config-name renderer", "build:renderer:watch": "cross-env NODE_ENV=development webpack --config webpack.config.js --config-name renderer --watch", + "build:bit": "concurrently -n Main,Rend,Prel -c yellow,cyan \"npm run build:bit:main\" \"npm run build:bit:renderer\" \"npm run build:bit:preload\"", "build:bit:main": "cross-env NODE_ENV=production webpack --config ../../bitwarden_license/bit-desktop/webpack.config.js --config-name main", "build:bit:renderer": "cross-env NODE_ENV=production webpack --config ../../bitwarden_license/bit-desktop/webpack.config.js --config-name renderer", + "build:bit:preload": "cross-env NODE_ENV=production webpack --config ../../bitwarden_license/bit-desktop/webpack.config.js --config-name preload", "electron": "node ./scripts/start.js", "electron:ignore": "node ./scripts/start.js --ignore-certificate-errors", "flatpak:dev": "npm run clean:dist && electron-builder --dir -p never && flatpak-builder --force-clean --install --user ../../.flatpak/ ./resources/com.bitwarden.desktop.devel.yaml && flatpak run com.bitwarden.desktop", diff --git a/apps/desktop/src/preload.base.ts b/apps/desktop/src/preload.base.ts new file mode 100644 index 00000000000..94688d035ce --- /dev/null +++ b/apps/desktop/src/preload.base.ts @@ -0,0 +1,13 @@ +import tools from "./app/tools/preload"; +import auth from "./auth/preload"; +import autofill from "./autofill/preload"; +import keyManagement from "./key-management/preload"; +import platform from "./platform/preload"; + +export const ipc = { + auth, + autofill, + platform, + keyManagement, + tools, +} as const; diff --git a/apps/desktop/src/preload.ts b/apps/desktop/src/preload.ts index 90e8e64138f..f81bc7fbb98 100644 --- a/apps/desktop/src/preload.ts +++ b/apps/desktop/src/preload.ts @@ -1,10 +1,6 @@ import { contextBridge } from "electron"; -import tools from "./app/tools/preload"; -import auth from "./auth/preload"; -import autofill from "./autofill/preload"; -import keyManagement from "./key-management/preload"; -import platform from "./platform/preload"; +import { ipc } from "./preload.base"; /** * Bitwarden Preload script. @@ -17,12 +13,6 @@ import platform from "./platform/preload"; */ // Each team owns a subspace of the `ipc` global variable in the renderer. -export const ipc = { - auth, - autofill, - platform, - keyManagement, - tools, -}; +export { ipc }; contextBridge.exposeInMainWorld("ipc", ipc); diff --git a/bitwarden_license/bit-desktop/src/app/app.module.ts b/bitwarden_license/bit-desktop/src/app/app.module.ts index c01853e5ce7..54cc8005761 100644 --- a/bitwarden_license/bit-desktop/src/app/app.module.ts +++ b/bitwarden_license/bit-desktop/src/app/app.module.ts @@ -1,9 +1,15 @@ +import "zone.js"; + +// Register the locales for the application +import "@bitwarden/desktop/platform/app/locales"; + import { NgModule } from "@angular/core"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { ColorPasswordCountPipe } from "@bitwarden/angular/pipes/color-password-count.pipe"; import { ColorPasswordPipe } from "@bitwarden/angular/pipes/color-password.pipe"; import { CalloutModule, DialogModule } from "@bitwarden/components"; +import { AppRoutingModule as OssAppRoutingModule } from "@bitwarden/desktop/app/app-routing.module"; import { UserVerificationComponent } from "@bitwarden/desktop/app/components/user-verification.component"; import { AccountSwitcherComponent } from "@bitwarden/desktop/app/layout/account-switcher.component"; import { HeaderComponent } from "@bitwarden/desktop/app/layout/header.component"; @@ -25,6 +31,7 @@ import { AppComponent } from "./app.component"; imports: [ BrowserAnimationsModule, SharedModule, + OssAppRoutingModule, AppRoutingModule, VaultFilterModule, LoginModule, diff --git a/bitwarden_license/bit-desktop/src/app/main.ts b/bitwarden_license/bit-desktop/src/app/main.ts index bb22cfc2248..72a8901f075 100644 --- a/bitwarden_license/bit-desktop/src/app/main.ts +++ b/bitwarden_license/bit-desktop/src/app/main.ts @@ -3,14 +3,11 @@ import "core-js/proposals/explicit-resource-management"; import { enableProdMode } from "@angular/core"; import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; -import { ipc } from "@bitwarden/desktop/preload"; - // eslint-disable-next-line @typescript-eslint/no-require-imports require("../../../../apps/desktop/src/scss/styles.scss"); // eslint-disable-next-line @typescript-eslint/no-require-imports require("../../../../apps/desktop/src/scss/tailwind.css"); -// TODO use commercial variant import { AppModule } from "./app.module"; if (!ipc.platform.isDev) { diff --git a/bitwarden_license/bit-desktop/src/global.d.ts b/bitwarden_license/bit-desktop/src/global.d.ts new file mode 100644 index 00000000000..77ee9d618c6 --- /dev/null +++ b/bitwarden_license/bit-desktop/src/global.d.ts @@ -0,0 +1,10 @@ +declare module "forcefocus"; +declare const ipc: typeof import("./preload").ipc; + +/** + * Will be turned into a constant string in the main process only + * likely either `"development"` or `"production"`. + * + * This is done using the `DefinePlugin` in our webpack files. + */ +declare const BIT_ENVIRONMENT: string; diff --git a/bitwarden_license/bit-desktop/src/preload.ts b/bitwarden_license/bit-desktop/src/preload.ts new file mode 100644 index 00000000000..3407ce46219 --- /dev/null +++ b/bitwarden_license/bit-desktop/src/preload.ts @@ -0,0 +1,17 @@ +import { contextBridge } from "electron"; + +import { ipc as ossIpc } from "@bitwarden/desktop/preload.base"; + +/** + * Bitwarden Preload script. + * + * This file extends the OSS IPC with commercial-specific channels. + * + * See the OSS preload script for more information. + */ + +export const ipc = { + ...ossIpc, +}; + +contextBridge.exposeInMainWorld("ipc", ipc); diff --git a/bitwarden_license/bit-desktop/tsconfig.renderer.json b/bitwarden_license/bit-desktop/tsconfig.renderer.json index c7376244a1e..daf3b3beae5 100644 --- a/bitwarden_license/bit-desktop/tsconfig.renderer.json +++ b/bitwarden_license/bit-desktop/tsconfig.renderer.json @@ -1,10 +1,9 @@ { "extends": "../../apps/desktop/tsconfig.renderer.json", "include": [ - "src", - - "../../apps/desktop/src/global.d.ts", - + // "src", + "src/app/main.ts", + "src/global.d.ts", "../../bitwarden_license/bit-common/src/platform/sdk/sdk-alias.d.ts" ] } diff --git a/bitwarden_license/bit-desktop/webpack.config.js b/bitwarden_license/bit-desktop/webpack.config.js index bdfbb6689fe..16732d4298b 100644 --- a/bitwarden_license/bit-desktop/webpack.config.js +++ b/bitwarden_license/bit-desktop/webpack.config.js @@ -32,8 +32,8 @@ module.exports = (webpackConfig, context) => { tsConfig: path.resolve(__dirname, "tsconfig.json"), }, preload: { - entry: "", - tsConfig: "", + entry: path.resolve(__dirname, "src/preload.ts"), + tsConfig: path.resolve(__dirname, "tsconfig.json"), }, }); }