@opentabs-dev/browser-extension 0.0.61 → 0.0.63
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.
- package/dist/background-message-handlers.d.ts +8 -14
- package/dist/background-message-handlers.d.ts.map +1 -1
- package/dist/background-message-handlers.js +54 -154
- package/dist/background-message-handlers.js.map +1 -1
- package/dist/background.js +112 -214
- package/dist/confirmation-badge.d.ts +3 -24
- package/dist/confirmation-badge.d.ts.map +1 -1
- package/dist/confirmation-badge.js +13 -98
- package/dist/confirmation-badge.js.map +1 -1
- package/dist/extension-messages.d.ts +19 -34
- package/dist/extension-messages.d.ts.map +1 -1
- package/dist/message-router.d.ts +2 -2
- package/dist/message-router.d.ts.map +1 -1
- package/dist/message-router.js +24 -10
- package/dist/message-router.js.map +1 -1
- package/dist/offscreen/index.js +4 -6
- package/dist/offscreen/index.js.map +1 -1
- package/dist/plugin-storage.js +3 -3
- package/dist/plugin-storage.js.map +1 -1
- package/dist/server-state-cache.d.ts +12 -6
- package/dist/server-state-cache.d.ts.map +1 -1
- package/dist/server-state-cache.js +51 -21
- package/dist/server-state-cache.js.map +1 -1
- package/dist/side-panel/App.d.ts.map +1 -1
- package/dist/side-panel/App.js +19 -26
- package/dist/side-panel/App.js.map +1 -1
- package/dist/side-panel/bridge.d.ts +13 -18
- package/dist/side-panel/bridge.d.ts.map +1 -1
- package/dist/side-panel/bridge.js +14 -13
- package/dist/side-panel/bridge.js.map +1 -1
- package/dist/side-panel/components/BrowserToolsCard.d.ts +4 -1
- package/dist/side-panel/components/BrowserToolsCard.d.ts.map +1 -1
- package/dist/side-panel/components/BrowserToolsCard.js +40 -22
- package/dist/side-panel/components/BrowserToolsCard.js.map +1 -1
- package/dist/side-panel/components/ConfirmationDialog.d.ts +4 -11
- package/dist/side-panel/components/ConfirmationDialog.d.ts.map +1 -1
- package/dist/side-panel/components/ConfirmationDialog.js +23 -34
- package/dist/side-panel/components/ConfirmationDialog.js.map +1 -1
- package/dist/side-panel/components/NpmPluginCard.d.ts.map +1 -1
- package/dist/side-panel/components/NpmPluginCard.js +1 -1
- package/dist/side-panel/components/NpmPluginCard.js.map +1 -1
- package/dist/side-panel/components/PluginCard.d.ts +2 -1
- package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
- package/dist/side-panel/components/PluginCard.js +41 -40
- package/dist/side-panel/components/PluginCard.js.map +1 -1
- package/dist/side-panel/components/PluginIcon.d.ts +1 -2
- package/dist/side-panel/components/PluginIcon.d.ts.map +1 -1
- package/dist/side-panel/components/PluginIcon.js +36 -41
- package/dist/side-panel/components/PluginIcon.js.map +1 -1
- package/dist/side-panel/components/PluginList.d.ts +1 -1
- package/dist/side-panel/components/PluginList.d.ts.map +1 -1
- package/dist/side-panel/components/PluginList.js +99 -1
- package/dist/side-panel/components/PluginList.js.map +1 -1
- package/dist/side-panel/components/PluginMenu.d.ts.map +1 -1
- package/dist/side-panel/components/PluginMenu.js +1 -1
- package/dist/side-panel/components/PluginMenu.js.map +1 -1
- package/dist/side-panel/components/ToolIcon.d.ts.map +1 -1
- package/dist/side-panel/components/ToolIcon.js +9 -2
- package/dist/side-panel/components/ToolIcon.js.map +1 -1
- package/dist/side-panel/components/ToolRow.d.ts +14 -4
- package/dist/side-panel/components/ToolRow.d.ts.map +1 -1
- package/dist/side-panel/components/ToolRow.js +13 -3
- package/dist/side-panel/components/ToolRow.js.map +1 -1
- package/dist/side-panel/components/retro/Select.d.ts +13 -0
- package/dist/side-panel/components/retro/Select.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Select.js +27 -0
- package/dist/side-panel/components/retro/Select.js.map +1 -0
- package/dist/side-panel/constants.d.ts +0 -2
- package/dist/side-panel/constants.d.ts.map +1 -1
- package/dist/side-panel/constants.js +0 -2
- package/dist/side-panel/constants.js.map +1 -1
- package/dist/side-panel/group-transitions.d.ts +55 -0
- package/dist/side-panel/group-transitions.d.ts.map +1 -0
- package/dist/side-panel/group-transitions.js +84 -0
- package/dist/side-panel/group-transitions.js.map +1 -0
- package/dist/side-panel/hooks/useServerNotifications.d.ts +1 -3
- package/dist/side-panel/hooks/useServerNotifications.d.ts.map +1 -1
- package/dist/side-panel/hooks/useServerNotifications.js +13 -41
- package/dist/side-panel/hooks/useServerNotifications.js.map +1 -1
- package/dist/side-panel/side-panel.js +5979 -4668
- package/dist/side-panel/styles.css +1 -1
- package/dist/tool-dispatch.d.ts +2 -1
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +4 -6
- package/dist/tool-dispatch.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +2 -1
package/dist/background.js
CHANGED
|
@@ -94,10 +94,6 @@ var initSidePanelToggle = () => {
|
|
|
94
94
|
var pendingConfirmationCount = 0;
|
|
95
95
|
var NOTIFICATION_ID = "opentabs-confirmation";
|
|
96
96
|
var pendingConfirmations = /* @__PURE__ */ new Map();
|
|
97
|
-
var confirmationTimeouts = /* @__PURE__ */ new Map();
|
|
98
|
-
var clearedConfirmationIds = /* @__PURE__ */ new Set();
|
|
99
|
-
var CONFIRMATION_BACKGROUND_TIMEOUT_BUFFER_MS = 2e3;
|
|
100
|
-
var CONFIRMATION_FALLBACK_TIMEOUT_MS = 3e4;
|
|
101
97
|
var updateConfirmationBadge = () => {
|
|
102
98
|
if (pendingConfirmationCount > 0) {
|
|
103
99
|
chrome.action.setBadgeText({ text: String(pendingConfirmationCount) }).catch(() => {
|
|
@@ -118,7 +114,7 @@ var syncConfirmationNotification = () => {
|
|
|
118
114
|
let message;
|
|
119
115
|
if (pendingConfirmationCount === 1 && pendingConfirmations.size === 1) {
|
|
120
116
|
const info = pendingConfirmations.values().next().value;
|
|
121
|
-
message =
|
|
117
|
+
message = `${info.plugin}: ${info.tool}`;
|
|
122
118
|
} else if (pendingConfirmationCount > 1) {
|
|
123
119
|
message = `${pendingConfirmationCount} tools awaiting approval`;
|
|
124
120
|
} else {
|
|
@@ -136,59 +132,32 @@ var syncConfirmationNotification = () => {
|
|
|
136
132
|
};
|
|
137
133
|
var notifyConfirmationRequest = (params) => {
|
|
138
134
|
const tool = typeof params.tool === "string" ? params.tool : "unknown tool";
|
|
139
|
-
const
|
|
135
|
+
const plugin = typeof params.plugin === "string" ? params.plugin : "unknown";
|
|
140
136
|
const id = typeof params.id === "string" ? params.id : String(Date.now());
|
|
141
|
-
const
|
|
142
|
-
const paramsPreview = typeof params.paramsPreview === "string" ? params.paramsPreview : "";
|
|
143
|
-
const timeoutMs = typeof params.timeoutMs === "number" ? params.timeoutMs : 0;
|
|
137
|
+
const rawParams = typeof params.params === "object" && params.params !== null ? params.params : {};
|
|
144
138
|
const receivedAt = Date.now();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
pendingConfirmations.set(id, { id, tool, domain, tabId, paramsPreview, timeoutMs, receivedAt });
|
|
154
|
-
const effectiveTimeoutMs = timeoutMs > 0 ? timeoutMs : CONFIRMATION_FALLBACK_TIMEOUT_MS;
|
|
155
|
-
const bgTimeoutId = setTimeout(() => {
|
|
156
|
-
confirmationTimeouts.delete(id);
|
|
157
|
-
clearConfirmationBadge(id);
|
|
158
|
-
clearedConfirmationIds.delete(id);
|
|
159
|
-
}, effectiveTimeoutMs + CONFIRMATION_BACKGROUND_TIMEOUT_BUFFER_MS);
|
|
160
|
-
confirmationTimeouts.set(id, bgTimeoutId);
|
|
139
|
+
if (pendingConfirmations.has(id)) {
|
|
140
|
+
pendingConfirmations.set(id, { id, tool, plugin, params: rawParams, receivedAt });
|
|
141
|
+
syncConfirmationNotification();
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
pendingConfirmationCount++;
|
|
145
|
+
updateConfirmationBadge();
|
|
146
|
+
pendingConfirmations.set(id, { id, tool, plugin, params: rawParams, receivedAt });
|
|
161
147
|
syncConfirmationNotification();
|
|
162
148
|
};
|
|
163
149
|
var clearConfirmationBadge = (id) => {
|
|
164
150
|
if (id !== void 0) {
|
|
165
|
-
if (
|
|
151
|
+
if (!pendingConfirmations.has(id)) {
|
|
166
152
|
return;
|
|
167
153
|
}
|
|
168
|
-
clearedConfirmationIds.add(id);
|
|
169
154
|
pendingConfirmations.delete(id);
|
|
170
155
|
}
|
|
171
156
|
pendingConfirmationCount = Math.max(0, pendingConfirmationCount - 1);
|
|
172
157
|
updateConfirmationBadge();
|
|
173
158
|
syncConfirmationNotification();
|
|
174
|
-
if (id !== void 0 && !confirmationTimeouts.has(id)) {
|
|
175
|
-
clearedConfirmationIds.delete(id);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
var clearConfirmationBackgroundTimeout = (id) => {
|
|
179
|
-
const timeoutId = confirmationTimeouts.get(id);
|
|
180
|
-
if (timeoutId !== void 0) {
|
|
181
|
-
clearTimeout(timeoutId);
|
|
182
|
-
confirmationTimeouts.delete(id);
|
|
183
|
-
clearedConfirmationIds.delete(id);
|
|
184
|
-
}
|
|
185
159
|
};
|
|
186
160
|
var clearAllConfirmationBadges = () => {
|
|
187
|
-
for (const [, timeoutId] of confirmationTimeouts.entries()) {
|
|
188
|
-
clearTimeout(timeoutId);
|
|
189
|
-
}
|
|
190
|
-
confirmationTimeouts.clear();
|
|
191
|
-
clearedConfirmationIds.clear();
|
|
192
161
|
pendingConfirmations.clear();
|
|
193
162
|
pendingConfirmationCount = 0;
|
|
194
163
|
updateConfirmationBadge();
|
|
@@ -1151,12 +1120,12 @@ var removePluginsBatch = (pluginNames) => serialize(async () => {
|
|
|
1151
1120
|
await chrome.storage.local.set({ [PLUGINS_META_KEY]: filtered });
|
|
1152
1121
|
metaCache = filtered;
|
|
1153
1122
|
});
|
|
1154
|
-
var
|
|
1123
|
+
var VALID_PERMISSIONS = /* @__PURE__ */ new Set(["off", "ask", "auto"]);
|
|
1155
1124
|
var isValidPluginMeta = (value) => {
|
|
1156
1125
|
if (typeof value !== "object" || value === null)
|
|
1157
1126
|
return false;
|
|
1158
1127
|
const obj = value;
|
|
1159
|
-
return typeof obj.name === "string" && typeof obj.version === "string" && Array.isArray(obj.urlPatterns) && typeof obj.
|
|
1128
|
+
return typeof obj.name === "string" && typeof obj.version === "string" && Array.isArray(obj.urlPatterns) && typeof obj.permission === "string" && VALID_PERMISSIONS.has(obj.permission) && Array.isArray(obj.tools);
|
|
1160
1129
|
};
|
|
1161
1130
|
var getAllPluginMeta = async () => {
|
|
1162
1131
|
if (metaCache !== null) {
|
|
@@ -3246,46 +3215,67 @@ var EMPTY_CACHE = {
|
|
|
3246
3215
|
plugins: [],
|
|
3247
3216
|
failedPlugins: [],
|
|
3248
3217
|
browserTools: [],
|
|
3249
|
-
|
|
3218
|
+
browserPermission: void 0,
|
|
3219
|
+
serverVersion: void 0,
|
|
3220
|
+
skipPermissions: void 0
|
|
3250
3221
|
};
|
|
3251
3222
|
var cache = { ...EMPTY_CACHE };
|
|
3252
3223
|
var pendingPluginToolUpdates = /* @__PURE__ */ new Map();
|
|
3224
|
+
var pendingPluginPermissionUpdates = /* @__PURE__ */ new Map();
|
|
3253
3225
|
var pendingBrowserToolUpdates = /* @__PURE__ */ new Map();
|
|
3254
3226
|
var reapplyPendingOptimisticUpdates = () => {
|
|
3255
|
-
if (pendingPluginToolUpdates.size > 0) {
|
|
3227
|
+
if (pendingPluginToolUpdates.size > 0 || pendingPluginPermissionUpdates.size > 0) {
|
|
3256
3228
|
cache = {
|
|
3257
3229
|
...cache,
|
|
3258
3230
|
plugins: cache.plugins.map((plugin) => {
|
|
3231
|
+
const permOverride = pendingPluginPermissionUpdates.get(plugin.name);
|
|
3259
3232
|
const toolOverrides = pendingPluginToolUpdates.get(plugin.name);
|
|
3260
|
-
if (!toolOverrides)
|
|
3233
|
+
if (permOverride === void 0 && !toolOverrides)
|
|
3261
3234
|
return plugin;
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3235
|
+
let updated = plugin;
|
|
3236
|
+
if (permOverride !== void 0) {
|
|
3237
|
+
updated = { ...updated, permission: permOverride };
|
|
3238
|
+
}
|
|
3239
|
+
if (toolOverrides) {
|
|
3240
|
+
updated = {
|
|
3241
|
+
...updated,
|
|
3242
|
+
tools: updated.tools.map((tool) => {
|
|
3243
|
+
const override = toolOverrides.get(tool.name);
|
|
3244
|
+
return override !== void 0 ? { ...tool, permission: override } : tool;
|
|
3245
|
+
})
|
|
3246
|
+
};
|
|
3247
|
+
}
|
|
3248
|
+
return updated;
|
|
3269
3249
|
})
|
|
3270
3250
|
};
|
|
3271
3251
|
}
|
|
3252
|
+
const browserPermOverride = pendingPluginPermissionUpdates.get("browser");
|
|
3253
|
+
if (browserPermOverride !== void 0) {
|
|
3254
|
+
cache = { ...cache, browserPermission: browserPermOverride };
|
|
3255
|
+
}
|
|
3272
3256
|
if (pendingBrowserToolUpdates.size > 0) {
|
|
3273
3257
|
cache = {
|
|
3274
3258
|
...cache,
|
|
3275
3259
|
browserTools: cache.browserTools.map((bt) => {
|
|
3276
3260
|
const override = pendingBrowserToolUpdates.get(bt.name);
|
|
3277
|
-
return override !== void 0 ? { ...bt,
|
|
3261
|
+
return override !== void 0 ? { ...bt, permission: override } : bt;
|
|
3278
3262
|
})
|
|
3279
3263
|
};
|
|
3280
3264
|
}
|
|
3281
3265
|
};
|
|
3282
|
-
var
|
|
3266
|
+
var addPendingPluginPermissionUpdate = (plugin, permission) => {
|
|
3267
|
+
pendingPluginPermissionUpdates.set(plugin, permission);
|
|
3268
|
+
};
|
|
3269
|
+
var removePendingPluginPermissionUpdate = (plugin) => {
|
|
3270
|
+
pendingPluginPermissionUpdates.delete(plugin);
|
|
3271
|
+
};
|
|
3272
|
+
var addPendingPluginToolUpdate = (plugin, tool, permission) => {
|
|
3283
3273
|
let toolMap = pendingPluginToolUpdates.get(plugin);
|
|
3284
3274
|
if (!toolMap) {
|
|
3285
3275
|
toolMap = /* @__PURE__ */ new Map();
|
|
3286
3276
|
pendingPluginToolUpdates.set(plugin, toolMap);
|
|
3287
3277
|
}
|
|
3288
|
-
toolMap.set(tool,
|
|
3278
|
+
toolMap.set(tool, permission);
|
|
3289
3279
|
};
|
|
3290
3280
|
var removePendingPluginToolUpdate = (plugin, tool) => {
|
|
3291
3281
|
const toolMap = pendingPluginToolUpdates.get(plugin);
|
|
@@ -3295,14 +3285,14 @@ var removePendingPluginToolUpdate = (plugin, tool) => {
|
|
|
3295
3285
|
if (toolMap.size === 0)
|
|
3296
3286
|
pendingPluginToolUpdates.delete(plugin);
|
|
3297
3287
|
};
|
|
3298
|
-
var addPendingPluginAllToolsUpdate = (plugin, toolNames,
|
|
3288
|
+
var addPendingPluginAllToolsUpdate = (plugin, toolNames, permission) => {
|
|
3299
3289
|
let toolMap = pendingPluginToolUpdates.get(plugin);
|
|
3300
3290
|
if (!toolMap) {
|
|
3301
3291
|
toolMap = /* @__PURE__ */ new Map();
|
|
3302
3292
|
pendingPluginToolUpdates.set(plugin, toolMap);
|
|
3303
3293
|
}
|
|
3304
3294
|
for (const name of toolNames) {
|
|
3305
|
-
toolMap.set(name,
|
|
3295
|
+
toolMap.set(name, permission);
|
|
3306
3296
|
}
|
|
3307
3297
|
};
|
|
3308
3298
|
var removePendingPluginAllToolsUpdate = (plugin, toolNames) => {
|
|
@@ -3315,22 +3305,6 @@ var removePendingPluginAllToolsUpdate = (plugin, toolNames) => {
|
|
|
3315
3305
|
if (toolMap.size === 0)
|
|
3316
3306
|
pendingPluginToolUpdates.delete(plugin);
|
|
3317
3307
|
};
|
|
3318
|
-
var addPendingBrowserToolUpdate = (tool, enabled) => {
|
|
3319
|
-
pendingBrowserToolUpdates.set(tool, enabled);
|
|
3320
|
-
};
|
|
3321
|
-
var removePendingBrowserToolUpdate = (tool) => {
|
|
3322
|
-
pendingBrowserToolUpdates.delete(tool);
|
|
3323
|
-
};
|
|
3324
|
-
var addPendingAllBrowserToolsUpdate = (toolNames, enabled) => {
|
|
3325
|
-
for (const name of toolNames) {
|
|
3326
|
-
pendingBrowserToolUpdates.set(name, enabled);
|
|
3327
|
-
}
|
|
3328
|
-
};
|
|
3329
|
-
var removePendingAllBrowserToolsUpdate = (toolNames) => {
|
|
3330
|
-
for (const name of toolNames) {
|
|
3331
|
-
pendingBrowserToolUpdates.delete(name);
|
|
3332
|
-
}
|
|
3333
|
-
};
|
|
3334
3308
|
var cachesInitialized = false;
|
|
3335
3309
|
var persistTimer;
|
|
3336
3310
|
var persistToSession = () => {
|
|
@@ -3362,6 +3336,7 @@ var clearServerStateCache = () => {
|
|
|
3362
3336
|
cache = { ...EMPTY_CACHE };
|
|
3363
3337
|
cachesInitialized = false;
|
|
3364
3338
|
pendingPluginToolUpdates.clear();
|
|
3339
|
+
pendingPluginPermissionUpdates.clear();
|
|
3365
3340
|
pendingBrowserToolUpdates.clear();
|
|
3366
3341
|
if (persistTimer !== void 0) {
|
|
3367
3342
|
clearTimeout(persistTimer);
|
|
@@ -3379,7 +3354,9 @@ var loadServerStateCacheFromSession = async () => {
|
|
|
3379
3354
|
plugins: Array.isArray(stored.plugins) ? stored.plugins : [],
|
|
3380
3355
|
failedPlugins: Array.isArray(stored.failedPlugins) ? stored.failedPlugins : [],
|
|
3381
3356
|
browserTools: Array.isArray(stored.browserTools) ? stored.browserTools : [],
|
|
3382
|
-
|
|
3357
|
+
browserPermission: stored.browserPermission === "off" || stored.browserPermission === "ask" || stored.browserPermission === "auto" ? stored.browserPermission : void 0,
|
|
3358
|
+
serverVersion: typeof stored.serverVersion === "string" ? stored.serverVersion : void 0,
|
|
3359
|
+
skipPermissions: typeof stored.skipPermissions === "boolean" ? stored.skipPermissions : void 0
|
|
3383
3360
|
};
|
|
3384
3361
|
}
|
|
3385
3362
|
if (typeof data[CACHES_INITIALIZED_KEY] === "boolean") {
|
|
@@ -3540,13 +3517,10 @@ var notifyDispatchProgress = (dispatchId) => {
|
|
|
3540
3517
|
cb();
|
|
3541
3518
|
};
|
|
3542
3519
|
var getPluginLink = (plugin) => {
|
|
3543
|
-
if (plugin.
|
|
3520
|
+
if (plugin.sourcePath) {
|
|
3544
3521
|
return plugin.sourcePath;
|
|
3545
3522
|
}
|
|
3546
|
-
|
|
3547
|
-
return `https://npmjs.com/package/@opentabs-dev/plugin-${plugin.name}`;
|
|
3548
|
-
}
|
|
3549
|
-
return `https://npmjs.com/package/opentabs-plugin-${plugin.name}`;
|
|
3523
|
+
return `https://npmjs.com/package/${plugin.name}`;
|
|
3550
3524
|
};
|
|
3551
3525
|
var injectToolInvocationLog = async (tabId, pluginName, toolName, link) => {
|
|
3552
3526
|
try {
|
|
@@ -3834,7 +3808,7 @@ var toPluginMeta = (p) => ({
|
|
|
3834
3808
|
version: p.version,
|
|
3835
3809
|
displayName: p.displayName,
|
|
3836
3810
|
urlPatterns: p.urlPatterns,
|
|
3837
|
-
|
|
3811
|
+
permission: p.permission,
|
|
3838
3812
|
sourcePath: p.sourcePath,
|
|
3839
3813
|
adapterHash: p.adapterHash,
|
|
3840
3814
|
adapterFile: p.adapterFile,
|
|
@@ -3860,16 +3834,17 @@ var validatePluginPayload = (raw) => {
|
|
|
3860
3834
|
}
|
|
3861
3835
|
const urlPatterns = Array.isArray(obj.urlPatterns) ? obj.urlPatterns.filter((p) => typeof p === "string") : [];
|
|
3862
3836
|
const tools = Array.isArray(obj.tools) ? obj.tools.filter((t) => typeof t === "object" && t !== null && typeof t.name === "string" && typeof t.description === "string").map((t) => {
|
|
3863
|
-
if (
|
|
3864
|
-
console.warn(`[opentabs] Tool "${t.name}" in plugin "${obj.name}"
|
|
3837
|
+
if (t.permission !== "off" && t.permission !== "ask" && t.permission !== "auto") {
|
|
3838
|
+
console.warn(`[opentabs] Tool "${t.name}" in plugin "${obj.name}" has invalid "permission" field \u2014 defaulting to permission='off'. This is a server-side bug.`);
|
|
3865
3839
|
}
|
|
3866
3840
|
return {
|
|
3867
3841
|
name: t.name,
|
|
3868
3842
|
displayName: typeof t.displayName === "string" ? t.displayName : t.name,
|
|
3869
3843
|
description: t.description,
|
|
3844
|
+
...typeof t.summary === "string" ? { summary: t.summary } : {},
|
|
3870
3845
|
icon: typeof t.icon === "string" ? t.icon : "wrench",
|
|
3871
3846
|
...typeof t.group === "string" ? { group: t.group } : {},
|
|
3872
|
-
|
|
3847
|
+
permission: t.permission === "off" || t.permission === "ask" || t.permission === "auto" ? t.permission : "off"
|
|
3873
3848
|
};
|
|
3874
3849
|
}) : [];
|
|
3875
3850
|
return {
|
|
@@ -3877,7 +3852,7 @@ var validatePluginPayload = (raw) => {
|
|
|
3877
3852
|
version: typeof obj.version === "string" ? obj.version : "0.0.0",
|
|
3878
3853
|
displayName: typeof obj.displayName === "string" ? obj.displayName : obj.name,
|
|
3879
3854
|
urlPatterns,
|
|
3880
|
-
|
|
3855
|
+
permission: obj.permission === "off" || obj.permission === "ask" || obj.permission === "auto" ? obj.permission : "off",
|
|
3881
3856
|
sourcePath: typeof obj.sourcePath === "string" ? obj.sourcePath : void 0,
|
|
3882
3857
|
adapterHash: typeof obj.adapterHash === "string" ? obj.adapterHash : void 0,
|
|
3883
3858
|
adapterFile: typeof obj.adapterFile === "string" ? obj.adapterFile : void 0,
|
|
@@ -3951,11 +3926,12 @@ var handleSyncFull = async (params) => {
|
|
|
3951
3926
|
name: p.name,
|
|
3952
3927
|
displayName: p.displayName,
|
|
3953
3928
|
version: p.version,
|
|
3954
|
-
|
|
3929
|
+
permission: p.permission,
|
|
3955
3930
|
source: raw?.source === "npm" || raw?.source === "local" ? raw.source : "local",
|
|
3956
3931
|
tabState: "closed",
|
|
3957
3932
|
urlPatterns: p.urlPatterns,
|
|
3958
3933
|
tools: p.tools,
|
|
3934
|
+
reviewed: raw?.reviewed === true,
|
|
3959
3935
|
iconSvg: p.iconSvg,
|
|
3960
3936
|
iconInactiveSvg: p.iconInactiveSvg,
|
|
3961
3937
|
iconDarkSvg: p.iconDarkSvg,
|
|
@@ -3969,11 +3945,16 @@ var handleSyncFull = async (params) => {
|
|
|
3969
3945
|
const rawFailedPlugins = Array.isArray(params.failedPlugins) ? params.failedPlugins : void 0;
|
|
3970
3946
|
const rawBrowserTools = Array.isArray(params.browserTools) ? params.browserTools : void 0;
|
|
3971
3947
|
const rawServerVersion = typeof params.serverVersion === "string" ? params.serverVersion : void 0;
|
|
3948
|
+
const rawBrowserPermission = params.browserPermission;
|
|
3949
|
+
const browserPermission = rawBrowserPermission === "off" || rawBrowserPermission === "ask" || rawBrowserPermission === "auto" ? rawBrowserPermission : void 0;
|
|
3950
|
+
const rawSkipPermissions = typeof params.skipPermissions === "boolean" ? params.skipPermissions : void 0;
|
|
3972
3951
|
updateServerStateCache({
|
|
3973
3952
|
plugins: cachePlugins,
|
|
3974
3953
|
...rawFailedPlugins ? { failedPlugins: rawFailedPlugins } : {},
|
|
3975
3954
|
...rawBrowserTools ? { browserTools: rawBrowserTools } : {},
|
|
3976
|
-
...
|
|
3955
|
+
...browserPermission !== void 0 ? { browserPermission } : {},
|
|
3956
|
+
...rawServerVersion !== void 0 ? { serverVersion: rawServerVersion } : {},
|
|
3957
|
+
...rawSkipPermissions !== void 0 ? { skipPermissions: rawSkipPermissions } : {}
|
|
3977
3958
|
});
|
|
3978
3959
|
setCachesInitialized(true);
|
|
3979
3960
|
flushServerStateCacheToSession();
|
|
@@ -4001,11 +3982,12 @@ var handlePluginUpdate = async (params) => {
|
|
|
4001
3982
|
name: validated.name,
|
|
4002
3983
|
displayName: validated.displayName,
|
|
4003
3984
|
version: validated.version,
|
|
4004
|
-
|
|
3985
|
+
permission: validated.permission,
|
|
4005
3986
|
source: params.source === "npm" || params.source === "local" ? params.source : "local",
|
|
4006
3987
|
tabState: newState.state,
|
|
4007
3988
|
urlPatterns: validated.urlPatterns,
|
|
4008
3989
|
tools: validated.tools,
|
|
3990
|
+
reviewed: params.reviewed === true,
|
|
4009
3991
|
iconSvg: validated.iconSvg,
|
|
4010
3992
|
iconInactiveSvg: validated.iconInactiveSvg,
|
|
4011
3993
|
iconDarkSvg: validated.iconDarkSvg,
|
|
@@ -4144,7 +4126,9 @@ var handleServerMessage = (message) => {
|
|
|
4144
4126
|
...payload.plugins ? { plugins: payload.plugins } : {},
|
|
4145
4127
|
...payload.failedPlugins ? { failedPlugins: payload.failedPlugins } : {},
|
|
4146
4128
|
...payload.browserTools ? { browserTools: payload.browserTools } : {},
|
|
4147
|
-
...payload.
|
|
4129
|
+
...payload.browserPermission !== void 0 ? { browserPermission: payload.browserPermission } : {},
|
|
4130
|
+
...payload.serverVersion !== void 0 ? { serverVersion: payload.serverVersion } : {},
|
|
4131
|
+
...payload.skipPermissions !== void 0 ? { skipPermissions: payload.skipPermissions } : {}
|
|
4148
4132
|
});
|
|
4149
4133
|
}
|
|
4150
4134
|
if (method && SIDE_PANEL_METHODS.has(method)) {
|
|
@@ -4278,15 +4262,17 @@ var handleBgGetFullState = (_message, sendResponse) => {
|
|
|
4278
4262
|
const serverTool = serverPlugin?.tools.find((st) => st.name === metaTool.name);
|
|
4279
4263
|
return {
|
|
4280
4264
|
...metaTool,
|
|
4281
|
-
|
|
4265
|
+
permission: serverTool?.permission ?? metaTool.permission
|
|
4282
4266
|
};
|
|
4283
4267
|
});
|
|
4284
4268
|
const { tools: _metaTools, sourcePath: _sourcePath, adapterHash: _adapterHash, adapterFile: _adapterFile, ...metaFields } = meta;
|
|
4285
4269
|
return {
|
|
4286
4270
|
...metaFields,
|
|
4271
|
+
permission: serverPlugin?.permission ?? meta.permission,
|
|
4287
4272
|
tools,
|
|
4288
4273
|
tabState,
|
|
4289
4274
|
source: serverPlugin?.source ?? "local",
|
|
4275
|
+
reviewed: serverPlugin?.reviewed ?? false,
|
|
4290
4276
|
sdkVersion: serverPlugin?.sdkVersion,
|
|
4291
4277
|
update: serverPlugin?.update
|
|
4292
4278
|
};
|
|
@@ -4297,7 +4283,9 @@ var handleBgGetFullState = (_message, sendResponse) => {
|
|
|
4297
4283
|
plugins,
|
|
4298
4284
|
failedPlugins: serverCache.failedPlugins,
|
|
4299
4285
|
browserTools: serverCache.browserTools,
|
|
4286
|
+
browserPermission: serverCache.browserPermission,
|
|
4300
4287
|
serverVersion: serverCache.serverVersion,
|
|
4288
|
+
skipPermissions: serverCache.skipPermissions,
|
|
4301
4289
|
pendingConfirmations: getPendingConfirmations()
|
|
4302
4290
|
});
|
|
4303
4291
|
})().catch(() => {
|
|
@@ -4366,38 +4354,27 @@ var handleSpConfirmationResponse = (message, sendResponse) => {
|
|
|
4366
4354
|
}
|
|
4367
4355
|
const data = message.data;
|
|
4368
4356
|
const id = typeof data?.id === "string" ? data.id : void 0;
|
|
4369
|
-
if (id !== void 0) {
|
|
4370
|
-
clearConfirmationBackgroundTimeout(id);
|
|
4371
|
-
}
|
|
4372
4357
|
clearConfirmationBadge(id);
|
|
4373
4358
|
sendResponse({ ok: true });
|
|
4374
4359
|
};
|
|
4375
|
-
var
|
|
4376
|
-
const id = typeof message.id === "string" ? message.id : void 0;
|
|
4377
|
-
if (id !== void 0) {
|
|
4378
|
-
clearConfirmationBackgroundTimeout(id);
|
|
4379
|
-
}
|
|
4380
|
-
clearConfirmationBadge(id);
|
|
4381
|
-
sendResponse({ ok: true });
|
|
4382
|
-
};
|
|
4383
|
-
var handleBgSetToolEnabled = (message, sendResponse) => {
|
|
4360
|
+
var handleBgSetToolPermission = (message, sendResponse) => {
|
|
4384
4361
|
const plugin = message.plugin;
|
|
4385
4362
|
const tool = message.tool;
|
|
4386
|
-
const
|
|
4363
|
+
const permission = message.permission;
|
|
4387
4364
|
const cache2 = getServerStateCache();
|
|
4388
4365
|
const pluginEntry = cache2.plugins.find((p) => p.name === plugin);
|
|
4389
|
-
const
|
|
4366
|
+
const originalPermission = pluginEntry?.tools.find((t) => t.name === tool)?.permission ?? "auto";
|
|
4390
4367
|
const updatedPlugins = cache2.plugins.map((p) => {
|
|
4391
4368
|
if (p.name !== plugin)
|
|
4392
4369
|
return p;
|
|
4393
4370
|
return {
|
|
4394
4371
|
...p,
|
|
4395
|
-
tools: p.tools.map((t) => t.name === tool ? { ...t,
|
|
4372
|
+
tools: p.tools.map((t) => t.name === tool ? { ...t, permission } : t)
|
|
4396
4373
|
};
|
|
4397
4374
|
});
|
|
4398
|
-
addPendingPluginToolUpdate(plugin, tool,
|
|
4375
|
+
addPendingPluginToolUpdate(plugin, tool, permission);
|
|
4399
4376
|
updateServerStateCache({ plugins: updatedPlugins });
|
|
4400
|
-
sendServerRequest("config.
|
|
4377
|
+
sendServerRequest("config.setToolPermission", { plugin, tool, permission }).then((result) => {
|
|
4401
4378
|
removePendingPluginToolUpdate(plugin, tool);
|
|
4402
4379
|
sendResponse(result);
|
|
4403
4380
|
}).catch((err2) => {
|
|
@@ -4408,23 +4385,23 @@ var handleBgSetToolEnabled = (message, sendResponse) => {
|
|
|
4408
4385
|
return p;
|
|
4409
4386
|
return {
|
|
4410
4387
|
...p,
|
|
4411
|
-
tools: p.tools.map((t) => t.name === tool ? { ...t,
|
|
4388
|
+
tools: p.tools.map((t) => t.name === tool ? { ...t, permission: originalPermission } : t)
|
|
4412
4389
|
};
|
|
4413
4390
|
});
|
|
4414
4391
|
updateServerStateCache({ plugins: revertedPlugins });
|
|
4415
4392
|
sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
|
|
4416
4393
|
});
|
|
4417
4394
|
};
|
|
4418
|
-
var
|
|
4395
|
+
var handleBgSetAllToolsPermission = (message, sendResponse) => {
|
|
4419
4396
|
const plugin = message.plugin;
|
|
4420
|
-
const
|
|
4397
|
+
const permission = message.permission;
|
|
4421
4398
|
const cache2 = getServerStateCache();
|
|
4422
4399
|
const pluginEntry = cache2.plugins.find((p) => p.name === plugin);
|
|
4423
4400
|
const toolNames = pluginEntry ? pluginEntry.tools.map((t) => t.name) : [];
|
|
4424
4401
|
const originalToolStates = /* @__PURE__ */ new Map();
|
|
4425
4402
|
if (pluginEntry) {
|
|
4426
4403
|
for (const t of pluginEntry.tools) {
|
|
4427
|
-
originalToolStates.set(t.name, t.
|
|
4404
|
+
originalToolStates.set(t.name, t.permission);
|
|
4428
4405
|
}
|
|
4429
4406
|
}
|
|
4430
4407
|
const updatedPlugins = cache2.plugins.map((p) => {
|
|
@@ -4432,12 +4409,12 @@ var handleBgSetAllToolsEnabled = (message, sendResponse) => {
|
|
|
4432
4409
|
return p;
|
|
4433
4410
|
return {
|
|
4434
4411
|
...p,
|
|
4435
|
-
tools: p.tools.map((t) => ({ ...t,
|
|
4412
|
+
tools: p.tools.map((t) => ({ ...t, permission }))
|
|
4436
4413
|
};
|
|
4437
4414
|
});
|
|
4438
|
-
addPendingPluginAllToolsUpdate(plugin, toolNames,
|
|
4415
|
+
addPendingPluginAllToolsUpdate(plugin, toolNames, permission);
|
|
4439
4416
|
updateServerStateCache({ plugins: updatedPlugins });
|
|
4440
|
-
sendServerRequest("config.
|
|
4417
|
+
sendServerRequest("config.setAllToolsPermission", { plugin, permission }).then((result) => {
|
|
4441
4418
|
removePendingPluginAllToolsUpdate(plugin, toolNames);
|
|
4442
4419
|
sendResponse(result);
|
|
4443
4420
|
}).catch((err2) => {
|
|
@@ -4450,7 +4427,7 @@ var handleBgSetAllToolsEnabled = (message, sendResponse) => {
|
|
|
4450
4427
|
...p,
|
|
4451
4428
|
tools: p.tools.map((t) => ({
|
|
4452
4429
|
...t,
|
|
4453
|
-
|
|
4430
|
+
permission: originalToolStates.get(t.name) ?? t.permission
|
|
4454
4431
|
}))
|
|
4455
4432
|
};
|
|
4456
4433
|
});
|
|
@@ -4458,104 +4435,31 @@ var handleBgSetAllToolsEnabled = (message, sendResponse) => {
|
|
|
4458
4435
|
sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
|
|
4459
4436
|
});
|
|
4460
4437
|
};
|
|
4461
|
-
var
|
|
4438
|
+
var handleBgSetPluginPermission = (message, sendResponse) => {
|
|
4462
4439
|
const plugin = message.plugin;
|
|
4463
|
-
const
|
|
4464
|
-
const
|
|
4440
|
+
const permission = message.permission;
|
|
4441
|
+
const reviewedVersion = typeof message.reviewedVersion === "string" ? message.reviewedVersion : void 0;
|
|
4465
4442
|
const cache2 = getServerStateCache();
|
|
4466
4443
|
const pluginEntry = cache2.plugins.find((p) => p.name === plugin);
|
|
4467
|
-
const
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
for (const t of pluginEntry.tools) {
|
|
4471
|
-
if (toolNameSet2.has(t.name)) {
|
|
4472
|
-
originalToolStates.set(t.name, t.enabled);
|
|
4473
|
-
}
|
|
4474
|
-
}
|
|
4475
|
-
}
|
|
4476
|
-
const toolNameSet = new Set(toolNames);
|
|
4477
|
-
const updatedPlugins = cache2.plugins.map((p) => {
|
|
4478
|
-
if (p.name !== plugin)
|
|
4479
|
-
return p;
|
|
4480
|
-
return {
|
|
4481
|
-
...p,
|
|
4482
|
-
tools: p.tools.map((t) => toolNameSet.has(t.name) ? { ...t, enabled } : t)
|
|
4483
|
-
};
|
|
4484
|
-
});
|
|
4485
|
-
addPendingPluginAllToolsUpdate(plugin, toolNames, enabled);
|
|
4444
|
+
const originalPermission = pluginEntry?.permission ?? "off";
|
|
4445
|
+
const updatedPlugins = cache2.plugins.map((p) => p.name === plugin ? { ...p, permission, ...reviewedVersion ? { reviewed: true } : {} } : p);
|
|
4446
|
+
addPendingPluginPermissionUpdate(plugin, permission);
|
|
4486
4447
|
updateServerStateCache({ plugins: updatedPlugins });
|
|
4487
|
-
sendServerRequest("config.
|
|
4448
|
+
sendServerRequest("config.setPluginPermission", {
|
|
4488
4449
|
plugin,
|
|
4489
|
-
|
|
4490
|
-
|
|
4450
|
+
permission,
|
|
4451
|
+
...reviewedVersion ? { reviewedVersion } : {}
|
|
4491
4452
|
}).then((result) => {
|
|
4492
|
-
|
|
4453
|
+
removePendingPluginPermissionUpdate(plugin);
|
|
4493
4454
|
sendResponse(result);
|
|
4494
4455
|
}).catch((err2) => {
|
|
4495
|
-
|
|
4456
|
+
removePendingPluginPermissionUpdate(plugin);
|
|
4496
4457
|
const currentCache = getServerStateCache();
|
|
4497
|
-
const revertedPlugins = currentCache.plugins.map((p) => {
|
|
4498
|
-
if (p.name !== plugin)
|
|
4499
|
-
return p;
|
|
4500
|
-
return {
|
|
4501
|
-
...p,
|
|
4502
|
-
tools: p.tools.map((t) => ({
|
|
4503
|
-
...t,
|
|
4504
|
-
enabled: originalToolStates.get(t.name) ?? t.enabled
|
|
4505
|
-
}))
|
|
4506
|
-
};
|
|
4507
|
-
});
|
|
4458
|
+
const revertedPlugins = currentCache.plugins.map((p) => p.name === plugin ? { ...p, permission: originalPermission } : p);
|
|
4508
4459
|
updateServerStateCache({ plugins: revertedPlugins });
|
|
4509
4460
|
sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
|
|
4510
4461
|
});
|
|
4511
4462
|
};
|
|
4512
|
-
var handleBgSetBrowserToolEnabled = (message, sendResponse) => {
|
|
4513
|
-
const tool = message.tool;
|
|
4514
|
-
const enabled = message.enabled;
|
|
4515
|
-
const cache2 = getServerStateCache();
|
|
4516
|
-
const originalEnabled = cache2.browserTools.find((bt) => bt.name === tool)?.enabled ?? !enabled;
|
|
4517
|
-
const updatedBrowserTools = cache2.browserTools.map((bt) => bt.name === tool ? { ...bt, enabled } : bt);
|
|
4518
|
-
addPendingBrowserToolUpdate(tool, enabled);
|
|
4519
|
-
updateServerStateCache({ browserTools: updatedBrowserTools });
|
|
4520
|
-
sendServerRequest("config.setBrowserToolEnabled", { tool, enabled }).then((result) => {
|
|
4521
|
-
removePendingBrowserToolUpdate(tool);
|
|
4522
|
-
sendResponse(result);
|
|
4523
|
-
}).catch((err2) => {
|
|
4524
|
-
removePendingBrowserToolUpdate(tool);
|
|
4525
|
-
const currentCache = getServerStateCache();
|
|
4526
|
-
const revertedBrowserTools = currentCache.browserTools.map((bt) => bt.name === tool ? { ...bt, enabled: originalEnabled } : bt);
|
|
4527
|
-
updateServerStateCache({ browserTools: revertedBrowserTools });
|
|
4528
|
-
sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
|
|
4529
|
-
});
|
|
4530
|
-
};
|
|
4531
|
-
var handleBgSetAllBrowserToolsEnabled = (message, sendResponse) => {
|
|
4532
|
-
const enabled = message.enabled;
|
|
4533
|
-
const cache2 = getServerStateCache();
|
|
4534
|
-
const toolNames = cache2.browserTools.map((bt) => bt.name);
|
|
4535
|
-
const originalToolStates = /* @__PURE__ */ new Map();
|
|
4536
|
-
for (const bt of cache2.browserTools) {
|
|
4537
|
-
originalToolStates.set(bt.name, bt.enabled);
|
|
4538
|
-
}
|
|
4539
|
-
const updatedBrowserTools = cache2.browserTools.map((bt) => ({
|
|
4540
|
-
...bt,
|
|
4541
|
-
enabled
|
|
4542
|
-
}));
|
|
4543
|
-
addPendingAllBrowserToolsUpdate(toolNames, enabled);
|
|
4544
|
-
updateServerStateCache({ browserTools: updatedBrowserTools });
|
|
4545
|
-
sendServerRequest("config.setAllBrowserToolsEnabled", { enabled }).then((result) => {
|
|
4546
|
-
removePendingAllBrowserToolsUpdate(toolNames);
|
|
4547
|
-
sendResponse(result);
|
|
4548
|
-
}).catch((err2) => {
|
|
4549
|
-
removePendingAllBrowserToolsUpdate(toolNames);
|
|
4550
|
-
const currentCache = getServerStateCache();
|
|
4551
|
-
const revertedBrowserTools = currentCache.browserTools.map((bt) => ({
|
|
4552
|
-
...bt,
|
|
4553
|
-
enabled: originalToolStates.get(bt.name) ?? bt.enabled
|
|
4554
|
-
}));
|
|
4555
|
-
updateServerStateCache({ browserTools: revertedBrowserTools });
|
|
4556
|
-
sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
|
|
4557
|
-
});
|
|
4558
|
-
};
|
|
4559
4463
|
var handleBgSearchPlugins = (message, sendResponse) => {
|
|
4560
4464
|
const query = message.query;
|
|
4561
4465
|
sendServerRequest("plugin.search", { query }).then((result) => {
|
|
@@ -4598,11 +4502,9 @@ var backgroundHandlers = /* @__PURE__ */ new Map([
|
|
|
4598
4502
|
["ws:state", handleWsState],
|
|
4599
4503
|
["ws:message", handleWsMessage],
|
|
4600
4504
|
["bg:getFullState", handleBgGetFullState],
|
|
4601
|
-
["bg:
|
|
4602
|
-
["bg:
|
|
4603
|
-
["bg:
|
|
4604
|
-
["bg:setBrowserToolEnabled", handleBgSetBrowserToolEnabled],
|
|
4605
|
-
["bg:setAllBrowserToolsEnabled", handleBgSetAllBrowserToolsEnabled],
|
|
4505
|
+
["bg:setToolPermission", handleBgSetToolPermission],
|
|
4506
|
+
["bg:setAllToolsPermission", handleBgSetAllToolsPermission],
|
|
4507
|
+
["bg:setPluginPermission", handleBgSetPluginPermission],
|
|
4606
4508
|
["bg:searchPlugins", handleBgSearchPlugins],
|
|
4607
4509
|
["bg:installPlugin", handleBgInstallPlugin],
|
|
4608
4510
|
["bg:removePlugin", handleBgRemovePlugin],
|
|
@@ -4610,7 +4512,6 @@ var backgroundHandlers = /* @__PURE__ */ new Map([
|
|
|
4610
4512
|
["plugin:logs", handlePluginLogs],
|
|
4611
4513
|
["tool:progress", handleToolProgress],
|
|
4612
4514
|
["sp:confirmationResponse", handleSpConfirmationResponse],
|
|
4613
|
-
["sp:confirmationTimeout", handleSpConfirmationTimeout],
|
|
4614
4515
|
["port-changed", handlePortChanged]
|
|
4615
4516
|
]);
|
|
4616
4517
|
var EXTENSION_ONLY_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -4618,18 +4519,15 @@ var EXTENSION_ONLY_TYPES = /* @__PURE__ */ new Set([
|
|
|
4618
4519
|
"ws:state",
|
|
4619
4520
|
"ws:message",
|
|
4620
4521
|
"bg:getFullState",
|
|
4621
|
-
"bg:
|
|
4622
|
-
"bg:
|
|
4623
|
-
"bg:
|
|
4624
|
-
"bg:setBrowserToolEnabled",
|
|
4625
|
-
"bg:setAllBrowserToolsEnabled",
|
|
4522
|
+
"bg:setToolPermission",
|
|
4523
|
+
"bg:setAllToolsPermission",
|
|
4524
|
+
"bg:setPluginPermission",
|
|
4626
4525
|
"bg:searchPlugins",
|
|
4627
4526
|
"bg:installPlugin",
|
|
4628
4527
|
"bg:removePlugin",
|
|
4629
4528
|
"bg:updatePlugin",
|
|
4630
4529
|
"offscreen:getLogs",
|
|
4631
4530
|
"sp:confirmationResponse",
|
|
4632
|
-
"sp:confirmationTimeout",
|
|
4633
4531
|
"port-changed"
|
|
4634
4532
|
]);
|
|
4635
4533
|
var initBackgroundMessageHandlers = () => {
|