@dobuki/hello-worker 1.0.9 → 1.0.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"signal-room.d.ts","sourceRoot":"","sources":["../src/browser/signal-room.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EACnD,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAGjD,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,GAAG;IAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,CAuD3B;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"signal-room.d.ts","sourceRoot":"","sources":["../src/browser/signal-room.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EACnD,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAGjD,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,GAAG;IAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,CAuD3B;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { enterRoom as baseEnterRoom } from "./impl/signal-room.js";
2
2
  export function enterRoom({ userId, room, host, onOpen, onClose, onError, onPeerJoined, onPeerLeft, onMessage, logLine, workerUrl, }) {
3
3
  if (!workerUrl) {
4
- const CDN_WORKER_URL = `https://cdn.jsdelivr.net/npm/@dobuki/hello-worker@${__VERSION__}/dist/signal-room.worker.min.js`;
4
+ const CDN_WORKER_URL = `https://cdn.jsdelivr.net/npm/@dobuki/hello-worker/dist/signal-room.worker.min.js`;
5
5
  console.warn("Warning: enterRoom called without workerUrl; this may cause issues in some environments. You should pass workerUrl explicitly. Use:", CDN_WORKER_URL);
6
6
  return baseEnterRoom({
7
7
  userId,
@@ -1 +1 @@
1
- {"version":3,"file":"signal-room.js","sourceRoot":"","sources":["../src/browser/signal-room.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAInE,MAAM,UAAU,SAAS,CAA4B,EACnD,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,GAeV;IACG,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,cAAc,GAAG,qDAAqD,WAAW,iCAAiC,CAAC;QAEzH,OAAO,CAAC,IAAI,CAAC,qIAAqI,EAAE,cAAc,CAAC,CAAC;QACpK,OAAO,aAAa,CAAO;YACvB,MAAM;YACN,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,OAAO;YACP,OAAO;YACP,YAAY;YACZ,UAAU;YACV,SAAS;SACZ,CAAC,CAAC;IACP,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,SAAS,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAsC;QACtE,OAAO;YACL,MAAM;YACN,MAAM;YACN,OAAO,EAAE,CAAC,IAAO,EAAE,OAAU,EAAE,EAAE;gBAC/B,IAAI,MAAM;oBAAE,OAAO,KAAK,CAAC;gBACzB,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,CAAgC,EAAE,EAAE;QAC3D,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAElB,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,EAAE,EAAE,CAAC;aAC9B,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAC5C,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,EAAE,EAAE,CAAC;aACrC,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa;YAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aAChG,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW;YAAE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;aAC9D,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aACtH,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEpD,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACvD,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"signal-room.js","sourceRoot":"","sources":["../src/browser/signal-room.ts"],"names":[],"mappings":"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"}
@@ -1,58 +1,4 @@
1
- /// <reference lib="webworker" />
2
- import { enterRoom } from "./impl/signal-room.js";
3
- let exitRoom = null;
4
- // Map from userId -> a function to send to that peer (comes from IUser.receive)
5
- const peerSend = new Map();
6
- function emit(ev) {
7
- self.postMessage(ev);
8
- }
9
- self.addEventListener("message", (e) => {
10
- const msg = e.data;
11
- console.debug("[signal-room.worker] received command", msg);
12
- if (msg.cmd === "enter") {
13
- // If re-entering, clean up first
14
- exitRoom?.();
15
- exitRoom = null;
16
- peerSend.clear();
17
- const result = enterRoom({
18
- userId: msg.userId,
19
- room: msg.room,
20
- host: msg.host,
21
- onOpen: () => emit({ kind: "open" }),
22
- onClose: () => emit({ kind: "close" }),
23
- onError: () => emit({ kind: "error" }),
24
- logLine: (direction, obj) => {
25
- console.debug(`[signal-room.worker] ${direction}`, obj);
26
- emit({ kind: "log", direction, obj });
27
- },
28
- onPeerJoined: (user) => {
29
- // Save the ability to send to this peer
30
- peerSend.set(user.peerId, user.receive);
31
- emit({ kind: "peer-joined", userId: user.userId, peerId: user.peerId });
32
- },
33
- onPeerLeft: (userId, peerId) => {
34
- peerSend.delete(peerId);
35
- emit({ kind: "peer-left", userId, peerId });
36
- },
37
- onMessage: (type, payload, from) => {
38
- // We can also learn peerSend via onMessage in case join events vary
39
- peerSend.set(from.peerId, from.receive);
40
- emit({ kind: "message", type, payload, fromUserId: from.userId, fromPeerId: from.peerId });
41
- },
42
- });
43
- exitRoom = result.exitRoom;
44
- return;
45
- }
46
- if (msg.cmd === "send") {
47
- const sendFn = peerSend.get(msg.toPeerId);
48
- if (sendFn)
49
- sendFn(msg.type, msg.payload);
50
- return;
51
- }
52
- if (msg.cmd === "exit") {
53
- exitRoom?.();
54
- self.close();
55
- return;
56
- }
57
- });
58
- //# sourceMappingURL=signal-room.worker.js.map
1
+ function h({userId:N,room:z,host:Q,onOpen:q,onClose:A,onError:G,logLine:X,onPeerJoined:F,onPeerLeft:J,onMessage:M}){let v="wss://"+Q+"/room/"+z+"?userId="+encodeURIComponent(N),B=new WebSocket(v),$=!1;function U(Y,k,H){if($)return!1;let D={type:Y,to:k,payload:H};return B.send(JSON.stringify(D)),X?.("\uD83D\uDC64 ➡️ \uD83D\uDDA5️",D),!0}function W(Y){let k;try{k=JSON.parse(Y.data)}catch{X?.("⚠️ ERROR",{error:"invalid-json"});return}if(X?.("\uD83D\uDDA5️ ➡️ \uD83D\uDC64",k),k.type==="peer-joined"&&k.peerId&&k.userId){let{userId:H,peerId:D}=k;F({userId:H,peerId:D,receive:(Z,_)=>{return U(Z,D,_)}});return}if(k.type==="peer-left"&&k.peerId&&k.userId){let{userId:H,peerId:D}=k;J(H,D);return}if(k.peerId&&k.userId){let{userId:H,peerId:D}=k;M(k.type,k.payload,{userId:H,peerId:D,receive:(Z,_)=>{return U(Z,D,_)}})}}if(B.addEventListener("message",W),q)B.addEventListener("open",q);if(A)B.addEventListener("close",A);if(G)B.addEventListener("error",G);return{exitRoom:()=>{if($=!0,B.close(),B.removeEventListener("message",W),q)B.removeEventListener("open",q);if(A)B.removeEventListener("close",A);if(G)B.removeEventListener("error",G)}}}var V=null,T=new Map;function K(N){self.postMessage(N)}self.addEventListener("message",(N)=>{let z=N.data;if(console.debug("[signal-room.worker] received command",z),z.cmd==="enter"){V?.(),V=null,T.clear(),V=h({userId:z.userId,room:z.room,host:z.host,onOpen:()=>K({kind:"open"}),onClose:()=>K({kind:"close"}),onError:()=>K({kind:"error"}),logLine:(q,A)=>{console.debug(`[signal-room.worker] ${q}`,A),K({kind:"log",direction:q,obj:A})},onPeerJoined:(q)=>{T.set(q.peerId,q.receive),K({kind:"peer-joined",userId:q.userId,peerId:q.peerId})},onPeerLeft:(q,A)=>{T.delete(A),K({kind:"peer-left",userId:q,peerId:A})},onMessage:(q,A,G)=>{T.set(G.peerId,G.receive),K({kind:"message",type:q,payload:A,fromUserId:G.userId,fromPeerId:G.peerId})}}).exitRoom;return}if(z.cmd==="send"){let Q=T.get(z.toPeerId);if(Q)Q(z.type,z.payload);return}if(z.cmd==="exit"){V?.(),self.close();return}});
2
+
3
+ //# debugId=471744D4D65F41ED64756E2164756E21
4
+ //# sourceMappingURL=signal-room.worker.js.map
@@ -1 +1,11 @@
1
- {"version":3,"file":"signal-room.worker.js","sourceRoot":"","sources":["../src/browser/signal-room.worker.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/browser/impl/signal-room.ts", "../src/browser/signal-room.worker.ts"],
4
+ "sourcesContent": [
5
+ "export interface IPeer<T extends string = string, P = any> {\n userId: string;\n peerId: string;\n receive(type: T, payload: P): boolean;\n}\n\n/**\n * enterRoom connects to the signaling room via WebSocket.\n */\nexport function enterRoom<T extends string, P = any>({\n userId,\n room,\n host,\n onOpen,\n onClose,\n onError,\n logLine,\n onPeerJoined,\n onPeerLeft,\n onMessage,\n}: {\n userId: string;\n room: string;\n host: string;\n onOpen?: () => void;\n onClose?: () => void;\n onError?: () => void;\n logLine?: (direction: string, obj?: any) => void;\n onPeerJoined(user: IPeer<T, P>) : void;\n onPeerLeft(userId: IPeer[\"userId\"], peerId: IPeer[\"peerId\"]) : void;\n onMessage(type: T, payload: P, from: IPeer<T, P>) : void;\n}): { exitRoom: () => void } {\n const wsUrl = \"wss://\" + host + \"/room/\" + room + \"?userId=\" + encodeURIComponent(userId);\n const ws = new WebSocket(wsUrl);\n\n let exited = false;\n function send(type: T, toPeerId: string, payload: P) {\n if (exited) return false;\n const obj = { type, to: toPeerId, payload };\n ws.send(JSON.stringify(obj));\n logLine?.(\"👤 ➡️ 🖥️\", obj);\n return true;\n }\n\n function onmessage(e: MessageEvent) {\n let msg: {\n type: T;\n peerId: string;\n userId: string;\n payload: P;\n };\n try { msg = JSON.parse(e.data); }\n catch {\n logLine?.(\"⚠️ ERROR\", { error: \"invalid-json\" });\n return;\n }\n\n logLine?.(\"🖥️ ➡️ 👤\", msg);\n\n // Existing client greets newcomers\n if (msg.type === \"peer-joined\" && msg.peerId && msg.userId) {\n const { userId, peerId } = msg;\n onPeerJoined({\n userId,\n peerId,\n receive: (type: T, payload: P) => {\n return send(type, peerId, payload);\n },\n });\n return;\n }\n if (msg.type === \"peer-left\" && msg.peerId && msg.userId) {\n const { userId, peerId } = msg;\n onPeerLeft(userId, peerId);\n return;\n }\n if (msg.peerId && msg.userId) {\n const { userId, peerId } = msg;\n onMessage(msg.type, msg.payload, {\n userId,\n peerId,\n receive: (type: T, payload: P) => {\n return send(type, peerId, payload);\n },\n });\n }\n };\n\n ws.addEventListener(\"message\", onmessage);\n if (onOpen) ws.addEventListener(\"open\", onOpen);\n if (onClose) ws.addEventListener(\"close\", onClose);\n if (onError) ws.addEventListener(\"error\", onError);\n return {\n exitRoom: () => {\n exited = true;\n ws.close();\n ws.removeEventListener(\"message\", onmessage);\n if (onOpen) ws.removeEventListener(\"open\", onOpen);\n if (onClose) ws.removeEventListener(\"close\", onClose);\n if (onError) ws.removeEventListener(\"error\", onError);\n },\n };\n}\n",
6
+ "/// <reference lib=\"webworker\" />\n\nimport { enterRoom, type IPeer } from \"./impl/signal-room.js\";\n\nexport type RoomEvent<T extends string = string, P = any> =\n | { kind: \"open\" }\n | { kind: \"close\" }\n | { kind: \"error\" }\n | { kind: \"peer-joined\"; userId: string; peerId: string }\n | { kind: \"peer-left\"; userId: string; peerId: string }\n | { kind: \"message\"; type: T; payload: P; fromUserId: string; fromPeerId: string }\n | { kind: \"log\"; direction: string; obj?: any };\n\ntype WorkerCommand<T extends string = string, P = any> =\n | { cmd: \"enter\"; userId: string; room: string; host: string }\n | { cmd: \"exit\" }\n | { cmd: \"send\"; toPeerId: string; type: T; payload: P };\n\nlet exitRoom: (() => void) | null = null;\n\n// Map from userId -> a function to send to that peer (comes from IUser.receive)\nconst peerSend = new Map<string, (type: any, payload: any) => boolean>();\n\nfunction emit<T extends string, P>(ev: RoomEvent<T, P>) {\n (self as DedicatedWorkerGlobalScope).postMessage(ev);\n}\n\nself.addEventListener(\"message\", (e: MessageEvent<WorkerCommand>) => {\n const msg = e.data;\n console.debug(\"[signal-room.worker] received command\", msg);\n\n if (msg.cmd === \"enter\") {\n // If re-entering, clean up first\n exitRoom?.();\n exitRoom = null;\n peerSend.clear();\n\n const result = enterRoom({\n userId: msg.userId,\n room: msg.room,\n host: msg.host,\n onOpen: () => emit({ kind: \"open\" }),\n onClose: () => emit({ kind: \"close\" }),\n onError: () => emit({ kind: \"error\" }),\n logLine: (direction: string, obj?: any) => {\n console.debug(`[signal-room.worker] ${direction}`, obj);\n emit({ kind: \"log\", direction, obj });\n },\n onPeerJoined: (user: IPeer) => {\n // Save the ability to send to this peer\n peerSend.set(user.peerId, user.receive);\n emit({ kind: \"peer-joined\", userId: user.userId, peerId: user.peerId });\n },\n onPeerLeft: (userId: string, peerId: string) => {\n peerSend.delete(peerId);\n emit({ kind: \"peer-left\", userId, peerId });\n },\n onMessage: (type: any, payload: any, from: IPeer) => {\n // We can also learn peerSend via onMessage in case join events vary\n peerSend.set(from.peerId, from.receive);\n emit({ kind: \"message\", type, payload, fromUserId: from.userId, fromPeerId: from.peerId });\n },\n });\n\n exitRoom = result.exitRoom;\n return;\n }\n\n if (msg.cmd === \"send\") {\n const sendFn = peerSend.get(msg.toPeerId);\n if (sendFn) sendFn(msg.type, msg.payload);\n return;\n }\n\n if (msg.cmd === \"exit\") {\n exitRoom?.();\n self.close();\n return;\n }\n});\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "471744D4D65F41ED64756E2164756E21",
10
+ "names": []
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dobuki/hello-worker",
3
- "version": "1.0.9",
3
+ "version": "1.0.14",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -16,7 +16,10 @@
16
16
  "scripts": {
17
17
  "dev": "wrangler dev src/index.ts --config wrangler.dev.toml",
18
18
  "deploy": "wrangler deploy",
19
- "build": "bun i && bun build src/browser/sample/index.ts src/browser/signal-room.worker.ts --target browser --outdir public --minify --sourcemap --format esm --define __VERSION__:'\"'$npm_package_version'\"' && tsc -p tsconfig.json",
19
+ "build:worker": "bun build src/browser/signal-room.worker.ts --target browser --format esm --outdir dist --minify --sourcemap",
20
+ "build:sample": "bun build src/browser/sample/index.ts src/browser/signal-room.worker.ts --target browser --format esm --outdir public --minify --sourcemap",
21
+ "build:types": "tsc -p tsconfig.json",
22
+ "build": "bun i && npm run build:worker && npm run build:sample && npm run build:types",
20
23
  "prepublishOnly": "npm run build",
21
24
  "npm-patch": "npm version patch && npm publish"
22
25
  },