From a31114cfe8b4405e5b958eab0edf2f81032dae24 Mon Sep 17 00:00:00 2001 From: niloy Date: Sat, 18 Jun 2022 23:27:28 +0200 Subject: [PATCH] :fire: Add manifest v2 for firefox --- .eslintignore | 2 ++ .gitignore | 1 + firefox/devtools-panel.html | 15 +++++++++ firefox/devtools.html | 16 +++++++++ firefox/icons/meteor-128.png | Bin 0 -> 2663 bytes firefox/icons/meteor-16.png | Bin 0 -> 1819 bytes firefox/icons/meteor-32.png | Bin 0 -> 1884 bytes firefox/icons/meteor-48.png | Bin 0 -> 1918 bytes firefox/icons/meteor-64.png | Bin 0 -> 2121 bytes firefox/manifest.json | 43 ++++++++++++++++++++++++ firefox/options.html | 15 +++++++++ firefox/popup.html | 15 +++++++++ package.json | 8 ++++- src/Bridge.ts | 11 +++--- src/Browser/Background.ts | 14 ++++---- src/Browser/Content.ts | 6 ++-- src/Browser/DevTools.ts | 4 ++- src/Pages/Panel/Navigation.tsx | 7 ++-- src/Pages/Panel/Sponsor/SponsorHero.tsx | 5 +-- webpack/base.js | 4 +-- webpack/chrome.dev.js | 2 +- webpack/chrome.prod.js | 2 +- webpack/firefox.dev.js | 10 ++++++ webpack/firefox.prod.js | 12 +++++++ 24 files changed, 168 insertions(+), 24 deletions(-) create mode 100644 .eslintignore create mode 100644 firefox/devtools-panel.html create mode 100644 firefox/devtools.html create mode 100644 firefox/icons/meteor-128.png create mode 100644 firefox/icons/meteor-16.png create mode 100644 firefox/icons/meteor-32.png create mode 100644 firefox/icons/meteor-48.png create mode 100644 firefox/icons/meteor-64.png create mode 100644 firefox/manifest.json create mode 100644 firefox/options.html create mode 100644 firefox/popup.html create mode 100644 webpack/firefox.dev.js create mode 100644 webpack/firefox.prod.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..6756e3a --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +chrome/builds +firefox/builds diff --git a/.gitignore b/.gitignore index 40cae16..2c4ff8a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .idea node_modules chrome/build +firefox/build chrome.pem diff --git a/firefox/devtools-panel.html b/firefox/devtools-panel.html new file mode 100644 index 0000000..9be5631 --- /dev/null +++ b/firefox/devtools-panel.html @@ -0,0 +1,15 @@ + + + + + + Panel + + +
+ + + diff --git a/firefox/devtools.html b/firefox/devtools.html new file mode 100644 index 0000000..b5ed703 --- /dev/null +++ b/firefox/devtools.html @@ -0,0 +1,16 @@ + + + + + + Developer Tools + + + + + + + diff --git a/firefox/icons/meteor-128.png b/firefox/icons/meteor-128.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbc4336a45edf6084558e219808e6c435cfb4cb GIT binary patch literal 2663 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 literal 0 HcmV?d00001 diff --git a/firefox/icons/meteor-32.png b/firefox/icons/meteor-32.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d180d0a63c8248f3884c5398d5942c6cc4256f GIT binary patch literal 1884 zcmX|Cc~BE)6yHE2M5L&Q;7L5F2L%s6E-``$#w5F&gNUd&YKL%CMU!BFVkxMYpm^YY zBO;!qP?dl{5fsZU2m(S#g5rsyRfnJ!>DyiEAN%rs@BQBI*qO{~gxFH+;p2xR2x7gA z%ND~glXxu6p|Z15?;(hJe0#RK{%%V}`{>$`B;B{mqe(^zNA> zQViY|6U)*^CO^qNrvA&{G4a>AFIPwPT&v!7MxDgnPUi-kz5TM!P_lf<8`cky7hgpYnA`hT(5ID zH;=LLh$ux@>gcQ5>X@wRo4j88)amFKVS&pvM%R=;KK7Y;v}uGPjvZX1GPjIs+f;+T zj*reW4YY;!mF-)&^5m@zVSRJ+n1|*cr3c-?8?_;}QFq5Wt34Wiy!22sHSmUST-2e< zO^Z5scCPXIM-B6X*$I`I4l{BreKd}TeNIk~#HL;f656UiecYMd>HbEVnya&PJD#y8 z_c0ptmQgCfIVJm=o!TFdbMCL0cCqUo)AP(RIKymo4lp?$~?YzvYP84$FMIdgdQ~86BkhE{1!GZ!Wm$Q_ z`9C#r5-ZtQmyo@qw>3LtRyas%H3yBuo5rLUj*;-Z??j}$+VgOno7{DER)40`80WmK zbms>bKVR_(x|)}LVuEL+*H;&Jg-d?(d(2lHX)5Ynr}gWNyg#Y1<-(U7KV?te#WQ%+ z?pJ;u@l2Dq$I9km^H|Rx9UgyIW^d=7V>_vK@gBdV0&6pF#N^t1uKokl^VmksmYIkA z)0DR(-PK7M2F=Z;s$O2NWD_rQ{$t+SuyRaU0t(7L`v4oh;#b?K{`5A&ic zi)xHtux-kSv-LbvrtN#xY#z(|YIx7TyL%4=&ziq$(7tNG%CCE2^gE-x1OA1GP!Pni zwH+*FvGh3J&gJR^fmMqV3M=|&7DI*WV?Li)LD6=Rs0(;Vj1Cr2w2Nc|i7v62V(tubHpig$dHid@@#(;q!Aq@bG zV1^*n;hRrT7m2{bH(JWWkPQ+~kq@ndNs582RF)x5Di`@OL7hkq9=_p8lkm2wKKLhW zQ&UJs9^gt4lFY!VBQp|7p#!O@1DS}5PmQR6P(f?xZIjYNi>-kIBh?+i$3m3*_ZioUwT&EEaE%pLyD>N;X%TSI* zx7i5Vlwo$WDy*S}FJt=$dDXmmQ1d-9as<0E=j~wPT;D8w>T+4n{>Gs0a0aK$*Pm(m zov&G@$%fuaw>!tH55Jr-b-L}dOC@`+=T3-N=X$pwP3uuWZw`(hzhNo8szveg1yCc) LI2b!8U~Te$SBQI5 literal 0 HcmV?d00001 diff --git a/firefox/icons/meteor-48.png b/firefox/icons/meteor-48.png new file mode 100644 index 0000000000000000000000000000000000000000..2f77d0b4efeee448e74dee62f2f47737a839fc51 GIT binary patch literal 1918 zcmX|Cdo)ye9KR@Jl1gn4#iXn-Gjg7p?Dxt^JN=PzVj|kHq zYg?~KFSb-d4_Rf#pc$2t60PLe+3&sA_Q(Cs@Av(FzMscEXU;vz<+x~Tt<*vgM4QQ= zxx+6Ndo^^Bw^X&GyR*Lv*Z^1?~*PC%<-a? zI}bUGN~aReULPO+KK>@<#;%H%sfPJ4*%`To6V4l6QFsYY$)45n)ysR-c|ry{o=QZ{H8Kuh#3Xl@zFkd5F7ggG!Gt zRQs?$vt4_I!L@a*B0c}iqff*&%-jy9>S^^*)h$JTK3=u;(b!6(^y`Z#qJi|sa^L95 zoZTT6r81Y{#Zxh_v?9mEAxACmpWf}MqWSq8zhJ7M^EK^Vi1trByGt=~dV%u{e?KX2q ztFu9A$iuc1D}6}zVwz>~19!x14t>UxA--5r(tJ78qwA8FTh8*5*5&3IJAcdbq}J^V zeo%dGoyj`3rI)KoMYav8p4wq~;i1XvU0Ukq5x$R`ZkOb=2|~r*fpz(zRb>~Gy!Z9) zsmb*Y50bO3C`$A2SM{|+zmL?G=KOQzoqoKet8nru?SI6xc^^Q z0p&|#R&9L5ob1j(txs7-o5}~$opK_Dwz;F5(srNg$+*3-yj)J!kL)|^@~g0E)!K!Qr<;a_ynQut}0<6t{DIw@p!cP(z=n=I6Zh>8ESyUo=|yf)mrnx(^A}eo3L$ zoL9UFdhl=2>Vmy2$3x+bjms)~#(K6|Q?tA%8U-8vu%65}ntt?Ty|9sM)_LXY_AzC5 zMzxcpL|0GZG!=fLy=%NE_Gx)!!_FH)60;p0HRU(KoIk_K2+k=DqS*&LQ0aO?bu~;t!g4rvI4!XHvizwP} zXV)hXyr$D(rH{pe3NUO1MI|tWj;rf){7Ufja5()Oj+DpiXS1;t4yPCJT&{%8#@J9) z!R3NnABqxJ8HXctcZUksmu_y@3Y*=_;|&52j*-G5n>~oLfyAJ@JHb52<$_QjR1}qQ zx!3_e5Ab*(Ds^)Mw}c8*8H+W*W0I=aa005H%000;)0v->GNwe9+8CHNFOacJ5uqLhx0L%&W@ebG~@KC`RFkmFO z0f1r55QI2<^9kxa9(edhOL&;If#V7C*>x~UFyNKQGRsNi!e1t+W2wQzH#}|<-Zs$( z|CnuJ3hD3zTronN891eQMl30GAT@Eo6A|%=5fKn7XwANDTzYnqkRbSRMd)K-;36l#+}1Q>|Z^HZxEug$IXR?2lKEmRDay(!O4y<~rqZ)owx&*MnsCnoV25=3U%YV xeNOg)Q`76Wkrp^e4b4~TC%^o3?EVa6!TzND1t-sRzTE-R2$RmCRXO^n{s%?Ei*5h_ literal 0 HcmV?d00001 diff --git a/firefox/icons/meteor-64.png b/firefox/icons/meteor-64.png new file mode 100644 index 0000000000000000000000000000000000000000..1864abde3ee2319fd94f2583cd59d0cb9d6e99c3 GIT binary patch literal 2121 zcmX|CdpuNm8$V1kF4<|^7Hy5}RB}nSR`IDRxsAD;nPD`G5Ua9p7q?t1w6v?-*^)cy z^0tzXifyTec6parL&BJGTbGL1O2XFI=bYp1k9p?zd!Fy}z5M<;$vm#}Ds@A31VL6Y zT^t1PzX$t~Nl*)G6Q&Sk#hMs*QMlk>BrQ1f#G#<0fwb`G;6PenRL~&=iIU#he=Op! z&6*!?3!hNU6Xr!)E5q9R8@v?W2S;p=XMJ6m*VJfF4!NCiK&n`}-L=lUAdGfWVH9)fMBNo zVciHRLw%dg$^Mq-4Z$io$JrW3Rx=zKX%{8b8c~CYlyBxqZ#UmlcW0t0$?n8Hk4mzn zb;D{wxpGJsU7yZUF_@~~K21Fkk?O5%q+7A`#@LTZ&A&!h?B98Ctf@-p+*eI0XzE(i zxK1tS2VO6&x4aOmha?BCYP1@k(lVnop7y^<8k9WGv1v^fsjfUJE~sj#uBf{pTrjDX z4fQo}_0hLG!j5(+(Hf=a{W5xrE{VB2|E4;w|0m?R&B=4Ev6IR>UtKz2dwJEWjR8R+C^bcRnzuc(H6Qd z+)j5Jepm6|anHPMJ;5Kmj%0d%cmJnUoASWlW8z{)g8b71rRveY%4bFk+D69Dt})?xkJ~`N>UdE zY!5Xw3h?VVVJ=-5n*RR&rTWap+NkWqPcr%MjiA_E{^v6xd&2^|}9wcC+g%gQTN zO7R&Xh92@9yQ!Q9Qm=6frs4I$dr4z>=DQnj0sX*u_QMg!J9=gc}uzD$zIq^!KK+lV#o+Nr@L?cViDF*1Ld-Ky7K z;wx^yF!q}%-6=k{%*(LUsVLw~Ti$Ruvd~@gtwI0ZwQZ+%B^~SN&#NWRdgaq){Fbi# zqlKYV-#guF{@7BudU0ak#eQ=7sQW3+fHNkM5vEG@)=7h#oPM`jOe;;S`{jpk>&?*c zuG&t~>*OvUqt5qQzxBMiZ&LNTZ0OIja%Y94l^S8!maZ|E&a&A2@$HA}|M=TPCsn1=9iv7!iFQkHBCs znBsK+f^fM*zyLn+_%Onx2>`I+JOBWbLjV96ECL=6i%D}h#2HqAA4~!Owy-9y3joXs z^zjbZCh$VnhUl3R=srjY}^t z5)uSIt_Xb$Ogzi~ISElB+O?D9<* zf>@ehKc%Rvj0k9|hBG;is-w!9O0@M>TPcOm%40h0br(H;)g#vuQ#9ixK5;Wk;=10f zHo?ncu~0iCv4kEfwNEwKMycL*Q{8+6&$6mm{CR??VPmOAeaQXhCMZA)q-WmX>BXpng0gC5mfOieKlQi~`O>U*1ape6Tc x$;u4lhu&RDIqMQPl" + ], + "js": [ + "build/content.js" + ], + "run_at": "document_start", + "all_frames": true + } + ], + "permissions": [ + "https://api.github.com/*", + "https://www.google-analytics.com/*" + ], + "content_security_policy": "script-src 'self'; object-src 'self'", + "web_accessible_resources": [ + "/build/inject.js" + ], + "devtools_page": "devtools.html" +} diff --git a/firefox/options.html b/firefox/options.html new file mode 100644 index 0000000..dbd9616 --- /dev/null +++ b/firefox/options.html @@ -0,0 +1,15 @@ + + + + + + Options + + +
+ + + diff --git a/firefox/popup.html b/firefox/popup.html new file mode 100644 index 0000000..3672cf2 --- /dev/null +++ b/firefox/popup.html @@ -0,0 +1,15 @@ + + + + + + Popup + + + + + + diff --git a/package.json b/package.json index 1fe9635..c0fc5a0 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,9 @@ ], "scripts": { "devapp": "cd devapp && npm run start", - "build": "webpack --config webpack/chrome.prod.js" + "build:chrome": "webpack --config webpack/chrome.prod.js", + "build:firefox": "webpack --config webpack/firefox.prod.js", + "lint": "eslint ." }, "author": "Leonardo Venturini", "license": "MIT", @@ -76,5 +78,9 @@ "volta": { "node": "14.19.3", "yarn": "1.22.18" + }, + "devDependencies": { + "@types/webextension-polyfill": "^0.9.0", + "webextension-polyfill": "^0.9.0" } } diff --git a/src/Bridge.ts b/src/Bridge.ts index bab5c52..932d4cd 100644 --- a/src/Bridge.ts +++ b/src/Bridge.ts @@ -3,6 +3,7 @@ import prettyBytes from 'pretty-bytes' import { PanelStore } from '@/Stores/PanelStore' import { DateTime } from 'luxon' import { StringUtils } from '@/Utils/StringUtils' +import browser from 'webextension-polyfill' export const syncSubscriptions = () => Bridge.sendContentMessage({ @@ -43,21 +44,21 @@ export const Bridge = new (class { source: 'meteor-devtools-evolved', } - if (chrome && chrome.devtools) { - chrome.devtools.inspectedWindow.eval( + if (browser && browser.devtools) { + browser.devtools.inspectedWindow.eval( `__meteor_devtools_evolved_receiveMessage(${JSON.stringify(payload)})`, ) } } chrome() { - const backgroundConnection = chrome.runtime.connect({ + const backgroundConnection = browser.runtime.connect({ name: 'panel', }) backgroundConnection.postMessage({ name: 'init', - tabId: chrome.devtools.inspectedWindow.tabId, + tabId: browser.devtools.inspectedWindow.tabId, }) backgroundConnection.onMessage.addListener((message: Message) => @@ -68,7 +69,7 @@ export const Bridge = new (class { init() { console.log('Setting up bridge...') - if (!chrome || !chrome.devtools) return + if (!browser || !browser.devtools) return this.chrome() diff --git a/src/Browser/Background.ts b/src/Browser/Background.ts index 8b988ce..cc91327 100644 --- a/src/Browser/Background.ts +++ b/src/Browser/Background.ts @@ -1,6 +1,7 @@ import { defer } from 'lodash' +import browser from 'webextension-polyfill' -type Connection = Map +type Connection = Map declare global { interface Window { @@ -15,7 +16,7 @@ const connections: Connection = new Map() self.connections = connections const panelListener = () => { - chrome.runtime.onConnect.addListener(port => { + browser.runtime.onConnect.addListener(port => { console.debug('runtime.onConnect', port) port.onMessage.addListener(request => { @@ -40,7 +41,7 @@ const panelListener = () => { } const tabRemovalListener = () => { - chrome.tabs.onRemoved.addListener(tabId => { + browser.tabs.onRemoved.addListener(tabId => { console.debug('tabs.onRemoved', tabId) if (connections.has(tabId)) { @@ -50,10 +51,10 @@ const tabRemovalListener = () => { }) } -chrome.action.onClicked.addListener(e => { +browser.browserAction.onClicked.addListener(e => { console.debug('action.onClicked', e) - chrome.tabs + browser.tabs .create({ url: 'http://cloud.meteor.com/?utm_source=chrome_extension&utm_medium=extension&utm_campaign=meteor_devtools_evolved', }) @@ -72,7 +73,8 @@ const handleConsole = ( } const contentListener = () => { - chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + // @ts-ignore + browser.runtime.onMessage.addListener((request, sender, sendResponse) => { defer(() => { const tabId = sender?.tab?.id diff --git a/src/Browser/Content.ts b/src/Browser/Content.ts index 3e463ea..ab41cf3 100644 --- a/src/Browser/Content.ts +++ b/src/Browser/Content.ts @@ -1,3 +1,5 @@ +import browser from 'webextension-polyfill' + const messageHandler = (event: MessageEvent) => { // Only accept messages from same frame if (event.source !== window) return @@ -5,12 +7,12 @@ const messageHandler = (event: MessageEvent) => { // Only accept messages that we know are ours if (event.data.source !== 'meteor-devtools-evolved') return - chrome.runtime.sendMessage(event.data) + browser.runtime.sendMessage(event.data) } window.addEventListener('message', messageHandler) -const url = chrome.runtime.getURL('/build/inject.js') +const url = browser.runtime.getURL('/build/inject.js') const script = document.createElement('script') script.setAttribute('type', 'text/javascript') script.setAttribute('src', url) diff --git a/src/Browser/DevTools.ts b/src/Browser/DevTools.ts index 6e3d694..ec8a776 100644 --- a/src/Browser/DevTools.ts +++ b/src/Browser/DevTools.ts @@ -1 +1,3 @@ -chrome.devtools.panels.create('☄️ Meteor', '', 'devtools-panel.html') +import browser from 'webextension-polyfill' + +browser.devtools.panels.create('☄️ Meteor', '', 'devtools-panel.html') diff --git a/src/Pages/Panel/Navigation.tsx b/src/Pages/Panel/Navigation.tsx index a7a9ff2..319edfb 100644 --- a/src/Pages/Panel/Navigation.tsx +++ b/src/Pages/Panel/Navigation.tsx @@ -7,6 +7,7 @@ import { IMenuItem, ITab, TabBar } from '@/Components/TabBar' import { Tag } from '@blueprintjs/core' import { isNumber } from 'lodash' import { useAnalytics } from '@/Utils/Hooks/useAnalytics' +import browser from 'webextension-polyfill' export const Navigation: FunctionComponent = observer(() => { const panelStore = usePanelStore() @@ -63,7 +64,7 @@ export const Navigation: FunctionComponent = observer(() => { key: 'community', content: '👥 Community', handler: () => { - chrome.tabs + browser.tabs .create({ url: 'https://join.slack.com/t/meteor-community/shared_invite/zt-a9lwcfb7-~UwR3Ng6whEqRxcP5rORZw', }) @@ -104,7 +105,7 @@ export const Navigation: FunctionComponent = observer(() => { ), handler: () => { - chrome.tabs + browser.tabs .create({ url: repositoryData.html_url.concat('/issues'), }) @@ -129,7 +130,7 @@ export const Navigation: FunctionComponent = observer(() => { ), shine: true, handler: () => { - chrome.tabs + browser.tabs .create({ url: repositoryData.html_url.concat('/stargazers'), }) diff --git a/src/Pages/Panel/Sponsor/SponsorHero.tsx b/src/Pages/Panel/Sponsor/SponsorHero.tsx index a5fec18..1541613 100644 --- a/src/Pages/Panel/Sponsor/SponsorHero.tsx +++ b/src/Pages/Panel/Sponsor/SponsorHero.tsx @@ -2,6 +2,7 @@ import React, { FC } from 'react' import { StringUtils } from '@/Utils/StringUtils' import { AppToaster } from '@/AppToaster' import MeteorCloudLogo from '@/Assets/meteor-cloud-logo.png' +import browser from 'webextension-polyfill' import '@/Assets/meteor-shower.jpg' @@ -76,7 +77,7 @@ export const SponsorHero: FC = () => {