@loftyshaky/shared 0.0.29 → 0.0.33

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 (294) hide show
  1. package/_locales/de/messages.json +128 -0
  2. package/_locales/en/messages.json +127 -118
  3. package/_locales/ru/messages.json +124 -115
  4. package/app.d.ts +0 -0
  5. package/app.js +1 -59
  6. package/chunk-main-a8db968c.js +1 -0
  7. package/{chunk-main-c1ba20e7.js → chunk-main-ce8981a6.js} +1 -1
  8. package/chunk-main-d9f34ef9.js +1 -0
  9. package/ext.d.ts +0 -0
  10. package/ext.js +1 -1544
  11. package/index.d.ts +1 -1
  12. package/index.js +1 -4
  13. package/inputs.d.ts +0 -0
  14. package/inputs.js +1 -3
  15. package/js/ext/env.js +16 -16
  16. package/js/ext/locales.js +42 -42
  17. package/js/ext/manifest.js +58 -58
  18. package/js/ext/webpack.config.js +113 -113
  19. package/js/package/plugins/rollup-plugin-copy.js +169 -169
  20. package/js/package/plugins/watcher.js +54 -48
  21. package/js/package/terser.js +18 -18
  22. package/js/project_name.js +5 -5
  23. package/js/projects_path.js +5 -5
  24. package/js/task_scheduler.js +39 -31
  25. package/package.json +14 -14
  26. package/scss/settings/ext_version.scss +7 -7
  27. package/scss/settings/index.scss +7 -7
  28. package/scss/settings/main.scss +19 -18
  29. package/scss/settings/scrollbar.scss +12 -4
  30. package/scss/settings/section_btns.scss +40 -39
  31. package/scss/settings/sections.scss +22 -22
  32. package/scss/settings/transitions.scss +20 -20
  33. package/scss/shared/all.scss +3 -3
  34. package/scss/shared/btns.scss +30 -26
  35. package/scss/shared/checkboxes.scss +38 -38
  36. package/scss/shared/color_pickers.scss +94 -94
  37. package/scss/shared/colors.scss +85 -75
  38. package/scss/shared/crash_handler.scss +36 -36
  39. package/scss/shared/css_vars.scss +4 -4
  40. package/scss/shared/embed/error.scss +96 -96
  41. package/scss/shared/embed/font_face.scss +5 -5
  42. package/scss/shared/embed/loading_screen.scss +35 -35
  43. package/scss/shared/embed/no_tr.scss +3 -3
  44. package/scss/shared/focus.scss +78 -78
  45. package/scss/shared/help.scss +66 -66
  46. package/scss/shared/hr.scss +6 -0
  47. package/scss/shared/index.scss +28 -26
  48. package/scss/shared/input_btns.scss +11 -11
  49. package/scss/shared/inputs.scss +69 -73
  50. package/scss/shared/inset_border.scss +20 -20
  51. package/scss/shared/link_btns.scss +12 -12
  52. package/scss/shared/links.scss +11 -11
  53. package/scss/shared/mixins.scss +130 -130
  54. package/scss/shared/mods.scss +35 -22
  55. package/scss/shared/range.scss +46 -45
  56. package/scss/shared/scrollbar.scss +35 -32
  57. package/scss/shared/selects.scss +14 -14
  58. package/scss/shared/text.scss +20 -20
  59. package/scss/shared/textareas.scss +7 -7
  60. package/scss/shared/themes/colors/dark.scss +17 -17
  61. package/scss/shared/themes/colors/light.scss +17 -17
  62. package/scss/shared/themes/colors/very_dark.scss +17 -17
  63. package/scss/shared/themes/general/dark_theme.scss +7 -7
  64. package/scss/shared/themes/general/light_theme.scss +7 -7
  65. package/scss/shared/themes/general/template.scss +241 -212
  66. package/scss/shared/themes/general/template_focus.scss +48 -54
  67. package/scss/shared/themes/general/very_dark_theme.scss +7 -7
  68. package/scss/shared/transitions.scss +31 -30
  69. package/scss/shared/upload_box.scss +67 -0
  70. package/scss/shared/vars.scss +18 -17
  71. package/settings.d.ts +1 -1
  72. package/settings.js +1 -3
  73. package/ts/error_modules/crash_handler/components/body.d.ts +0 -0
  74. package/ts/error_modules/crash_handler/components/index.d.ts +0 -0
  75. package/ts/error_modules/crash_handler/components/prop_types/body.d.ts +0 -0
  76. package/ts/error_modules/crash_handler/components/prop_types/index.d.ts +0 -0
  77. package/ts/error_modules/crash_handler/data/fatal_error.d.ts +0 -0
  78. package/ts/error_modules/crash_handler/data/index.d.ts +0 -0
  79. package/ts/error_modules/crash_handler/data/visibility.d.ts +0 -0
  80. package/ts/error_modules/crash_handler/scripts/index.d.ts +0 -0
  81. package/ts/error_modules/crash_handler/scripts/page.d.ts +0 -0
  82. package/ts/error_modules/css/scripts/index.d.ts +0 -0
  83. package/ts/error_modules/css/scripts/main.d.ts +0 -0
  84. package/ts/error_modules/error/components/body.d.ts +0 -0
  85. package/ts/error_modules/error/components/close_btn.d.ts +0 -0
  86. package/ts/error_modules/error/components/ext_name.d.ts +0 -0
  87. package/ts/error_modules/error/components/index.d.ts +0 -0
  88. package/ts/error_modules/error/components/msg.d.ts +0 -0
  89. package/ts/error_modules/error/components/prop_types/body.d.ts +0 -0
  90. package/ts/error_modules/error/components/prop_types/index.d.ts +0 -0
  91. package/ts/error_modules/error/data/index.d.ts +0 -0
  92. package/ts/error_modules/error/data/main.d.ts +0 -0
  93. package/ts/error_modules/error/data/msg.d.ts +0 -0
  94. package/ts/error_modules/error/data/state.d.ts +0 -0
  95. package/ts/error_modules/error/interfaces/error.d.ts +0 -0
  96. package/ts/error_modules/error/interfaces/error_obj.d.ts +0 -0
  97. package/ts/error_modules/error/interfaces/index.d.ts +0 -0
  98. package/ts/error_modules/error/interfaces/observable_keys.d.ts +0 -0
  99. package/ts/error_modules/error/interfaces/show_error.d.ts +0 -0
  100. package/ts/error_modules/error/interfaces/timeout_observable_keys.d.ts +0 -0
  101. package/ts/error_modules/error/scripts/globals.d.ts +1 -0
  102. package/ts/error_modules/error/scripts/index.d.ts +0 -0
  103. package/ts/error_modules/internal.d.ts +0 -0
  104. package/ts/inputs/color/components/body.d.ts +0 -0
  105. package/ts/inputs/color/components/color_picker.d.ts +0 -0
  106. package/ts/inputs/color/components/fill_shadow.d.ts +0 -0
  107. package/ts/inputs/color/components/index.d.ts +0 -0
  108. package/ts/inputs/color/components/prop_types/body.d.ts +0 -0
  109. package/ts/inputs/color/components/prop_types/color_picker.d.ts +0 -0
  110. package/ts/inputs/color/components/prop_types/fill_shadow.d.ts +0 -0
  111. package/ts/inputs/color/components/prop_types/index.d.ts +0 -0
  112. package/ts/inputs/color/components/prop_types/visualization.d.ts +0 -0
  113. package/ts/inputs/color/components/visualization.d.ts +0 -0
  114. package/ts/inputs/color/data/color.d.ts +2 -1
  115. package/ts/inputs/color/data/index.d.ts +0 -0
  116. package/ts/inputs/color/data/visibility.d.ts +2 -0
  117. package/ts/inputs/color/interfaces/color.d.ts +0 -0
  118. package/ts/inputs/color/interfaces/color_picker_state.d.ts +0 -0
  119. package/ts/inputs/color/interfaces/color_picker_state_one.d.ts +0 -0
  120. package/ts/inputs/color/interfaces/i.d.ts +0 -0
  121. package/ts/inputs/color/interfaces/index.d.ts +0 -0
  122. package/ts/inputs/color/obj/color.d.ts +3 -0
  123. package/ts/inputs/color/obj/index.d.ts +0 -0
  124. package/ts/inputs/color/scripts/color_picker.d.ts +0 -0
  125. package/ts/inputs/color/scripts/index.d.ts +0 -0
  126. package/ts/inputs/color/scripts/position.d.ts +0 -0
  127. package/ts/inputs/components/btn.d.ts +0 -0
  128. package/ts/inputs/components/checkbox.d.ts +0 -0
  129. package/ts/inputs/components/file.d.ts +0 -0
  130. package/ts/inputs/components/help.d.ts +0 -0
  131. package/ts/inputs/components/help_btn.d.ts +0 -0
  132. package/ts/inputs/components/hr.d.ts +3 -0
  133. package/ts/inputs/components/index.d.ts +2 -0
  134. package/ts/inputs/components/input_item.d.ts +0 -0
  135. package/ts/inputs/components/label.d.ts +0 -0
  136. package/ts/inputs/components/link.d.ts +0 -0
  137. package/ts/inputs/components/link_btn.d.ts +0 -0
  138. package/ts/inputs/components/prop_types/btn.d.ts +0 -0
  139. package/ts/inputs/components/prop_types/checkbox.d.ts +0 -0
  140. package/ts/inputs/components/prop_types/file.d.ts +0 -0
  141. package/ts/inputs/components/prop_types/help.d.ts +0 -0
  142. package/ts/inputs/components/prop_types/help_btn.d.ts +0 -0
  143. package/ts/inputs/components/prop_types/hr.d.ts +4 -0
  144. package/ts/inputs/components/prop_types/index.d.ts +2 -0
  145. package/ts/inputs/components/prop_types/input_item.d.ts +0 -0
  146. package/ts/inputs/components/prop_types/label.d.ts +0 -0
  147. package/ts/inputs/components/prop_types/link.d.ts +0 -0
  148. package/ts/inputs/components/prop_types/link_btn.d.ts +2 -3
  149. package/ts/inputs/components/prop_types/range.d.ts +0 -0
  150. package/ts/inputs/components/prop_types/section.d.ts +0 -0
  151. package/ts/inputs/components/prop_types/section_btn.d.ts +0 -0
  152. package/ts/inputs/components/prop_types/section_content.d.ts +0 -0
  153. package/ts/inputs/components/prop_types/select.d.ts +0 -0
  154. package/ts/inputs/components/prop_types/text.d.ts +0 -0
  155. package/ts/inputs/components/prop_types/text_btn.d.ts +1 -1
  156. package/ts/inputs/components/prop_types/textarea.d.ts +0 -0
  157. package/ts/inputs/components/prop_types/upload_box.d.ts +4 -0
  158. package/ts/inputs/components/range.d.ts +0 -0
  159. package/ts/inputs/components/section.d.ts +0 -0
  160. package/ts/inputs/components/section_btn.d.ts +0 -0
  161. package/ts/inputs/components/section_content.d.ts +0 -0
  162. package/ts/inputs/components/select.d.ts +0 -0
  163. package/ts/inputs/components/text.d.ts +0 -0
  164. package/ts/inputs/components/text_btn.d.ts +0 -0
  165. package/ts/inputs/components/textarea.d.ts +0 -0
  166. package/ts/inputs/components/upload_box.d.ts +3 -0
  167. package/ts/inputs/data/help.d.ts +0 -0
  168. package/ts/inputs/data/index.d.ts +2 -0
  169. package/ts/inputs/data/input_width.d.ts +4 -3
  170. package/ts/inputs/data/label.d.ts +0 -0
  171. package/ts/inputs/data/nested_input.d.ts +4 -2
  172. package/ts/inputs/data/text.d.ts +21 -0
  173. package/ts/inputs/data/upload_box.d.ts +20 -0
  174. package/ts/inputs/data/val.d.ts +0 -0
  175. package/ts/inputs/interfaces/index.d.ts +2 -0
  176. package/ts/inputs/interfaces/input.d.ts +1 -1
  177. package/ts/inputs/interfaces/inputs.d.ts +0 -0
  178. package/ts/inputs/interfaces/links.d.ts +0 -0
  179. package/ts/inputs/interfaces/options.d.ts +0 -0
  180. package/ts/inputs/interfaces/sections.d.ts +0 -0
  181. package/ts/inputs/interfaces/state_cond.d.ts +4 -0
  182. package/ts/inputs/interfaces/text_btn.d.ts +7 -0
  183. package/ts/inputs/internal.d.ts +0 -0
  184. package/ts/inputs/obj/btn.d.ts +0 -0
  185. package/ts/inputs/obj/checkbox.d.ts +0 -0
  186. package/ts/inputs/obj/file.d.ts +2 -0
  187. package/ts/inputs/obj/hr.d.ts +5 -0
  188. package/ts/inputs/obj/index.d.ts +3 -0
  189. package/ts/inputs/obj/input_base.d.ts +12 -2
  190. package/ts/inputs/obj/link.d.ts +0 -0
  191. package/ts/inputs/obj/link_btn.d.ts +5 -0
  192. package/ts/inputs/obj/option.d.ts +1 -1
  193. package/ts/inputs/obj/range.d.ts +0 -0
  194. package/ts/inputs/obj/section.d.ts +1 -0
  195. package/ts/inputs/obj/select.d.ts +0 -0
  196. package/ts/inputs/obj/text.d.ts +5 -1
  197. package/ts/inputs/obj/textarea.d.ts +0 -0
  198. package/ts/inputs/obj/upload_box.d.ts +14 -0
  199. package/ts/inputs/scripts/index.d.ts +1 -0
  200. package/ts/inputs/scripts/resolve.d.ts +0 -0
  201. package/ts/inputs/scripts/upload_box.d.ts +8 -0
  202. package/ts/settings/components/body.d.ts +0 -0
  203. package/ts/settings/components/index.d.ts +0 -0
  204. package/ts/settings/components/prop_types/body.d.ts +0 -0
  205. package/ts/settings/components/prop_types/index.d.ts +0 -0
  206. package/ts/settings/data/back_up.d.ts +1 -1
  207. package/ts/settings/data/index.d.ts +0 -0
  208. package/ts/settings/data/sections.d.ts +7 -1
  209. package/ts/settings/init.d.ts +0 -0
  210. package/ts/settings/internal.d.ts +2 -0
  211. package/ts/settings/optional_permissions/data/index.d.ts +1 -0
  212. package/ts/settings/optional_permissions/data/main.d.ts +11 -0
  213. package/ts/settings/optional_permissions/interfaces/index.d.ts +1 -0
  214. package/ts/settings/optional_permissions/interfaces/optional_permission_checkbox_dict.d.ts +3 -0
  215. package/ts/settings/scripts/index.d.ts +0 -0
  216. package/ts/settings/scripts/theme.d.ts +3 -1
  217. package/ts/shared/app.d.ts +0 -0
  218. package/ts/shared/app_ext_globals.d.ts +0 -0
  219. package/ts/shared/css_vars/scripts/index.d.ts +0 -0
  220. package/ts/shared/css_vars/scripts/main.d.ts +0 -0
  221. package/ts/shared/data/data/index.d.ts +0 -0
  222. package/ts/shared/data/data/main.d.ts +0 -0
  223. package/ts/shared/data/interfaces/index.d.ts +0 -0
  224. package/ts/shared/data/interfaces/val.d.ts +0 -0
  225. package/ts/shared/ext.d.ts +0 -0
  226. package/ts/shared/ext_version/components/body.d.ts +0 -0
  227. package/ts/shared/ext_version/components/index.d.ts +0 -0
  228. package/ts/shared/functions.d.ts +1 -0
  229. package/ts/shared/globals.d.ts +0 -0
  230. package/ts/shared/init.d.ts +0 -0
  231. package/ts/shared/internal.d.ts +0 -1
  232. package/ts/shared/keep_alive/scripts/index.d.ts +0 -0
  233. package/ts/shared/keep_alive/scripts/tabs.d.ts +0 -0
  234. package/ts/shared/loading_screen/components/body.d.ts +2 -3
  235. package/ts/shared/loading_screen/components/index.d.ts +0 -0
  236. package/ts/shared/loading_screen/data/index.d.ts +0 -0
  237. package/ts/shared/loading_screen/data/main.d.ts +0 -0
  238. package/ts/shared/no_tr/scripts/index.d.ts +0 -0
  239. package/ts/shared/no_tr/scripts/main.d.ts +0 -0
  240. package/ts/shared/svg.d.ts +0 -0
  241. package/ts/shared/t.d.ts +0 -0
  242. package/ts/shared/tab_index/interfaces/index.d.ts +0 -0
  243. package/ts/shared/tab_index/interfaces/set_Input_type_event.d.ts +0 -0
  244. package/ts/shared/tab_index/scripts/index.d.ts +0 -0
  245. package/ts/shared/tab_index/scripts/main.d.ts +0 -0
  246. package/ts/shared/theme/scripts/index.d.ts +0 -0
  247. package/ts/shared/theme/scripts/main.d.ts +3 -1
  248. package/ts/shared/tr/components/base_tr.d.ts +0 -0
  249. package/ts/shared/tr/components/index.d.ts +0 -0
  250. package/ts/shared/tr/components/prop_types/base_tr.d.ts +1 -1
  251. package/ts/shared/tr/components/prop_types/index.d.ts +0 -0
  252. package/ts/shared/tr/data/index.d.ts +0 -0
  253. package/ts/shared/tr/data/transition.d.ts +0 -0
  254. package/ts/shared/tr/interfaces/index.d.ts +0 -0
  255. package/ts/shared/tr/interfaces/transitions.d.ts +0 -0
  256. package/ts/shared/tr/obj/index.d.ts +0 -0
  257. package/ts/shared/tr/obj/transition.d.ts +0 -0
  258. package/ts/shared/utils/scripts/index.d.ts +0 -0
  259. package/ts/shared/utils/scripts/main.d.ts +0 -0
  260. package/ts/shared/vars.d.ts +0 -0
  261. package/ts/shared/viewport/scripts/index.d.ts +0 -0
  262. package/ts/shared/viewport/scripts/main.d.ts +0 -0
  263. package/ts/shared/x.d.ts +4 -0
  264. package/chunk-internal-05069733.js +0 -28889
  265. package/chunk-internal-0e86bea1.js +0 -28888
  266. package/chunk-internal-1054c026.js +0 -439
  267. package/chunk-internal-10fcbd6e.js +0 -28888
  268. package/chunk-internal-17104e8a.js +0 -439
  269. package/chunk-internal-1fda41e4.js +0 -439
  270. package/chunk-internal-22bc2aa7.js +0 -439
  271. package/chunk-internal-26c6c7eb.js +0 -28889
  272. package/chunk-internal-39c8cbc4.js +0 -28895
  273. package/chunk-internal-3f8764a1.js +0 -28890
  274. package/chunk-internal-406e6f55.js +0 -439
  275. package/chunk-internal-42553e09.js +0 -439
  276. package/chunk-internal-473c60e9.js +0 -439
  277. package/chunk-internal-5233cfd5.js +0 -439
  278. package/chunk-internal-6f38e4bc.js +0 -439
  279. package/chunk-internal-6f7bb16f.js +0 -439
  280. package/chunk-internal-80d0ac77.js +0 -439
  281. package/chunk-internal-8a4fdf23.js +0 -440
  282. package/chunk-internal-92e0896b.js +0 -28890
  283. package/chunk-internal-945c597e.js +0 -28889
  284. package/chunk-internal-a5af61b1.js +0 -439
  285. package/chunk-internal-a7da665a.js +0 -439
  286. package/chunk-internal-ac104a4c.js +0 -28890
  287. package/chunk-internal-acb4137b.js +0 -28889
  288. package/chunk-internal-d829c972.js +0 -439
  289. package/chunk-internal-f1d22e9b.js +0 -28888
  290. package/chunk-internal-f314bc08.js +0 -28889
  291. package/chunk-main-5ee63fec.js +0 -1
  292. package/chunk-main-854911f4.js +0 -1
  293. package/ts/shared/loading_screen/components/prop_types/body.d.ts +0 -8
  294. package/ts/shared/loading_screen/components/prop_types/index.d.ts +0 -1
