@modularizer/plat 0.10.0 → 0.11.0

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.
Files changed (45) hide show
  1. package/dist/client/css-transport-plugin.d.ts +2 -1
  2. package/dist/client/css-transport-plugin.d.ts.map +1 -1
  3. package/dist/client/css-transport-plugin.js +2 -2
  4. package/dist/client/css-transport-plugin.js.map +1 -1
  5. package/dist/client-entry.d.ts +1 -0
  6. package/dist/client-entry.d.ts.map +1 -1
  7. package/dist/client-entry.js +1 -0
  8. package/dist/client-entry.js.map +1 -1
  9. package/dist/client-side-server/channel.d.ts.map +1 -1
  10. package/dist/client-side-server/channel.js +93 -29
  11. package/dist/client-side-server/channel.js.map +1 -1
  12. package/dist/client-side-server/mqtt-webrtc.d.ts +5 -0
  13. package/dist/client-side-server/mqtt-webrtc.d.ts.map +1 -1
  14. package/dist/client-side-server/mqtt-webrtc.js +14 -0
  15. package/dist/client-side-server/mqtt-webrtc.js.map +1 -1
  16. package/dist/client-side-server/plat-fetch.d.ts.map +1 -1
  17. package/dist/client-side-server/plat-fetch.js +10 -0
  18. package/dist/client-side-server/plat-fetch.js.map +1 -1
  19. package/dist/client-side-server/plat-service-worker.js +1 -36
  20. package/dist/client-side-server/plat-service-worker.js.map +1 -1
  21. package/dist/client-side-server/server.d.ts.map +1 -1
  22. package/dist/client-side-server/server.js +57 -5
  23. package/dist/client-side-server/server.js.map +1 -1
  24. package/dist/client-side-server/signaling.d.ts +4 -0
  25. package/dist/client-side-server/signaling.d.ts.map +1 -1
  26. package/dist/client-side-server/signaling.js +12 -0
  27. package/dist/client-side-server/signaling.js.map +1 -1
  28. package/dist/server/auth/jwt.d.ts.map +1 -1
  29. package/dist/server/auth/jwt.js +1 -2
  30. package/dist/server/auth/jwt.js.map +1 -1
  31. package/dist/server/index.d.ts +1 -0
  32. package/dist/server/index.d.ts.map +1 -1
  33. package/dist/server/index.js +1 -0
  34. package/dist/server/index.js.map +1 -1
  35. package/dist/server/rpc-protocol-plugin.d.ts.map +1 -1
  36. package/dist/server/rpc-protocol-plugin.js +11 -1
  37. package/dist/server/rpc-protocol-plugin.js.map +1 -1
  38. package/dist/server/server.d.ts.map +1 -1
  39. package/dist/server/server.js +4 -2
  40. package/dist/server/server.js.map +1 -1
  41. package/dist/server/websocket-plugin.d.ts +14 -0
  42. package/dist/server/websocket-plugin.d.ts.map +1 -0
  43. package/dist/server/websocket-plugin.js +93 -0
  44. package/dist/server/websocket-plugin.js.map +1 -0
  45. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ import { WebSocketServer, WebSocket } from 'ws';
2
+ const websocketControllerMeta = new WeakMap();
3
+ export function WebSocketController(path) {
4
+ return function (constructor) {
5
+ const existing = websocketControllerMeta.get(constructor);
6
+ websocketControllerMeta.set(constructor, {
7
+ path,
8
+ handlers: existing?.handlers ?? [],
9
+ });
10
+ };
11
+ }
12
+ export function WebSocketMessage(type) {
13
+ return function (target, propertyKey) {
14
+ const constructor = target.constructor;
15
+ const existing = websocketControllerMeta.get(constructor);
16
+ const meta = existing ?? { path: '/', handlers: [] };
17
+ meta.handlers.push({
18
+ messageType: type ?? String(propertyKey),
19
+ methodName: propertyKey,
20
+ });
21
+ websocketControllerMeta.set(constructor, meta);
22
+ };
23
+ }
24
+ export function createWebSocketProtocolPlugin(controllers) {
25
+ return {
26
+ name: 'websocket-protocol-plugin',
27
+ attach(_runtime, host) {
28
+ const httpServer = host.server;
29
+ if (!httpServer)
30
+ return;
31
+ const routeMap = new Map();
32
+ for (const ControllerCtor of controllers) {
33
+ const meta = websocketControllerMeta.get(ControllerCtor);
34
+ if (!meta)
35
+ continue;
36
+ const instance = new ControllerCtor();
37
+ const handlers = new Map(meta.handlers.map((h) => [h.messageType, h.methodName]));
38
+ routeMap.set(meta.path, { instance, handlers });
39
+ }
40
+ const wss = new WebSocketServer({ noServer: true });
41
+ httpServer.on('upgrade', (req, socket, head) => {
42
+ const path = (req.url ?? '/').split('?')[0] || '/';
43
+ const route = routeMap.get(path);
44
+ if (!route) {
45
+ socket.destroy();
46
+ return;
47
+ }
48
+ wss.handleUpgrade(req, socket, head, (ws) => {
49
+ const session = {
50
+ ws,
51
+ path,
52
+ headers: req.headers,
53
+ send(message) {
54
+ ws.send(JSON.stringify(message));
55
+ },
56
+ close(code, reason) {
57
+ ws.close(code, reason);
58
+ },
59
+ isOpen() {
60
+ return ws.readyState === WebSocket.OPEN;
61
+ },
62
+ };
63
+ ws.on('message', async (data) => {
64
+ try {
65
+ const message = JSON.parse(String(data));
66
+ const messageType = typeof message.type === 'string' ? message.type : '';
67
+ const methodName = route.handlers.get(messageType);
68
+ if (!methodName) {
69
+ session.send({ error: 'unknown_type', type: messageType });
70
+ return;
71
+ }
72
+ const method = route.instance[methodName];
73
+ if (typeof method !== 'function') {
74
+ session.send({ error: 'missing_handler', type: messageType });
75
+ return;
76
+ }
77
+ await method.call(route.instance, message, session);
78
+ }
79
+ catch (error) {
80
+ session.send({ error: 'invalid_message', message: error?.message ?? 'Invalid message' });
81
+ }
82
+ });
83
+ ws.on('close', async () => {
84
+ if (typeof route.instance.onClose === 'function') {
85
+ await route.instance.onClose(session);
86
+ }
87
+ });
88
+ });
89
+ });
90
+ },
91
+ };
92
+ }
93
+ //# sourceMappingURL=websocket-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-plugin.js","sourceRoot":"","sources":["../../src/server/websocket-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modularizer/plat",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Protocol and Language Agnostic Tooling Yielding Universal Semantics",
5
5
  "type": "module",
6
6
  "author": {