diff --git a/client/browser/BUILD.bazel b/client/browser/BUILD.bazel index c6cce7565b90..86f4e6d237aa 100644 --- a/client/browser/BUILD.bazel +++ b/client/browser/BUILD.bazel @@ -116,14 +116,12 @@ ts_project( srcs = [ "code-intel-extensions.json", "src/browser-extension/ThemeWrapper.tsx", - "src/browser-extension/after-install-page/AfterInstallPageContent.tsx", "src/browser-extension/browser-action-icon.ts", "src/browser-extension/environmentAssertion.ts", "src/browser-extension/knownCodeHosts.ts", "src/browser-extension/options-menu/OptionsPage.tsx", "src/browser-extension/options-menu/OptionsPageAdvancedSettings.tsx", "src/browser-extension/options-menu/components/OptionsPageContainer.tsx", - "src/browser-extension/scripts/afterInstallPage.main.tsx", "src/browser-extension/scripts/backgroundPage.main.ts", "src/browser-extension/scripts/contentPage.main.ts", "src/browser-extension/scripts/optionsPage.main.tsx", @@ -206,7 +204,6 @@ ts_project( "src/shared/platform/inlineExtensionsService.ts", "src/shared/platform/ports.ts", "src/shared/platform/settings.ts", - "src/shared/platform/worker.ts", "src/shared/polyfills.ts", "src/shared/repo/backend.tsx", "src/shared/repo/index.tsx", @@ -262,7 +259,6 @@ ts_project( "//:node_modules/utility-types", "//:node_modules/uuid", "//:node_modules/vitest", - "//:node_modules/webext-domain-permission-toggle", "//:node_modules/webextension-polyfill", #keep ], ) @@ -367,7 +363,6 @@ esbuild( "src/browser-extension/scripts/backgroundPage.main.js", "src/browser-extension/scripts/contentPage.main.js", "src/browser-extension/scripts/optionsPage.main.js", - "src/browser-extension/scripts/afterInstallPage.main.js", "src/native-integration/nativeIntegration.main.js", "src/native-integration/phabricator/phabricatorNativeIntegration.main.js", "src/app.css", @@ -406,7 +401,6 @@ copy_to_directory( ts_project( name = "stories", srcs = [ - "src/browser-extension/after-install-page/AfterInstallPageContent.story.tsx", "src/browser-extension/options-menu/OptionsPage.story.tsx", "src/shared/components/HoverOverlay.story.tsx", ], diff --git a/client/browser/config/esbuild.ts b/client/browser/config/esbuild.ts index 23546fd72397..3355256dac44 100644 --- a/client/browser/config/esbuild.ts +++ b/client/browser/config/esbuild.ts @@ -20,7 +20,6 @@ export function esbuildBuildOptions(mode: 'dev' | 'prod', extraPlugins: esbuild. path.resolve(browserSourcePath, 'browser-extension/scripts/backgroundPage.main.ts'), path.resolve(browserSourcePath, 'browser-extension/scripts/contentPage.main.ts'), path.resolve(browserSourcePath, 'browser-extension/scripts/optionsPage.main.tsx'), - path.resolve(browserSourcePath, 'browser-extension/scripts/afterInstallPage.main.tsx'), // Common native integration entry point (Gitlab, Bitbucket) path.resolve(browserSourcePath, 'native-integration/nativeIntegration.main.ts'), @@ -39,9 +38,11 @@ export function esbuildBuildOptions(mode: 'dev' | 'prod', extraPlugins: esbuild. plugins: [stylePlugin, ...extraPlugins], define: { 'process.env.NODE_ENV': JSON.stringify(mode === 'dev' ? 'development' : 'production'), + 'process.env.NODE_DEBUG': 'false', 'process.env.BUNDLE_UID': JSON.stringify(generateBundleUID()), }, bundle: true, + treeShaking: true, minify: false, logLevel: 'error', jsx: 'automatic', @@ -50,7 +51,12 @@ export function esbuildBuildOptions(mode: 'dev' | 'prod', extraPlugins: esbuild. entryNames: '[ext]/[name].bundle', target: 'esnext', sourcemap: true, - alias: { path: 'path-browserify' }, + alias: { path: 'path-browserify', lodash: 'lodash-es' }, + banner: { + // HACK: lodash has a `Function("return this")`, which Firefox's CSP protection + // complains about. This ensures we do not encounter it. + js: 'globalThis.global = globalThis;', + }, loader: { '.svg': 'text', }, diff --git a/client/browser/scripts/tasks.ts b/client/browser/scripts/tasks.ts index 8be717217336..b3e3f32fce26 100644 --- a/client/browser/scripts/tasks.ts +++ b/client/browser/scripts/tasks.ts @@ -2,7 +2,7 @@ import fs from 'fs' import path from 'path' -import { omit, cloneDeep, curry } from 'lodash' +import { cloneDeep, curry, omit } from 'lodash' import shelljs from 'shelljs' import signale from 'signale' import utcVersion from 'utc-version' @@ -175,7 +175,7 @@ function writeManifest(environment: BuildEnvironment, browser: Browser, writeDir if (EXTENSION_PERMISSIONS_ALL_URLS) { manifest.permissions!.push('') /** Set key to make extension id deterministic */ - // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore manifest.key = manifestSpec.dev.key signale.info('Adding to permissions because of env var setting') @@ -194,9 +194,20 @@ function writeManifest(environment: BuildEnvironment, browser: Browser, writeDir } } - // Add the inline extensions to web accessible resources - manifest.web_accessible_resources = manifest.web_accessible_resources || [] - manifest.web_accessible_resources.push('extensions/*') + // Firefox doesn't support service workers, so we need a workaround. See + // https://github.com/mozilla/web-ext/issues/2532. + if (browser === 'firefox') { + manifest.background!.scripts = [manifest.background!.service_worker] + delete manifest.background!.service_worker + } + + if (browser === 'firefox') { + manifest.browser_specific_settings = { + gecko: { + id: 'sourcegraph-for-firefox@sourcegraph.com', + }, + } + } delete manifest.$schema diff --git a/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.module.scss b/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.module.scss deleted file mode 100644 index ee4ae10793a0..000000000000 --- a/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.module.scss +++ /dev/null @@ -1,12 +0,0 @@ -.sourcegraph-logo { - height: 1.5rem; -} - -.code-host-logo { - height: 2rem !important; - width: 2rem !important; -} - -.code-host-titles { - line-height: 2; -} diff --git a/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.story.tsx b/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.story.tsx deleted file mode 100644 index 736532786d1b..000000000000 --- a/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.story.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { Meta, StoryFn } from '@storybook/react' - -import { BrandedStory } from '@sourcegraph/wildcard/src/stories' - -import { AfterInstallPageContent } from './AfterInstallPageContent' - -import brandedStyles from '../../branded.scss' - -const config: Meta = { - title: 'browser/AfterInstallPage', - parameters: { - chromatic: { - enableDarkMode: true, - disableSnapshot: false, - }, - }, -} - -export default config - -export const Default: StoryFn = () => {AfterInstallPageContent} diff --git a/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.tsx b/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.tsx deleted file mode 100644 index 61921b60eda4..000000000000 --- a/client/browser/src/browser-extension/after-install-page/AfterInstallPageContent.tsx +++ /dev/null @@ -1,239 +0,0 @@ -import React, { type VideoHTMLAttributes } from 'react' - -import { mdiOpenInNew, mdiGithub, mdiCheck, mdiGitlab, mdiBitbucket, mdiLock, mdiBookOpenPageVariant } from '@mdi/js' -import classNames from 'classnames' - -import { SourcegraphLogo } from '@sourcegraph/branded/src/components/SourcegraphLogo' -import { PhabricatorIcon } from '@sourcegraph/shared/src/components/icons' -import { Link, Icon, Code, H1, H2, H3, Text } from '@sourcegraph/wildcard' - -import { getPlatformName } from '../../shared/util/context' - -import styles from './AfterInstallPageContent.module.scss' - -interface VideoProps extends Pick, 'width' | 'height'> { - name: string - isLightTheme: boolean -} - -const Video: React.FC = ({ name, isLightTheme, width, height }) => { - const suffix = isLightTheme ? 'Light' : 'Dark' - return ( -