Skip to content

Commit 7b7ed64

Browse files
Update and rename kernel to kernel.ts
1 parent 22ee645 commit 7b7ed64

2 files changed

Lines changed: 61 additions & 1 deletion

File tree

app/core/kernel

Lines changed: 0 additions & 1 deletion
This file was deleted.

app/core/kernel.ts

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
class Web4Kernel {
2+
private events = new EventTarget();
3+
private state: Record<string, any> = {};
4+
private plugins: Record<string, any> = {};
5+
6+
/* ---------------------------
7+
* EVENT SYSTEM (OS BUS)
8+
* --------------------------- */
9+
emit(event: string, data?: any) {
10+
this.events.dispatchEvent(new CustomEvent(event, { detail: data }));
11+
}
12+
13+
on(event: string, handler: (e: any) => void) {
14+
this.events.addEventListener(event, handler as any);
15+
}
16+
17+
/* ---------------------------
18+
* STATE SYSTEM (OS MEMORY)
19+
* --------------------------- */
20+
setState(key: string, value: any) {
21+
this.state[key] = value;
22+
this.emit("state:update", { key, value });
23+
}
24+
25+
getState(key: string) {
26+
return this.state[key];
27+
}
28+
29+
/* ---------------------------
30+
* PLUGIN SYSTEM (OS MODULES)
31+
* --------------------------- */
32+
registerPlugin(name: string, plugin: any) {
33+
this.plugins[name] = plugin;
34+
35+
if (plugin?.init) {
36+
plugin.init(this);
37+
}
38+
39+
this.emit("plugin:loaded", { name });
40+
}
41+
42+
getPlugin(name: string) {
43+
return this.plugins[name];
44+
}
45+
46+
/* ---------------------------
47+
* SYSTEM BOOT
48+
* --------------------------- */
49+
boot() {
50+
console.log("[Web4 Kernel] Booting system...");
51+
52+
this.emit("system:boot");
53+
54+
setTimeout(() => {
55+
this.emit("system:ready");
56+
console.log("[Web4 Kernel] System ready.");
57+
}, 500);
58+
}
59+
}
60+
61+
export const kernel = new Web4Kernel();

0 commit comments

Comments
 (0)