From 62f4f4a4bce5ea967468661d24395e157ba12d4b Mon Sep 17 00:00:00 2001 From: JOHN Date: Wed, 10 Dec 2025 17:22:18 -0500 Subject: [PATCH] Fix content script build and chrome.storage errors - Build content script as IIFE format (not ES modules) using separate vite config - Add chrome.storage availability check in logger to prevent errors in content scripts - Update package.json build script to run both vite builds --- graphiti-extension.zip | Bin 168478 -> 168587 bytes package.json | 2 +- src/utils/logger.ts | 15 +++++++++++++-- vite.config.ts | 11 +++-------- vite.content.config.ts | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 vite.content.config.ts diff --git a/graphiti-extension.zip b/graphiti-extension.zip index 3070d6d31fe4d24c9b3a2aece326331686c836a6..a3c39d93e922cf364cf937ab906932a196d232d0 100644 GIT binary patch delta 2012 zcmZ9NX*d-68o+1%Gg-%yz3gH_$rjT%LLy2j8Qeyh#8|S0q%4h?gORah`A4p$Ea8yM zt#Ojbmc8g<${yL*#$J{?=bSJ1x$l?vdAH}?KK!!t`5qSVRp_GR?$P2L5&t7-gbX4u zz(v!Jz>7d(qij%28x+#_m*AVYILEa_f6xRYROVinGgupM%wH?1-MGCYjE)T}V!X;yIo;?K^=3rIe8K~r_P0{G@92wXqBmaq)Qi8stet? z-pDv-YqF$HCGxdixVl4q`JpQG(?T|8??84?wSud?Jzi*i*h*HJ#zrD z?qip(s+}r+X`FH|`thT-TUBqP@9DiGu8jxG$~lMACg~GLm#B9$w5A5xf=Z!)( zU+G1(ZcM>Af18kFS;Oh?PmeaD8#~f2uNV=^fic2LlexX*sTD!)>ScJYZBn@sGGZC!RLs?WzoR+Qo$x^=c!#jO6- znkD%~fUR#B#^bw(Gy09|rbjSYRl}~it?PG?3>wSdkvPD6hx!M<1fmXvn#VsQK;PSGGh_-Ok*l<+Uh`ys3E~)L!bc4fCj` zF%y}r)XCI!{Uf98k{-<9s&D4jJztOYOwLn!?fl}&fguJzlBgZh9YV6#U}V!B)%LBHQe3lPI-oWr(qdd@%@HQ6N7@cC%>)9ob-6z@3#Pdq*yeK4>&%1 z?_K+9jA^{ty}8~uc!@b8qj|sSiS=4VqvB86EVzL(zyLVQ4`g5j4VVBI5m-+HM5GUtjRRzq)L{Tyu$+p*I8M+)6Hdng zdt@;*eh8eA(=d;tQ0GqqxNQjJp>jMh;TAFhf1wYOf`RJaL%M0FBHz<9Y=HEVQJ9gTU1Sy3#p)n_(>-*q|_00KPp3lp!twm>_%M-2^~H^{`Mb~3OB2oFe0=6Lhqa56C9YViV`-~1N@@tRox delta 1813 zcmV+w2kQ8Xr3#*;3a~Q+mpEMk5Do+Y8~}52V=q-y2>=6$gHZ#wQ3C;P`wrrWid&%d z!?tn-000ROm(BhG9+xS{0T_Q*ZExE~4E~;9!J#cA8;+88Th}>T-`yfxkrXkyeh32O zEYbEY^2xY6+4WNY_mTG^+iKFLKm)Xvcz5JO@*#OT=yvy@3(v>0#A<s@YuQ z6qS(+gtD4Uq?$l&Whw0n#+8NwN41yQDFS}7yth&r>*9a!b+wQM8W4Z*j*g=SLz_#q zm7){E_IcAjuNklv-oIWeiPy1XAr7@yhNc1LIim49t<(BH9PdSCa9%UXyWQe@;&<9gKqa^@Xz3^ z+XboevMw;7e^C=!TU~#V??5pzm}|5F?3=nQNn$uEP>ue@oG_)eLAbnzc|E#X_2Y8p zUSWMn>WxKFbb`Oam}R94r+lvELRf?=Tm=gQmFv~qVsW6w(!+q!%5Iz(iZODS$d3T{ zeLX5=?sP!vtscKN!Q6+lcO>0OZdf^;qZXDOQDVk9<#<-LioSmiw5C(EVkixygR@xG zmJ%cKE3jJRB&8HvAr(_51gaB(KA%-ZP1$FHnS;{th2#f&dj|)^MKzWakTaJ`jWc3t zK}KsP6ckcZWF3F3AV4vMbkq}@7)JJp*qmt3rp)OM+(1>&c+)#xg6lni*MpZI-ol@d zxQC=iqT`b{r!0TrUnltZ;_QS4{ObgRv$NAPmbeEJt@rk%vZ%-8JnJ7Qt5;6Hl@uu} zW^*EdWlA2A&>`zLKv={9qr%$W6+*l%Dufl!`cSJYRV@`ukh4J|mz5(1l9$A!SceQD zl8Ing;)8U-%dsE!9Bpl(Y`m<;W7Pe|i}MR|^!#Fb*GzwW^1FueKcv-%hlhtpds`b^ zf^?lzsiqx=fdVm=CMzpZa2H5BtZ&U{0;&nx;{Yt}^ta&y$T6fpc}W)0N3{U01;V4K zsd=fl!#(^fXDmf&u7i*#-}D+Asu9+y*VoKuB{;#HlIT3_|Vw_O070?;xu_9sPPxR zO^Cv^)_&6SB-#qq4dF0ifwzX^EB+hu{~8+9{kCK4X!d&@U_f_sfHtMAitDxOt=F!$ zUaQu6yOkCJdLkef%BEx}TM_X3_YU%mpL@+pY3jn$2^*-%|BX0@kVl`m?hrNq!U z#B_iE1{IMx5#g(FL!r4gr_tsvD#or#ccp03&Jv7fsL;cyA&WiZg5pSGW@5m4`5-^P zf9*D{FW~-lNcj3ePA?%N>&qB-XDPlU?#k4sMn2_1mu#~FK7WQJ+2Mv4IZ0GyW3*1(;lyD4Z|U!%w?*swsVarFbOa;Cm*bSbp@fkru@-!|%p%D1iVwEnw;a6Esw z4aN4*a$x+NrPA|7+2^mSnKbyv<|g(umS6U z;fn8Dv;V9h_rhgw=Xyz9@PANC0|d9_1OjPXmpEMk5SLzI0uKR+lTia2mk>(=3YXcC z0uHyJVFHH=m-%i25SKS>0viE|mjQzU7?*%;0tUBnYyyKEmw<5s1PY+_!?tn-000RO zmja0bESGDC0wb4Ei2@n{beC+20%8Kq3zyJ|0$l?35tlED0$Kq8mx_u4Wdf@vm+^`M zVglMOmsN`bRslShtcwC+0ehDYi~?Z--#nLbi~?W>qCWxvb8=&s!GHoNmW=`=0^CEF zCXE750U?)mjRIK$_ePh|jRIN$S(hx10#O2=N|!;80w0&2jsivjXqV-V0$KrSmq3pK zMwj_+0uYy$j{*)5*I)twX=870b1zj?1potymjQzUBA3~a0vZ7qm+_ARRRW-4mq?HT zRRKkpo{$1n0_ { if (chunkInfo.name === 'background') { return 'background.js'; } - if (chunkInfo.name === 'content') { - return 'content.js'; - } if (chunkInfo.name === 'offscreen') { return 'src/offscreen/offscreen.js'; } @@ -66,9 +62,8 @@ export default defineConfig({ }, chunkFileNames: 'assets/[name]-[hash].js', assetFileNames: 'assets/[name]-[hash].[ext]', - format: 'es', // Default format for most files + format: 'es', manualChunks: (id) => { - // Vendor chunks for better caching if (id.includes('node_modules')) { if (id.includes('react') || id.includes('react-dom')) { return 'vendor-react'; diff --git a/vite.content.config.ts b/vite.content.config.ts new file mode 100644 index 0000000..bab8f72 --- /dev/null +++ b/vite.content.config.ts @@ -0,0 +1,32 @@ +import { defineConfig } from 'vite'; +import { resolve } from 'path'; + +// Separate config for content script - must be IIFE format for Chrome extension +export default defineConfig({ + build: { + outDir: 'dist', + sourcemap: true, + minify: 'esbuild', + target: 'es2020', + emptyOutDir: false, // Don't clear the dist folder (main build already created it) + lib: { + entry: resolve(__dirname, 'src/content/content.ts'), + name: 'GraphitiContent', + formats: ['iife'], + fileName: () => 'content.js', + }, + rollupOptions: { + output: { + // Ensure all code is inlined (no external imports) + inlineDynamicImports: true, + // Make sure globals don't conflict + extend: true, + }, + }, + }, + resolve: { + alias: { + '@': resolve(__dirname, './src'), + }, + }, +});