@kbve/droid 0.0.6 → 0.1.2
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/droid.mjs +2312 -74
- package/index.d.ts +32 -0
- package/lib/agents/api-types.d.ts +121 -0
- package/lib/agents/api-types.d.ts.map +1 -0
- package/lib/agents/auth/init.d.ts +8 -0
- package/lib/agents/auth/init.d.ts.map +1 -0
- package/lib/agents/cache.d.ts +9 -0
- package/lib/agents/cache.d.ts.map +1 -0
- package/lib/agents/client/callGuildVault.d.ts +3 -0
- package/lib/agents/client/callGuildVault.d.ts.map +1 -0
- package/lib/agents/client/callJson.d.ts +3 -0
- package/lib/agents/client/callJson.d.ts.map +1 -0
- package/lib/agents/config.d.ts +36 -0
- package/lib/agents/config.d.ts.map +1 -0
- package/lib/agents/constants.d.ts +11 -0
- package/lib/agents/constants.d.ts.map +1 -0
- package/lib/agents/createAgents.d.ts +4 -0
- package/lib/agents/createAgents.d.ts.map +1 -0
- package/lib/agents/ctx.d.ts +46 -0
- package/lib/agents/ctx.d.ts.map +1 -0
- package/lib/agents/discord/bot.d.ts +21 -0
- package/lib/agents/discord/bot.d.ts.map +1 -0
- package/lib/agents/discord/guilds.d.ts +8 -0
- package/lib/agents/discord/guilds.d.ts.map +1 -0
- package/lib/agents/formDrafts.d.ts +5 -0
- package/lib/agents/formDrafts.d.ts.map +1 -0
- package/lib/agents/generated/agents-schema.d.ts +73 -0
- package/lib/agents/generated/agents-schema.d.ts.map +1 -0
- package/lib/agents/generated/discordsh-agents-schema.d.ts +71 -0
- package/lib/agents/generated/discordsh-agents-schema.d.ts.map +1 -0
- package/lib/agents/github/backfill.d.ts +23 -0
- package/lib/agents/github/backfill.d.ts.map +1 -0
- package/lib/agents/github/events.d.ts +10 -0
- package/lib/agents/github/events.d.ts.map +1 -0
- package/lib/agents/github/pat.d.ts +13 -0
- package/lib/agents/github/pat.d.ts.map +1 -0
- package/lib/agents/github/repoConfig.d.ts +25 -0
- package/lib/agents/github/repoConfig.d.ts.map +1 -0
- package/lib/agents/github/tokens.d.ts +22 -0
- package/lib/agents/github/tokens.d.ts.map +1 -0
- package/lib/agents/github/webhook.d.ts +37 -0
- package/lib/agents/github/webhook.d.ts.map +1 -0
- package/lib/agents/index.d.ts +8 -0
- package/lib/agents/index.d.ts.map +1 -0
- package/lib/agents/state/atoms.d.ts +122 -0
- package/lib/agents/state/atoms.d.ts.map +1 -0
- package/lib/agents/types.d.ts +65 -0
- package/lib/agents/types.d.ts.map +1 -0
- package/lib/gateway/SupabaseGateway.d.ts +38 -0
- package/lib/gateway/SupabaseGateway.d.ts.map +1 -0
- package/lib/gateway/WorkerCommunication.d.ts +39 -0
- package/lib/gateway/WorkerCommunication.d.ts.map +1 -0
- package/lib/gateway/WorkerPool.d.ts +55 -0
- package/lib/gateway/WorkerPool.d.ts.map +1 -0
- package/lib/gateway/capabilities.d.ts +23 -0
- package/lib/gateway/capabilities.d.ts.map +1 -0
- package/lib/gateway/index.d.ts +9 -0
- package/lib/gateway/index.d.ts.map +1 -0
- package/lib/gateway/strategies/DirectStrategy.d.ts +52 -0
- package/lib/gateway/strategies/DirectStrategy.d.ts.map +1 -0
- package/lib/gateway/strategies/SharedWorkerStrategy.d.ts +46 -0
- package/lib/gateway/strategies/SharedWorkerStrategy.d.ts.map +1 -0
- package/lib/gateway/strategies/WebWorkerStrategy.d.ts +45 -0
- package/lib/gateway/strategies/WebWorkerStrategy.d.ts.map +1 -0
- package/lib/gateway/types.d.ts +81 -0
- package/lib/gateway/types.d.ts.map +1 -0
- package/lib/workers/canvas-ui-renderer.d.ts +25 -0
- package/lib/workers/canvas-ui-renderer.d.ts.map +1 -0
- package/lib/workers/canvas-worker.d.ts +14 -0
- package/lib/workers/canvas-worker.d.ts.map +1 -0
- package/lib/workers/canvas-worker.js +5 -302
- package/lib/workers/data.d.ts +40 -0
- package/lib/workers/data.d.ts.map +1 -0
- package/lib/workers/db-worker.d.ts +69 -0
- package/lib/workers/db-worker.d.ts.map +1 -0
- package/lib/workers/db-worker.js +13 -3636
- package/lib/workers/events.d.ts +11 -0
- package/lib/workers/events.d.ts.map +1 -0
- package/lib/workers/flexbuilder.d.ts +4 -0
- package/lib/workers/flexbuilder.d.ts.map +1 -0
- package/lib/workers/init.d.ts +11 -0
- package/lib/workers/init.d.ts.map +1 -0
- package/lib/workers/main.d.ts +105 -0
- package/lib/workers/main.d.ts.map +1 -0
- package/lib/workers/supabase-db-worker.d.ts +2 -0
- package/lib/workers/supabase-db-worker.d.ts.map +1 -0
- package/lib/workers/supabase-db-worker.js +23 -0
- package/lib/workers/supabase-shared-worker.d.ts +2 -0
- package/lib/workers/supabase-shared-worker.d.ts.map +1 -0
- package/lib/workers/supabase-shared-worker.js +25 -0
- package/lib/workers/tools.d.ts +4 -0
- package/lib/workers/tools.d.ts.map +1 -0
- package/lib/workers/validate.d.ts +15 -0
- package/lib/workers/validate.d.ts.map +1 -0
- package/lib/workers/ws-worker.d.ts +10 -0
- package/lib/workers/ws-worker.d.ts.map +1 -0
- package/lib/workers/ws-worker.js +5 -273
- package/main.js +5711 -0
- package/package.json +18 -6
- package/src/index.ts +41 -13
- package/src/lib/agents/api-types.ts +170 -0
- package/src/lib/agents/auth/init.ts +200 -0
- package/src/lib/agents/cache.ts +127 -0
- package/src/lib/agents/client/callGuildVault.ts +71 -0
- package/src/lib/agents/client/callJson.ts +64 -0
- package/src/lib/agents/config.ts +83 -0
- package/src/lib/agents/constants.ts +11 -0
- package/src/lib/agents/createAgents.ts +62 -0
- package/src/lib/agents/ctx.ts +63 -0
- package/src/lib/agents/discord/bot.ts +169 -0
- package/src/lib/agents/discord/guilds.ts +106 -0
- package/src/lib/agents/formDrafts.ts +55 -0
- package/src/lib/agents/generated/agents-schema.ts +155 -0
- package/src/lib/agents/generated/discordsh-agents-schema.ts +96 -0
- package/src/lib/agents/github/backfill.ts +126 -0
- package/src/lib/agents/github/events.ts +131 -0
- package/src/lib/agents/github/pat.ts +150 -0
- package/src/lib/agents/github/repoConfig.ts +240 -0
- package/src/lib/agents/github/tokens.ts +222 -0
- package/src/lib/agents/github/webhook.ts +349 -0
- package/src/lib/agents/index.ts +35 -0
- package/src/lib/agents/state/atoms.ts +122 -0
- package/src/lib/agents/types.ts +83 -0
- package/src/lib/api.ts +71 -0
- package/src/lib/droid.spec.ts +14 -19
- package/src/lib/droid.ts +48 -4
- package/src/lib/gateway/SupabaseGateway.ts +236 -0
- package/src/lib/gateway/WorkerCommunication.ts +132 -0
- package/src/lib/gateway/WorkerPool.ts +304 -0
- package/src/lib/gateway/capabilities.spec.ts +144 -0
- package/src/lib/gateway/capabilities.ts +80 -0
- package/src/lib/gateway/index.ts +15 -0
- package/src/lib/gateway/strategies/DirectStrategy.ts +443 -0
- package/src/lib/gateway/strategies/SharedWorkerStrategy.ts +278 -0
- package/src/lib/gateway/strategies/WebWorkerStrategy.ts +278 -0
- package/src/lib/gateway/types.ts +139 -0
- package/src/lib/mod/mod-manager.ts +13 -8
- package/src/lib/mod/module/bento/mod-bento.worker.ts +1 -1
- package/src/lib/mod/module/supabase/mod-supabase.spec.ts +21 -25
- package/src/lib/mod/module/supabase/mod-supabase.ts +73 -0
- package/src/lib/mod/module/supabase/mod-supabase.worker.ts +1 -56
- package/src/lib/state/auth.spec.ts +58 -0
- package/src/lib/state/auth.ts +148 -0
- package/src/lib/state/bento.spec.ts +76 -0
- package/src/lib/state/bento.ts +51 -0
- package/src/lib/state/index.ts +98 -0
- package/src/lib/state/overlay-manager.ts +125 -0
- package/src/lib/state/profile-sync.ts +214 -0
- package/src/lib/state/profile.ts +155 -0
- package/src/lib/state/router.ts +24 -0
- package/src/lib/state/staff.ts +128 -0
- package/src/lib/state/sync-bus.ts +109 -0
- package/src/lib/state/theme-sync.ts +75 -0
- package/src/lib/state/toasts.spec.ts +106 -0
- package/src/lib/state/toasts.ts +34 -0
- package/src/lib/state/ui.spec.ts +148 -0
- package/src/lib/state/ui.ts +45 -0
- package/src/lib/state/welcome-toast.spec.ts +101 -0
- package/src/lib/state/welcome-toast.ts +76 -0
- package/src/lib/sw-recovery.spec.ts +165 -0
- package/src/lib/sw-recovery.ts +141 -0
- package/src/lib/types/bento.spec.ts +116 -0
- package/src/lib/types/bento.ts +94 -55
- package/src/lib/types/event-schemas.spec.ts +120 -0
- package/src/lib/types/event-types.spec.ts +96 -0
- package/src/lib/types/event-types.ts +113 -3
- package/src/lib/types/modules.ts +12 -5
- package/src/lib/types/ui-event-types.ts +66 -0
- package/src/lib/workers/canvas-ui-renderer.ts +266 -0
- package/src/lib/workers/canvas-worker.ts +94 -9
- package/src/lib/workers/data.ts +64 -37
- package/src/lib/workers/db-worker.ts +105 -32
- package/src/lib/workers/events.spec.ts +208 -0
- package/src/lib/workers/events.ts +27 -14
- package/src/lib/workers/flexbuilder.ts +2 -2
- package/src/lib/workers/init.ts +25 -17
- package/src/lib/workers/main.ts +506 -327
- package/src/lib/workers/supabase-db-worker.ts +243 -0
- package/src/lib/workers/supabase-shared-worker.ts +607 -0
- package/src/lib/workers/validate.ts +64 -0
- package/src/lib/workers/ws-worker.spec.ts +41 -0
- package/src/lib/workers/ws-worker.ts +255 -31
- package/src/setup-vitest.ts +4 -2
- package/src/types.ts +30 -0
- package/src/vite-env.d.ts +1 -0
- package/workers/main.js +2 -1125
- package/comlink.js +0 -253
- package/index.js +0 -2972
- package/reference.js +0 -259
- package/src/types.d.ts +0 -31
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/workers/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,IAAI,QAM3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAiD3D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type UIMessageType = 'toast' | 'toast-remove' | 'tooltip-open' | 'tooltip-close' | 'modal-open' | 'modal-close';
|
|
2
|
+
export interface ValidatedWorkerMessage {
|
|
3
|
+
type: UIMessageType;
|
|
4
|
+
payload: unknown;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Validate a UI message payload BEFORE postMessage to main thread.
|
|
8
|
+
* Returns the validated message or throws with a descriptive error.
|
|
9
|
+
*
|
|
10
|
+
* Usage (inside worker):
|
|
11
|
+
* const msg = validateUIMessage('toast', rawPayload);
|
|
12
|
+
* emitFromWorker(msg); // guaranteed valid
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateUIMessage(type: UIMessageType, payload: unknown): ValidatedWorkerMessage;
|
|
15
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/workers/validate.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GACtB,OAAO,GACP,cAAc,GACd,cAAc,GACd,eAAe,GACf,YAAY,GACZ,aAAa,CAAC;AAQjB,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,OAAO,GACd,sBAAsB,CA0BxB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function reconnectDelayMs(attempt: number): number;
|
|
2
|
+
declare const wsInstanceAPI: {
|
|
3
|
+
connect(url: string): Promise<void>;
|
|
4
|
+
send(payload: Uint8Array): Promise<void>;
|
|
5
|
+
close(): Promise<void>;
|
|
6
|
+
getStatus(): Promise<string>;
|
|
7
|
+
};
|
|
8
|
+
export type WSInstance = typeof wsInstanceAPI;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=ws-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-worker.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/workers/ws-worker.ts"],"names":[],"mappings":"AAyDA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOxD;AAuED,QAAA,MAAM,aAAa;iBACC,MAAM;kBA2GL,UAAU;;iBA2BX,OAAO,CAAC,MAAM,CAAC;CAUlC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,aAAa,CAAC"}
|
package/lib/workers/ws-worker.js
CHANGED
|
@@ -1,274 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
canHandle: (e) => C(e) && e[T],
|
|
8
|
-
serialize(e) {
|
|
9
|
-
const { port1: t, port2: n } = new MessageChannel();
|
|
10
|
-
return M(e, t), [n, [n]];
|
|
11
|
-
},
|
|
12
|
-
deserialize(e) {
|
|
13
|
-
return e.start(), D(e);
|
|
14
|
-
}
|
|
15
|
-
}, L = {
|
|
16
|
-
canHandle: (e) => C(e) && h in e,
|
|
17
|
-
serialize({ value: e }) {
|
|
18
|
-
let t;
|
|
19
|
-
return e instanceof Error ? t = {
|
|
20
|
-
isError: !0,
|
|
21
|
-
value: {
|
|
22
|
-
message: e.message,
|
|
23
|
-
name: e.name,
|
|
24
|
-
stack: e.stack
|
|
25
|
-
}
|
|
26
|
-
} : t = { isError: !1, value: e }, [t, []];
|
|
27
|
-
},
|
|
28
|
-
deserialize(e) {
|
|
29
|
-
throw e.isError ? Object.assign(new Error(e.value.message), e.value) : e.value;
|
|
30
|
-
}
|
|
31
|
-
}, R = /* @__PURE__ */ new Map([
|
|
32
|
-
["proxy", I],
|
|
33
|
-
["throw", L]
|
|
34
|
-
]);
|
|
35
|
-
function V(e, t) {
|
|
36
|
-
for (const n of e)
|
|
37
|
-
if (t === n || n === "*" || n instanceof RegExp && n.test(t))
|
|
38
|
-
return !0;
|
|
39
|
-
return !1;
|
|
40
|
-
}
|
|
41
|
-
function M(e, t = globalThis, n = ["*"]) {
|
|
42
|
-
t.addEventListener("message", function y(r) {
|
|
43
|
-
if (!r || !r.data)
|
|
44
|
-
return;
|
|
45
|
-
if (!V(n, r.origin)) {
|
|
46
|
-
console.warn(`Invalid origin '${r.origin}' for comlink proxy`);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const { id: a, type: g, path: c } = Object.assign({ path: [] }, r.data), u = (r.data.argumentList || []).map(d);
|
|
50
|
-
let s;
|
|
51
|
-
try {
|
|
52
|
-
const o = c.slice(0, -1).reduce((i, w) => i[w], e), f = c.reduce((i, w) => i[w], e);
|
|
53
|
-
switch (g) {
|
|
54
|
-
case "GET":
|
|
55
|
-
s = f;
|
|
56
|
-
break;
|
|
57
|
-
case "SET":
|
|
58
|
-
o[c.slice(-1)[0]] = d(r.data.value), s = !0;
|
|
59
|
-
break;
|
|
60
|
-
case "APPLY":
|
|
61
|
-
s = f.apply(o, u);
|
|
62
|
-
break;
|
|
63
|
-
case "CONSTRUCT":
|
|
64
|
-
{
|
|
65
|
-
const i = new f(...u);
|
|
66
|
-
s = Y(i);
|
|
67
|
-
}
|
|
68
|
-
break;
|
|
69
|
-
case "ENDPOINT":
|
|
70
|
-
{
|
|
71
|
-
const { port1: i, port2: w } = new MessageChannel();
|
|
72
|
-
M(e, w), s = G(i, [i]);
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
case "RELEASE":
|
|
76
|
-
s = void 0;
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
} catch (o) {
|
|
82
|
-
s = { value: o, [h]: 0 };
|
|
83
|
-
}
|
|
84
|
-
Promise.resolve(s).catch((o) => ({ value: o, [h]: 0 })).then((o) => {
|
|
85
|
-
const [f, i] = S(o);
|
|
86
|
-
t.postMessage(Object.assign(Object.assign({}, f), { id: a }), i), g === "RELEASE" && (t.removeEventListener("message", y), O(t), k in e && typeof e[k] == "function" && e[k]());
|
|
87
|
-
}).catch((o) => {
|
|
88
|
-
const [f, i] = S({
|
|
89
|
-
value: new TypeError("Unserializable return value"),
|
|
90
|
-
[h]: 0
|
|
91
|
-
});
|
|
92
|
-
t.postMessage(Object.assign(Object.assign({}, f), { id: a }), i);
|
|
93
|
-
});
|
|
94
|
-
}), t.start && t.start();
|
|
95
|
-
}
|
|
96
|
-
function _(e) {
|
|
97
|
-
return e.constructor.name === "MessagePort";
|
|
98
|
-
}
|
|
99
|
-
function O(e) {
|
|
100
|
-
_(e) && e.close();
|
|
101
|
-
}
|
|
102
|
-
function D(e, t) {
|
|
103
|
-
const n = /* @__PURE__ */ new Map();
|
|
104
|
-
return e.addEventListener("message", function(r) {
|
|
105
|
-
const { data: a } = r;
|
|
106
|
-
if (!a || !a.id)
|
|
107
|
-
return;
|
|
108
|
-
const g = n.get(a.id);
|
|
109
|
-
if (g)
|
|
110
|
-
try {
|
|
111
|
-
g(a);
|
|
112
|
-
} finally {
|
|
113
|
-
n.delete(a.id);
|
|
114
|
-
}
|
|
115
|
-
}), P(e, n, [], t);
|
|
116
|
-
}
|
|
117
|
-
function b(e) {
|
|
118
|
-
if (e)
|
|
119
|
-
throw new Error("Proxy has been released and is not useable");
|
|
120
|
-
}
|
|
121
|
-
function W(e) {
|
|
122
|
-
return m(e, /* @__PURE__ */ new Map(), {
|
|
123
|
-
type: "RELEASE"
|
|
124
|
-
}).then(() => {
|
|
125
|
-
O(e);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
const E = /* @__PURE__ */ new WeakMap(), p = "FinalizationRegistry" in globalThis && new FinalizationRegistry((e) => {
|
|
129
|
-
const t = (E.get(e) || 0) - 1;
|
|
130
|
-
E.set(e, t), t === 0 && W(e);
|
|
131
|
-
});
|
|
132
|
-
function F(e, t) {
|
|
133
|
-
const n = (E.get(t) || 0) + 1;
|
|
134
|
-
E.set(t, n), p && p.register(e, t, e);
|
|
135
|
-
}
|
|
136
|
-
function j(e) {
|
|
137
|
-
p && p.unregister(e);
|
|
138
|
-
}
|
|
139
|
-
function P(e, t, n = [], y = function() {
|
|
140
|
-
}) {
|
|
141
|
-
let r = !1;
|
|
142
|
-
const a = new Proxy(y, {
|
|
143
|
-
get(g, c) {
|
|
144
|
-
if (b(r), c === H)
|
|
145
|
-
return () => {
|
|
146
|
-
j(a), W(e), t.clear(), r = !0;
|
|
147
|
-
};
|
|
148
|
-
if (c === "then") {
|
|
149
|
-
if (n.length === 0)
|
|
150
|
-
return { then: () => a };
|
|
151
|
-
const u = m(e, t, {
|
|
152
|
-
type: "GET",
|
|
153
|
-
path: n.map((s) => s.toString())
|
|
154
|
-
}).then(d);
|
|
155
|
-
return u.then.bind(u);
|
|
156
|
-
}
|
|
157
|
-
return P(e, t, [...n, c]);
|
|
158
|
-
},
|
|
159
|
-
set(g, c, u) {
|
|
160
|
-
b(r);
|
|
161
|
-
const [s, o] = S(u);
|
|
162
|
-
return m(e, t, {
|
|
163
|
-
type: "SET",
|
|
164
|
-
path: [...n, c].map((f) => f.toString()),
|
|
165
|
-
value: s
|
|
166
|
-
}, o).then(d);
|
|
167
|
-
},
|
|
168
|
-
apply(g, c, u) {
|
|
169
|
-
b(r);
|
|
170
|
-
const s = n[n.length - 1];
|
|
171
|
-
if (s === N)
|
|
172
|
-
return m(e, t, {
|
|
173
|
-
type: "ENDPOINT"
|
|
174
|
-
}).then(d);
|
|
175
|
-
if (s === "bind")
|
|
176
|
-
return P(e, t, n.slice(0, -1));
|
|
177
|
-
const [o, f] = x(u);
|
|
178
|
-
return m(e, t, {
|
|
179
|
-
type: "APPLY",
|
|
180
|
-
path: n.map((i) => i.toString()),
|
|
181
|
-
argumentList: o
|
|
182
|
-
}, f).then(d);
|
|
183
|
-
},
|
|
184
|
-
construct(g, c) {
|
|
185
|
-
b(r);
|
|
186
|
-
const [u, s] = x(c);
|
|
187
|
-
return m(e, t, {
|
|
188
|
-
type: "CONSTRUCT",
|
|
189
|
-
path: n.map((o) => o.toString()),
|
|
190
|
-
argumentList: u
|
|
191
|
-
}, s).then(d);
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
return F(a, e), a;
|
|
195
|
-
}
|
|
196
|
-
function U(e) {
|
|
197
|
-
return Array.prototype.concat.apply([], e);
|
|
198
|
-
}
|
|
199
|
-
function x(e) {
|
|
200
|
-
const t = e.map(S);
|
|
201
|
-
return [t.map((n) => n[0]), U(t.map((n) => n[1]))];
|
|
202
|
-
}
|
|
203
|
-
const z = /* @__PURE__ */ new WeakMap();
|
|
204
|
-
function G(e, t) {
|
|
205
|
-
return z.set(e, t), e;
|
|
206
|
-
}
|
|
207
|
-
function Y(e) {
|
|
208
|
-
return Object.assign(e, { [T]: !0 });
|
|
209
|
-
}
|
|
210
|
-
function S(e) {
|
|
211
|
-
for (const [t, n] of R)
|
|
212
|
-
if (n.canHandle(e)) {
|
|
213
|
-
const [y, r] = n.serialize(e);
|
|
214
|
-
return [
|
|
215
|
-
{
|
|
216
|
-
type: "HANDLER",
|
|
217
|
-
name: t,
|
|
218
|
-
value: y
|
|
219
|
-
},
|
|
220
|
-
r
|
|
221
|
-
];
|
|
222
|
-
}
|
|
223
|
-
return [
|
|
224
|
-
{
|
|
225
|
-
type: "RAW",
|
|
226
|
-
value: e
|
|
227
|
-
},
|
|
228
|
-
z.get(e) || []
|
|
229
|
-
];
|
|
230
|
-
}
|
|
231
|
-
function d(e) {
|
|
232
|
-
switch (e.type) {
|
|
233
|
-
case "HANDLER":
|
|
234
|
-
return R.get(e.name).deserialize(e.value);
|
|
235
|
-
case "RAW":
|
|
236
|
-
return e.value;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
function m(e, t, n, y) {
|
|
240
|
-
return new Promise((r) => {
|
|
241
|
-
const a = q();
|
|
242
|
-
t.set(a, r), e.start && e.start(), e.postMessage(Object.assign({ id: a }, n), y);
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
function q() {
|
|
246
|
-
return new Array(4).fill(0).map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)).join("-");
|
|
247
|
-
}
|
|
248
|
-
let l = null, A = null;
|
|
249
|
-
const v = {
|
|
250
|
-
async connect(e) {
|
|
251
|
-
l || (l = new WebSocket(e), l.binaryType = "arraybuffer", l.onopen = () => console.log("[WS] Connected:", e), l.onmessage = (t) => {
|
|
252
|
-
try {
|
|
253
|
-
console.log("[WS] Received binary message"), t.data instanceof ArrayBuffer && A?.(t.data);
|
|
254
|
-
} catch (n) {
|
|
255
|
-
console.error("[WS] Failed to forward message", n);
|
|
256
|
-
}
|
|
257
|
-
}, l.onerror = (t) => console.error("[WS] Error:", t), l.onclose = () => {
|
|
258
|
-
console.log("[WS] Disconnected"), l = null;
|
|
259
|
-
});
|
|
260
|
-
},
|
|
261
|
-
async send(e) {
|
|
262
|
-
l?.readyState === WebSocket.OPEN ? l.send(e) : console.warn("[WS] Tried to send while disconnected");
|
|
263
|
-
},
|
|
264
|
-
async close() {
|
|
265
|
-
l?.close(), l = null;
|
|
266
|
-
},
|
|
267
|
-
onMessage(e) {
|
|
268
|
-
A = e;
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
self.onconnect = (e) => {
|
|
272
|
-
const t = e.ports[0];
|
|
273
|
-
t.start(), M(v, t);
|
|
274
|
-
};
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const e=Symbol(`Comlink.proxy`),t=Symbol(`Comlink.endpoint`),n=Symbol(`Comlink.releaseProxy`),r=Symbol(`Comlink.finalizer`),i=Symbol(`Comlink.thrown`),a=e=>typeof e==`object`&&!!e||typeof e==`function`,o=new Map([[`proxy`,{canHandle:t=>a(t)&&t[e],serialize(e){let{port1:t,port2:n}=new MessageChannel;return c(e,t),[n,[n]]},deserialize(e){return e.start(),d(e)}}],[`throw`,{canHandle:e=>a(e)&&i in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(Error(e.value.message),e.value):e.value}}]]);function s(e,t){for(let n of e)if(t===n||n===`*`||n instanceof RegExp&&n.test(t))return!0;return!1}function c(e,t=globalThis,n=[`*`]){t.addEventListener(`message`,function a(o){if(!o||!o.data)return;if(!s(n,o.origin)){console.warn(`Invalid origin '${o.origin}' for comlink proxy`);return}let{id:l,type:d,path:f}=Object.assign({path:[]},o.data),p=(o.data.argumentList||[]).map(T),m;try{let t=f.slice(0,-1).reduce((e,t)=>e[t],e),n=f.reduce((e,t)=>e[t],e);switch(d){case`GET`:m=n;break;case`SET`:t[f.slice(-1)[0]]=T(o.data.value),m=!0;break;case`APPLY`:m=n.apply(t,p);break;case`CONSTRUCT`:m=C(new n(...p));break;case`ENDPOINT`:{let{port1:t,port2:n}=new MessageChannel;c(e,n),m=S(t,[t])}break;case`RELEASE`:m=void 0;break;default:return}}catch(e){m={value:e,[i]:0}}Promise.resolve(m).catch(e=>({value:e,[i]:0})).then(n=>{let[i,o]=w(n);t.postMessage(Object.assign(Object.assign({},i),{id:l}),o),d===`RELEASE`&&(t.removeEventListener(`message`,a),u(t),r in e&&typeof e[r]==`function`&&e[r]())}).catch(e=>{let[n,r]=w({value:TypeError(`Unserializable return value`),[i]:0});t.postMessage(Object.assign(Object.assign({},n),{id:l}),r)})}),t.start&&t.start()}function l(e){return e.constructor.name===`MessagePort`}function u(e){l(e)&&e.close()}function d(e,t){let n=new Map;return e.addEventListener(`message`,function(e){let{data:t}=e;if(!t||!t.id)return;let r=n.get(t.id);if(r)try{r(t)}finally{n.delete(t.id)}}),v(e,n,[],t)}function f(e){if(e)throw Error(`Proxy has been released and is not useable`)}function p(e){return E(e,new Map,{type:`RELEASE`}).then(()=>{u(e)})}const m=new WeakMap,h=`FinalizationRegistry`in globalThis&&new FinalizationRegistry(e=>{let t=(m.get(e)||0)-1;m.set(e,t),t===0&&p(e)});function g(e,t){let n=(m.get(t)||0)+1;m.set(t,n),h&&h.register(e,t,e)}function _(e){h&&h.unregister(e)}function v(e,r,i=[],a=function(){}){let o=!1,s=new Proxy(a,{get(t,a){if(f(o),a===n)return()=>{_(s),p(e),r.clear(),o=!0};if(a===`then`){if(i.length===0)return{then:()=>s};let t=E(e,r,{type:`GET`,path:i.map(e=>e.toString())}).then(T);return t.then.bind(t)}return v(e,r,[...i,a])},set(t,n,a){f(o);let[s,c]=w(a);return E(e,r,{type:`SET`,path:[...i,n].map(e=>e.toString()),value:s},c).then(T)},apply(n,a,s){f(o);let c=i[i.length-1];if(c===t)return E(e,r,{type:`ENDPOINT`}).then(T);if(c===`bind`)return v(e,r,i.slice(0,-1));let[l,u]=b(s);return E(e,r,{type:`APPLY`,path:i.map(e=>e.toString()),argumentList:l},u).then(T)},construct(t,n){f(o);let[a,s]=b(n);return E(e,r,{type:`CONSTRUCT`,path:i.map(e=>e.toString()),argumentList:a},s).then(T)}});return g(s,e),s}function y(e){return Array.prototype.concat.apply([],e)}function b(e){let t=e.map(w);return[t.map(e=>e[0]),y(t.map(e=>e[1]))]}const x=new WeakMap;function S(e,t){return x.set(e,t),e}function C(t){return Object.assign(t,{[e]:!0})}function w(e){for(let[t,n]of o)if(n.canHandle(e)){let[r,i]=n.serialize(e);return[{type:`HANDLER`,name:t,value:r},i]}return[{type:`RAW`,value:e},x.get(e)||[]]}function T(e){switch(e.type){case`HANDLER`:return o.get(e.name).deserialize(e.value);case`RAW`:return e.value}}function E(e,t,n,r){return new Promise(i=>{let a=D();t.set(a,i),e.start&&e.start(),e.postMessage(Object.assign({id:a},n),r)})}function D(){return[,,,,].fill(0).map(()=>Math.floor(Math.random()*(2**53-1)).toString(16)).join(`-`)}let O=null;const k=typeof BroadcastChannel<`u`?new BroadcastChannel(`kbve_ws_data`):null,A=typeof BroadcastChannel<`u`?new BroadcastChannel(`kbve_ws_events`):null;let j=null,M=0,N=null,P=0,F=null;function I(e){return Math.min(3e4,1e3*2**Math.max(0,e-1))+Math.floor(Math.random()*500)}function L(){R(),j=setInterval(()=>{if(!O||O.readyState!==WebSocket.OPEN){R();return}if(M>0&&Date.now()-M>6e4){console.warn(`[WS] Heartbeat timeout — closing connection`),R(),O.close(1001,`Heartbeat timeout`);return}try{O.send(JSON.stringify({type:`ping`}))}catch(e){console.error(`[WS] Failed to send heartbeat:`,e)}},3e4)}function R(){j&&=(clearInterval(j),null)}function z(e,t){A?.postMessage({type:`status`,status:e,...t})}function B(){if(!F||P>=5){P>=5&&(console.error(`[WS] Max reconnect attempts (5) reached`),z(`failed`));return}P++;let e=I(P);console.log(`[WS] Reconnecting (${P}/5) in ${e}ms...`),z(`reconnecting`),N=setTimeout(()=>{F&&V.connect(F)},e)}const V={async connect(e){if(O&&O.readyState===WebSocket.OPEN)return;O&&=(O.onclose=null,O.close(),null),F=e;let t=e.replace(/(token=)[^&]+/i,`$1<redacted>`);console.log(`[WS] Connecting to`,t),O=new WebSocket(e),O.binaryType=`arraybuffer`,O.onopen=()=>{console.log(`[WS] Connected:`,t),P=0,M=Date.now(),L(),z(`connected`)},O.onmessage=e=>{try{if(typeof e.data==`string`)try{if(JSON.parse(e.data).type===`pong`){M=Date.now();return}}catch{}k&&(typeof e.data==`string`?k.postMessage({type:`ws.store`,format:`text`,data:e.data,ts:Date.now()}):e.data instanceof ArrayBuffer&&k.postMessage({type:`ws.store`,format:`binary`,data:new Uint8Array(e.data),ts:Date.now()})),A&&(typeof e.data==`string`?A.postMessage({type:`message`,format:`text`,data:e.data}):e.data instanceof ArrayBuffer&&A.postMessage({type:`message`,format:`binary`,data:new Uint8Array(e.data)}))}catch(e){console.error(`[WS] Failed to forward message`,e)}},O.onerror=e=>{console.error(`[WS] Error event:`,e),z(`error`,{reason:`WebSocket error event (no detail in browser API)`})},O.onclose=e=>{console.log(`[WS] Disconnected code=${e.code} reason="${e.reason}" wasClean=${e.wasClean}`),O=null,R(),z(`disconnected`,{code:e.code,reason:e.reason,wasClean:e.wasClean}),e.code!==1e3&&B()}},async send(e){O?.readyState===WebSocket.OPEN?O.send(e):console.warn(`[WS] Tried to send while disconnected`)},async close(){N&&=(clearTimeout(N),null),R(),P=0,F=null,O?.close(1e3,`Client request`),O=null,z(`disconnected`)},async getStatus(){return O?{[WebSocket.CONNECTING]:`connecting`,[WebSocket.OPEN]:`connected`,[WebSocket.CLOSING]:`closing`,[WebSocket.CLOSED]:`disconnected`}[O.readyState]||`unknown`:`disconnected`}},H=new Set;self.onconnect=e=>{let t=e.ports[0],n=H.size===0;H.add(t),t.start(),t.postMessage({type:n?`first-connect`:`reconnect`}),t.addEventListener(`message`,e=>{e.data?.type===`close`&&H.delete(t)}),c(V,t)};
|