package/ext.js CHANGED
@@ -1,1544 +1 @@
1
- import { c as commonjsGlobal, _ as __awaiter, a as _ } from './chunk-internal-0e86bea1.js';
2
- import { M as Main } from './chunk-internal-22bc2aa7.js';
3
- import 'react';
4
- import 'react-dom';
5
-
6
- var lib = {};
7
-
8
- var browserPolyfill$1 = {exports: {}};
9
-
10
- (function (module, exports) {
11
- (function (global, factory) {
12
- if (typeof undefined === "function" && undefined.amd) {
13
- undefined("webextension-polyfill", ["module"], factory);
14
- } else if ('object' !== "undefined") {
15
- factory(module);
16
- } else {
17
- var mod = {
18
- exports: {}
19
- };
20
- factory(mod);
21
- global.browser = mod.exports;
22
- }
23
- })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : commonjsGlobal, function (module) {
24
- /* webextension-polyfill - v0.8.0 - Tue Apr 20 2021 11:27:38 */
25
-
26
- /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
27
-
28
- /* vim: set sts=2 sw=2 et tw=80: */
29
-
30
- /* This Source Code Form is subject to the terms of the Mozilla Public
31
- * License, v. 2.0. If a copy of the MPL was not distributed with this
32
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
33
- "use strict";
34
-
35
- if (typeof browser === "undefined" || Object.getPrototypeOf(browser) !== Object.prototype) {
36
- const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE = "The message port closed before a response was received.";
37
- const SEND_RESPONSE_DEPRECATION_WARNING = "Returning a Promise is the preferred way to send a reply from an onMessage/onMessageExternal listener, as the sendResponse will be removed from the specs (See https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage)"; // Wrapping the bulk of this polyfill in a one-time-use function is a minor
38
- // optimization for Firefox. Since Spidermonkey does not fully parse the
39
- // contents of a function until the first time it's called, and since it will
40
- // never actually need to be called, this allows the polyfill to be included
41
- // in Firefox nearly for free.
42
-
43
- const wrapAPIs = extensionAPIs => {
44
- // NOTE: apiMetadata is associated to the content of the api-metadata.json file
45
- // at build time by replacing the following "include" with the content of the
46
- // JSON file.
47
- const apiMetadata = {
48
- "alarms": {
49
- "clear": {
50
- "minArgs": 0,
51
- "maxArgs": 1
52
- },
53
- "clearAll": {
54
- "minArgs": 0,
55
- "maxArgs": 0
56
- },
57
- "get": {
58
- "minArgs": 0,
59
- "maxArgs": 1
60
- },
61
- "getAll": {
62
- "minArgs": 0,
63
- "maxArgs": 0
64
- }
65
- },
66
- "bookmarks": {
67
- "create": {
68
- "minArgs": 1,
69
- "maxArgs": 1
70
- },
71
- "get": {
72
- "minArgs": 1,
73
- "maxArgs": 1
74
- },
75
- "getChildren": {
76
- "minArgs": 1,
77
- "maxArgs": 1
78
- },
79
- "getRecent": {
80
- "minArgs": 1,
81
- "maxArgs": 1
82
- },
83
- "getSubTree": {
84
- "minArgs": 1,
85
- "maxArgs": 1
86
- },
87
- "getTree": {
88
- "minArgs": 0,
89
- "maxArgs": 0
90
- },
91
- "move": {
92
- "minArgs": 2,
93
- "maxArgs": 2
94
- },
95
- "remove": {
96
- "minArgs": 1,
97
- "maxArgs": 1
98
- },
99
- "removeTree": {
100
- "minArgs": 1,
101
- "maxArgs": 1
102
- },
103
- "search": {
104
- "minArgs": 1,
105
- "maxArgs": 1
106
- },
107
- "update": {
108
- "minArgs": 2,
109
- "maxArgs": 2
110
- }
111
- },
112
- "browserAction": {
113
- "disable": {
114
- "minArgs": 0,
115
- "maxArgs": 1,
116
- "fallbackToNoCallback": true
117
- },
118
- "enable": {
119
- "minArgs": 0,
120
- "maxArgs": 1,
121
- "fallbackToNoCallback": true
122
- },
123
- "getBadgeBackgroundColor": {
124
- "minArgs": 1,
125
- "maxArgs": 1
126
- },
127
- "getBadgeText": {
128
- "minArgs": 1,
129
- "maxArgs": 1
130
- },
131
- "getPopup": {
132
- "minArgs": 1,
133
- "maxArgs": 1
134
- },
135
- "getTitle": {
136
- "minArgs": 1,
137
- "maxArgs": 1
138
- },
139
- "openPopup": {
140
- "minArgs": 0,
141
- "maxArgs": 0
142
- },
143
- "setBadgeBackgroundColor": {
144
- "minArgs": 1,
145
- "maxArgs": 1,
146
- "fallbackToNoCallback": true
147
- },
148
- "setBadgeText": {
149
- "minArgs": 1,
150
- "maxArgs": 1,
151
- "fallbackToNoCallback": true
152
- },
153
- "setIcon": {
154
- "minArgs": 1,
155
- "maxArgs": 1
156
- },
157
- "setPopup": {
158
- "minArgs": 1,
159
- "maxArgs": 1,
160
- "fallbackToNoCallback": true
161
- },
162
- "setTitle": {
163
- "minArgs": 1,
164
- "maxArgs": 1,
165
- "fallbackToNoCallback": true
166
- }
167
- },
168
- "browsingData": {
169
- "remove": {
170
- "minArgs": 2,
171
- "maxArgs": 2
172
- },
173
- "removeCache": {
174
- "minArgs": 1,
175
- "maxArgs": 1
176
- },
177
- "removeCookies": {
178
- "minArgs": 1,
179
- "maxArgs": 1
180
- },
181
- "removeDownloads": {
182
- "minArgs": 1,
183
- "maxArgs": 1
184
- },
185
- "removeFormData": {
186
- "minArgs": 1,
187
- "maxArgs": 1
188
- },
189
- "removeHistory": {
190
- "minArgs": 1,
191
- "maxArgs": 1
192
- },
193
- "removeLocalStorage": {
194
- "minArgs": 1,
195
- "maxArgs": 1
196
- },
197
- "removePasswords": {
198
- "minArgs": 1,
199
- "maxArgs": 1
200
- },
201
- "removePluginData": {
202
- "minArgs": 1,
203
- "maxArgs": 1
204
- },
205
- "settings": {
206
- "minArgs": 0,
207
- "maxArgs": 0
208
- }
209
- },
210
- "commands": {
211
- "getAll": {
212
- "minArgs": 0,
213
- "maxArgs": 0
214
- }
215
- },
216
- "contextMenus": {
217
- "remove": {
218
- "minArgs": 1,
219
- "maxArgs": 1
220
- },
221
- "removeAll": {
222
- "minArgs": 0,
223
- "maxArgs": 0
224
- },
225
- "update": {
226
- "minArgs": 2,
227
- "maxArgs": 2
228
- }
229
- },
230
- "cookies": {
231
- "get": {
232
- "minArgs": 1,
233
- "maxArgs": 1
234
- },
235
- "getAll": {
236
- "minArgs": 1,
237
- "maxArgs": 1
238
- },
239
- "getAllCookieStores": {
240
- "minArgs": 0,
241
- "maxArgs": 0
242
- },
243
- "remove": {
244
- "minArgs": 1,
245
- "maxArgs": 1
246
- },
247
- "set": {
248
- "minArgs": 1,
249
- "maxArgs": 1
250
- }
251
- },
252
- "devtools": {
253
- "inspectedWindow": {
254
- "eval": {
255
- "minArgs": 1,
256
- "maxArgs": 2,
257
- "singleCallbackArg": false
258
- }
259
- },
260
- "panels": {
261
- "create": {
262
- "minArgs": 3,
263
- "maxArgs": 3,
264
- "singleCallbackArg": true
265
- },
266
- "elements": {
267
- "createSidebarPane": {
268
- "minArgs": 1,
269
- "maxArgs": 1
270
- }
271
- }
272
- }
273
- },
274
- "downloads": {
275
- "cancel": {
276
- "minArgs": 1,
277
- "maxArgs": 1
278
- },
279
- "download": {
280
- "minArgs": 1,
281
- "maxArgs": 1
282
- },
283
- "erase": {
284
- "minArgs": 1,
285
- "maxArgs": 1
286
- },
287
- "getFileIcon": {
288
- "minArgs": 1,
289
- "maxArgs": 2
290
- },
291
- "open": {
292
- "minArgs": 1,
293
- "maxArgs": 1,
294
- "fallbackToNoCallback": true
295
- },
296
- "pause": {
297
- "minArgs": 1,
298
- "maxArgs": 1
299
- },
300
- "removeFile": {
301
- "minArgs": 1,
302
- "maxArgs": 1
303
- },
304
- "resume": {
305
- "minArgs": 1,
306
- "maxArgs": 1
307
- },
308
- "search": {
309
- "minArgs": 1,
310
- "maxArgs": 1
311
- },
312
- "show": {
313
- "minArgs": 1,
314
- "maxArgs": 1,
315
- "fallbackToNoCallback": true
316
- }
317
- },
318
- "extension": {
319
- "isAllowedFileSchemeAccess": {
320
- "minArgs": 0,
321
- "maxArgs": 0
322
- },
323
- "isAllowedIncognitoAccess": {
324
- "minArgs": 0,
325
- "maxArgs": 0
326
- }
327
- },
328
- "history": {
329
- "addUrl": {
330
- "minArgs": 1,
331
- "maxArgs": 1
332
- },
333
- "deleteAll": {
334
- "minArgs": 0,
335
- "maxArgs": 0
336
- },
337
- "deleteRange": {
338
- "minArgs": 1,
339
- "maxArgs": 1
340
- },
341
- "deleteUrl": {
342
- "minArgs": 1,
343
- "maxArgs": 1
344
- },
345
- "getVisits": {
346
- "minArgs": 1,
347
- "maxArgs": 1
348
- },
349
- "search": {
350
- "minArgs": 1,
351
- "maxArgs": 1
352
- }
353
- },
354
- "i18n": {
355
- "detectLanguage": {
356
- "minArgs": 1,
357
- "maxArgs": 1
358
- },
359
- "getAcceptLanguages": {
360
- "minArgs": 0,
361
- "maxArgs": 0
362
- }
363
- },
364
- "identity": {
365
- "launchWebAuthFlow": {
366
- "minArgs": 1,
367
- "maxArgs": 1
368
- }
369
- },
370
- "idle": {
371
- "queryState": {
372
- "minArgs": 1,
373
- "maxArgs": 1
374
- }
375
- },
376
- "management": {
377
- "get": {
378
- "minArgs": 1,
379
- "maxArgs": 1
380
- },
381
- "getAll": {
382
- "minArgs": 0,
383
- "maxArgs": 0
384
- },
385
- "getSelf": {
386
- "minArgs": 0,
387
- "maxArgs": 0
388
- },
389
- "setEnabled": {
390
- "minArgs": 2,
391
- "maxArgs": 2
392
- },
393
- "uninstallSelf": {
394
- "minArgs": 0,
395
- "maxArgs": 1
396
- }
397
- },
398
- "notifications": {
399
- "clear": {
400
- "minArgs": 1,
401
- "maxArgs": 1
402
- },
403
- "create": {
404
- "minArgs": 1,
405
- "maxArgs": 2
406
- },
407
- "getAll": {
408
- "minArgs": 0,
409
- "maxArgs": 0
410
- },
411
- "getPermissionLevel": {
412
- "minArgs": 0,
413
- "maxArgs": 0
414
- },
415
- "update": {
416
- "minArgs": 2,
417
- "maxArgs": 2
418
- }
419
- },
420
- "pageAction": {
421
- "getPopup": {
422
- "minArgs": 1,
423
- "maxArgs": 1
424
- },
425
- "getTitle": {
426
- "minArgs": 1,
427
- "maxArgs": 1
428
- },
429
- "hide": {
430
- "minArgs": 1,
431
- "maxArgs": 1,
432
- "fallbackToNoCallback": true
433
- },
434
- "setIcon": {
435
- "minArgs": 1,
436
- "maxArgs": 1
437
- },
438
- "setPopup": {
439
- "minArgs": 1,
440
- "maxArgs": 1,
441
- "fallbackToNoCallback": true
442
- },
443
- "setTitle": {
444
- "minArgs": 1,
445
- "maxArgs": 1,
446
- "fallbackToNoCallback": true
447
- },
448
- "show": {
449
- "minArgs": 1,
450
- "maxArgs": 1,
451
- "fallbackToNoCallback": true
452
- }
453
- },
454
- "permissions": {
455
- "contains": {
456
- "minArgs": 1,
457
- "maxArgs": 1
458
- },
459
- "getAll": {
460
- "minArgs": 0,
461
- "maxArgs": 0
462
- },
463
- "remove": {
464
- "minArgs": 1,
465
- "maxArgs": 1
466
- },
467
- "request": {
468
- "minArgs": 1,
469
- "maxArgs": 1
470
- }
471
- },
472
- "runtime": {
473
- "getBackgroundPage": {
474
- "minArgs": 0,
475
- "maxArgs": 0
476
- },
477
- "getPlatformInfo": {
478
- "minArgs": 0,
479
- "maxArgs": 0
480
- },
481
- "openOptionsPage": {
482
- "minArgs": 0,
483
- "maxArgs": 0
484
- },
485
- "requestUpdateCheck": {
486
- "minArgs": 0,
487
- "maxArgs": 0
488
- },
489
- "sendMessage": {
490
- "minArgs": 1,
491
- "maxArgs": 3
492
- },
493
- "sendNativeMessage": {
494
- "minArgs": 2,
495
- "maxArgs": 2
496
- },
497
- "setUninstallURL": {
498
- "minArgs": 1,
499
- "maxArgs": 1
500
- }
501
- },
502
- "sessions": {
503
- "getDevices": {
504
- "minArgs": 0,
505
- "maxArgs": 1
506
- },
507
- "getRecentlyClosed": {
508
- "minArgs": 0,
509
- "maxArgs": 1
510
- },
511
- "restore": {
512
- "minArgs": 0,
513
- "maxArgs": 1
514
- }
515
- },
516
- "storage": {
517
- "local": {
518
- "clear": {
519
- "minArgs": 0,
520
- "maxArgs": 0
521
- },
522
- "get": {
523
- "minArgs": 0,
524
- "maxArgs": 1
525
- },
526
- "getBytesInUse": {
527
- "minArgs": 0,
528
- "maxArgs": 1
529
- },
530
- "remove": {
531
- "minArgs": 1,
532
- "maxArgs": 1
533
- },
534
- "set": {
535
- "minArgs": 1,
536
- "maxArgs": 1
537
- }
538
- },
539
- "managed": {
540
- "get": {
541
- "minArgs": 0,
542
- "maxArgs": 1
543
- },
544
- "getBytesInUse": {
545
- "minArgs": 0,
546
- "maxArgs": 1
547
- }
548
- },
549
- "sync": {
550
- "clear": {
551
- "minArgs": 0,
552
- "maxArgs": 0
553
- },
554
- "get": {
555
- "minArgs": 0,
556
- "maxArgs": 1
557
- },
558
- "getBytesInUse": {
559
- "minArgs": 0,
560
- "maxArgs": 1
561
- },
562
- "remove": {
563
- "minArgs": 1,
564
- "maxArgs": 1
565
- },
566
- "set": {
567
- "minArgs": 1,
568
- "maxArgs": 1
569
- }
570
- }
571
- },
572
- "tabs": {
573
- "captureVisibleTab": {
574
- "minArgs": 0,
575
- "maxArgs": 2
576
- },
577
- "create": {
578
- "minArgs": 1,
579
- "maxArgs": 1
580
- },
581
- "detectLanguage": {
582
- "minArgs": 0,
583
- "maxArgs": 1
584
- },
585
- "discard": {
586
- "minArgs": 0,
587
- "maxArgs": 1
588
- },
589
- "duplicate": {
590
- "minArgs": 1,
591
- "maxArgs": 1
592
- },
593
- "executeScript": {
594
- "minArgs": 1,
595
- "maxArgs": 2
596
- },
597
- "get": {
598
- "minArgs": 1,
599
- "maxArgs": 1
600
- },
601
- "getCurrent": {
602
- "minArgs": 0,
603
- "maxArgs": 0
604
- },
605
- "getZoom": {
606
- "minArgs": 0,
607
- "maxArgs": 1
608
- },
609
- "getZoomSettings": {
610
- "minArgs": 0,
611
- "maxArgs": 1
612
- },
613
- "goBack": {
614
- "minArgs": 0,
615
- "maxArgs": 1
616
- },
617
- "goForward": {
618
- "minArgs": 0,
619
- "maxArgs": 1
620
- },
621
- "highlight": {
622
- "minArgs": 1,
623
- "maxArgs": 1
624
- },
625
- "insertCSS": {
626
- "minArgs": 1,
627
- "maxArgs": 2
628
- },
629
- "move": {
630
- "minArgs": 2,
631
- "maxArgs": 2
632
- },
633
- "query": {
634
- "minArgs": 1,
635
- "maxArgs": 1
636
- },
637
- "reload": {
638
- "minArgs": 0,
639
- "maxArgs": 2
640
- },
641
- "remove": {
642
- "minArgs": 1,
643
- "maxArgs": 1
644
- },
645
- "removeCSS": {
646
- "minArgs": 1,
647
- "maxArgs": 2
648
- },
649
- "sendMessage": {
650
- "minArgs": 2,
651
- "maxArgs": 3
652
- },
653
- "setZoom": {
654
- "minArgs": 1,
655
- "maxArgs": 2
656
- },
657
- "setZoomSettings": {
658
- "minArgs": 1,
659
- "maxArgs": 2
660
- },
661
- "update": {
662
- "minArgs": 1,
663
- "maxArgs": 2
664
- }
665
- },
666
- "topSites": {
667
- "get": {
668
- "minArgs": 0,
669
- "maxArgs": 0
670
- }
671
- },
672
- "webNavigation": {
673
- "getAllFrames": {
674
- "minArgs": 1,
675
- "maxArgs": 1
676
- },
677
- "getFrame": {
678
- "minArgs": 1,
679
- "maxArgs": 1
680
- }
681
- },
682
- "webRequest": {
683
- "handlerBehaviorChanged": {
684
- "minArgs": 0,
685
- "maxArgs": 0
686
- }
687
- },
688
- "windows": {
689
- "create": {
690
- "minArgs": 0,
691
- "maxArgs": 1
692
- },
693
- "get": {
694
- "minArgs": 1,
695
- "maxArgs": 2
696
- },
697
- "getAll": {
698
- "minArgs": 0,
699
- "maxArgs": 1
700
- },
701
- "getCurrent": {
702
- "minArgs": 0,
703
- "maxArgs": 1
704
- },
705
- "getLastFocused": {
706
- "minArgs": 0,
707
- "maxArgs": 1
708
- },
709
- "remove": {
710
- "minArgs": 1,
711
- "maxArgs": 1
712
- },
713
- "update": {
714
- "minArgs": 2,
715
- "maxArgs": 2
716
- }
717
- }
718
- };
719
-
720
- if (Object.keys(apiMetadata).length === 0) {
721
- throw new Error("api-metadata.json has not been included in browser-polyfill");
722
- }
723
- /**
724
- * A WeakMap subclass which creates and stores a value for any key which does
725
- * not exist when accessed, but behaves exactly as an ordinary WeakMap
726
- * otherwise.
727
- *
728
- * @param {function} createItem
729
- * A function which will be called in order to create the value for any
730
- * key which does not exist, the first time it is accessed. The
731
- * function receives, as its only argument, the key being created.
732
- */
733
-
734
-
735
- class DefaultWeakMap extends WeakMap {
736
- constructor(createItem, items = undefined) {
737
- super(items);
738
- this.createItem = createItem;
739
- }
740
-
741
- get(key) {
742
- if (!this.has(key)) {
743
- this.set(key, this.createItem(key));
744
- }
745
-
746
- return super.get(key);
747
- }
748
-
749
- }
750
- /**
751
- * Returns true if the given object is an object with a `then` method, and can
752
- * therefore be assumed to behave as a Promise.
753
- *
754
- * @param {*} value The value to test.
755
- * @returns {boolean} True if the value is thenable.
756
- */
757
-
758
-
759
- const isThenable = value => {
760
- return value && typeof value === "object" && typeof value.then === "function";
761
- };
762
- /**
763
- * Creates and returns a function which, when called, will resolve or reject
764
- * the given promise based on how it is called:
765
- *
766
- * - If, when called, `chrome.runtime.lastError` contains a non-null object,
767
- * the promise is rejected with that value.
768
- * - If the function is called with exactly one argument, the promise is
769
- * resolved to that value.
770
- * - Otherwise, the promise is resolved to an array containing all of the
771
- * function's arguments.
772
- *
773
- * @param {object} promise
774
- * An object containing the resolution and rejection functions of a
775
- * promise.
776
- * @param {function} promise.resolve
777
- * The promise's resolution function.
778
- * @param {function} promise.reject
779
- * The promise's rejection function.
780
- * @param {object} metadata
781
- * Metadata about the wrapped method which has created the callback.
782
- * @param {boolean} metadata.singleCallbackArg
783
- * Whether or not the promise is resolved with only the first
784
- * argument of the callback, alternatively an array of all the
785
- * callback arguments is resolved. By default, if the callback
786
- * function is invoked with only a single argument, that will be
787
- * resolved to the promise, while all arguments will be resolved as
788
- * an array if multiple are given.
789
- *
790
- * @returns {function}
791
- * The generated callback function.
792
- */
793
-
794
-
795
- const makeCallback = (promise, metadata) => {
796
- return (...callbackArgs) => {
797
- if (extensionAPIs.runtime.lastError) {
798
- promise.reject(new Error(extensionAPIs.runtime.lastError.message));
799
- } else if (metadata.singleCallbackArg || callbackArgs.length <= 1 && metadata.singleCallbackArg !== false) {
800
- promise.resolve(callbackArgs[0]);
801
- } else {
802
- promise.resolve(callbackArgs);
803
- }
804
- };
805
- };
806
-
807
- const pluralizeArguments = numArgs => numArgs == 1 ? "argument" : "arguments";
808
- /**
809
- * Creates a wrapper function for a method with the given name and metadata.
810
- *
811
- * @param {string} name
812
- * The name of the method which is being wrapped.
813
- * @param {object} metadata
814
- * Metadata about the method being wrapped.
815
- * @param {integer} metadata.minArgs
816
- * The minimum number of arguments which must be passed to the
817
- * function. If called with fewer than this number of arguments, the
818
- * wrapper will raise an exception.
819
- * @param {integer} metadata.maxArgs
820
- * The maximum number of arguments which may be passed to the
821
- * function. If called with more than this number of arguments, the
822
- * wrapper will raise an exception.
823
- * @param {boolean} metadata.singleCallbackArg
824
- * Whether or not the promise is resolved with only the first
825
- * argument of the callback, alternatively an array of all the
826
- * callback arguments is resolved. By default, if the callback
827
- * function is invoked with only a single argument, that will be
828
- * resolved to the promise, while all arguments will be resolved as
829
- * an array if multiple are given.
830
- *
831
- * @returns {function(object, ...*)}
832
- * The generated wrapper function.
833
- */
834
-
835
-
836
- const wrapAsyncFunction = (name, metadata) => {
837
- return function asyncFunctionWrapper(target, ...args) {
838
- if (args.length < metadata.minArgs) {
839
- throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);
840
- }
841
-
842
- if (args.length > metadata.maxArgs) {
843
- throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);
844
- }
845
-
846
- return new Promise((resolve, reject) => {
847
- if (metadata.fallbackToNoCallback) {
848
- // This API method has currently no callback on Chrome, but it return a promise on Firefox,
849
- // and so the polyfill will try to call it with a callback first, and it will fallback
850
- // to not passing the callback if the first call fails.
851
- try {
852
- target[name](...args, makeCallback({
853
- resolve,
854
- reject
855
- }, metadata));
856
- } catch (cbError) {
857
- console.warn(`${name} API method doesn't seem to support the callback parameter, ` + "falling back to call it without a callback: ", cbError);
858
- target[name](...args); // Update the API method metadata, so that the next API calls will not try to
859
- // use the unsupported callback anymore.
860
-
861
- metadata.fallbackToNoCallback = false;
862
- metadata.noCallback = true;
863
- resolve();
864
- }
865
- } else if (metadata.noCallback) {
866
- target[name](...args);
867
- resolve();
868
- } else {
869
- target[name](...args, makeCallback({
870
- resolve,
871
- reject
872
- }, metadata));
873
- }
874
- });
875
- };
876
- };
877
- /**
878
- * Wraps an existing method of the target object, so that calls to it are
879
- * intercepted by the given wrapper function. The wrapper function receives,
880
- * as its first argument, the original `target` object, followed by each of
881
- * the arguments passed to the original method.
882
- *
883
- * @param {object} target
884
- * The original target object that the wrapped method belongs to.
885
- * @param {function} method
886
- * The method being wrapped. This is used as the target of the Proxy
887
- * object which is created to wrap the method.
888
- * @param {function} wrapper
889
- * The wrapper function which is called in place of a direct invocation
890
- * of the wrapped method.
891
- *
892
- * @returns {Proxy<function>}
893
- * A Proxy object for the given method, which invokes the given wrapper
894
- * method in its place.
895
- */
896
-
897
-
898
- const wrapMethod = (target, method, wrapper) => {
899
- return new Proxy(method, {
900
- apply(targetMethod, thisObj, args) {
901
- return wrapper.call(thisObj, target, ...args);
902
- }
903
-
904
- });
905
- };
906
-
907
- let hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty);
908
- /**
909
- * Wraps an object in a Proxy which intercepts and wraps certain methods
910
- * based on the given `wrappers` and `metadata` objects.
911
- *
912
- * @param {object} target
913
- * The target object to wrap.
914
- *
915
- * @param {object} [wrappers = {}]
916
- * An object tree containing wrapper functions for special cases. Any
917
- * function present in this object tree is called in place of the
918
- * method in the same location in the `target` object tree. These
919
- * wrapper methods are invoked as described in {@see wrapMethod}.
920
- *
921
- * @param {object} [metadata = {}]
922
- * An object tree containing metadata used to automatically generate
923
- * Promise-based wrapper functions for asynchronous. Any function in
924
- * the `target` object tree which has a corresponding metadata object
925
- * in the same location in the `metadata` tree is replaced with an
926
- * automatically-generated wrapper function, as described in
927
- * {@see wrapAsyncFunction}
928
- *
929
- * @returns {Proxy<object>}
930
- */
931
-
932
- const wrapObject = (target, wrappers = {}, metadata = {}) => {
933
- let cache = Object.create(null);
934
- let handlers = {
935
- has(proxyTarget, prop) {
936
- return prop in target || prop in cache;
937
- },
938
-
939
- get(proxyTarget, prop, receiver) {
940
- if (prop in cache) {
941
- return cache[prop];
942
- }
943
-
944
- if (!(prop in target)) {
945
- return undefined;
946
- }
947
-
948
- let value = target[prop];
949
-
950
- if (typeof value === "function") {
951
- // This is a method on the underlying object. Check if we need to do
952
- // any wrapping.
953
- if (typeof wrappers[prop] === "function") {
954
- // We have a special-case wrapper for this method.
955
- value = wrapMethod(target, target[prop], wrappers[prop]);
956
- } else if (hasOwnProperty(metadata, prop)) {
957
- // This is an async method that we have metadata for. Create a
958
- // Promise wrapper for it.
959
- let wrapper = wrapAsyncFunction(prop, metadata[prop]);
960
- value = wrapMethod(target, target[prop], wrapper);
961
- } else {
962
- // This is a method that we don't know or care about. Return the
963
- // original method, bound to the underlying object.
964
- value = value.bind(target);
965
- }
966
- } else if (typeof value === "object" && value !== null && (hasOwnProperty(wrappers, prop) || hasOwnProperty(metadata, prop))) {
967
- // This is an object that we need to do some wrapping for the children
968
- // of. Create a sub-object wrapper for it with the appropriate child
969
- // metadata.
970
- value = wrapObject(value, wrappers[prop], metadata[prop]);
971
- } else if (hasOwnProperty(metadata, "*")) {
972
- // Wrap all properties in * namespace.
973
- value = wrapObject(value, wrappers[prop], metadata["*"]);
974
- } else {
975
- // We don't need to do any wrapping for this property,
976
- // so just forward all access to the underlying object.
977
- Object.defineProperty(cache, prop, {
978
- configurable: true,
979
- enumerable: true,
980
-
981
- get() {
982
- return target[prop];
983
- },
984
-
985
- set(value) {
986
- target[prop] = value;
987
- }
988
-
989
- });
990
- return value;
991
- }
992
-
993
- cache[prop] = value;
994
- return value;
995
- },
996
-
997
- set(proxyTarget, prop, value, receiver) {
998
- if (prop in cache) {
999
- cache[prop] = value;
1000
- } else {
1001
- target[prop] = value;
1002
- }
1003
-
1004
- return true;
1005
- },
1006
-
1007
- defineProperty(proxyTarget, prop, desc) {
1008
- return Reflect.defineProperty(cache, prop, desc);
1009
- },
1010
-
1011
- deleteProperty(proxyTarget, prop) {
1012
- return Reflect.deleteProperty(cache, prop);
1013
- }
1014
-
1015
- }; // Per contract of the Proxy API, the "get" proxy handler must return the
1016
- // original value of the target if that value is declared read-only and
1017
- // non-configurable. For this reason, we create an object with the
1018
- // prototype set to `target` instead of using `target` directly.
1019
- // Otherwise we cannot return a custom object for APIs that
1020
- // are declared read-only and non-configurable, such as `chrome.devtools`.
1021
- //
1022
- // The proxy handlers themselves will still use the original `target`
1023
- // instead of the `proxyTarget`, so that the methods and properties are
1024
- // dereferenced via the original targets.
1025
-
1026
- let proxyTarget = Object.create(target);
1027
- return new Proxy(proxyTarget, handlers);
1028
- };
1029
- /**
1030
- * Creates a set of wrapper functions for an event object, which handles
1031
- * wrapping of listener functions that those messages are passed.
1032
- *
1033
- * A single wrapper is created for each listener function, and stored in a
1034
- * map. Subsequent calls to `addListener`, `hasListener`, or `removeListener`
1035
- * retrieve the original wrapper, so that attempts to remove a
1036
- * previously-added listener work as expected.
1037
- *
1038
- * @param {DefaultWeakMap<function, function>} wrapperMap
1039
- * A DefaultWeakMap object which will create the appropriate wrapper
1040
- * for a given listener function when one does not exist, and retrieve
1041
- * an existing one when it does.
1042
- *
1043
- * @returns {object}
1044
- */
1045
-
1046
-
1047
- const wrapEvent = wrapperMap => ({
1048
- addListener(target, listener, ...args) {
1049
- target.addListener(wrapperMap.get(listener), ...args);
1050
- },
1051
-
1052
- hasListener(target, listener) {
1053
- return target.hasListener(wrapperMap.get(listener));
1054
- },
1055
-
1056
- removeListener(target, listener) {
1057
- target.removeListener(wrapperMap.get(listener));
1058
- }
1059
-
1060
- });
1061
-
1062
- const onRequestFinishedWrappers = new DefaultWeakMap(listener => {
1063
- if (typeof listener !== "function") {
1064
- return listener;
1065
- }
1066
- /**
1067
- * Wraps an onRequestFinished listener function so that it will return a
1068
- * `getContent()` property which returns a `Promise` rather than using a
1069
- * callback API.
1070
- *
1071
- * @param {object} req
1072
- * The HAR entry object representing the network request.
1073
- */
1074
-
1075
-
1076
- return function onRequestFinished(req) {
1077
- const wrappedReq = wrapObject(req, {}
1078
- /* wrappers */
1079
- , {
1080
- getContent: {
1081
- minArgs: 0,
1082
- maxArgs: 0
1083
- }
1084
- });
1085
- listener(wrappedReq);
1086
- };
1087
- }); // Keep track if the deprecation warning has been logged at least once.
1088
-
1089
- let loggedSendResponseDeprecationWarning = false;
1090
- const onMessageWrappers = new DefaultWeakMap(listener => {
1091
- if (typeof listener !== "function") {
1092
- return listener;
1093
- }
1094
- /**
1095
- * Wraps a message listener function so that it may send responses based on
1096
- * its return value, rather than by returning a sentinel value and calling a
1097
- * callback. If the listener function returns a Promise, the response is
1098
- * sent when the promise either resolves or rejects.
1099
- *
1100
- * @param {*} message
1101
- * The message sent by the other end of the channel.
1102
- * @param {object} sender
1103
- * Details about the sender of the message.
1104
- * @param {function(*)} sendResponse
1105
- * A callback which, when called with an arbitrary argument, sends
1106
- * that value as a response.
1107
- * @returns {boolean}
1108
- * True if the wrapped listener returned a Promise, which will later
1109
- * yield a response. False otherwise.
1110
- */
1111
-
1112
-
1113
- return function onMessage(message, sender, sendResponse) {
1114
- let didCallSendResponse = false;
1115
- let wrappedSendResponse;
1116
- let sendResponsePromise = new Promise(resolve => {
1117
- wrappedSendResponse = function (response) {
1118
- if (!loggedSendResponseDeprecationWarning) {
1119
- console.warn(SEND_RESPONSE_DEPRECATION_WARNING, new Error().stack);
1120
- loggedSendResponseDeprecationWarning = true;
1121
- }
1122
-
1123
- didCallSendResponse = true;
1124
- resolve(response);
1125
- };
1126
- });
1127
- let result;
1128
-
1129
- try {
1130
- result = listener(message, sender, wrappedSendResponse);
1131
- } catch (err) {
1132
- result = Promise.reject(err);
1133
- }
1134
-
1135
- const isResultThenable = result !== true && isThenable(result); // If the listener didn't returned true or a Promise, or called
1136
- // wrappedSendResponse synchronously, we can exit earlier
1137
- // because there will be no response sent from this listener.
1138
-
1139
- if (result !== true && !isResultThenable && !didCallSendResponse) {
1140
- return false;
1141
- } // A small helper to send the message if the promise resolves
1142
- // and an error if the promise rejects (a wrapped sendMessage has
1143
- // to translate the message into a resolved promise or a rejected
1144
- // promise).
1145
-
1146
-
1147
- const sendPromisedResult = promise => {
1148
- promise.then(msg => {
1149
- // send the message value.
1150
- sendResponse(msg);
1151
- }, error => {
1152
- // Send a JSON representation of the error if the rejected value
1153
- // is an instance of error, or the object itself otherwise.
1154
- let message;
1155
-
1156
- if (error && (error instanceof Error || typeof error.message === "string")) {
1157
- message = error.message;
1158
- } else {
1159
- message = "An unexpected error occurred";
1160
- }
1161
-
1162
- sendResponse({
1163
- __mozWebExtensionPolyfillReject__: true,
1164
- message
1165
- });
1166
- }).catch(err => {
1167
- // Print an error on the console if unable to send the response.
1168
- console.error("Failed to send onMessage rejected reply", err);
1169
- });
1170
- }; // If the listener returned a Promise, send the resolved value as a
1171
- // result, otherwise wait the promise related to the wrappedSendResponse
1172
- // callback to resolve and send it as a response.
1173
-
1174
-
1175
- if (isResultThenable) {
1176
- sendPromisedResult(result);
1177
- } else {
1178
- sendPromisedResult(sendResponsePromise);
1179
- } // Let Chrome know that the listener is replying.
1180
-
1181
-
1182
- return true;
1183
- };
1184
- });
1185
-
1186
- const wrappedSendMessageCallback = ({
1187
- reject,
1188
- resolve
1189
- }, reply) => {
1190
- if (extensionAPIs.runtime.lastError) {
1191
- // Detect when none of the listeners replied to the sendMessage call and resolve
1192
- // the promise to undefined as in Firefox.
1193
- // See https://github.com/mozilla/webextension-polyfill/issues/130
1194
- if (extensionAPIs.runtime.lastError.message === CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE) {
1195
- resolve();
1196
- } else {
1197
- reject(new Error(extensionAPIs.runtime.lastError.message));
1198
- }
1199
- } else if (reply && reply.__mozWebExtensionPolyfillReject__) {
1200
- // Convert back the JSON representation of the error into
1201
- // an Error instance.
1202
- reject(new Error(reply.message));
1203
- } else {
1204
- resolve(reply);
1205
- }
1206
- };
1207
-
1208
- const wrappedSendMessage = (name, metadata, apiNamespaceObj, ...args) => {
1209
- if (args.length < metadata.minArgs) {
1210
- throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);
1211
- }
1212
-
1213
- if (args.length > metadata.maxArgs) {
1214
- throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);
1215
- }
1216
-
1217
- return new Promise((resolve, reject) => {
1218
- const wrappedCb = wrappedSendMessageCallback.bind(null, {
1219
- resolve,
1220
- reject
1221
- });
1222
- args.push(wrappedCb);
1223
- apiNamespaceObj.sendMessage(...args);
1224
- });
1225
- };
1226
-
1227
- const staticWrappers = {
1228
- devtools: {
1229
- network: {
1230
- onRequestFinished: wrapEvent(onRequestFinishedWrappers)
1231
- }
1232
- },
1233
- runtime: {
1234
- onMessage: wrapEvent(onMessageWrappers),
1235
- onMessageExternal: wrapEvent(onMessageWrappers),
1236
- sendMessage: wrappedSendMessage.bind(null, "sendMessage", {
1237
- minArgs: 1,
1238
- maxArgs: 3
1239
- })
1240
- },
1241
- tabs: {
1242
- sendMessage: wrappedSendMessage.bind(null, "sendMessage", {
1243
- minArgs: 2,
1244
- maxArgs: 3
1245
- })
1246
- }
1247
- };
1248
- const settingMetadata = {
1249
- clear: {
1250
- minArgs: 1,
1251
- maxArgs: 1
1252
- },
1253
- get: {
1254
- minArgs: 1,
1255
- maxArgs: 1
1256
- },
1257
- set: {
1258
- minArgs: 1,
1259
- maxArgs: 1
1260
- }
1261
- };
1262
- apiMetadata.privacy = {
1263
- network: {
1264
- "*": settingMetadata
1265
- },
1266
- services: {
1267
- "*": settingMetadata
1268
- },
1269
- websites: {
1270
- "*": settingMetadata
1271
- }
1272
- };
1273
- return wrapObject(extensionAPIs, staticWrappers, apiMetadata);
1274
- };
1275
-
1276
- if (typeof chrome != "object" || !chrome || !chrome.runtime || !chrome.runtime.id) {
1277
- throw new Error("This script should only be loaded in a browser extension.");
1278
- } // The build process adds a UMD wrapper around this file, which makes the
1279
- // `module` variable available.
1280
-
1281
-
1282
- module.exports = wrapAPIs(chrome);
1283
- } else {
1284
- module.exports = browser;
1285
- }
1286
- });
1287
-
1288
- }(browserPolyfill$1, browserPolyfill$1.exports));
1289
-
1290
- var browserPolyfill = browserPolyfill$1.exports;
1291
-
1292
- "use strict";
1293
- Object.defineProperty(lib, "__esModule", { value: true });
1294
-
1295
- var browser$1 = lib.browser = browserPolyfill$1.exports;
1296
-
1297
- // Allowing send_msg functions to throw errors (red) makes extension freeze when sending message to tab without onMessage event listrener!
1298
- global.we = browser$1;
1299
- const init_page = () => err(() => {
1300
- const title = global.document ? document.querySelector('title') : undefined;
1301
- if (['https:', 'http:'].includes(global.location.protocol)) {
1302
- global.page = 'content_script';
1303
- }
1304
- else {
1305
- global.page = n(title) && n(title.dataset.page) ? title.dataset.page : 'background';
1306
- }
1307
- }, 'shr_1093');
1308
- global.misplaced_dependency = (culprit_page) => err(() => {
1309
- if (page !== culprit_page) {
1310
- const msg = we.i18n.getMessage('dependencicies_from_other_page_loaded_into_this_page_alert') +
1311
- culprit_page.toUpperCase();
1312
- if (page === 'background') {
1313
- // eslint-disable-next-line no-console
1314
- console.log(msg);
1315
- }
1316
- else {
1317
- // eslint-disable-next-line no-alert
1318
- alert(msg);
1319
- }
1320
- }
1321
- }, 'shr_1094');
1322
- class Ext {
1323
- // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function
1324
- constructor() {
1325
- this.log_error = (error_obj, error_code) => {
1326
- // eslint-disable-next-line no-console
1327
- Main.i().output_error(error_obj, error_code);
1328
- };
1329
- this.get_ext_version = () => {
1330
- try {
1331
- return we.runtime.getManifest().version;
1332
- }
1333
- catch (error_obj) {
1334
- this.log_error(error_obj, 'shr_1095');
1335
- }
1336
- return '';
1337
- };
1338
- this.iterate_all_tabs = (callback) => __awaiter(this, void 0, void 0, function* () {
1339
- try {
1340
- const windows = yield we.windows.getAll({
1341
- populate: true,
1342
- windowTypes: ['normal'],
1343
- });
1344
- windows.forEach((self) => {
1345
- if (n(self.tabs)) {
1346
- self.tabs.forEach((tab) => {
1347
- if (n(tab.id)) {
1348
- callback(tab);
1349
- }
1350
- });
1351
- }
1352
- });
1353
- }
1354
- catch (error_obj) {
1355
- this.log_error(error_obj, 'shr_1096');
1356
- }
1357
- });
1358
- this.msg = (msg) => {
1359
- try {
1360
- const msg_2 = n(we.i18n.getMessage) ? we.i18n.getMessage(msg) : '';
1361
- return n(msg_2) ? msg_2 : '';
1362
- }
1363
- catch (error_obj) {
1364
- this.log_error(error_obj, 'shr_1097');
1365
- }
1366
- return '';
1367
- };
1368
- this.get_active_tab = () => __awaiter(this, void 0, void 0, function* () {
1369
- try {
1370
- const tabs = yield we.tabs.query({
1371
- active: true,
1372
- currentWindow: true,
1373
- });
1374
- return tabs[0];
1375
- }
1376
- catch (error_obj) {
1377
- this.log_error(error_obj, 'shr_1098');
1378
- }
1379
- return undefined;
1380
- });
1381
- this.send_msg = (msg) => __awaiter(this, void 0, void 0, function* () {
1382
- try {
1383
- yield we.runtime.sendMessage(msg);
1384
- }
1385
- catch (error_obj) {
1386
- this.log_error(error_obj, 'shr_1099');
1387
- }
1388
- });
1389
- this.send_msg_resp = (msg) => __awaiter(this, void 0, void 0, function* () {
1390
- try {
1391
- const response = yield we.runtime.sendMessage(msg);
1392
- return response;
1393
- }
1394
- catch (error_obj) {
1395
- this.log_error(error_obj, 'shr_1100');
1396
- }
1397
- return undefined;
1398
- });
1399
- this.send_msg_to_tab = (id, msg) => __awaiter(this, void 0, void 0, function* () {
1400
- try {
1401
- yield we.tabs.sendMessage(id, msg);
1402
- }
1403
- catch (error_obj) {
1404
- this.log_error(error_obj, 'shr_1101');
1405
- }
1406
- });
1407
- // eslint-disable-next-line @typescript-eslint/ban-types
1408
- this.send_msg_to_tab_resp = (id, msg) => __awaiter(this, void 0, void 0, function* () {
1409
- try {
1410
- const response = yield we.tabs.sendMessage(id, msg);
1411
- return response;
1412
- }
1413
- catch (error_obj) {
1414
- this.log_error(error_obj, 'shr_1102');
1415
- }
1416
- return undefined;
1417
- });
1418
- this.send_msg_to_active_tab = (msg) => __awaiter(this, void 0, void 0, function* () {
1419
- try {
1420
- const tab = yield this.get_active_tab();
1421
- if (n(tab) && n(tab.id)) {
1422
- yield this.send_msg_to_tab(tab.id, msg);
1423
- }
1424
- }
1425
- catch (error_obj) {
1426
- this.log_error(error_obj, 'shr_1103');
1427
- }
1428
- });
1429
- this.send_msg_to_active_tab_resp = (msg) => __awaiter(this, void 0, void 0, function* () {
1430
- try {
1431
- const tab = yield this.get_active_tab();
1432
- if (n(tab) && n(tab.id)) {
1433
- return this.send_msg_to_tab(tab.id, msg);
1434
- }
1435
- }
1436
- catch (error_obj) {
1437
- this.log_error(error_obj, 'shr_1104');
1438
- }
1439
- return undefined;
1440
- });
1441
- this.send_msg_to_all_tabs = (msg) => __awaiter(this, void 0, void 0, function* () {
1442
- try {
1443
- yield this.iterate_all_tabs((tab) => __awaiter(this, void 0, void 0, function* () {
1444
- try {
1445
- if (n(tab.id)) {
1446
- yield this.send_msg_to_tab(tab.id, msg);
1447
- }
1448
- }
1449
- catch (error_obj) {
1450
- this.log_error(error_obj, 'shr_1105');
1451
- }
1452
- }));
1453
- }
1454
- catch (error_obj) {
1455
- this.log_error(error_obj, 'shr_1106');
1456
- }
1457
- });
1458
- this.storage_get = (keys) => __awaiter(this, void 0, void 0, function* () {
1459
- try {
1460
- const data_sync = yield we.storage.sync.get(keys);
1461
- if (n(data_sync)) {
1462
- return data_sync;
1463
- }
1464
- const data_local = yield we.storage.local.get(keys);
1465
- return data_local;
1466
- }
1467
- catch (error_obj) {
1468
- this.log_error(error_obj, 'shr_1107');
1469
- }
1470
- return undefined;
1471
- });
1472
- this.storage_set = (obj) => __awaiter(this, void 0, void 0, function* () {
1473
- try {
1474
- const data_local = yield we.storage.local.get();
1475
- if (n(data_local)) {
1476
- const merged_data = _.merge(data_local, obj);
1477
- yield we.storage.sync.set(merged_data);
1478
- }
1479
- else {
1480
- yield we.storage.sync.set(obj);
1481
- }
1482
- yield we.storage.local.clear();
1483
- }
1484
- catch (error_obj) {
1485
- const data_sync = yield we.storage.sync.get();
1486
- if (n(data_sync)) {
1487
- yield we.storage.local.set(data_sync);
1488
- yield we.storage.sync.clear();
1489
- }
1490
- yield we.storage.local.set(obj);
1491
- }
1492
- });
1493
- this.inject_js_and_css_in_content_script = (js_file_paths, css_file_paths) => __awaiter(this, void 0, void 0, function* () {
1494
- yield this.iterate_all_tabs((tab) => __awaiter(this, void 0, void 0, function* () {
1495
- try {
1496
- if (n(tab.id)) {
1497
- const already_injected_script_func = () => document.title.includes('\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b');
1498
- const result = yield we.scripting.executeScript({
1499
- function: already_injected_script_func,
1500
- target: { tabId: tab.id },
1501
- });
1502
- const already_injected_script = result[0].result;
1503
- if (!already_injected_script) {
1504
- js_file_paths.forEach((file_path) => {
1505
- try {
1506
- we.scripting.executeScript({
1507
- target: { tabId: tab.id },
1508
- files: [file_path],
1509
- });
1510
- }
1511
- catch (error_obj) {
1512
- this.log_error(error_obj, 'shr_1108');
1513
- }
1514
- });
1515
- css_file_paths.forEach((file_path) => {
1516
- try {
1517
- we.scripting.insertCSS({
1518
- target: { tabId: tab.id },
1519
- files: [file_path],
1520
- });
1521
- }
1522
- catch (error_obj) {
1523
- this.log_error(error_obj, 'shr_1109');
1524
- }
1525
- });
1526
- }
1527
- }
1528
- }
1529
- catch (error_obj) {
1530
- this.log_error(error_obj, 'shr_1110');
1531
- }
1532
- }));
1533
- });
1534
- }
1535
- static i() {
1536
- // eslint-disable-next-line no-return-assign
1537
- return this.i0 || (this.i0 = new this());
1538
- }
1539
- }
1540
-
1541
- global.ext = Ext.i();
1542
- init_page(); // need to be here, otherwise error will happen
1543
-
1544
- export { Ext };
1
+ import{c as commonjsGlobal,_ as __awaiter,a as _}from"./chunk-main-ce8981a6.js";import{M as Main}from"./chunk-main-a8db968c.js";import"react";import"react-dom";var lib={},browserPolyfill={exports:{}};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,function(module){if("undefined"==typeof browser||Object.getPrototypeOf(browser)!==Object.prototype){const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE="The message port closed before a response was received.",SEND_RESPONSE_DEPRECATION_WARNING="Returning a Promise is the preferred way to send a reply from an onMessage/onMessageExternal listener, as the sendResponse will be removed from the specs (See https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage)",wrapAPIs=extensionAPIs=>{const apiMetadata={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(apiMetadata).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class DefaultWeakMap extends WeakMap{constructor(createItem,items){super(items),this.createItem=createItem}get(key){return this.has(key)||this.set(key,this.createItem(key)),super.get(key)}}const isThenable=value=>value&&"object"==typeof value&&"function"==typeof value.then,makeCallback=(promise,metadata)=>(...callbackArgs)=>{extensionAPIs.runtime.lastError?promise.reject(new Error(extensionAPIs.runtime.lastError.message)):metadata.singleCallbackArg||callbackArgs.length<=1&&!1!==metadata.singleCallbackArg?promise.resolve(callbackArgs[0]):promise.resolve(callbackArgs)},pluralizeArguments=numArgs=>1==numArgs?"argument":"arguments",wrapAsyncFunction=(name,metadata)=>function(target,...args){if(args.length<metadata.minArgs)throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);if(args.length>metadata.maxArgs)throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);return new Promise(((resolve,reject)=>{if(metadata.fallbackToNoCallback)try{target[name](...args,makeCallback({resolve:resolve,reject:reject},metadata))}catch(cbError){console.warn(`${name} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,cbError),target[name](...args),metadata.fallbackToNoCallback=!1,metadata.noCallback=!0,resolve()}else metadata.noCallback?(target[name](...args),resolve()):target[name](...args,makeCallback({resolve:resolve,reject:reject},metadata))}))},wrapMethod=(target,method,wrapper)=>new Proxy(method,{apply:(targetMethod,thisObj,args)=>wrapper.call(thisObj,target,...args)});let hasOwnProperty=Function.call.bind(Object.prototype.hasOwnProperty);const wrapObject=(target,wrappers={},metadata={})=>{let cache=Object.create(null),handlers={has:(proxyTarget,prop)=>prop in target||prop in cache,get(proxyTarget,prop,receiver){if(prop in cache)return cache[prop];if(!(prop in target))return;let value=target[prop];if("function"==typeof value)if("function"==typeof wrappers[prop])value=wrapMethod(target,target[prop],wrappers[prop]);else if(hasOwnProperty(metadata,prop)){let wrapper=wrapAsyncFunction(prop,metadata[prop]);value=wrapMethod(target,target[prop],wrapper)}else value=value.bind(target);else if("object"==typeof value&&null!==value&&(hasOwnProperty(wrappers,prop)||hasOwnProperty(metadata,prop)))value=wrapObject(value,wrappers[prop],metadata[prop]);else{if(!hasOwnProperty(metadata,"*"))return Object.defineProperty(cache,prop,{configurable:!0,enumerable:!0,get:()=>target[prop],set(value){target[prop]=value}}),value;value=wrapObject(value,wrappers[prop],metadata["*"])}return cache[prop]=value,value},set:(proxyTarget,prop,value,receiver)=>(prop in cache?cache[prop]=value:target[prop]=value,!0),defineProperty:(proxyTarget,prop,desc)=>Reflect.defineProperty(cache,prop,desc),deleteProperty:(proxyTarget,prop)=>Reflect.deleteProperty(cache,prop)},proxyTarget=Object.create(target);return new Proxy(proxyTarget,handlers)},wrapEvent=wrapperMap=>({addListener(target,listener,...args){target.addListener(wrapperMap.get(listener),...args)},hasListener:(target,listener)=>target.hasListener(wrapperMap.get(listener)),removeListener(target,listener){target.removeListener(wrapperMap.get(listener))}}),onRequestFinishedWrappers=new DefaultWeakMap((listener=>"function"!=typeof listener?listener:function(req){const wrappedReq=wrapObject(req,{},{getContent:{minArgs:0,maxArgs:0}});listener(wrappedReq)}));let loggedSendResponseDeprecationWarning=!1;const onMessageWrappers=new DefaultWeakMap((listener=>"function"!=typeof listener?listener:function(message,sender,sendResponse){let wrappedSendResponse,result,didCallSendResponse=!1,sendResponsePromise=new Promise((resolve=>{wrappedSendResponse=function(response){loggedSendResponseDeprecationWarning||(console.warn(SEND_RESPONSE_DEPRECATION_WARNING,(new Error).stack),loggedSendResponseDeprecationWarning=!0),didCallSendResponse=!0,resolve(response)}}));try{result=listener(message,sender,wrappedSendResponse)}catch(err){result=Promise.reject(err)}const isResultThenable=!0!==result&&isThenable(result);if(!0!==result&&!isResultThenable&&!didCallSendResponse)return!1;const sendPromisedResult=promise=>{promise.then((msg=>{sendResponse(msg)}),(error=>{let message;message=error&&(error instanceof Error||"string"==typeof error.message)?error.message:"An unexpected error occurred",sendResponse({__mozWebExtensionPolyfillReject__:!0,message:message})})).catch((err=>{console.error("Failed to send onMessage rejected reply",err)}))};return sendPromisedResult(isResultThenable?result:sendResponsePromise),!0})),wrappedSendMessageCallback=({reject:reject,resolve:resolve},reply)=>{extensionAPIs.runtime.lastError?extensionAPIs.runtime.lastError.message===CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE?resolve():reject(new Error(extensionAPIs.runtime.lastError.message)):reply&&reply.__mozWebExtensionPolyfillReject__?reject(new Error(reply.message)):resolve(reply)},wrappedSendMessage=(name,metadata,apiNamespaceObj,...args)=>{if(args.length<metadata.minArgs)throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);if(args.length>metadata.maxArgs)throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);return new Promise(((resolve,reject)=>{const wrappedCb=wrappedSendMessageCallback.bind(null,{resolve:resolve,reject:reject});args.push(wrappedCb),apiNamespaceObj.sendMessage(...args)}))},staticWrappers={devtools:{network:{onRequestFinished:wrapEvent(onRequestFinishedWrappers)}},runtime:{onMessage:wrapEvent(onMessageWrappers),onMessageExternal:wrapEvent(onMessageWrappers),sendMessage:wrappedSendMessage.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:wrappedSendMessage.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},settingMetadata={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return apiMetadata.privacy={network:{"*":settingMetadata},services:{"*":settingMetadata},websites:{"*":settingMetadata}},wrapObject(extensionAPIs,staticWrappers,apiMetadata)};if("object"!=typeof chrome||!chrome||!chrome.runtime||!chrome.runtime.id)throw new Error("This script should only be loaded in a browser extension.");module.exports=wrapAPIs(chrome)}else module.exports=browser}(browserPolyfill),Object.defineProperty(lib,"__esModule",{value:!0});var browser$1=lib.browser=browserPolyfill.exports;global.we=browser$1;global.misplaced_dependency=culprit_page=>err((()=>{if(page!==culprit_page){const msg=we.i18n.getMessage("dependencicies_from_other_page_loaded_into_this_page_alert")+culprit_page.toUpperCase();"background"===page?console.log(msg):alert(msg)}}),"shr_1094");class Ext{constructor(){this.log_error=(error_obj,error_code)=>{Main.i().output_error(error_obj,error_code)},this.get_ext_version=()=>{try{return we.runtime.getManifest().version}catch(error_obj){this.log_error(error_obj,"shr_1095")}return""},this.iterate_all_tabs=callback=>__awaiter(this,void 0,void 0,(function*(){try{(yield we.windows.getAll({populate:!0,windowTypes:["normal"]})).forEach((self=>{n(self.tabs)&&self.tabs.forEach((tab=>{n(tab.id)&&callback(tab)}))}))}catch(error_obj){this.log_error(error_obj,"shr_1096")}})),this.msg=msg=>{try{const msg_2=n(we.i18n.getMessage)?we.i18n.getMessage(msg):"";return n(msg_2)?msg_2:""}catch(error_obj){this.log_error(error_obj,"shr_1097")}return""},this.get_active_tab=()=>__awaiter(this,void 0,void 0,(function*(){try{return(yield we.tabs.query({active:!0,currentWindow:!0}))[0]}catch(error_obj){this.log_error(error_obj,"shr_1098")}})),this.send_msg=msg=>__awaiter(this,void 0,void 0,(function*(){try{yield we.runtime.sendMessage(msg)}catch(error_obj){this.log_error(error_obj,"shr_1099")}})),this.send_msg_resp=msg=>__awaiter(this,void 0,void 0,(function*(){try{return yield we.runtime.sendMessage(msg)}catch(error_obj){this.log_error(error_obj,"shr_1100")}})),this.send_msg_to_tab=(id,msg)=>__awaiter(this,void 0,void 0,(function*(){try{yield we.tabs.sendMessage(id,msg)}catch(error_obj){this.log_error(error_obj,"shr_1101")}})),this.send_msg_to_tab_resp=(id,msg)=>__awaiter(this,void 0,void 0,(function*(){try{return yield we.tabs.sendMessage(id,msg)}catch(error_obj){this.log_error(error_obj,"shr_1102")}})),this.send_msg_to_active_tab=msg=>__awaiter(this,void 0,void 0,(function*(){try{const tab=yield this.get_active_tab();n(tab)&&n(tab.id)&&(yield this.send_msg_to_tab(tab.id,msg))}catch(error_obj){this.log_error(error_obj,"shr_1103")}})),this.send_msg_to_active_tab_resp=msg=>__awaiter(this,void 0,void 0,(function*(){try{const tab=yield this.get_active_tab();if(n(tab)&&n(tab.id))return this.send_msg_to_tab(tab.id,msg)}catch(error_obj){this.log_error(error_obj,"shr_1104")}})),this.send_msg_to_all_tabs=msg=>__awaiter(this,void 0,void 0,(function*(){try{yield this.iterate_all_tabs((tab=>__awaiter(this,void 0,void 0,(function*(){try{n(tab.id)&&(yield this.send_msg_to_tab(tab.id,msg))}catch(error_obj){this.log_error(error_obj,"shr_1105")}}))))}catch(error_obj){this.log_error(error_obj,"shr_1106")}})),this.storage_get=keys=>__awaiter(this,void 0,void 0,(function*(){try{const data_sync=yield we.storage.sync.get(keys);if(n(data_sync))return data_sync;return yield we.storage.local.get(keys)}catch(error_obj){this.log_error(error_obj,"shr_1107")}})),this.storage_set=obj=>__awaiter(this,void 0,void 0,(function*(){try{const data_local=yield we.storage.local.get();if(n(data_local)){const merged_data=_.merge(data_local,obj);yield we.storage.sync.set(merged_data)}else yield we.storage.sync.set(obj);yield we.storage.local.clear()}catch(error_obj){const data_sync=yield we.storage.sync.get();n(data_sync)&&(yield we.storage.local.set(data_sync),yield we.storage.sync.clear()),yield we.storage.local.set(obj)}})),this.inject_js_and_css_in_content_script=(js_file_paths,css_file_paths)=>__awaiter(this,void 0,void 0,(function*(){yield this.iterate_all_tabs((tab=>__awaiter(this,void 0,void 0,(function*(){try{if(n(tab.id)){const already_injected_script_func=()=>document.title.includes("​​​​​​​​​​"),result=yield we.scripting.executeScript({function:already_injected_script_func,target:{tabId:tab.id}});result[0].result||(js_file_paths.forEach((file_path=>{try{we.scripting.executeScript({target:{tabId:tab.id},files:[file_path]})}catch(error_obj){this.log_error(error_obj,"shr_1108")}})),css_file_paths.forEach((file_path=>{try{we.scripting.insertCSS({target:{tabId:tab.id},files:[file_path]})}catch(error_obj){this.log_error(error_obj,"shr_1109")}})))}}catch(error_obj){this.log_error(error_obj,"shr_1110")}}))))}))}static i(){return this.i0||(this.i0=new this)}}global.ext=Ext.i(),err((()=>{const title=global.document?document.querySelector("title"):void 0;["https:","http:"].includes(global.location.protocol)?global.page="content_script":global.page=n(title)&&n(title.dataset.page)?title.dataset.page:"background"}),"shr_1093");export{Ext};