@toocoolname/chrome-proxy 1.0.0
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/index.cjs +274 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +107 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.js +233 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/chrome/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
chromeMessage: () => chromeMessage,
|
|
34
|
+
chromeRuntime: () => chromeRuntime,
|
|
35
|
+
chromeSidePanel: () => chromeSidePanel,
|
|
36
|
+
chromeStorage: () => chromeStorage,
|
|
37
|
+
chromeTabs: () => chromeTabs
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(index_exports);
|
|
40
|
+
|
|
41
|
+
// src/chrome/runtime.ts
|
|
42
|
+
var chromeRuntime = {
|
|
43
|
+
get id() {
|
|
44
|
+
return chrome.runtime.id;
|
|
45
|
+
},
|
|
46
|
+
getURL(path) {
|
|
47
|
+
return chrome.runtime.getURL(path);
|
|
48
|
+
},
|
|
49
|
+
onInstalled: {
|
|
50
|
+
addListener(callback) {
|
|
51
|
+
chrome.runtime.onInstalled.addListener(callback);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
onStartup: {
|
|
55
|
+
addListener(callback) {
|
|
56
|
+
chrome.runtime.onStartup.addListener(callback);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/chrome/tabs.ts
|
|
62
|
+
var chromeTabs = {
|
|
63
|
+
query(queryInfo) {
|
|
64
|
+
return chrome.tabs.query(queryInfo);
|
|
65
|
+
},
|
|
66
|
+
get(tabId) {
|
|
67
|
+
return chrome.tabs.get(tabId);
|
|
68
|
+
},
|
|
69
|
+
onUpdated: {
|
|
70
|
+
addListener(callback) {
|
|
71
|
+
chrome.tabs.onUpdated.addListener(callback);
|
|
72
|
+
},
|
|
73
|
+
removeListener(callback) {
|
|
74
|
+
chrome.tabs.onUpdated.removeListener(callback);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
onRemoved: {
|
|
78
|
+
addListener(callback) {
|
|
79
|
+
chrome.tabs.onRemoved.addListener(callback);
|
|
80
|
+
},
|
|
81
|
+
removeListener(callback) {
|
|
82
|
+
chrome.tabs.onRemoved.removeListener(callback);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// src/chrome/storage.ts
|
|
88
|
+
var chromeStorage = {
|
|
89
|
+
local: {
|
|
90
|
+
get(keys) {
|
|
91
|
+
return chrome.storage.local.get(keys);
|
|
92
|
+
},
|
|
93
|
+
set(items) {
|
|
94
|
+
return chrome.storage.local.set(items);
|
|
95
|
+
},
|
|
96
|
+
remove(keys) {
|
|
97
|
+
return chrome.storage.local.remove(keys);
|
|
98
|
+
},
|
|
99
|
+
clear() {
|
|
100
|
+
return chrome.storage.local.clear();
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
session: {
|
|
104
|
+
get(keys) {
|
|
105
|
+
return chrome.storage.session.get(keys);
|
|
106
|
+
},
|
|
107
|
+
set(items) {
|
|
108
|
+
return chrome.storage.session.set(items);
|
|
109
|
+
},
|
|
110
|
+
remove(keys) {
|
|
111
|
+
return chrome.storage.session.remove(keys);
|
|
112
|
+
},
|
|
113
|
+
clear() {
|
|
114
|
+
return chrome.storage.session.clear();
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
sync: {
|
|
118
|
+
get(keys) {
|
|
119
|
+
return chrome.storage.sync.get(keys);
|
|
120
|
+
},
|
|
121
|
+
set(items) {
|
|
122
|
+
return chrome.storage.sync.set(items);
|
|
123
|
+
},
|
|
124
|
+
remove(keys) {
|
|
125
|
+
return chrome.storage.sync.remove(keys);
|
|
126
|
+
},
|
|
127
|
+
clear() {
|
|
128
|
+
return chrome.storage.sync.clear();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// src/chrome/sidePanel.ts
|
|
134
|
+
var chromeSidePanel = {
|
|
135
|
+
setOptions(options) {
|
|
136
|
+
return chrome.sidePanel.setOptions(options);
|
|
137
|
+
},
|
|
138
|
+
getOptions(options) {
|
|
139
|
+
return chrome.sidePanel.getOptions(options);
|
|
140
|
+
},
|
|
141
|
+
setPanelBehavior(behavior) {
|
|
142
|
+
return chrome.sidePanel.setPanelBehavior(behavior);
|
|
143
|
+
},
|
|
144
|
+
getPanelBehavior() {
|
|
145
|
+
return chrome.sidePanel.getPanelBehavior();
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// src/chrome/messege.ts
|
|
150
|
+
var v = __toESM(require("valibot"), 1);
|
|
151
|
+
var chromeMessage = {
|
|
152
|
+
createExternalMessenger(schemas) {
|
|
153
|
+
return {
|
|
154
|
+
send: async (extensionId, type, payload) => {
|
|
155
|
+
try {
|
|
156
|
+
const rawResponse = await chrome.runtime.sendMessage(extensionId, { type, payload });
|
|
157
|
+
if (!rawResponse || typeof rawResponse !== "object") {
|
|
158
|
+
return { success: false, error: "System" };
|
|
159
|
+
}
|
|
160
|
+
if ("success" in rawResponse && rawResponse.success === false) {
|
|
161
|
+
return rawResponse;
|
|
162
|
+
}
|
|
163
|
+
if ("success" in rawResponse && rawResponse.success === true && "data" in rawResponse) {
|
|
164
|
+
const result = v.safeParse(schemas[type].response, rawResponse.data);
|
|
165
|
+
if (!result.success) {
|
|
166
|
+
return { success: false, error: "Validation" };
|
|
167
|
+
}
|
|
168
|
+
return { success: true, data: result.output };
|
|
169
|
+
}
|
|
170
|
+
return { success: false, error: "System" };
|
|
171
|
+
} catch (e) {
|
|
172
|
+
return { success: false, error: "System" };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
},
|
|
177
|
+
createLocalMessenger() {
|
|
178
|
+
return {
|
|
179
|
+
send: async (type, payload) => {
|
|
180
|
+
try {
|
|
181
|
+
if (!chrome.runtime.id) return { success: false, error: "System" };
|
|
182
|
+
const rawResponse = await chrome.runtime.sendMessage({
|
|
183
|
+
type,
|
|
184
|
+
payload
|
|
185
|
+
});
|
|
186
|
+
if (rawResponse && typeof rawResponse === "object" && "success" in rawResponse) {
|
|
187
|
+
return rawResponse;
|
|
188
|
+
}
|
|
189
|
+
return { success: false, error: "System" };
|
|
190
|
+
} catch (error) {
|
|
191
|
+
return { success: false, error: "System" };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
},
|
|
196
|
+
createTabMessenger() {
|
|
197
|
+
return {
|
|
198
|
+
send: async (tabId, type, payload) => {
|
|
199
|
+
try {
|
|
200
|
+
if (!chrome.runtime.id) return { success: false, error: "System" };
|
|
201
|
+
const rawResponse = await chrome.tabs.sendMessage(tabId, {
|
|
202
|
+
type,
|
|
203
|
+
payload
|
|
204
|
+
});
|
|
205
|
+
if (rawResponse && typeof rawResponse === "object" && "success" in rawResponse) {
|
|
206
|
+
return rawResponse;
|
|
207
|
+
}
|
|
208
|
+
return { success: false, error: "System" };
|
|
209
|
+
} catch (error) {
|
|
210
|
+
return { success: false, error: "System" };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
},
|
|
215
|
+
createLocalListener(handlers) {
|
|
216
|
+
const listener = (message, _sender, sendResponse) => {
|
|
217
|
+
if (typeof message !== "object" || message === null || !("type" in message)) return false;
|
|
218
|
+
const msg = message;
|
|
219
|
+
const type = msg.type;
|
|
220
|
+
const payload = msg.payload;
|
|
221
|
+
const typedHandlers = handlers;
|
|
222
|
+
const handler = typedHandlers[type];
|
|
223
|
+
if (handler) {
|
|
224
|
+
Promise.resolve(handler(payload)).then((data) => sendResponse({ success: true, data })).catch((error) => sendResponse({ success: false, error: "System" }));
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
return false;
|
|
228
|
+
};
|
|
229
|
+
chrome.runtime.onMessage.addListener(listener);
|
|
230
|
+
return listener;
|
|
231
|
+
},
|
|
232
|
+
removeLocalListener(callback) {
|
|
233
|
+
chrome.runtime.onMessage.removeListener(callback);
|
|
234
|
+
},
|
|
235
|
+
createExternalListener(schemas, handlers) {
|
|
236
|
+
const listener = (message, _sender, sendResponse) => {
|
|
237
|
+
if (!message || typeof message !== "object" || !("type" in message)) return false;
|
|
238
|
+
const msg = message;
|
|
239
|
+
const key = msg.type;
|
|
240
|
+
const handler = handlers[key];
|
|
241
|
+
const schema = schemas[key];
|
|
242
|
+
if (!handler || !schema) {
|
|
243
|
+
sendResponse({ success: false, error: "HandlerMissing" });
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
const payload = msg.payload;
|
|
247
|
+
const validation = v.safeParse(schema.request, payload);
|
|
248
|
+
if (!validation.success) {
|
|
249
|
+
sendResponse({ success: false, error: "Validation" });
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
Promise.resolve(handler(validation.output)).then((data) => {
|
|
253
|
+
sendResponse({ success: true, data });
|
|
254
|
+
}).catch((err) => {
|
|
255
|
+
sendResponse({ success: false, error: "System" });
|
|
256
|
+
});
|
|
257
|
+
return true;
|
|
258
|
+
};
|
|
259
|
+
chrome.runtime.onMessageExternal.addListener(listener);
|
|
260
|
+
return listener;
|
|
261
|
+
},
|
|
262
|
+
removeExternalListener(callback) {
|
|
263
|
+
chrome.runtime.onMessageExternal.removeListener(callback);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
267
|
+
0 && (module.exports = {
|
|
268
|
+
chromeMessage,
|
|
269
|
+
chromeRuntime,
|
|
270
|
+
chromeSidePanel,
|
|
271
|
+
chromeStorage,
|
|
272
|
+
chromeTabs
|
|
273
|
+
});
|
|
274
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chrome/index.ts","../src/chrome/runtime.ts","../src/chrome/tabs.ts","../src/chrome/storage.ts","../src/chrome/sidePanel.ts","../src/chrome/messege.ts"],"sourcesContent":["export * from './runtime';\nexport * from './tabs';\nexport * from './storage';\nexport * from './sidePanel';\nexport * from './messege';\nexport * from './types';","import { MessageListener, InstalledDetails } from './types';\n\nexport const chromeRuntime = {\n get id(): string {\n return chrome.runtime.id;\n },\n\n getURL(path: string): string {\n return chrome.runtime.getURL(path);\n },\n\n onInstalled: {\n addListener(callback: (details: InstalledDetails) => void): void {\n chrome.runtime.onInstalled.addListener(callback);\n }\n },\n\n onStartup: {\n addListener(callback: () => void): void {\n chrome.runtime.onStartup.addListener(callback);\n }\n }\n};\n","import { Tab, QueryInfo, TabChangeInfo, TabRemoveInfo } from './types';\n\nexport const chromeTabs = {\n query(queryInfo: QueryInfo): Promise<Tab[]> {\n return chrome.tabs.query(queryInfo);\n },\n\n get(tabId: number): Promise<Tab> {\n return chrome.tabs.get(tabId);\n },\n\n onUpdated: {\n addListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void {\n chrome.tabs.onUpdated.addListener(callback);\n },\n removeListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void {\n chrome.tabs.onUpdated.removeListener(callback);\n }\n },\n\n onRemoved: {\n addListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void {\n chrome.tabs.onRemoved.addListener(callback);\n },\n removeListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void {\n chrome.tabs.onRemoved.removeListener(callback);\n }\n }\n};\n","export const chromeStorage = {\n local: {\n get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>> {\n return chrome.storage.local.get(keys);\n },\n set(items: Record<string, unknown>): Promise<void> {\n return chrome.storage.local.set(items);\n },\n remove(keys: string | string[]): Promise<void> {\n return chrome.storage.local.remove(keys);\n },\n clear(): Promise<void> {\n return chrome.storage.local.clear();\n }\n },\n session: {\n get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>> {\n return chrome.storage.session.get(keys);\n },\n set(items: Record<string, unknown>): Promise<void> {\n return chrome.storage.session.set(items);\n },\n remove(keys: string | string[]): Promise<void> {\n return chrome.storage.session.remove(keys);\n },\n clear(): Promise<void> {\n return chrome.storage.session.clear();\n }\n },\n sync: {\n get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>> {\n return chrome.storage.sync.get(keys);\n },\n set(items: Record<string, unknown>): Promise<void> {\n return chrome.storage.sync.set(items);\n },\n remove(keys: string | string[]): Promise<void> {\n return chrome.storage.sync.remove(keys);\n },\n clear(): Promise<void> {\n return chrome.storage.sync.clear();\n }\n }\n};\n","import { PanelOptions, GetPanelOptions, PanelBehavior } from './types';\n\nexport const chromeSidePanel = {\n setOptions(options: PanelOptions): Promise<void> {\n return chrome.sidePanel.setOptions(options);\n },\n getOptions(options: GetPanelOptions): Promise<PanelOptions> {\n return chrome.sidePanel.getOptions(options);\n },\n setPanelBehavior(behavior: PanelBehavior): Promise<void> {\n return chrome.sidePanel.setPanelBehavior(behavior);\n },\n getPanelBehavior(): Promise<PanelBehavior> {\n return chrome.sidePanel.getPanelBehavior();\n }\n};\n","import * as v from 'valibot';\nimport { MessageListener, MessageSender, MessengerSchema, Result, SendResponse } from './types';\n\ninterface MessagePayload<K> {\n type: K;\n payload: unknown;\n}\n\nexport const chromeMessage = {\n\n createExternalMessenger<T extends MessengerSchema>(schemas: T) {\n return {\n send: async <K extends keyof T>(\n extensionId: string,\n type: K,\n payload: v.InferInput<T[K]['request']>\n ): Promise<Result<v.InferOutput<T[K]['response']>>> => {\n try {\n // 1. Send Message\n const rawResponse = await chrome.runtime.sendMessage(extensionId, { type, payload });\n\n // 2. Validate Response Structure\n if (!rawResponse || typeof rawResponse !== 'object') {\n return { success: false, error: 'System' };\n }\n\n if ('success' in rawResponse && rawResponse.success === false) {\n return rawResponse as Result<v.InferOutput<T[K]['response']>>;\n }\n\n if ('success' in rawResponse && rawResponse.success === true && 'data' in rawResponse) {\n // 3. Validate Data\n const result = v.safeParse(schemas[type].response, rawResponse.data);\n\n if (!result.success) {\n return { success: false, error: 'Validation' };\n }\n\n return { success: true, data: result.output };\n }\n\n return { success: false, error: 'System' };\n } catch (e) {\n return { success: false, error: 'System' };\n }\n }\n };\n },\n\n createLocalMessenger<T>() {\n return {\n send: async <K extends keyof T>(\n type: K,\n payload: T[K] extends { request: infer Req } ? Req : never\n ): Promise<Result<T[K] extends { response: infer Res } ? Res : never>> => {\n try {\n if (!chrome.runtime.id) return { success: false, error: 'System' };\n\n const rawResponse = await chrome.runtime.sendMessage({\n type: type as string,\n payload\n });\n\n if (rawResponse && typeof rawResponse === 'object' && 'success' in rawResponse) {\n return rawResponse as Result<T[K] extends { response: infer Res } ? Res : never>;\n }\n\n return { success: false, error: 'System' };\n\n } catch (error) {\n return { success: false, error: 'System' };\n }\n }\n };\n },\n\n createTabMessenger<T>() {\n return {\n send: async <K extends keyof T>(\n tabId: number,\n type: K,\n payload: T[K] extends { request: infer Req } ? Req : never\n ): Promise<Result<T[K] extends { response: infer Res } ? Res : never>> => {\n try {\n if (!chrome.runtime.id) return { success: false, error: 'System' };\n\n const rawResponse = await chrome.tabs.sendMessage(tabId, {\n type: type as string,\n payload\n });\n\n if (rawResponse && typeof rawResponse === 'object' && 'success' in rawResponse) {\n return rawResponse as Result<T[K] extends { response: infer Res } ? Res : never>;\n }\n\n return { success: false, error: 'System' };\n\n } catch (error) {\n return { success: false, error: 'System' };\n }\n }\n };\n },\n\n createLocalListener<T>(\n // A mapping of types to handler functions\n handlers: {\n [K in keyof T]: T[K] extends { request: infer Req, response: infer Res }\n ? (payload: Req) => Promise<Res> | Res\n : (payload: unknown) => unknown\n }\n ) {\n const listener = (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => {\n if (typeof message !== 'object' || message === null || !('type' in message)) return false;\n\n const msg = message as MessagePayload<keyof T>;\n const type = msg.type;\n const payload = msg.payload;\n const typedHandlers = handlers as Record<keyof T, (p: unknown) => unknown>;\n const handler = typedHandlers[type];\n\n if (handler) {\n // Execute the handler and return the result\n Promise.resolve(handler(payload))\n .then(data => sendResponse({ success: true, data }))\n .catch(error => sendResponse({ success: false, error: 'System' }));\n return true; // Keeps the message channel open for async response\n }\n return false;\n };\n\n chrome.runtime.onMessage.addListener(listener)\n return listener\n },\n\n removeLocalListener<T = unknown>(callback: MessageListener<T>): void {\n chrome.runtime.onMessage.removeListener(callback as Parameters<typeof chrome.runtime.onMessage.removeListener>[0]);\n },\n\n createExternalListener<T extends MessengerSchema>(\n schemas: T,\n handlers: {\n [K in keyof T]: (payload: v.InferOutput<T[K]['request']>) => Promise<v.InferInput<T[K]['response']>> | v.InferInput<T[K]['response']>\n }\n ) {\n const listener = (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => {\n // Basic check\n if (!message || typeof message !== 'object' || !('type' in message)) return false;\n\n const msg = message as MessagePayload<keyof T>;\n const key = msg.type;\n\n const handler = handlers[key];\n const schema = schemas[key];\n\n if (!handler || !schema) {\n sendResponse({ success: false, error: 'HandlerMissing' });\n return false;\n }\n\n const payload = msg.payload;\n\n // Validation & Execution\n const validation = v.safeParse(schema.request, payload);\n if (!validation.success) {\n sendResponse({ success: false, error: 'Validation' });\n return false;\n }\n\n // Handle async execution safely\n Promise.resolve(handler(validation.output))\n .then(data => {\n sendResponse({ success: true, data });\n })\n .catch(err => {\n sendResponse({ success: false, error: 'System' });\n });\n\n return true; // Keep channel open\n };\n chrome.runtime.onMessageExternal.addListener(listener);\n return listener;\n },\n\n removeExternalListener<T = unknown>(callback: MessageListener<T>): void {\n chrome.runtime.onMessageExternal.removeListener(callback as Parameters<typeof chrome.runtime.onMessageExternal.removeListener>[0]);\n }\n}"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
|
|
3
|
+
type MessageSender = chrome.runtime.MessageSender;
|
|
4
|
+
type Port = chrome.runtime.Port;
|
|
5
|
+
type SendResponse = (response?: Result<unknown>) => void;
|
|
6
|
+
type InstalledDetails = chrome.runtime.InstalledDetails;
|
|
7
|
+
type MessageListener<T = unknown> = (message: T, sender: MessageSender, sendResponse: SendResponse) => boolean | void | Promise<void>;
|
|
8
|
+
type Tab = chrome.tabs.Tab;
|
|
9
|
+
type QueryInfo = chrome.tabs.QueryInfo;
|
|
10
|
+
type TabChangeInfo = Parameters<Parameters<typeof chrome.tabs.onUpdated.addListener>[0]>[1];
|
|
11
|
+
type StorageArea = chrome.storage.StorageArea;
|
|
12
|
+
type PanelBehavior = chrome.sidePanel.PanelBehavior;
|
|
13
|
+
type PanelOptions = chrome.sidePanel.PanelOptions;
|
|
14
|
+
type GetPanelOptions = chrome.sidePanel.GetPanelOptions;
|
|
15
|
+
type TabRemoveInfo = Parameters<Parameters<typeof chrome.tabs.onRemoved.addListener>[0]>[1];
|
|
16
|
+
type MessengerSchema = Record<string, {
|
|
17
|
+
request: v.BaseSchema<any, any, any>;
|
|
18
|
+
response: v.BaseSchema<any, any, any>;
|
|
19
|
+
}>;
|
|
20
|
+
type Result<T> = {
|
|
21
|
+
success: true;
|
|
22
|
+
data: T;
|
|
23
|
+
} | {
|
|
24
|
+
success: false;
|
|
25
|
+
error: 'Validation' | 'System' | 'HandlerMissing';
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
declare const chromeRuntime: {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
getURL(path: string): string;
|
|
31
|
+
onInstalled: {
|
|
32
|
+
addListener(callback: (details: InstalledDetails) => void): void;
|
|
33
|
+
};
|
|
34
|
+
onStartup: {
|
|
35
|
+
addListener(callback: () => void): void;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
declare const chromeTabs: {
|
|
40
|
+
query(queryInfo: QueryInfo): Promise<Tab[]>;
|
|
41
|
+
get(tabId: number): Promise<Tab>;
|
|
42
|
+
onUpdated: {
|
|
43
|
+
addListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void;
|
|
44
|
+
removeListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void;
|
|
45
|
+
};
|
|
46
|
+
onRemoved: {
|
|
47
|
+
addListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void;
|
|
48
|
+
removeListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
declare const chromeStorage: {
|
|
53
|
+
local: {
|
|
54
|
+
get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>>;
|
|
55
|
+
set(items: Record<string, unknown>): Promise<void>;
|
|
56
|
+
remove(keys: string | string[]): Promise<void>;
|
|
57
|
+
clear(): Promise<void>;
|
|
58
|
+
};
|
|
59
|
+
session: {
|
|
60
|
+
get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>>;
|
|
61
|
+
set(items: Record<string, unknown>): Promise<void>;
|
|
62
|
+
remove(keys: string | string[]): Promise<void>;
|
|
63
|
+
clear(): Promise<void>;
|
|
64
|
+
};
|
|
65
|
+
sync: {
|
|
66
|
+
get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>>;
|
|
67
|
+
set(items: Record<string, unknown>): Promise<void>;
|
|
68
|
+
remove(keys: string | string[]): Promise<void>;
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
declare const chromeSidePanel: {
|
|
74
|
+
setOptions(options: PanelOptions): Promise<void>;
|
|
75
|
+
getOptions(options: GetPanelOptions): Promise<PanelOptions>;
|
|
76
|
+
setPanelBehavior(behavior: PanelBehavior): Promise<void>;
|
|
77
|
+
getPanelBehavior(): Promise<PanelBehavior>;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
declare const chromeMessage: {
|
|
81
|
+
createExternalMessenger<T extends MessengerSchema>(schemas: T): {
|
|
82
|
+
send: <K extends keyof T>(extensionId: string, type: K, payload: v.InferInput<T[K]["request"]>) => Promise<Result<v.InferOutput<T[K]["response"]>>>;
|
|
83
|
+
};
|
|
84
|
+
createLocalMessenger<T>(): {
|
|
85
|
+
send: <K extends keyof T>(type: K, payload: T[K] extends {
|
|
86
|
+
request: infer Req;
|
|
87
|
+
} ? Req : never) => Promise<Result<T[K] extends {
|
|
88
|
+
response: infer Res;
|
|
89
|
+
} ? Res : never>>;
|
|
90
|
+
};
|
|
91
|
+
createTabMessenger<T>(): {
|
|
92
|
+
send: <K extends keyof T>(tabId: number, type: K, payload: T[K] extends {
|
|
93
|
+
request: infer Req;
|
|
94
|
+
} ? Req : never) => Promise<Result<T[K] extends {
|
|
95
|
+
response: infer Res;
|
|
96
|
+
} ? Res : never>>;
|
|
97
|
+
};
|
|
98
|
+
createLocalListener<T>(handlers: { [K in keyof T]: T[K] extends {
|
|
99
|
+
request: infer Req;
|
|
100
|
+
response: infer Res;
|
|
101
|
+
} ? (payload: Req) => Promise<Res> | Res : (payload: unknown) => unknown; }): (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => boolean;
|
|
102
|
+
removeLocalListener<T = unknown>(callback: MessageListener<T>): void;
|
|
103
|
+
createExternalListener<T extends MessengerSchema>(schemas: T, handlers: { [K in keyof T]: (payload: v.InferOutput<T[K]["request"]>) => Promise<v.InferInput<T[K]["response"]>> | v.InferInput<T[K]["response"]>; }): (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => boolean;
|
|
104
|
+
removeExternalListener<T = unknown>(callback: MessageListener<T>): void;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export { type GetPanelOptions, type InstalledDetails, type MessageListener, type MessageSender, type MessengerSchema, type PanelBehavior, type PanelOptions, type Port, type QueryInfo, type Result, type SendResponse, type StorageArea, type Tab, type TabChangeInfo, type TabRemoveInfo, chromeMessage, chromeRuntime, chromeSidePanel, chromeStorage, chromeTabs };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
|
|
3
|
+
type MessageSender = chrome.runtime.MessageSender;
|
|
4
|
+
type Port = chrome.runtime.Port;
|
|
5
|
+
type SendResponse = (response?: Result<unknown>) => void;
|
|
6
|
+
type InstalledDetails = chrome.runtime.InstalledDetails;
|
|
7
|
+
type MessageListener<T = unknown> = (message: T, sender: MessageSender, sendResponse: SendResponse) => boolean | void | Promise<void>;
|
|
8
|
+
type Tab = chrome.tabs.Tab;
|
|
9
|
+
type QueryInfo = chrome.tabs.QueryInfo;
|
|
10
|
+
type TabChangeInfo = Parameters<Parameters<typeof chrome.tabs.onUpdated.addListener>[0]>[1];
|
|
11
|
+
type StorageArea = chrome.storage.StorageArea;
|
|
12
|
+
type PanelBehavior = chrome.sidePanel.PanelBehavior;
|
|
13
|
+
type PanelOptions = chrome.sidePanel.PanelOptions;
|
|
14
|
+
type GetPanelOptions = chrome.sidePanel.GetPanelOptions;
|
|
15
|
+
type TabRemoveInfo = Parameters<Parameters<typeof chrome.tabs.onRemoved.addListener>[0]>[1];
|
|
16
|
+
type MessengerSchema = Record<string, {
|
|
17
|
+
request: v.BaseSchema<any, any, any>;
|
|
18
|
+
response: v.BaseSchema<any, any, any>;
|
|
19
|
+
}>;
|
|
20
|
+
type Result<T> = {
|
|
21
|
+
success: true;
|
|
22
|
+
data: T;
|
|
23
|
+
} | {
|
|
24
|
+
success: false;
|
|
25
|
+
error: 'Validation' | 'System' | 'HandlerMissing';
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
declare const chromeRuntime: {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
getURL(path: string): string;
|
|
31
|
+
onInstalled: {
|
|
32
|
+
addListener(callback: (details: InstalledDetails) => void): void;
|
|
33
|
+
};
|
|
34
|
+
onStartup: {
|
|
35
|
+
addListener(callback: () => void): void;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
declare const chromeTabs: {
|
|
40
|
+
query(queryInfo: QueryInfo): Promise<Tab[]>;
|
|
41
|
+
get(tabId: number): Promise<Tab>;
|
|
42
|
+
onUpdated: {
|
|
43
|
+
addListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void;
|
|
44
|
+
removeListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void;
|
|
45
|
+
};
|
|
46
|
+
onRemoved: {
|
|
47
|
+
addListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void;
|
|
48
|
+
removeListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
declare const chromeStorage: {
|
|
53
|
+
local: {
|
|
54
|
+
get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>>;
|
|
55
|
+
set(items: Record<string, unknown>): Promise<void>;
|
|
56
|
+
remove(keys: string | string[]): Promise<void>;
|
|
57
|
+
clear(): Promise<void>;
|
|
58
|
+
};
|
|
59
|
+
session: {
|
|
60
|
+
get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>>;
|
|
61
|
+
set(items: Record<string, unknown>): Promise<void>;
|
|
62
|
+
remove(keys: string | string[]): Promise<void>;
|
|
63
|
+
clear(): Promise<void>;
|
|
64
|
+
};
|
|
65
|
+
sync: {
|
|
66
|
+
get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>>;
|
|
67
|
+
set(items: Record<string, unknown>): Promise<void>;
|
|
68
|
+
remove(keys: string | string[]): Promise<void>;
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
declare const chromeSidePanel: {
|
|
74
|
+
setOptions(options: PanelOptions): Promise<void>;
|
|
75
|
+
getOptions(options: GetPanelOptions): Promise<PanelOptions>;
|
|
76
|
+
setPanelBehavior(behavior: PanelBehavior): Promise<void>;
|
|
77
|
+
getPanelBehavior(): Promise<PanelBehavior>;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
declare const chromeMessage: {
|
|
81
|
+
createExternalMessenger<T extends MessengerSchema>(schemas: T): {
|
|
82
|
+
send: <K extends keyof T>(extensionId: string, type: K, payload: v.InferInput<T[K]["request"]>) => Promise<Result<v.InferOutput<T[K]["response"]>>>;
|
|
83
|
+
};
|
|
84
|
+
createLocalMessenger<T>(): {
|
|
85
|
+
send: <K extends keyof T>(type: K, payload: T[K] extends {
|
|
86
|
+
request: infer Req;
|
|
87
|
+
} ? Req : never) => Promise<Result<T[K] extends {
|
|
88
|
+
response: infer Res;
|
|
89
|
+
} ? Res : never>>;
|
|
90
|
+
};
|
|
91
|
+
createTabMessenger<T>(): {
|
|
92
|
+
send: <K extends keyof T>(tabId: number, type: K, payload: T[K] extends {
|
|
93
|
+
request: infer Req;
|
|
94
|
+
} ? Req : never) => Promise<Result<T[K] extends {
|
|
95
|
+
response: infer Res;
|
|
96
|
+
} ? Res : never>>;
|
|
97
|
+
};
|
|
98
|
+
createLocalListener<T>(handlers: { [K in keyof T]: T[K] extends {
|
|
99
|
+
request: infer Req;
|
|
100
|
+
response: infer Res;
|
|
101
|
+
} ? (payload: Req) => Promise<Res> | Res : (payload: unknown) => unknown; }): (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => boolean;
|
|
102
|
+
removeLocalListener<T = unknown>(callback: MessageListener<T>): void;
|
|
103
|
+
createExternalListener<T extends MessengerSchema>(schemas: T, handlers: { [K in keyof T]: (payload: v.InferOutput<T[K]["request"]>) => Promise<v.InferInput<T[K]["response"]>> | v.InferInput<T[K]["response"]>; }): (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => boolean;
|
|
104
|
+
removeExternalListener<T = unknown>(callback: MessageListener<T>): void;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export { type GetPanelOptions, type InstalledDetails, type MessageListener, type MessageSender, type MessengerSchema, type PanelBehavior, type PanelOptions, type Port, type QueryInfo, type Result, type SendResponse, type StorageArea, type Tab, type TabChangeInfo, type TabRemoveInfo, chromeMessage, chromeRuntime, chromeSidePanel, chromeStorage, chromeTabs };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
// src/chrome/runtime.ts
|
|
2
|
+
var chromeRuntime = {
|
|
3
|
+
get id() {
|
|
4
|
+
return chrome.runtime.id;
|
|
5
|
+
},
|
|
6
|
+
getURL(path) {
|
|
7
|
+
return chrome.runtime.getURL(path);
|
|
8
|
+
},
|
|
9
|
+
onInstalled: {
|
|
10
|
+
addListener(callback) {
|
|
11
|
+
chrome.runtime.onInstalled.addListener(callback);
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
onStartup: {
|
|
15
|
+
addListener(callback) {
|
|
16
|
+
chrome.runtime.onStartup.addListener(callback);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// src/chrome/tabs.ts
|
|
22
|
+
var chromeTabs = {
|
|
23
|
+
query(queryInfo) {
|
|
24
|
+
return chrome.tabs.query(queryInfo);
|
|
25
|
+
},
|
|
26
|
+
get(tabId) {
|
|
27
|
+
return chrome.tabs.get(tabId);
|
|
28
|
+
},
|
|
29
|
+
onUpdated: {
|
|
30
|
+
addListener(callback) {
|
|
31
|
+
chrome.tabs.onUpdated.addListener(callback);
|
|
32
|
+
},
|
|
33
|
+
removeListener(callback) {
|
|
34
|
+
chrome.tabs.onUpdated.removeListener(callback);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
onRemoved: {
|
|
38
|
+
addListener(callback) {
|
|
39
|
+
chrome.tabs.onRemoved.addListener(callback);
|
|
40
|
+
},
|
|
41
|
+
removeListener(callback) {
|
|
42
|
+
chrome.tabs.onRemoved.removeListener(callback);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/chrome/storage.ts
|
|
48
|
+
var chromeStorage = {
|
|
49
|
+
local: {
|
|
50
|
+
get(keys) {
|
|
51
|
+
return chrome.storage.local.get(keys);
|
|
52
|
+
},
|
|
53
|
+
set(items) {
|
|
54
|
+
return chrome.storage.local.set(items);
|
|
55
|
+
},
|
|
56
|
+
remove(keys) {
|
|
57
|
+
return chrome.storage.local.remove(keys);
|
|
58
|
+
},
|
|
59
|
+
clear() {
|
|
60
|
+
return chrome.storage.local.clear();
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
session: {
|
|
64
|
+
get(keys) {
|
|
65
|
+
return chrome.storage.session.get(keys);
|
|
66
|
+
},
|
|
67
|
+
set(items) {
|
|
68
|
+
return chrome.storage.session.set(items);
|
|
69
|
+
},
|
|
70
|
+
remove(keys) {
|
|
71
|
+
return chrome.storage.session.remove(keys);
|
|
72
|
+
},
|
|
73
|
+
clear() {
|
|
74
|
+
return chrome.storage.session.clear();
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
sync: {
|
|
78
|
+
get(keys) {
|
|
79
|
+
return chrome.storage.sync.get(keys);
|
|
80
|
+
},
|
|
81
|
+
set(items) {
|
|
82
|
+
return chrome.storage.sync.set(items);
|
|
83
|
+
},
|
|
84
|
+
remove(keys) {
|
|
85
|
+
return chrome.storage.sync.remove(keys);
|
|
86
|
+
},
|
|
87
|
+
clear() {
|
|
88
|
+
return chrome.storage.sync.clear();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// src/chrome/sidePanel.ts
|
|
94
|
+
var chromeSidePanel = {
|
|
95
|
+
setOptions(options) {
|
|
96
|
+
return chrome.sidePanel.setOptions(options);
|
|
97
|
+
},
|
|
98
|
+
getOptions(options) {
|
|
99
|
+
return chrome.sidePanel.getOptions(options);
|
|
100
|
+
},
|
|
101
|
+
setPanelBehavior(behavior) {
|
|
102
|
+
return chrome.sidePanel.setPanelBehavior(behavior);
|
|
103
|
+
},
|
|
104
|
+
getPanelBehavior() {
|
|
105
|
+
return chrome.sidePanel.getPanelBehavior();
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// src/chrome/messege.ts
|
|
110
|
+
import * as v from "valibot";
|
|
111
|
+
var chromeMessage = {
|
|
112
|
+
createExternalMessenger(schemas) {
|
|
113
|
+
return {
|
|
114
|
+
send: async (extensionId, type, payload) => {
|
|
115
|
+
try {
|
|
116
|
+
const rawResponse = await chrome.runtime.sendMessage(extensionId, { type, payload });
|
|
117
|
+
if (!rawResponse || typeof rawResponse !== "object") {
|
|
118
|
+
return { success: false, error: "System" };
|
|
119
|
+
}
|
|
120
|
+
if ("success" in rawResponse && rawResponse.success === false) {
|
|
121
|
+
return rawResponse;
|
|
122
|
+
}
|
|
123
|
+
if ("success" in rawResponse && rawResponse.success === true && "data" in rawResponse) {
|
|
124
|
+
const result = v.safeParse(schemas[type].response, rawResponse.data);
|
|
125
|
+
if (!result.success) {
|
|
126
|
+
return { success: false, error: "Validation" };
|
|
127
|
+
}
|
|
128
|
+
return { success: true, data: result.output };
|
|
129
|
+
}
|
|
130
|
+
return { success: false, error: "System" };
|
|
131
|
+
} catch (e) {
|
|
132
|
+
return { success: false, error: "System" };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
},
|
|
137
|
+
createLocalMessenger() {
|
|
138
|
+
return {
|
|
139
|
+
send: async (type, payload) => {
|
|
140
|
+
try {
|
|
141
|
+
if (!chrome.runtime.id) return { success: false, error: "System" };
|
|
142
|
+
const rawResponse = await chrome.runtime.sendMessage({
|
|
143
|
+
type,
|
|
144
|
+
payload
|
|
145
|
+
});
|
|
146
|
+
if (rawResponse && typeof rawResponse === "object" && "success" in rawResponse) {
|
|
147
|
+
return rawResponse;
|
|
148
|
+
}
|
|
149
|
+
return { success: false, error: "System" };
|
|
150
|
+
} catch (error) {
|
|
151
|
+
return { success: false, error: "System" };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
},
|
|
156
|
+
createTabMessenger() {
|
|
157
|
+
return {
|
|
158
|
+
send: async (tabId, type, payload) => {
|
|
159
|
+
try {
|
|
160
|
+
if (!chrome.runtime.id) return { success: false, error: "System" };
|
|
161
|
+
const rawResponse = await chrome.tabs.sendMessage(tabId, {
|
|
162
|
+
type,
|
|
163
|
+
payload
|
|
164
|
+
});
|
|
165
|
+
if (rawResponse && typeof rawResponse === "object" && "success" in rawResponse) {
|
|
166
|
+
return rawResponse;
|
|
167
|
+
}
|
|
168
|
+
return { success: false, error: "System" };
|
|
169
|
+
} catch (error) {
|
|
170
|
+
return { success: false, error: "System" };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
createLocalListener(handlers) {
|
|
176
|
+
const listener = (message, _sender, sendResponse) => {
|
|
177
|
+
if (typeof message !== "object" || message === null || !("type" in message)) return false;
|
|
178
|
+
const msg = message;
|
|
179
|
+
const type = msg.type;
|
|
180
|
+
const payload = msg.payload;
|
|
181
|
+
const typedHandlers = handlers;
|
|
182
|
+
const handler = typedHandlers[type];
|
|
183
|
+
if (handler) {
|
|
184
|
+
Promise.resolve(handler(payload)).then((data) => sendResponse({ success: true, data })).catch((error) => sendResponse({ success: false, error: "System" }));
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
return false;
|
|
188
|
+
};
|
|
189
|
+
chrome.runtime.onMessage.addListener(listener);
|
|
190
|
+
return listener;
|
|
191
|
+
},
|
|
192
|
+
removeLocalListener(callback) {
|
|
193
|
+
chrome.runtime.onMessage.removeListener(callback);
|
|
194
|
+
},
|
|
195
|
+
createExternalListener(schemas, handlers) {
|
|
196
|
+
const listener = (message, _sender, sendResponse) => {
|
|
197
|
+
if (!message || typeof message !== "object" || !("type" in message)) return false;
|
|
198
|
+
const msg = message;
|
|
199
|
+
const key = msg.type;
|
|
200
|
+
const handler = handlers[key];
|
|
201
|
+
const schema = schemas[key];
|
|
202
|
+
if (!handler || !schema) {
|
|
203
|
+
sendResponse({ success: false, error: "HandlerMissing" });
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
const payload = msg.payload;
|
|
207
|
+
const validation = v.safeParse(schema.request, payload);
|
|
208
|
+
if (!validation.success) {
|
|
209
|
+
sendResponse({ success: false, error: "Validation" });
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
Promise.resolve(handler(validation.output)).then((data) => {
|
|
213
|
+
sendResponse({ success: true, data });
|
|
214
|
+
}).catch((err) => {
|
|
215
|
+
sendResponse({ success: false, error: "System" });
|
|
216
|
+
});
|
|
217
|
+
return true;
|
|
218
|
+
};
|
|
219
|
+
chrome.runtime.onMessageExternal.addListener(listener);
|
|
220
|
+
return listener;
|
|
221
|
+
},
|
|
222
|
+
removeExternalListener(callback) {
|
|
223
|
+
chrome.runtime.onMessageExternal.removeListener(callback);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
export {
|
|
227
|
+
chromeMessage,
|
|
228
|
+
chromeRuntime,
|
|
229
|
+
chromeSidePanel,
|
|
230
|
+
chromeStorage,
|
|
231
|
+
chromeTabs
|
|
232
|
+
};
|
|
233
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chrome/runtime.ts","../src/chrome/tabs.ts","../src/chrome/storage.ts","../src/chrome/sidePanel.ts","../src/chrome/messege.ts"],"sourcesContent":["import { MessageListener, InstalledDetails } from './types';\n\nexport const chromeRuntime = {\n get id(): string {\n return chrome.runtime.id;\n },\n\n getURL(path: string): string {\n return chrome.runtime.getURL(path);\n },\n\n onInstalled: {\n addListener(callback: (details: InstalledDetails) => void): void {\n chrome.runtime.onInstalled.addListener(callback);\n }\n },\n\n onStartup: {\n addListener(callback: () => void): void {\n chrome.runtime.onStartup.addListener(callback);\n }\n }\n};\n","import { Tab, QueryInfo, TabChangeInfo, TabRemoveInfo } from './types';\n\nexport const chromeTabs = {\n query(queryInfo: QueryInfo): Promise<Tab[]> {\n return chrome.tabs.query(queryInfo);\n },\n\n get(tabId: number): Promise<Tab> {\n return chrome.tabs.get(tabId);\n },\n\n onUpdated: {\n addListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void {\n chrome.tabs.onUpdated.addListener(callback);\n },\n removeListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void {\n chrome.tabs.onUpdated.removeListener(callback);\n }\n },\n\n onRemoved: {\n addListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void {\n chrome.tabs.onRemoved.addListener(callback);\n },\n removeListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void {\n chrome.tabs.onRemoved.removeListener(callback);\n }\n }\n};\n","export const chromeStorage = {\n local: {\n get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>> {\n return chrome.storage.local.get(keys);\n },\n set(items: Record<string, unknown>): Promise<void> {\n return chrome.storage.local.set(items);\n },\n remove(keys: string | string[]): Promise<void> {\n return chrome.storage.local.remove(keys);\n },\n clear(): Promise<void> {\n return chrome.storage.local.clear();\n }\n },\n session: {\n get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>> {\n return chrome.storage.session.get(keys);\n },\n set(items: Record<string, unknown>): Promise<void> {\n return chrome.storage.session.set(items);\n },\n remove(keys: string | string[]): Promise<void> {\n return chrome.storage.session.remove(keys);\n },\n clear(): Promise<void> {\n return chrome.storage.session.clear();\n }\n },\n sync: {\n get(keys?: string | string[] | Record<string, unknown> | null): Promise<Record<string, unknown>> {\n return chrome.storage.sync.get(keys);\n },\n set(items: Record<string, unknown>): Promise<void> {\n return chrome.storage.sync.set(items);\n },\n remove(keys: string | string[]): Promise<void> {\n return chrome.storage.sync.remove(keys);\n },\n clear(): Promise<void> {\n return chrome.storage.sync.clear();\n }\n }\n};\n","import { PanelOptions, GetPanelOptions, PanelBehavior } from './types';\n\nexport const chromeSidePanel = {\n setOptions(options: PanelOptions): Promise<void> {\n return chrome.sidePanel.setOptions(options);\n },\n getOptions(options: GetPanelOptions): Promise<PanelOptions> {\n return chrome.sidePanel.getOptions(options);\n },\n setPanelBehavior(behavior: PanelBehavior): Promise<void> {\n return chrome.sidePanel.setPanelBehavior(behavior);\n },\n getPanelBehavior(): Promise<PanelBehavior> {\n return chrome.sidePanel.getPanelBehavior();\n }\n};\n","import * as v from 'valibot';\nimport { MessageListener, MessageSender, MessengerSchema, Result, SendResponse } from './types';\n\ninterface MessagePayload<K> {\n type: K;\n payload: unknown;\n}\n\nexport const chromeMessage = {\n\n createExternalMessenger<T extends MessengerSchema>(schemas: T) {\n return {\n send: async <K extends keyof T>(\n extensionId: string,\n type: K,\n payload: v.InferInput<T[K]['request']>\n ): Promise<Result<v.InferOutput<T[K]['response']>>> => {\n try {\n // 1. Send Message\n const rawResponse = await chrome.runtime.sendMessage(extensionId, { type, payload });\n\n // 2. Validate Response Structure\n if (!rawResponse || typeof rawResponse !== 'object') {\n return { success: false, error: 'System' };\n }\n\n if ('success' in rawResponse && rawResponse.success === false) {\n return rawResponse as Result<v.InferOutput<T[K]['response']>>;\n }\n\n if ('success' in rawResponse && rawResponse.success === true && 'data' in rawResponse) {\n // 3. Validate Data\n const result = v.safeParse(schemas[type].response, rawResponse.data);\n\n if (!result.success) {\n return { success: false, error: 'Validation' };\n }\n\n return { success: true, data: result.output };\n }\n\n return { success: false, error: 'System' };\n } catch (e) {\n return { success: false, error: 'System' };\n }\n }\n };\n },\n\n createLocalMessenger<T>() {\n return {\n send: async <K extends keyof T>(\n type: K,\n payload: T[K] extends { request: infer Req } ? Req : never\n ): Promise<Result<T[K] extends { response: infer Res } ? Res : never>> => {\n try {\n if (!chrome.runtime.id) return { success: false, error: 'System' };\n\n const rawResponse = await chrome.runtime.sendMessage({\n type: type as string,\n payload\n });\n\n if (rawResponse && typeof rawResponse === 'object' && 'success' in rawResponse) {\n return rawResponse as Result<T[K] extends { response: infer Res } ? Res : never>;\n }\n\n return { success: false, error: 'System' };\n\n } catch (error) {\n return { success: false, error: 'System' };\n }\n }\n };\n },\n\n createTabMessenger<T>() {\n return {\n send: async <K extends keyof T>(\n tabId: number,\n type: K,\n payload: T[K] extends { request: infer Req } ? Req : never\n ): Promise<Result<T[K] extends { response: infer Res } ? Res : never>> => {\n try {\n if (!chrome.runtime.id) return { success: false, error: 'System' };\n\n const rawResponse = await chrome.tabs.sendMessage(tabId, {\n type: type as string,\n payload\n });\n\n if (rawResponse && typeof rawResponse === 'object' && 'success' in rawResponse) {\n return rawResponse as Result<T[K] extends { response: infer Res } ? Res : never>;\n }\n\n return { success: false, error: 'System' };\n\n } catch (error) {\n return { success: false, error: 'System' };\n }\n }\n };\n },\n\n createLocalListener<T>(\n // A mapping of types to handler functions\n handlers: {\n [K in keyof T]: T[K] extends { request: infer Req, response: infer Res }\n ? (payload: Req) => Promise<Res> | Res\n : (payload: unknown) => unknown\n }\n ) {\n const listener = (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => {\n if (typeof message !== 'object' || message === null || !('type' in message)) return false;\n\n const msg = message as MessagePayload<keyof T>;\n const type = msg.type;\n const payload = msg.payload;\n const typedHandlers = handlers as Record<keyof T, (p: unknown) => unknown>;\n const handler = typedHandlers[type];\n\n if (handler) {\n // Execute the handler and return the result\n Promise.resolve(handler(payload))\n .then(data => sendResponse({ success: true, data }))\n .catch(error => sendResponse({ success: false, error: 'System' }));\n return true; // Keeps the message channel open for async response\n }\n return false;\n };\n\n chrome.runtime.onMessage.addListener(listener)\n return listener\n },\n\n removeLocalListener<T = unknown>(callback: MessageListener<T>): void {\n chrome.runtime.onMessage.removeListener(callback as Parameters<typeof chrome.runtime.onMessage.removeListener>[0]);\n },\n\n createExternalListener<T extends MessengerSchema>(\n schemas: T,\n handlers: {\n [K in keyof T]: (payload: v.InferOutput<T[K]['request']>) => Promise<v.InferInput<T[K]['response']>> | v.InferInput<T[K]['response']>\n }\n ) {\n const listener = (message: unknown, _sender: MessageSender, sendResponse: SendResponse) => {\n // Basic check\n if (!message || typeof message !== 'object' || !('type' in message)) return false;\n\n const msg = message as MessagePayload<keyof T>;\n const key = msg.type;\n\n const handler = handlers[key];\n const schema = schemas[key];\n\n if (!handler || !schema) {\n sendResponse({ success: false, error: 'HandlerMissing' });\n return false;\n }\n\n const payload = msg.payload;\n\n // Validation & Execution\n const validation = v.safeParse(schema.request, payload);\n if (!validation.success) {\n sendResponse({ success: false, error: 'Validation' });\n return false;\n }\n\n // Handle async execution safely\n Promise.resolve(handler(validation.output))\n .then(data => {\n sendResponse({ success: true, data });\n })\n .catch(err => {\n sendResponse({ success: false, error: 'System' });\n });\n\n return true; // Keep channel open\n };\n chrome.runtime.onMessageExternal.addListener(listener);\n return listener;\n },\n\n removeExternalListener<T = unknown>(callback: MessageListener<T>): void {\n chrome.runtime.onMessageExternal.removeListener(callback as Parameters<typeof chrome.runtime.onMessageExternal.removeListener>[0]);\n }\n}"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@toocoolname/chrome-proxy",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsup",
|
|
21
|
+
"watch": "tsup --watch",
|
|
22
|
+
"lint": "bun eslint .",
|
|
23
|
+
"tc": "tsc --noEmit",
|
|
24
|
+
"prepublishOnly": "bun run build"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@types/chrome": "^0.0.244",
|
|
28
|
+
"valibot": "^1.2.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@eslint/js": "^9.39.2",
|
|
32
|
+
"@types/eslint__js": "^9.14.0",
|
|
33
|
+
"eslint": "^9.39.2",
|
|
34
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
35
|
+
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
36
|
+
"eslint-plugin-import-x": "^4.16.1",
|
|
37
|
+
"globals": "^17.0.0",
|
|
38
|
+
"tsup": "^8.3.6",
|
|
39
|
+
"typescript": "^5.9.3",
|
|
40
|
+
"typescript-eslint": "^8.52.0"
|
|
41
|
+
}
|
|
42
|
+
}
|