@fairfox/polly 0.5.2 → 0.6.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/cli/polly.js +9 -9
- package/dist/cli/polly.js.map +4 -4
- package/dist/cli/template-utils.js +3 -3
- package/dist/cli/template-utils.js.map +3 -3
- package/dist/src/shared/state/app-state.d.ts +8 -0
- package/dist/vendor/verify/src/cli.js +78 -71
- package/dist/vendor/verify/src/cli.js.map +10 -10
- package/dist/vendor/verify/src/public-api.d.ts +41 -0
- package/dist/vendor/verify/src/public-api.js +26 -0
- package/dist/vendor/verify/src/public-api.js.map +10 -0
- package/dist/vendor/visualize/src/cli.js +108 -104
- package/dist/vendor/visualize/src/cli.js.map +13 -13
- package/package.json +15 -2
- package/templates/pwa/build.ts.template +37 -37
- package/templates/pwa/server.ts.template +53 -53
- package/templates/pwa/src/service-worker.ts.template +131 -135
- package/templates/pwa/src/shared-worker.ts.template +114 -109
- package/dist/shared/state/app-state.d.ts +0 -8
- /package/dist/{background → src/background}/api-client.d.ts +0 -0
- /package/dist/{background → src/background}/context-menu.d.ts +0 -0
- /package/dist/{background → src/background}/index.d.ts +0 -0
- /package/dist/{background → src/background}/log-store.d.ts +0 -0
- /package/dist/{background → src/background}/message-router.d.ts +0 -0
- /package/dist/{background → src/background}/offscreen-manager.d.ts +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{shared → src/shared}/adapters/chrome/context-menus.chrome.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/chrome/offscreen.chrome.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/chrome/runtime.chrome.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/chrome/storage.chrome.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/chrome/tabs.chrome.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/chrome/window.chrome.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/context-menus.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/fetch.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/index.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/logger.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/offscreen.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/runtime.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/storage.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/tabs.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/adapters/window.adapter.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/context-helpers.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/context-specific-helpers.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/errors.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/handler-execution-tracker.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/message-bus.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/state.d.ts +0 -0
- /package/dist/{shared → src/shared}/lib/test-helpers.d.ts +0 -0
- /package/dist/{shared → src/shared}/types/messages.d.ts +0 -0
|
@@ -4,132 +4,137 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/// <reference lib="WebWorker" />
|
|
7
|
-
declare const self: SharedWorkerGlobalScope
|
|
7
|
+
declare const self: SharedWorkerGlobalScope;
|
|
8
8
|
|
|
9
|
-
console.log(
|
|
9
|
+
console.log("[Shared Worker] Starting...");
|
|
10
10
|
|
|
11
11
|
// Track connected ports (tabs/windows)
|
|
12
|
-
const ports: MessagePort[] = []
|
|
13
|
-
let messageCount = 0
|
|
12
|
+
const ports: MessagePort[] = [];
|
|
13
|
+
let messageCount = 0;
|
|
14
14
|
|
|
15
15
|
// Shared state across all tabs
|
|
16
16
|
interface SharedState {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
connectedTabs: number;
|
|
18
|
+
totalMessages: number;
|
|
19
|
+
lastActivity: number;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const state: SharedState = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
23
|
+
connectedTabs: 0,
|
|
24
|
+
totalMessages: 0,
|
|
25
|
+
lastActivity: Date.now(),
|
|
26
|
+
};
|
|
27
27
|
|
|
28
28
|
// Connection event - when a new tab connects
|
|
29
|
-
self.addEventListener(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
})
|
|
57
|
-
|
|
29
|
+
self.addEventListener("connect", (event) => {
|
|
30
|
+
const port = event.ports[0];
|
|
31
|
+
ports.push(port);
|
|
32
|
+
state.connectedTabs = ports.length;
|
|
33
|
+
|
|
34
|
+
console.log(`[Shared Worker] New connection. Total ports: ${ports.length}`);
|
|
35
|
+
|
|
36
|
+
// Send welcome message
|
|
37
|
+
port.postMessage({
|
|
38
|
+
type: "CONNECTED",
|
|
39
|
+
state: state,
|
|
40
|
+
timestamp: Date.now(),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Listen for messages from this port
|
|
44
|
+
port.addEventListener("message", (messageEvent) => {
|
|
45
|
+
handleMessage(messageEvent.data, port);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Start listening
|
|
49
|
+
port.start();
|
|
50
|
+
|
|
51
|
+
// Notify all tabs about new connection
|
|
52
|
+
broadcast({
|
|
53
|
+
type: "TAB_CONNECTED",
|
|
54
|
+
connectedTabs: state.connectedTabs,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// biome-ignore lint/suspicious/noExplicitAny: Worker message data is dynamic
|
|
58
59
|
function handleMessage(data: any, sourcePort: MessagePort) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
60
|
+
console.log("[Shared Worker] Received:", data);
|
|
61
|
+
|
|
62
|
+
state.totalMessages++;
|
|
63
|
+
state.lastActivity = Date.now();
|
|
64
|
+
|
|
65
|
+
switch (data.type) {
|
|
66
|
+
case "PING":
|
|
67
|
+
// Respond to ping
|
|
68
|
+
sourcePort.postMessage({
|
|
69
|
+
type: "PONG",
|
|
70
|
+
timestamp: Date.now(),
|
|
71
|
+
originalTimestamp: data.timestamp,
|
|
72
|
+
state: state,
|
|
73
|
+
});
|
|
74
|
+
break;
|
|
75
|
+
|
|
76
|
+
case "BROADCAST":
|
|
77
|
+
// Broadcast to all connected tabs
|
|
78
|
+
broadcast({
|
|
79
|
+
type: "BROADCAST",
|
|
80
|
+
data: data.data,
|
|
81
|
+
from: "shared-worker",
|
|
82
|
+
timestamp: Date.now(),
|
|
83
|
+
});
|
|
84
|
+
break;
|
|
85
|
+
|
|
86
|
+
case "GET_STATE":
|
|
87
|
+
// Send current state
|
|
88
|
+
sourcePort.postMessage({
|
|
89
|
+
type: "STATE",
|
|
90
|
+
state: state,
|
|
91
|
+
timestamp: Date.now(),
|
|
92
|
+
});
|
|
93
|
+
break;
|
|
94
|
+
|
|
95
|
+
case "INCREMENT_COUNTER":
|
|
96
|
+
// Example of shared state manipulation
|
|
97
|
+
messageCount++;
|
|
98
|
+
broadcast({
|
|
99
|
+
type: "COUNTER_UPDATED",
|
|
100
|
+
count: messageCount,
|
|
101
|
+
timestamp: Date.now(),
|
|
102
|
+
});
|
|
103
|
+
break;
|
|
104
|
+
|
|
105
|
+
default:
|
|
106
|
+
console.log("[Shared Worker] Unknown message type:", data.type);
|
|
107
|
+
sourcePort.postMessage({
|
|
108
|
+
type: "ERROR",
|
|
109
|
+
message: `Unknown message type: ${data.type}`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
// Broadcast message to all connected tabs
|
|
115
|
+
// biome-ignore lint/suspicious/noExplicitAny: Worker message data is dynamic
|
|
114
116
|
function broadcast(message: any) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
console.log(
|
|
118
|
+
`[Shared Worker] Broadcasting to ${ports.length} ports:`,
|
|
119
|
+
message,
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
for (const port of ports) {
|
|
123
|
+
try {
|
|
124
|
+
port.postMessage(message);
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error("[Shared Worker] Failed to send message to port:", error);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
// Periodic heartbeat to all tabs
|
|
127
132
|
setInterval(() => {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}, 30000) // Every 30 seconds
|
|
134
|
-
|
|
135
|
-
console.log(
|
|
133
|
+
broadcast({
|
|
134
|
+
type: "HEARTBEAT",
|
|
135
|
+
state: state,
|
|
136
|
+
timestamp: Date.now(),
|
|
137
|
+
});
|
|
138
|
+
}, 30000); // Every 30 seconds
|
|
139
|
+
|
|
140
|
+
console.log("[Shared Worker] Ready");
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Settings } from "../types/messages";
|
|
2
|
-
export { defaultSettings } from "../types/messages";
|
|
3
|
-
export declare const settings: import("@preact/signals").Signal<Settings>;
|
|
4
|
-
export declare const currentTab: import("@preact/signals").Signal<number | null>;
|
|
5
|
-
export declare const uiState: import("@preact/signals").Signal<{
|
|
6
|
-
sidebarOpen: boolean;
|
|
7
|
-
selectedPanel: "main" | "settings" | "debug";
|
|
8
|
-
}>;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|