@mobtakronio/capskit 0.1.2 → 0.1.3
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/index.cjs +84 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -9
- package/dist/index.d.ts +2 -9
- package/dist/index.js +83 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -5362,6 +5362,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
5362
5362
|
|
|
5363
5363
|
// src/kernel/platform.ts
|
|
5364
5364
|
var path2 = __toESM(require("path"), 1);
|
|
5365
|
+
var import_url = require("url");
|
|
5365
5366
|
|
|
5366
5367
|
// src/kernel/loader.ts
|
|
5367
5368
|
var fs = __toESM(require("fs"), 1);
|
|
@@ -21375,49 +21376,45 @@ function createElysiaRouter(capskit, traitHandlers = {}) {
|
|
|
21375
21376
|
manifests.forEach((manifest) => {
|
|
21376
21377
|
if (manifest.routes) {
|
|
21377
21378
|
manifest.routes.forEach((route) => {
|
|
21379
|
+
const path3 = route.path;
|
|
21380
|
+
let hooks = {};
|
|
21381
|
+
if (route.traits) {
|
|
21382
|
+
hooks.beforeHandle = [];
|
|
21383
|
+
for (const [traitName, traitValue] of Object.entries(route.traits)) {
|
|
21384
|
+
if (traitHandlers[traitName]) {
|
|
21385
|
+
hooks.beforeHandle.push((c) => traitHandlers[traitName](traitValue, c));
|
|
21386
|
+
} else {
|
|
21387
|
+
console.warn(`[HTTP Elysia] No handler provided for trait "${traitName}" on route ${route.method} ${path3}`);
|
|
21388
|
+
}
|
|
21389
|
+
}
|
|
21390
|
+
}
|
|
21378
21391
|
const handler = async ({ body, params, query, set }) => {
|
|
21379
21392
|
try {
|
|
21380
|
-
|
|
21393
|
+
return await capskit.call(`${manifest.name}.${route.action}`, {
|
|
21381
21394
|
body,
|
|
21382
21395
|
params,
|
|
21383
21396
|
query
|
|
21384
21397
|
});
|
|
21385
|
-
return result;
|
|
21386
21398
|
} catch (error) {
|
|
21387
21399
|
set.status = 500;
|
|
21388
21400
|
return { error: error.message };
|
|
21389
21401
|
}
|
|
21390
21402
|
};
|
|
21391
|
-
const path3 = route.path;
|
|
21392
|
-
let config = {};
|
|
21393
|
-
if (route.traits) {
|
|
21394
|
-
const beforeHandle = [];
|
|
21395
|
-
for (const [traitName, traitValue] of Object.entries(route.traits)) {
|
|
21396
|
-
if (traitHandlers[traitName]) {
|
|
21397
|
-
beforeHandle.push(async (c) => traitHandlers[traitName](traitValue, c));
|
|
21398
|
-
} else {
|
|
21399
|
-
console.warn(`[HTTP Elysia] No handler provided for trait "${traitName}" on route ${route.method} ${path3}`);
|
|
21400
|
-
}
|
|
21401
|
-
}
|
|
21402
|
-
if (beforeHandle.length > 0) {
|
|
21403
|
-
config.beforeHandle = beforeHandle;
|
|
21404
|
-
}
|
|
21405
|
-
}
|
|
21406
21403
|
switch (route.method) {
|
|
21407
21404
|
case "GET":
|
|
21408
|
-
app.get(path3, handler,
|
|
21405
|
+
app.get(path3, handler, hooks);
|
|
21409
21406
|
break;
|
|
21410
21407
|
case "POST":
|
|
21411
|
-
app.post(path3, handler,
|
|
21408
|
+
app.post(path3, handler, hooks);
|
|
21412
21409
|
break;
|
|
21413
21410
|
case "PUT":
|
|
21414
|
-
app.put(path3, handler,
|
|
21411
|
+
app.put(path3, handler, hooks);
|
|
21415
21412
|
break;
|
|
21416
21413
|
case "DELETE":
|
|
21417
|
-
app.delete(path3, handler,
|
|
21414
|
+
app.delete(path3, handler, hooks);
|
|
21418
21415
|
break;
|
|
21419
21416
|
case "PATCH":
|
|
21420
|
-
app.patch(path3, handler,
|
|
21417
|
+
app.patch(path3, handler, hooks);
|
|
21421
21418
|
break;
|
|
21422
21419
|
}
|
|
21423
21420
|
});
|
|
@@ -21494,7 +21491,59 @@ var service3 = {
|
|
|
21494
21491
|
}
|
|
21495
21492
|
};
|
|
21496
21493
|
|
|
21494
|
+
// src/capsules/websocket/src/adapters/elysia.ts
|
|
21495
|
+
function createElysiaSocket(capskit) {
|
|
21496
|
+
const manifests = capskit.getManifests();
|
|
21497
|
+
const sockets = {};
|
|
21498
|
+
manifests.forEach((manifest) => {
|
|
21499
|
+
if (manifest.sockets) {
|
|
21500
|
+
manifest.sockets.forEach((socket) => {
|
|
21501
|
+
sockets[socket.path] = {
|
|
21502
|
+
open: socket.open ? async (ws) => {
|
|
21503
|
+
await capskit.call(`${manifest.name}.${socket.open}`, { ws, body: ws.data });
|
|
21504
|
+
} : void 0,
|
|
21505
|
+
message: async (ws, message) => {
|
|
21506
|
+
const result = await capskit.call(`${manifest.name}.${socket.message}`, { ws, body: message });
|
|
21507
|
+
if (result) ws.send(result);
|
|
21508
|
+
},
|
|
21509
|
+
close: socket.close ? async (ws, code, message) => {
|
|
21510
|
+
await capskit.call(`${manifest.name}.${socket.close}`, { ws, code, message });
|
|
21511
|
+
} : void 0,
|
|
21512
|
+
drain: socket.drain ? async (ws) => {
|
|
21513
|
+
await capskit.call(`${manifest.name}.${socket.drain}`, { ws });
|
|
21514
|
+
} : void 0
|
|
21515
|
+
};
|
|
21516
|
+
});
|
|
21517
|
+
}
|
|
21518
|
+
});
|
|
21519
|
+
return sockets;
|
|
21520
|
+
}
|
|
21521
|
+
|
|
21522
|
+
// src/capsules/websocket/src/actions/buildSocket.ts
|
|
21523
|
+
var buildSocket = async (payload, context) => {
|
|
21524
|
+
const { adapter = "elysia" } = payload?.body || payload || {};
|
|
21525
|
+
const capskit = context.deps.capskit;
|
|
21526
|
+
if (adapter === "elysia") {
|
|
21527
|
+
const sockets = createElysiaSocket(capskit);
|
|
21528
|
+
return { sockets };
|
|
21529
|
+
}
|
|
21530
|
+
throw new Error(`Unsupported WebSocket adapter: ${adapter}`);
|
|
21531
|
+
};
|
|
21532
|
+
|
|
21533
|
+
// src/capsules/websocket/manifest.ts
|
|
21534
|
+
var service4 = {
|
|
21535
|
+
name: "websocket",
|
|
21536
|
+
requires: ["capskit"],
|
|
21537
|
+
actions: {
|
|
21538
|
+
buildSocket: {
|
|
21539
|
+
handler: buildSocket,
|
|
21540
|
+
description: "Returns a WebSocket configuration containing all platform capabilities mapped to WebSockets"
|
|
21541
|
+
}
|
|
21542
|
+
}
|
|
21543
|
+
};
|
|
21544
|
+
|
|
21497
21545
|
// src/kernel/platform.ts
|
|
21546
|
+
var import_meta = {};
|
|
21498
21547
|
var CapsKit = class {
|
|
21499
21548
|
constructor(config) {
|
|
21500
21549
|
this.config = config;
|
|
@@ -21512,6 +21561,19 @@ var CapsKit = class {
|
|
|
21512
21561
|
this.registerCapsule(service);
|
|
21513
21562
|
this.registerCapsule(service2);
|
|
21514
21563
|
this.registerCapsule(service3);
|
|
21564
|
+
this.registerCapsule(service4);
|
|
21565
|
+
try {
|
|
21566
|
+
const currentDir = path2.dirname((0, import_url.fileURLToPath)(import_meta.url));
|
|
21567
|
+
const builtinDir = path2.resolve(currentDir, "../capsules");
|
|
21568
|
+
const builtinManifests = await loadCapsules(builtinDir);
|
|
21569
|
+
for (const manifest of builtinManifests) {
|
|
21570
|
+
if (!this.manifests.has(manifest.name)) {
|
|
21571
|
+
this.registerCapsule(manifest);
|
|
21572
|
+
}
|
|
21573
|
+
}
|
|
21574
|
+
} catch (error) {
|
|
21575
|
+
console.warn("[CapsKit] Could not auto-load built-in capsules directory:", error);
|
|
21576
|
+
}
|
|
21515
21577
|
if (this.config.capsuleDirs) {
|
|
21516
21578
|
for (const dir of this.config.capsuleDirs) {
|
|
21517
21579
|
const absoluteDir = path2.resolve(dir);
|