extension-develop 2.0.0-alpha.1 → 2.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/dist/ensure-hmr-for-scripts.js +2 -2
  2. package/dist/extensions/{manager-extension → chrome-manager-extension}/background.js +1 -1
  3. package/dist/extensions/{manager-extension → chrome-manager-extension}/manifest.json +2 -2
  4. package/dist/extensions/{manager-extension → chrome-manager-extension}/reload-service.js +10 -8
  5. package/dist/extensions/chromium-manager-extension/background.js +58 -0
  6. package/dist/extensions/chromium-manager-extension/define-initial-tab.js +67 -0
  7. package/dist/extensions/chromium-manager-extension/manifest.json +17 -0
  8. package/dist/extensions/chromium-manager-extension/pages/welcome.js +34 -0
  9. package/dist/extensions/chromium-manager-extension/reload-service.js +145 -0
  10. package/dist/extensions/edge-manager-extension/background.js +58 -0
  11. package/dist/extensions/edge-manager-extension/define-initial-tab.js +67 -0
  12. package/dist/extensions/edge-manager-extension/manifest.json +17 -0
  13. package/dist/extensions/edge-manager-extension/pages/sakura-dark.css +268 -0
  14. package/dist/extensions/edge-manager-extension/pages/sakura.css +267 -0
  15. package/dist/extensions/edge-manager-extension/pages/welcome.html +49 -0
  16. package/dist/extensions/edge-manager-extension/pages/welcome.js +34 -0
  17. package/dist/extensions/edge-manager-extension/public/logo.png +0 -0
  18. package/dist/extensions/edge-manager-extension/reload-service.js +145 -0
  19. package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/background.js +5 -16
  20. package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/define-initial-tab.js +17 -12
  21. package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/manifest.json +2 -2
  22. package/dist/extensions/firefox-manager-extension/pages/sakura-dark.css +268 -0
  23. package/dist/extensions/firefox-manager-extension/pages/sakura.css +267 -0
  24. package/dist/extensions/firefox-manager-extension/pages/welcome.html +49 -0
  25. package/dist/extensions/firefox-manager-extension/public/logo.png +0 -0
  26. package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/reload-service.js +1 -1
  27. package/dist/inject-chromium-client-loader.js +2 -2
  28. package/dist/inject-content-css-during-dev.js +3 -3
  29. package/dist/inject-firefox-client-loader.js +38 -43
  30. package/dist/minimum-firefox-file.mjs +1 -1
  31. package/dist/module.js +81 -85
  32. package/dist/resolver-module.js +1 -1
  33. package/dist/run-chrome-profile/Default/BrowsingTopicsState +3 -3
  34. package/dist/run-chrome-profile/Default/Cache/Cache_Data/15145040f7f12f31_0 +0 -0
  35. package/dist/run-chrome-profile/Default/Cache/Cache_Data/878b0f723bb46fc9_0 +0 -0
  36. package/dist/run-chrome-profile/Default/Cache/Cache_Data/93d81321f8c35eab_0 +0 -0
  37. package/dist/run-chrome-profile/Default/Cache/Cache_Data/e85ac8952d7783d7_0 +0 -0
  38. package/dist/run-chrome-profile/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
  39. package/dist/run-chrome-profile/Default/Code Cache/js/0861135386d2c738_0 +0 -0
  40. package/dist/run-chrome-profile/Default/Code Cache/js/218fe828c74bdb99_0 +0 -0
  41. package/dist/run-chrome-profile/Default/Code Cache/js/a8bfd7ab3bf7adbd_0 +0 -0
  42. package/dist/run-chrome-profile/Default/Code Cache/js/index-dir/the-real-index +0 -0
  43. package/dist/run-chrome-profile/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
  44. package/dist/run-chrome-profile/Default/Cookies +0 -0
  45. package/dist/run-chrome-profile/Default/DIPS +0 -0
  46. package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_1 +0 -0
  47. package/dist/run-chrome-profile/Default/DawnGraphiteCache/index +0 -0
  48. package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_1 +0 -0
  49. package/dist/run-chrome-profile/Default/DawnWebGPUCache/index +0 -0
  50. package/dist/run-chrome-profile/Default/Extension Rules/000003.log +0 -0
  51. package/dist/run-chrome-profile/Default/Extension Rules/LOG +3 -3
  52. package/dist/run-chrome-profile/Default/Extension Rules/LOG.old +3 -3
  53. package/dist/run-chrome-profile/Default/Extension Scripts/000003.log +0 -0
  54. package/dist/run-chrome-profile/Default/Extension Scripts/LOG +3 -3
  55. package/dist/run-chrome-profile/Default/Extension Scripts/LOG.old +3 -3
  56. package/dist/run-chrome-profile/Default/Extension State/000003.log +0 -0
  57. package/dist/run-chrome-profile/Default/Extension State/LOG +3 -3
  58. package/dist/run-chrome-profile/Default/Extension State/LOG.old +3 -3
  59. package/dist/run-chrome-profile/Default/Favicons +0 -0
  60. package/dist/run-chrome-profile/Default/GPUCache/data_0 +0 -0
  61. package/dist/run-chrome-profile/Default/GPUCache/data_1 +0 -0
  62. package/dist/run-chrome-profile/Default/GPUCache/data_2 +0 -0
  63. package/dist/run-chrome-profile/Default/GPUCache/index +0 -0
  64. package/dist/run-chrome-profile/Default/History +0 -0
  65. package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/000003.log +0 -0
  66. package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG +3 -3
  67. package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG.old +3 -3
  68. package/dist/run-chrome-profile/Default/Local Storage/leveldb/000003.log +0 -0
  69. package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOG +3 -3
  70. package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOG.old +3 -3
  71. package/dist/run-chrome-profile/Default/Network Persistent State +1 -1
  72. package/dist/run-chrome-profile/Default/Platform Notifications/LOG +3 -3
  73. package/dist/run-chrome-profile/Default/Platform Notifications/LOG.old +2 -3
  74. package/dist/run-chrome-profile/Default/Preferences +1 -1
  75. package/dist/run-chrome-profile/Default/Reporting and NEL and b/package/dist/run-chrome-profile/Default/Reporting → NEL +0 -0
  76. package/dist/run-chrome-profile/Default/Secure Preferences +1 -1
  77. package/dist/run-chrome-profile/Default/Service Worker/Database/000003.log +0 -0
  78. package/dist/run-chrome-profile/Default/Service Worker/Database/LOG +3 -3
  79. package/dist/run-chrome-profile/Default/Service Worker/Database/LOG.old +3 -3
  80. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/{297ecea5cebb5dfe_0 → 08b99d499107ba17_0} +0 -0
  81. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2a0afd649b00527b_0 +0 -0
  82. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/{2cc80dabc69f58b6_0 → 67a473248953641b_0} +0 -0
  83. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/67a473248953641b_1 +0 -0
  84. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/{013888a1cda32b90_0 → 7b4fd8111178d5b1_0} +0 -0
  85. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/d0757ff92c7cde0a_0 +0 -0
  86. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/d0757ff92c7cde0a_1 +0 -0
  87. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
  88. package/dist/run-chrome-profile/Default/Session Storage/000003.log +0 -0
  89. package/dist/run-chrome-profile/Default/Session Storage/LOG +3 -3
  90. package/dist/run-chrome-profile/Default/Session Storage/LOG.old +3 -3
  91. package/dist/run-chrome-profile/Default/Sessions/Session_13369796364394711 +0 -0
  92. package/dist/run-chrome-profile/Default/Sessions/Session_13369796396690736 +0 -0
  93. package/dist/run-chrome-profile/Default/Sessions/Tabs_13369796364895748 +0 -0
  94. package/dist/run-chrome-profile/Default/Sessions/Tabs_13369796397211431 +0 -0
  95. package/dist/run-chrome-profile/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
  96. package/dist/run-chrome-profile/Default/Site Characteristics Database/LOG +3 -3
  97. package/dist/run-chrome-profile/Default/Site Characteristics Database/LOG.old +3 -3
  98. package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOG +3 -3
  99. package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOG.old +3 -3
  100. package/dist/run-chrome-profile/Default/TransportSecurity +1 -1
  101. package/dist/run-chrome-profile/Default/Visited Links +0 -0
  102. package/dist/run-chrome-profile/Default/Web Data +0 -0
  103. package/dist/run-chrome-profile/Default/WebStorage/QuotaManager +0 -0
  104. package/dist/run-chrome-profile/Default/shared_proto_db/000003.log +0 -0
  105. package/dist/run-chrome-profile/Default/shared_proto_db/LOG +3 -3
  106. package/dist/run-chrome-profile/Default/shared_proto_db/LOG.old +3 -3
  107. package/dist/run-chrome-profile/Default/shared_proto_db/metadata/000003.log +0 -0
  108. package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOG +3 -3
  109. package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOG.old +3 -3
  110. package/dist/run-chrome-profile/GrShaderCache/data_0 +0 -0
  111. package/dist/run-chrome-profile/GrShaderCache/data_1 +0 -0
  112. package/dist/run-chrome-profile/GrShaderCache/data_2 +0 -0
  113. package/dist/run-chrome-profile/GrShaderCache/data_3 +0 -0
  114. package/dist/run-chrome-profile/GrShaderCache/index +0 -0
  115. package/dist/run-chrome-profile/GraphiteDawnCache/data_1 +0 -0
  116. package/dist/run-chrome-profile/GraphiteDawnCache/index +0 -0
  117. package/dist/run-chrome-profile/Last Version +1 -1
  118. package/dist/run-chrome-profile/Local State +1 -1
  119. package/dist/run-chrome-profile/ShaderCache/data_0 +0 -0
  120. package/dist/run-chrome-profile/ShaderCache/data_1 +0 -0
  121. package/dist/run-chrome-profile/ShaderCache/data_2 +0 -0
  122. package/dist/run-chrome-profile/ShaderCache/index +0 -0
  123. package/dist/run-chrome-profile/first_party_sets.db +0 -0
  124. package/dist/run-chrome-profile/optimization_guide_model_store/32/E6DC4029A1E4B4C1/616740573B202A03/model-info.pb +0 -0
  125. package/dist/run-chrome-profile/optimization_guide_model_store/32/E6DC4029A1E4B4C1/616740573B202A03/model.tflite +0 -0
  126. package/dist/run-chrome-profile/segmentation_platform/ukm_db +0 -0
  127. package/dist/run-chrome-profile/segmentation_platform/ukm_db-journal +0 -0
  128. package/package.json +3 -2
  129. package/dist/run-chrome-profile/Default/Cache/Cache_Data/036e8d82a2523a26_0 +0 -0
  130. package/dist/run-chrome-profile/Default/Cache/Cache_Data/257b9ada9582cd59_0 +0 -0
  131. package/dist/run-chrome-profile/Default/Cache/Cache_Data/8259bc2d7356bc5d_0 +0 -0
  132. package/dist/run-chrome-profile/Default/Cache/Cache_Data/c2880d01d9ca0897_0 +0 -0
  133. package/dist/run-chrome-profile/Default/Cache/Cache_Data/c52888c9a6d22991_0 +0 -0
  134. package/dist/run-chrome-profile/Default/Cache/Cache_Data/c7fae7b7f9b7a0bf_0 +0 -0
  135. package/dist/run-chrome-profile/Default/Code Cache/js/0ad47d0a74641b22_0 +0 -0
  136. package/dist/run-chrome-profile/Default/Code Cache/js/0fbcafeba7a5c5ed_0 +0 -0
  137. package/dist/run-chrome-profile/Default/Code Cache/js/195a67332db1fb6b_0 +0 -0
  138. package/dist/run-chrome-profile/Default/Code Cache/js/27866c80f227a32a_0 +0 -0
  139. package/dist/run-chrome-profile/Default/Code Cache/js/27e56546e417a182_0 +0 -0
  140. package/dist/run-chrome-profile/Default/Code Cache/js/3faea91e5564d655_0 +0 -0
  141. package/dist/run-chrome-profile/Default/Code Cache/js/4a213402db3f97ee_0 +0 -0
  142. package/dist/run-chrome-profile/Default/Code Cache/js/4c7708679c89a020_0 +0 -0
  143. package/dist/run-chrome-profile/Default/Code Cache/js/4ed8840c82a10bf8_0 +0 -0
  144. package/dist/run-chrome-profile/Default/Code Cache/js/5d469b2e72dff033_0 +0 -0
  145. package/dist/run-chrome-profile/Default/Code Cache/js/73ae4e72d479b847_0 +0 -0
  146. package/dist/run-chrome-profile/Default/Code Cache/js/95b17471b8555b5b_0 +0 -0
  147. package/dist/run-chrome-profile/Default/Code Cache/js/992c26a30322831b_0 +0 -0
  148. package/dist/run-chrome-profile/Default/Code Cache/js/a1bc84ca2dc9c9d8_0 +0 -0
  149. package/dist/run-chrome-profile/Default/Code Cache/js/af02e9170bb433a3_0 +0 -0
  150. package/dist/run-chrome-profile/Default/Code Cache/js/b5dc0ad71f1c8f44_0 +0 -0
  151. package/dist/run-chrome-profile/Default/Code Cache/js/b94fbb70162d5d28_0 +0 -0
  152. package/dist/run-chrome-profile/Default/Code Cache/js/baf8a70daa2269f3_0 +0 -0
  153. package/dist/run-chrome-profile/Default/Code Cache/js/be54fe001d56ed5d_0 +0 -0
  154. package/dist/run-chrome-profile/Default/Code Cache/js/c47232f2c415ea6f_0 +0 -0
  155. package/dist/run-chrome-profile/Default/Code Cache/js/d158ea025ea94688_0 +0 -0
  156. package/dist/run-chrome-profile/Default/Code Cache/js/d6eff9c5bab69b0a_0 +0 -0
  157. package/dist/run-chrome-profile/Default/Code Cache/js/dd2a2093670eef0f_0 +0 -0
  158. package/dist/run-chrome-profile/Default/Code Cache/js/e321489c3c662b3e_0 +0 -0
  159. package/dist/run-chrome-profile/Default/Code Cache/js/e658e73784a6d0b9_0 +0 -0
  160. package/dist/run-chrome-profile/Default/Code Cache/js/e9fbecf364affa6a_0 +0 -0
  161. package/dist/run-chrome-profile/Default/Code Cache/js/edcd059a7c35480a_0 +0 -0
  162. package/dist/run-chrome-profile/Default/Code Cache/js/f1fadc4174aa146d_0 +0 -0
  163. package/dist/run-chrome-profile/Default/Code Cache/js/f51fbbddfd2d7633_0 +0 -0
  164. package/dist/run-chrome-profile/Default/Code Cache/js/f90e2f63985a5ce0_0 +0 -0
  165. package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_1 +0 -0
  166. package/dist/run-chrome-profile/Default/Sessions/Session_13368811062401121 +0 -0
  167. package/dist/run-chrome-profile/Default/Sessions/Session_13368811144592394 +0 -0
  168. package/dist/run-chrome-profile/Default/Sessions/Tabs_13368811062857759 +0 -0
  169. package/dist/run-chrome-profile/Default/Sessions/Tabs_13368811145119608 +0 -0
  170. package/dist/types/css-content.d.ts +0 -7
  171. package/dist/types/css-modules.d.ts +0 -19
  172. package/dist/types/images.d.ts +0 -58
  173. package/dist/types/index.d.ts +0 -13
  174. package/dist/types/index.ts +0 -7
  175. package/dist/types/polyfill.d.ts +0 -1
  176. /package/dist/extensions/{manager-extension → chrome-manager-extension}/define-initial-tab.js +0 -0
  177. /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/pages/sakura-dark.css +0 -0
  178. /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/pages/sakura.css +0 -0
  179. /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/pages/welcome.html +0 -0
  180. /package/dist/extensions/{manager-extension → chrome-manager-extension}/pages/welcome.js +0 -0
  181. /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/public/logo.png +0 -0
  182. /package/dist/extensions/{manager-extension → chromium-manager-extension}/pages/sakura-dark.css +0 -0
  183. /package/dist/extensions/{manager-extension → chromium-manager-extension}/pages/sakura.css +0 -0
  184. /package/dist/extensions/{manager-extension → chromium-manager-extension}/pages/welcome.html +0 -0
  185. /package/dist/extensions/{manager-extension → chromium-manager-extension}/public/logo.png +0 -0
  186. /package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/pages/welcome.js +0 -0
  187. /package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/{A2FF726319EAE26F → 7FB2BED5F58D342A}/model-info.pb +0 -0
  188. /package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/{A2FF726319EAE26F → 7FB2BED5F58D342A}/model.tflite +0 -0
  189. /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{DD2F3F59DBBFC161 → E2AEF611C74078E8}/VERSION.txt +0 -0
  190. /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{DD2F3F59DBBFC161 → E2AEF611C74078E8}/model-info.pb +0 -0
  191. /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{DD2F3F59DBBFC161 → E2AEF611C74078E8}/model.tflite +0 -0
  192. /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{DD2F3F59DBBFC161 → E2AEF611C74078E8}/override_list.pb.gz +0 -0
  193. /package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/{5C9CEB1B5864C075 → D87E159693F0EB16}/model-info.pb +0 -0
  194. /package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/{5C9CEB1B5864C075 → D87E159693F0EB16}/model.tflite +0 -0
  195. /package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/{53F9D90C8266B357 → 34B03CEAE0058949}/model-info.pb +0 -0
  196. /package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/{53F9D90C8266B357 → 34B03CEAE0058949}/model.tflite +0 -0
  197. /package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/{D93CB2CBA8635DD6 → 758FC3BEFF3CA2C1}/model-info.pb +0 -0
  198. /package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/{D93CB2CBA8635DD6 → 758FC3BEFF3CA2C1}/model.tflite +0 -0
  199. /package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/{D93CB2CBA8635DD6 → 758FC3BEFF3CA2C1}/visual_model_desktop.tflite +0 -0
  200. /package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/{39FB7D5ADBDA7869 → 8D7B8C555280B305}/model-info.pb +0 -0
  201. /package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/{39FB7D5ADBDA7869 → 8D7B8C555280B305}/model.tflite +0 -0
  202. /package/dist/run-chrome-profile/optimization_guide_model_store/31/E6DC4029A1E4B4C1/{78ED3668E901D315 → 8268F35943871DCC}/model-info.pb +0 -0
  203. /package/dist/run-chrome-profile/optimization_guide_model_store/31/E6DC4029A1E4B4C1/{78ED3668E901D315 → 8268F35943871DCC}/model.tflite +0 -0
  204. /package/dist/run-chrome-profile/optimization_guide_model_store/34/E6DC4029A1E4B4C1/{9C601F6F58B4BB6D → 07A53CCB3617518F}/model-info.pb +0 -0
  205. /package/dist/run-chrome-profile/optimization_guide_model_store/34/E6DC4029A1E4B4C1/{9C601F6F58B4BB6D → 07A53CCB3617518F}/model.tflite +0 -0
  206. /package/dist/run-chrome-profile/optimization_guide_model_store/40/E6DC4029A1E4B4C1/{D4BFFC1A4F34F105 → D09D4C34287503EC}/model-info.pb +0 -0
  207. /package/dist/run-chrome-profile/optimization_guide_model_store/40/E6DC4029A1E4B4C1/{D4BFFC1A4F34F105 → D09D4C34287503EC}/model.tflite +0 -0
  208. /package/dist/run-chrome-profile/optimization_guide_model_store/40/E6DC4029A1E4B4C1/{D4BFFC1A4F34F105 → D09D4C34287503EC}/ts.bin +0 -0
  209. /package/dist/run-chrome-profile/optimization_guide_model_store/40/E6DC4029A1E4B4C1/{D4BFFC1A4F34F105 → D09D4C34287503EC}/ts_spm.model +0 -0
  210. /package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/{3D618C218E10133D → 74D0A314A35DB18B}/model-info.pb +0 -0
  211. /package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/{3D618C218E10133D → 74D0A314A35DB18B}/model.tflite +0 -0
