rcgit

/ karakeep

Commit 485276e4

SHA 485276e46caf51b6671a13cdd55f95342f12864b
Author MohamedBassem <me at mbassem dot com>
Author Date 2024-08-18 23:07 +0300
Committer MohamedBassem <me at mbassem dot com>
Commit Date 2024-08-18 23:07 +0300
Parent(s) 99b24bcb8a0c (diff)
Tree 5a95a5d65f0f

patch snapshot

fix(extension): Upgrade crxjs to 2.0 to add support for firefox
File + - Graph
M .github/workflows/extension.yml +17 -5
M apps/browser-extension/manifest.json +2 -1
M apps/browser-extension/package.json +1 -1
M apps/browser-extension/src/background/background.ts +3 -1
M apps/browser-extension/vite.config.ts +7 -1
M pnpm-lock.yaml +43 -78
6 file(s) changed, 73 insertions(+), 87 deletions(-)

.github/workflows/extension.yml

diff --git a/.github/workflows/extension.yml b/.github/workflows/extension.yml
index 0fc8d6b7..4a037b12 100644
--- a/.github/workflows/extension.yml
+++ b/.github/workflows/extension.yml
@@ -15,12 +15,24 @@ jobs:
       - name: Setup
         uses: ./tooling/github/setup
 
-      - name: Build the extension
+      - name: Build the extension (chrome)
         working-directory: apps/browser-extension
-        run: pnpm run build
+        run: pnpm run build --outDir dist-chrome
 
