Files
agentic-studio/network-poc/frontend/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs
Jaakko Vanhala a8c4af0975 Frontend uudelleenrakennettu: Astro-komponentit, Wasm pääsäikeessä, ei Workeria
Vanha frontend siirretty temp/. Uusi rakenne:
- StatusBar.astro, Terminal.astro, Editor.astro, Guide.astro
- global.css erillinen
- Wasm pääsäikeessä (ei Worker — yksinkertainen, debugattava)
- Tab-completion, dropdown, projektikortti, Monaco, GUIDE.md
- Ei tokenisointia eikä koodilaboratoriota

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:17:39 +03:00

87 lines
2.2 KiB
JavaScript

class AdapterHookable {
options;
constructor(options) {
this.options = options || {};
}
callHook(name, arg1, arg2) {
const globalHook = this.options.hooks?.[name];
const globalPromise = globalHook?.(arg1, arg2);
const resolveHooksPromise = this.options.resolve?.(arg1);
if (!resolveHooksPromise) {
return globalPromise;
}
const resolvePromise = resolveHooksPromise instanceof Promise ? resolveHooksPromise.then((hooks) => hooks?.[name]) : resolveHooksPromise?.[name];
return Promise.all([globalPromise, resolvePromise]).then(
([globalRes, hook]) => {
const hookResPromise = hook?.(arg1, arg2);
return hookResPromise instanceof Promise ? hookResPromise.then((hookRes) => hookRes || globalRes) : hookResPromise || globalRes;
}
);
}
async upgrade(request) {
let context = request.context;
if (!context) {
context = {};
Object.defineProperty(request, "context", {
enumerable: true,
value: context
});
}
try {
const res = await this.callHook(
"upgrade",
request
);
if (!res) {
return { context };
}
if (res.ok === false) {
return { context, endResponse: res };
}
if (res.headers) {
return {
context,
upgradeHeaders: res.headers
};
}
} catch (error) {
const errResponse = error.response || error;
if (errResponse instanceof Response) {
return {
context,
endResponse: errResponse
};
}
throw error;
}
return { context };
}
}
function defineHooks(hooks) {
return hooks;
}
function adapterUtils(peers) {
return {
peers,
publish(topic, message, options) {
let firstPeerWithTopic;
for (const peer of peers) {
if (peer.topics.has(topic)) {
firstPeerWithTopic = peer;
break;
}
}
if (firstPeerWithTopic) {
firstPeerWithTopic.send(message, options);
firstPeerWithTopic.publish(topic, message, options);
}
}
};
}
function defineWebSocketAdapter(factory) {
return factory;
}
export { AdapterHookable as A, adapterUtils as a, defineWebSocketAdapter as b, defineHooks as d };