@@ -0,0 +1,145 @@
1
+ const TEN_SECONDS_MS = 10 * 1000
2
+ let webSocket = null
3
+
4
+ export async function connect() {
5
+ if (webSocket) {
6
+ // If already connected, do nothing
7
+ return
8
+ }
9
+
10
+ webSocket = new WebSocket('ws://localhost:__RELOAD_PORT__')
11
+
12
+ webSocket.onerror = (event) => {
13
+ console.error(`[Reload Service] Connection error: ${JSON.stringify(event)}`)
14
+ webSocket.close()
15
+ }
16
+
17
+ webSocket.onopen = () => {
18
+ console.info(`[Reload Service] Connection opened.`)
19
+ }
20
+
21
+ webSocket.onmessage = async (event) => {
22
+ const message = JSON.parse(event.data)
23
+
24
+ if (message.status === 'serverReady') {
25
+ console.info('[Reload Service] Connection ready.')
26
+ await requestInitialLoadData()
27
+ }
28
+
29
+ if (message.changedFile) {
30
+ console.info(
31
+ `[Reload Service] Changes detected on ${message.changedFile}. Reloading extension...`
32
+ )
33
+
34
+ await messageAllExtensions(message.changedFile)
35
+ }
36
+ }
37
+
38
+ webSocket.onclose = () => {
39
+ console.info('[Reload Service] Connection closed.')
40
+ webSocket = null
41
+ }
42
+ }
43
+
44
+ export function disconnect() {
45
+ if (webSocket) {
46
+ webSocket.close()
47
+ }
48
+ }
49
+
50
+ async function getDevExtensions() {
51
+ const allExtensions = await new Promise((resolve) => {
52
+ chrome.management.getAll(resolve)
53
+ })
54
+
55
+ return allExtensions.filter((extension) => {
56
+ return (
57
+ // Do not include itself
58
+ extension.id !== chrome.runtime.id &&
59
+ // Manager extension
60
+ extension.id !== 'hkklidinfhnfidkjiknmmbmcloigimco' &&
61
+ // Show only unpackaged extensions
62
+ extension.installType === 'development'
63
+ )
64
+ })
65
+ }
66
+
67
+ async function messageAllExtensions(changedFile) {
68
+ // Check if the external extension is ready
69
+ const isExtensionReady = await checkExtensionReadiness()
70
+
71
+ if (isExtensionReady) {
72
+ const devExtensions = await getDevExtensions()
73
+ const reloadAll = devExtensions.map((extension) => {
74
+ chrome.runtime.sendMessage(extension.id, {changedFile}, (response) => {
75
+ if (response) {
76
+ console.info('[Reload Service] Extension reloaded and ready.')
77
+ }
78
+ })
79
+
80
+ return true
81
+ })
82
+
83
+ await Promise.all(reloadAll)
84
+ } else {
85
+ console.info('[Reload Service] External extension is not ready.')
86
+ }
87
+ }
88
+
89
+ async function requestInitialLoadData() {
90
+ const devExtensions = await getDevExtensions()
91
+
92
+ const messagePromises = devExtensions.map(async (extension) => {
93
+ return await new Promise((resolve) => {
94
+ chrome.runtime.sendMessage(
95
+ extension.id,
96
+ {initialLoadData: true},
97
+ (response) => {
98
+ if (chrome.runtime.lastError) {
99
+ console.error(
100
+ `Error sending message to ${extension.id}: ${chrome.runtime.lastError.message}`
101
+ )
102
+ resolve(null)
103
+ } else {
104
+ resolve(response)
105
+ }
106
+ }
107
+ )
108
+ })
109
+ })
110
+
111
+ const responses = await Promise.all(messagePromises)
112
+
113
+ // We received the info from the use extension.
114
+ // All good, client is ready. Inform the server.
115
+ if (webSocket && webSocket.readyState === WebSocket.OPEN) {
116
+ const message = JSON.stringify({
117
+ status: 'clientReady',
118
+ data: responses[0]
119
+ })
120
+
121
+ webSocket.send(message)
122
+ }
123
+ }
124
+
125
+ async function checkExtensionReadiness() {
126
+ // Delay for 1 second
127
+ await delay(1000)
128
+ // Assume the extension is ready
129
+ return true
130
+ }
131
+
132
+ async function delay(ms) {
133
+ return await new Promise((resolve) => setTimeout(resolve, ms))
134
+ }
135
+
136
+ export function keepAlive() {
137
+ const keepAliveIntervalId = setInterval(() => {
138
+ if (webSocket) {
139
+ webSocket.send(JSON.stringify({status: 'ping'}))
140
+ console.info('[Reload Service] Listening for changes...')
141
+ } else {
142
+ clearInterval(keepAliveIntervalId)
143
+ }
144
+ }, TEN_SECONDS_MS)
145
+ }
@@ -1,4 +1,4 @@
1
- import {createFirefoxAddonsTab, handleFirstRun} from './define-initial-tab.js'
1
+ import {handleFirstRun} from './define-initial-tab.js'
2
2
  import {connect, disconnect} from './reload-service.js'
