@b9g/platform 0.1.4 → 0.1.6
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/README.md +94 -28
- package/package.json +46 -86
- package/src/config.d.ts +125 -0
- package/src/config.js +517 -0
- package/src/cookie-store.d.ts +80 -0
- package/src/cookie-store.js +231 -0
- package/src/index.d.ts +189 -9
- package/src/index.js +242 -49
- package/src/runtime.d.ts +426 -0
- package/src/runtime.js +997 -0
- package/src/single-threaded.d.ts +57 -0
- package/src/single-threaded.js +107 -0
- package/src/worker-pool.d.ts +22 -32
- package/src/worker-pool.js +214 -100
- package/src/adapter-registry.d.ts +0 -53
- package/src/adapter-registry.js +0 -71
- package/src/base-platform.d.ts +0 -49
- package/src/base-platform.js +0 -114
- package/src/detection.d.ts +0 -36
- package/src/detection.js +0 -126
- package/src/directory-storage.d.ts +0 -41
- package/src/directory-storage.js +0 -53
- package/src/filesystem.d.ts +0 -16
- package/src/filesystem.js +0 -20
- package/src/registry.d.ts +0 -31
- package/src/registry.js +0 -74
- package/src/service-worker.d.ts +0 -175
- package/src/service-worker.js +0 -245
- package/src/types.d.ts +0 -246
- package/src/types.js +0 -36
- package/src/utils.d.ts +0 -33
- package/src/utils.js +0 -139
- package/src/worker-web.js +0 -119
package/src/worker-web.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
// src/worker-web.js
|
|
2
|
-
async function initializeWorker() {
|
|
3
|
-
let messagePort = self;
|
|
4
|
-
let sendMessage2 = (message) => postMessage(message);
|
|
5
|
-
onmessage = function(event) {
|
|
6
|
-
handleMessage(event.data);
|
|
7
|
-
};
|
|
8
|
-
return { messagePort, sendMessage: sendMessage2 };
|
|
9
|
-
}
|
|
10
|
-
var { createServiceWorkerGlobals, ServiceWorkerRuntime, createBucketStorage } = await import("./index.js");
|
|
11
|
-
var { CustomCacheStorage, PostMessageCache } = await import("@b9g/cache");
|
|
12
|
-
var caches = new CustomCacheStorage((name) => {
|
|
13
|
-
return new PostMessageCache(name, {
|
|
14
|
-
maxEntries: 1e3,
|
|
15
|
-
maxAge: 60 * 60 * 1e3
|
|
16
|
-
// 1 hour
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
var buckets = createBucketStorage(process.cwd() + "/dist");
|
|
20
|
-
var runtime = new ServiceWorkerRuntime();
|
|
21
|
-
createServiceWorkerGlobals(runtime, { caches, buckets });
|
|
22
|
-
var workerSelf = runtime;
|
|
23
|
-
var currentApp = null;
|
|
24
|
-
var serviceWorkerReady = false;
|
|
25
|
-
var loadedVersion = null;
|
|
26
|
-
async function handleFetchEvent(request) {
|
|
27
|
-
if (!currentApp || !serviceWorkerReady) {
|
|
28
|
-
throw new Error("ServiceWorker not ready");
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
const response = await runtime.handleRequest(request);
|
|
32
|
-
return response;
|
|
33
|
-
} catch (error) {
|
|
34
|
-
console.error("[Worker] ServiceWorker request failed:", error);
|
|
35
|
-
const response = new Response("ServiceWorker request failed", {
|
|
36
|
-
status: 500
|
|
37
|
-
});
|
|
38
|
-
return response;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async function loadServiceWorker(version, entrypoint) {
|
|
42
|
-
try {
|
|
43
|
-
console.info("[Worker] loadServiceWorker called with:", { version, entrypoint });
|
|
44
|
-
const entrypointPath = process.env.SERVICEWORKER_PATH || entrypoint || `${process.cwd()}/dist/server/app.js`;
|
|
45
|
-
console.info("[Worker] Loading from:", entrypointPath);
|
|
46
|
-
if (loadedVersion !== null && loadedVersion !== version) {
|
|
47
|
-
console.info(`[Worker] Hot reload detected: ${loadedVersion} -> ${version}`);
|
|
48
|
-
console.info("[Worker] Creating completely fresh ServiceWorker context");
|
|
49
|
-
runtime = new ServiceWorkerRuntime();
|
|
50
|
-
createServiceWorkerGlobals(runtime, { caches, buckets });
|
|
51
|
-
workerSelf = runtime;
|
|
52
|
-
currentApp = null;
|
|
53
|
-
serviceWorkerReady = false;
|
|
54
|
-
}
|
|
55
|
-
if (loadedVersion === version) {
|
|
56
|
-
console.info("[Worker] ServiceWorker already loaded for version", version);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
globalThis.self = runtime;
|
|
60
|
-
globalThis.addEventListener = runtime.addEventListener.bind(runtime);
|
|
61
|
-
globalThis.removeEventListener = runtime.removeEventListener.bind(runtime);
|
|
62
|
-
globalThis.dispatchEvent = runtime.dispatchEvent.bind(runtime);
|
|
63
|
-
const appModule = await import(`${entrypointPath}?v=${version}`);
|
|
64
|
-
loadedVersion = version;
|
|
65
|
-
currentApp = appModule;
|
|
66
|
-
await runtime.install();
|
|
67
|
-
await runtime.activate();
|
|
68
|
-
serviceWorkerReady = true;
|
|
69
|
-
console.info(`[Worker] ServiceWorker loaded and activated (v${version}) from ${entrypointPath}`);
|
|
70
|
-
} catch (error) {
|
|
71
|
-
console.error("[Worker] Failed to load ServiceWorker:", error);
|
|
72
|
-
serviceWorkerReady = false;
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
var workerId = Math.random().toString(36).substring(2, 8);
|
|
77
|
-
var sendMessage;
|
|
78
|
-
async function handleMessage(message) {
|
|
79
|
-
try {
|
|
80
|
-
if (message.type === "load") {
|
|
81
|
-
await loadServiceWorker(message.version, message.entrypoint);
|
|
82
|
-
sendMessage({ type: "ready", version: message.version });
|
|
83
|
-
} else if (message.type === "request") {
|
|
84
|
-
console.log(`[Worker-${workerId}] Handling request:`, message.request.url);
|
|
85
|
-
const request = new Request(message.request.url, {
|
|
86
|
-
method: message.request.method,
|
|
87
|
-
headers: message.request.headers,
|
|
88
|
-
body: message.request.body
|
|
89
|
-
});
|
|
90
|
-
const response = await handleFetchEvent(request);
|
|
91
|
-
sendMessage({
|
|
92
|
-
type: "response",
|
|
93
|
-
response: {
|
|
94
|
-
status: response.status,
|
|
95
|
-
statusText: response.statusText,
|
|
96
|
-
headers: Object.fromEntries(response.headers.entries()),
|
|
97
|
-
body: await response.text()
|
|
98
|
-
},
|
|
99
|
-
requestId: message.requestId
|
|
100
|
-
});
|
|
101
|
-
} else if (message.type.startsWith("cache:") || message.type.startsWith("cachestorage:")) {
|
|
102
|
-
} else {
|
|
103
|
-
console.warn("[Worker] Unknown message type:", message.type);
|
|
104
|
-
}
|
|
105
|
-
} catch (error) {
|
|
106
|
-
sendMessage({
|
|
107
|
-
type: "error",
|
|
108
|
-
error: error.message,
|
|
109
|
-
stack: error.stack,
|
|
110
|
-
requestId: message.requestId
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
initializeWorker().then(({ messagePort, sendMessage: send }) => {
|
|
115
|
-
sendMessage = send;
|
|
116
|
-
sendMessage({ type: "worker-ready" });
|
|
117
|
-
}).catch((error) => {
|
|
118
|
-
console.error("[Worker] Failed to initialize:", error);
|
|
119
|
-
});
|