-      - name: Upload Extension Archive
+      - name: Build the extension (firefox)
+        env:
+          VITE_BUILD_FIREFOX: true
+        working-directory: apps/browser-extension
+        run: pnpm run build --outDir dist-firefox
+
+      - name: Upload Extension Archive (chrome)
+        uses: actions/upload-artifact@v4
+        with:
+          name: hoarder-extension-chrome
+          path: apps/browser-extension/dist-chrome/*
+
+      - name: Upload Extension Archive (firefox)
         uses: actions/upload-artifact@v4
         with:
-          name: hoarder-extension
-          path: apps/browser-extension/dist/*
+          name: hoarder-extension-firefox
+          path: apps/browser-extension/dist-firefox/*

apps/browser-extension/manifest.json

diff --git a/apps/browser-extension/manifest.json b/apps/browser-extension/manifest.json
index 4a21c424..fa82f3fa 100644
--- a/apps/browser-extension/manifest.json
+++ b/apps/browser-extension/manifest.json
@@ -12,7 +12,8 @@
     "default_popup": "index.html"
   },
   "background": {
-    "service_worker": "src/background/background.ts"
+    "service_worker": "src/background/background.ts",
+    "scripts": ["src/background/background.ts"]
   },
   "options_ui": {
     "page": "index.html#options",

apps/browser-extension/package.json

diff --git a/apps/browser-extension/package.json b/apps/browser-extension/package.json
index 7ede2c05..0e5d8166 100644
--- a/apps/browser-extension/package.json
+++ b/apps/browser-extension/package.json
@@ -39,7 +39,7 @@
     "zod": "^3.22.4"
   },
   "devDependencies": {
-    "@crxjs/vite-plugin": "^1.0.14",
+    "@crxjs/vite-plugin": "2.0.0-beta.25",
     "@hoarder/eslint-config": "workspace:^0.2.0",
     "@hoarder/prettier-config": "workspace:^0.1.0",
     "@hoarder/tailwind-config": "workspace:^0.1.0",

apps/browser-extension/src/background/background.ts

diff --git a/apps/browser-extension/src/background/background.ts b/apps/browser-extension/src/background/background.ts
index cab58aa9..7622c07e 100644
--- a/apps/browser-extension/src/background/background.ts
+++ b/apps/browser-extension/src/background/background.ts
@@ -69,9 +69,11 @@ async function handleContextMenuClick(info: chrome.contextMenus.OnClickData) {
       };
     }
     if (newBookmark) {
-      await chrome.storage.session.set({
+      chrome.storage.session.set({
         [NEW_BOOKMARK_REQUEST_KEY_NAME]: newBookmark,
       });
+      // NOTE: Firefox only allows opening context menus if it's triggered by a user action.
+      // awaiting on any promise before calling this function will lose the "user action" context.
       await chrome.action.openPopup();
     }
   }

apps/browser-extension/vite.config.ts

diff --git a/apps/browser-extension/vite.config.ts b/apps/browser-extension/vite.config.ts
index 42ecc28d..37b92349 100644
--- a/apps/browser-extension/vite.config.ts
+++ b/apps/browser-extension/vite.config.ts
@@ -6,5 +6,11 @@ import manifest from "./manifest.json";
 
 // https://vitejs.dev/config/
 export default defineConfig({
-  plugins: [react(), crx({ manifest })],
+  plugins: [
+    react(),
+    crx({
+      manifest,
+      browser: process.env.VITE_BUILD_FIREFOX ? "firefox" : "chrome",
+    }),
+  ],
 });

pnpm-lock.yaml

diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 140ee5e5..f1fcf9a0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -72,7 +72,7 @@ importers:
         version: 11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308)
       '@trpc/next':
         specifier: 11.0.0-next-beta.308
-        version: 11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/react-query@11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@11.0.0-next-beta.308)(next@14.1.4(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+        version: 11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/react-query@11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@11.0.0-next-beta.308)(next@14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
       '@trpc/react-query':
         specifier: 11.0.0-next-beta.308
         version: 11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
@@ -120,8 +120,8 @@ importers:
         version: 3.22.4
     devDependencies:
       '@crxjs/vite-plugin':
-        specifier: ^1.0.14
-        version: 1.0.14(vite@5.1.4(@types/node@20.11.20))
+        specifier: 2.0.0-beta.25
+        version: 2.0.0-beta.25
       '@hoarder/eslint-config':
         specifier: workspace:^0.2.0
         version: link:../../tooling/eslint
@@ -2025,11 +2025,8 @@ packages:
     peerDependencies:
       commander: ~12.0.0
 
-  '@crxjs/vite-plugin@1.0.14':
-    resolution: {integrity: sha512-emOueVCqFRFmpcfT80Xsm4mfuFw9VSp5GY4eh5qeLDeiP81g0hddlobVQCo0pE2ZvNnWbyhLrXEYAaMAXjNL6A==}
-    engines: {node: '>=14'}
-    peerDependencies:
-      vite: ^2.9.0
+  '@crxjs/vite-plugin@2.0.0-beta.25':
+    resolution: {integrity: sha512-g5ytTNiFpFCi+T0trSDJLohVz5PufLBLh6OGljyGTHkQCKiApuEgZ1bAjgPXluMDhMUvbPfZT10LYl5ROefXog==}
 
   '@dabh/diagnostics@2.0.3':
     resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==}
@@ -4139,18 +4136,6 @@ packages:
   '@types/acorn@4.0.6':
     resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
 
-  '@types/babel__core@7.20.5':
-    resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
-
-  '@types/babel__generator@7.6.8':
-    resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
-
-  '@types/babel__template@7.4.4':
-    resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
-
-  '@types/babel__traverse@7.20.5':
-    resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==}
-
   '@types/bcryptjs@2.4.6':
     resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==}
 
@@ -4550,12 +4535,6 @@ packages:
     peerDependencies:
       vite: ^4 || ^5
 
-  '@vitejs/plugin-react@4.2.1':
-    resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==}
-    engines: {node: ^14.18.0 || >=16.0.0}
-    peerDependencies:
-      vite: ^4.2.0 || ^5.0.0
-
   '@vitest/expect@1.3.1':
     resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==}
 
@@ -10207,6 +10186,10 @@ packages:
   q@1.5.1:
     resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
     engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+    deprecated: |-
+      You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
+      (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
 
   qrcode-terminal@0.11.0:
     resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==}
@@ -10747,6 +10730,11 @@ packages:
     peerDependencies:
       rollup: ^2.0.0
 
+  rollup@2.78.1:
+    resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==}
+    engines: {node: '>=10.0.0'}
+    hasBin: true
+
   rollup@2.79.1:
     resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
     engines: {node: '>=10.0.0'}
@@ -10771,6 +10759,9 @@ packages:
   run-parallel@1.2.0:
     resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
 
+  rxjs@7.5.7:
+    resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==}
+
   safe-array-concat@1.1.0:
     resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
     engines: {node: '>=0.4'}
@@ -12679,6 +12670,7 @@ snapshots:
       semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
   '@babel/generator@7.23.6':
     dependencies:
@@ -12810,13 +12802,15 @@ snapshots:
       '@babel/helper-simple-access': 7.22.5
       '@babel/helper-split-export-declaration': 7.22.6
       '@babel/helper-validator-identifier': 7.22.20
+    dev: false
 
   '@babel/helper-optimise-call-expression@7.22.5':
     dependencies:
       '@babel/types': 7.24.0
     dev: false
 
-  '@babel/helper-plugin-utils@7.24.0': {}
+  '@babel/helper-plugin-utils@7.24.0':
+    dev: false
 
   '@babel/helper-plugin-utils@7.24.8':
     dev: false
@@ -12894,6 +12888,7 @@ snapshots:
       '@babel/types': 7.24.0
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
   '@babel/highlight@7.23.4':
     dependencies:
@@ -13957,6 +13952,7 @@ snapshots:
     dependencies:
       '@babel/core': 7.24.0
       '@babel/helper-plugin-utils': 7.24.0
+    dev: false
 
   '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9)':
     dependencies:
@@ -13968,6 +13964,7 @@ snapshots:
     dependencies:
       '@babel/core': 7.24.0
       '@babel/helper-plugin-utils': 7.24.0
+    dev: false
 
   '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9)':
     dependencies:
@@ -14546,13 +14543,14 @@ snapshots:
       commander: 12.0.0
     dev: true
 
-  '@crxjs/vite-plugin@1.0.14(vite@5.1.4(@types/node@20.11.20))':
+  '@crxjs/vite-plugin@2.0.0-beta.25':
     dependencies:
       '@rollup/pluginutils': 4.2.1
       '@webcomponents/custom-elements': 1.6.0
       acorn-walk: 8.3.2
       cheerio: 1.0.0-rc.12
       connect-injector: 0.4.4
+      convert-source-map: 1.9.0
       debug: 4.3.4
       es-module-lexer: 0.10.5
       fast-glob: 3.3.2
@@ -14561,10 +14559,8 @@ snapshots:
       magic-string: 0.26.7
       picocolors: 1.0.0
       react-refresh: 0.13.0
-      rollup: 2.79.1
-      vite: 5.1.4(@types/node@20.11.20)
-    optionalDependencies:
-      '@vitejs/plugin-react': 4.2.1(vite@5.1.4(@types/node@20.11.20))
+      rollup: 2.78.1
+      rxjs: 7.5.7
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -17972,7 +17968,7 @@ snapshots:
     dependencies:
       '@trpc/server': 11.0.0-next-beta.308
 
-  '@trpc/next@11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/react-query@11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@11.0.0-next-beta.308)(next@14.1.4(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
+  '@trpc/next@11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/react-query@11.0.0-next-beta.308(@tanstack/react-query@5.24.8(react@18.2.0))(@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308))(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@11.0.0-next-beta.308)(next@14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
     dependencies:
       '@tanstack/react-query': 5.24.8(react@18.2.0)
       '@trpc/client': 11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308)
@@ -18003,35 +17999,6 @@ snapshots:
     dependencies:
       '@types/estree': 1.0.5
 
-  '@types/babel__core@7.20.5':
-    dependencies:
-      '@babel/parser': 7.24.0
-      '@babel/types': 7.24.0
-      '@types/babel__generator': 7.6.8
-      '@types/babel__template': 7.4.4
-      '@types/babel__traverse': 7.20.5
-    dev: true
-    optional: true
-
-  '@types/babel__generator@7.6.8':
-    dependencies:
-      '@babel/types': 7.24.0
-    dev: true
-    optional: true
-
-  '@types/babel__template@7.4.4':
-    dependencies:
-      '@babel/parser': 7.24.0
-      '@babel/types': 7.24.0
-    dev: true
-    optional: true
-
-  '@types/babel__traverse@7.20.5':
-    dependencies:
-      '@babel/types': 7.24.0
-    dev: true
-    optional: true
-
   '@types/bcryptjs@2.4.6':
     dev: true
 
@@ -18594,19 +18561,6 @@ snapshots:
       - '@swc/helpers'
     dev: true
 
-  '@vitejs/plugin-react@4.2.1(vite@5.1.4(@types/node@20.11.20))':
-    dependencies:
-      '@babel/core': 7.24.0
-      '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0)
-      '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0)
-      '@types/babel__core': 7.20.5
-      react-refresh: 0.14.0
-      vite: 5.1.4(@types/node@20.11.20)
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-    optional: true
-
   '@vitest/expect@1.3.1':
     dependencies:
       '@vitest/spy': 1.3.1
@@ -20054,8 +20008,7 @@ snapshots:
   content-type@1.0.5:
     dev: false
 
-  convert-source-map@1.9.0:
-    dev: false
+  convert-source-map@1.9.0: {}
 
   convert-source-map@2.0.0: {}
 
@@ -26799,7 +26752,8 @@ snapshots:
   react-refresh@0.13.0:
     dev: true
 
-  react-refresh@0.14.0: {}
+  react-refresh@0.14.0:
+    dev: false
 
   react-remove-scroll-bar@2.3.5(@types/react@18.2.58)(react@18.2.0):
     dependencies:
@@ -27254,9 +27208,15 @@ snapshots:
       terser: 5.28.1
     dev: false
 
+  rollup@2.78.1:
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
+
   rollup@2.79.1:
     optionalDependencies:
       fsevents: 2.3.3
+    dev: false
 
   rollup@4.12.0:
     dependencies:
@@ -27296,6 +27256,11 @@ snapshots:
     dependencies:
       queue-microtask: 1.2.3
 
+  rxjs@7.5.7:
+    dependencies:
+      tslib: 2.6.2
+    dev: true
+
   safe-array-concat@1.1.0:
     dependencies:
       call-bind: 1.0.7