3
3
 
4
4
  function bgGreen(str) {
@@ -31,32 +31,21 @@ async function handleTabOnExtensionLoad() {
31
31
  ██████████████████████████ ████████████████████████████
32
32
  ██████████████████████████████████████████████████████████
33
33
  ██████████████████████████████████████████████████████████
34
+ MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js Authors.
34
35
  `,
35
36
  bgGreen('')
36
37
  )
37
38
 
38
39
  try {
39
- const [initialTab] = await browser.tabs.query({
40
- active: true,
41
- currentWindow: true
42
- })
43
-
44
- if (
45
- initialTab.url === 'about:blank' ||
46
- initialTab.url === 'about:welcome'
47
- ) {
48
- await handleFirstRun()
49
- } else {
50
- await createFirefoxAddonsTab(initialTab, 'about:blank')
51
- }
40
+ await handleFirstRun()
52
41
  } catch (error) {
53
42
  console.error('Error handling tabs on extension load:', error)
54
43
  }
55
44
  }
56
45
 
57
- handleTabOnExtensionLoad().catch(console.error)
58
-
59
46
  browser.runtime.onInstalled.addListener(async () => {
47
+ await handleTabOnExtensionLoad()
48
+
60
49
  let isConnected = false
61
50
 
62
51
  if (isConnected) {
@@ -3,19 +3,15 @@ async function getDevExtension() {
3
3
 
4
4
  return allExtensions.filter((extension) => {
5
5
  return (
6
- // Do not include itself
7
- extension.id !== browser.runtime.id &&
8
6
  // Reload extension
9
- extension.name !== 'Reload Service' &&
7
+ extension.name !== 'Extension Manager' &&
10
8
  // Show only unpackaged extensions
11
9
  extension.installType === 'development'
12
10
  )
13
- })
11
+ })[0]
14
12
  }
15
13
 
16
14
  // Create a new tab and set it to background.
17
- // We want the user-selected page to be active,
18
- // not about:blank.
19
15
  export async function createFirefoxAddonsTab(initialTab, url) {
20
16
  try {
21
17
  // Check if an about:blank tab is already open
@@ -41,17 +37,26 @@ export async function createFirefoxAddonsTab(initialTab, url) {
41
37
 
42
38
  // Function to handle first run logic
43
39
  export async function handleFirstRun() {
44
- // browser.tabs.update({url: 'about://debugging/'})
40
+ try {
41
+ const devExtension = await getDevExtension()
42
+
43
+ if (!devExtension) {
44
+ console.warn('No development extensions found')
45
+ return
46
+ }
45
47
 
46
- const devExtension = await getDevExtension()
48
+ const result = await browser.storage.local.get(devExtension.id)
47
49
 
48
- browser.storage.local.get(devExtension.id, (result) => {
49
50
  if (result[devExtension.id] && result[devExtension.id].didRun) {
50
51
  return
51
52
  }
52
53
 
53
- browser.tabs.create({url: './pages/welcome.html'})
54
+ // Open the welcome page
55
+ await browser.tabs.create({url: './pages/welcome.html'})
56
+
54
57
  // Ensure the welcome page shows only once per extension installation
55
- browser.storage.local.set({[devExtension.id]: {didRun: true}})
56
- })
58
+ await browser.storage.local.set({[devExtension.id]: {didRun: true}})
59
+ } catch (error) {
60
+ console.error('Error handling tabs on extension load:', error)
61
+ }
57
62
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "Extension.js Developer Tools (Firefox)",
3
- "description": "Utility for developers to manage their extensions using Firefox.",
2
+ "name": "Extension Manager",
3
+ "description": "Extension.js developer tools for tabs and reload management.",
4
4
  "version": "1.0",
5
5
  "manifest_version": 2,
6
6
  "background": {
@@ -0,0 +1,268 @@
1
+ /* $color-text: #dedce5; */
2
+ /* Sakura.css v1.5.0
3
+ * ================
4
+ * Minimal css theme.
5
+ * Project: https://github.com/oxalorg/sakura/
6
+ */
7
+ /* Body */
8
+ html {
9
+ font-size: 62.5%;
10
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
11
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
12
+ }
13
+
14
+ body {
15
+ font-size: 1.8rem;
16
+ line-height: 1.618;
17
+ max-width: 38em;
18
+ margin: auto;
19
+ color: #c9c9c9;
20
+ background-color: #222222;
21
+ padding: 13px;
22
+ }
23
+
24
+ @media (max-width: 684px) {
25
+ body {
26
+ font-size: 1.53rem;
27
+ }
28
+ }
29
+ @media (max-width: 382px) {
30
+ body {
31
+ font-size: 1.35rem;
32
+ }
33
+ }
34
+ h1,
35
+ h2,
36
+ h3,
37
+ h4,
38
+ h5,
39
+ h6 {
40
+ line-height: 1.1;
41
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
42
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
43
+ font-weight: 700;
44
+ margin-top: 3rem;
45
+ margin-bottom: 1.5rem;
46
+ overflow-wrap: break-word;
47
+ word-wrap: break-word;
48
+ -ms-word-break: break-all;
49
+ word-break: break-word;
50
+ }
51
+
52
+ h1 {
53
+ font-size: 2.35em;
54
+ }
55
+
56
+ h2 {
57
+ font-size: 2em;
58
+ }
59
+
60
+ h3 {
61
+ font-size: 1.75em;
62
+ }
63
+
64
+ h4 {
65
+ font-size: 1.5em;
66
+ }
67
+
68
+ h5 {
69
+ font-size: 1.25em;
70
+ }
71
+
72
+ h6 {
73
+ font-size: 1em;
74
+ }
75
+
76
+ p {
77
+ margin-top: 0px;
78
+ margin-bottom: 2.5rem;
79
+ }
80
+
81
+ small,
82
+ sub,
83
+ sup {
84
+ font-size: 75%;
85
+ }
86
+
87
+ hr {
88
+ border-color: #ffffff;
89
+ }
90
+
91
+ a {
92
+ text-decoration: none;
93
+ color: #ffffff;
94
+ }
95
+ a:visited {
96
+ color: #e6e6e6;
97
+ }
98
+ a:hover {
99
+ color: #c9c9c9;
100
+ border-bottom: 2px solid #c9c9c9;
101
+ }
102
+
103
+ ul {
104
+ padding-left: 1.4em;
105
+ margin-top: 0px;
106
+ margin-bottom: 2.5rem;
107
+ }
108
+
109
+ li {
110
+ margin-bottom: 0.4em;
111
+ }
112
+
113
+ blockquote {
114
+ margin-left: 0px;
115
+ margin-right: 0px;
116
+ padding-left: 1em;
117
+ padding-top: 0.8em;
118
+ padding-bottom: 0.8em;
119
+ padding-right: 0.8em;
120
+ border-left: 5px solid #ffffff;
121
+ margin-bottom: 2.5rem;
122
+ background-color: #4a4a4a;
123
+ }
124
+
125
+ blockquote p {
126
+ margin-bottom: 0;
127
+ }
128
+
129
+ img,
130
+ video {
131
+ height: auto;
132
+ max-width: 100%;
133
+ margin-top: 0px;
134
+ margin-bottom: 2.5rem;
135
+ }
136
+
137
+ /* Pre and Code */
138
+ pre {
139
+ background-color: #4a4a4a;
140
+ display: block;
141
+ padding: 1em;
142
+ overflow-x: auto;
143
+ margin-top: 0px;
144
+ margin-bottom: 2.5rem;
145
+ font-size: 0.9em;
146
+ }
147
+
148
+ code,
149
+ kbd,
150
+ samp {
151
+ font-size: 0.9em;
152
+ padding: 0 0.5em;
153
+ background-color: #4a4a4a;
154
+ white-space: pre-wrap;
155
+ }
156
+
157
+ pre > code {
158
+ padding: 0;
159
+ background-color: transparent;
160
+ white-space: pre;
161
+ font-size: 1em;
162
+ }
163
+
164
+ /* Tables */
165
+ table {
166
+ text-align: justify;
167
+ width: 100%;
168
+ border-collapse: collapse;
169
+ margin-bottom: 2rem;
170
+ }
171
+
172
+ td,
173
+ th {
174
+ padding: 0.5em;
175
+ border-bottom: 1px solid #4a4a4a;
176
+ }
177
+
178
+ /* Buttons, forms and input */
179
+ input,
180
+ textarea {
181
+ border: 1px solid #c9c9c9;
182
+ }
183
+ input:focus,
184
+ textarea:focus {
185
+ border: 1px solid #ffffff;
186
+ }
187
+
188
+ textarea {
189
+ width: 100%;
190
+ }
191
+
192
+ .button,
193
+ button,
194
+ input[type='submit'],
195
+ input[type='reset'],
196
+ input[type='button'],
197
+ input[type='file']::file-selector-button {
198
+ display: inline-block;
199
+ padding: 5px 10px;
200
+ text-align: center;
201
+ text-decoration: none;
202
+ white-space: nowrap;
203
+ background-color: #ffffff;
204
+ color: #222222;
205
+ border-radius: 1px;
206
+ border: 1px solid #ffffff;
207
+ cursor: pointer;
208
+ box-sizing: border-box;
209
+ }
210
+ .button[disabled],
211
+ button[disabled],
212
+ input[type='submit'][disabled],
213
+ input[type='reset'][disabled],
214
+ input[type='button'][disabled],
215
+ input[type='file']::file-selector-button[disabled] {
216
+ cursor: default;
217
+ opacity: 0.5;
218
+ }
219
+ .button:hover,
220
+ button:hover,
221
+ input[type='submit']:hover,
222
+ input[type='reset']:hover,
223
+ input[type='button']:hover,
224
+ input[type='file']::file-selector-button:hover {
225
+ background-color: #c9c9c9;
226
+ color: #222222;
227
+ outline: 0;
228
+ }
229
+ .button:focus-visible,
230
+ button:focus-visible,
231
+ input[type='submit']:focus-visible,
232
+ input[type='reset']:focus-visible,
233
+ input[type='button']:focus-visible,
234
+ input[type='file']::file-selector-button:focus-visible {
235
+ outline-style: solid;
236
+ outline-width: 2px;
237
+ }
238
+
239
+ textarea,
240
+ select,
241
+ input {
242
+ color: #c9c9c9;
243
+ padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */
244
+ margin-bottom: 10px;
245
+ background-color: #4a4a4a;
246
+ border: 1px solid #4a4a4a;
247
+ border-radius: 4px;
248
+ box-shadow: none;
249
+ box-sizing: border-box;
250
+ }
251
+ textarea:focus,
252
+ select:focus,
253
+ input:focus {
254
+ border: 1px solid #ffffff;
255
+ outline: 0;
256
+ }
257
+
258
+ input[type='checkbox']:focus {
259
+ outline: 1px dotted #ffffff;
260
+ }
261
+
262
+ label,
263
+ legend,
264
+ fieldset {
265
+ display: block;
266
+ margin-bottom: 0.5rem;
267
+ font-weight: 600;
268
+ }