@ricsam/isolate-fetch 0.1.14 → 0.1.15
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/cjs/index.cjs +46 -1
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/package.json +1 -1
- package/dist/mjs/index.mjs +46 -1
- package/dist/mjs/index.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/types/index.d.ts +4 -0
- package/package.json +1 -1
package/dist/cjs/package.json
CHANGED
package/dist/mjs/index.mjs
CHANGED
|
@@ -2102,6 +2102,41 @@ async function setupFetch(context, options) {
|
|
|
2102
2102
|
setupServerWebSocket(context, wsCommandCallbacks);
|
|
2103
2103
|
setupServe(context);
|
|
2104
2104
|
setupClientWebSocket(context, clientWsCommandCallbacks);
|
|
2105
|
+
const eventCallbacks = new Set;
|
|
2106
|
+
context.global.setSync("__emit", new ivm.Callback((eventName, payloadJson) => {
|
|
2107
|
+
const payload = JSON.parse(payloadJson);
|
|
2108
|
+
for (const cb of eventCallbacks)
|
|
2109
|
+
cb(eventName, payload);
|
|
2110
|
+
}));
|
|
2111
|
+
context.evalSync(`
|
|
2112
|
+
(function() {
|
|
2113
|
+
const __eventListeners = new Map();
|
|
2114
|
+
|
|
2115
|
+
globalThis.__on = function(event, callback) {
|
|
2116
|
+
let listeners = __eventListeners.get(event);
|
|
2117
|
+
if (!listeners) {
|
|
2118
|
+
listeners = new Set();
|
|
2119
|
+
__eventListeners.set(event, listeners);
|
|
2120
|
+
}
|
|
2121
|
+
listeners.add(callback);
|
|
2122
|
+
return function() {
|
|
2123
|
+
listeners.delete(callback);
|
|
2124
|
+
if (listeners.size === 0) {
|
|
2125
|
+
__eventListeners.delete(event);
|
|
2126
|
+
}
|
|
2127
|
+
};
|
|
2128
|
+
};
|
|
2129
|
+
|
|
2130
|
+
globalThis.__dispatchExternalEvent = function(event, payloadJson) {
|
|
2131
|
+
const listeners = __eventListeners.get(event);
|
|
2132
|
+
if (!listeners) return;
|
|
2133
|
+
const payload = JSON.parse(payloadJson);
|
|
2134
|
+
for (const cb of listeners) {
|
|
2135
|
+
try { cb(payload); } catch (e) { console.error('Event listener error:', e); }
|
|
2136
|
+
}
|
|
2137
|
+
};
|
|
2138
|
+
})();
|
|
2139
|
+
`);
|
|
2105
2140
|
return {
|
|
2106
2141
|
dispose() {
|
|
2107
2142
|
stateMap.clear();
|
|
@@ -2406,6 +2441,16 @@ async function setupFetch(context, options) {
|
|
|
2406
2441
|
onClientWebSocketCommand(callback) {
|
|
2407
2442
|
clientWsCommandCallbacks.add(callback);
|
|
2408
2443
|
return () => clientWsCommandCallbacks.delete(callback);
|
|
2444
|
+
},
|
|
2445
|
+
onEvent(callback) {
|
|
2446
|
+
eventCallbacks.add(callback);
|
|
2447
|
+
return () => eventCallbacks.delete(callback);
|
|
2448
|
+
},
|
|
2449
|
+
dispatchEvent(event, payload) {
|
|
2450
|
+
const json = JSON.stringify(payload);
|
|
2451
|
+
const safeEvent = JSON.stringify(event);
|
|
2452
|
+
const safeJson = JSON.stringify(json);
|
|
2453
|
+
context.evalSync(`__dispatchExternalEvent(${safeEvent}, ${safeJson});`);
|
|
2409
2454
|
}
|
|
2410
2455
|
};
|
|
2411
2456
|
}
|
|
@@ -2414,4 +2459,4 @@ export {
|
|
|
2414
2459
|
clearAllInstanceState
|
|
2415
2460
|
};
|
|
2416
2461
|
|
|
2417
|
-
//# debugId=
|
|
2462
|
+
//# debugId=98B5825CD3CA576464756E2164756E21
|