@coderegtech/jsonify-ws 1.0.5
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/README.md +226 -0
- package/dist/index.d.mts +211 -0
- package/dist/index.d.ts +211 -0
- package/dist/index.js +542 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +505 -0
- package/dist/index.mjs.map +1 -0
- package/dist/server.d.mts +12 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.js +65 -0
- package/dist/server.js.map +1 -0
- package/dist/server.mjs +47 -0
- package/dist/server.mjs.map +1 -0
- package/package.json +65 -0
package/dist/server.mjs
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
// src/server.ts
|
|
9
|
+
import { Server } from "socket.io";
|
|
10
|
+
function createJsonifyServer(port = Number(process.env.WS_PORT) || 4e3, corsOrigin = "*") {
|
|
11
|
+
const io = new Server(port, {
|
|
12
|
+
cors: {
|
|
13
|
+
origin: corsOrigin,
|
|
14
|
+
methods: ["GET", "POST"]
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
let latestData = null;
|
|
18
|
+
io.on("connection", (socket) => {
|
|
19
|
+
console.log(`[jsonify-ws] Client connected (${io.engine.clientsCount} total)`);
|
|
20
|
+
if (latestData !== null) {
|
|
21
|
+
socket.emit("sync", latestData);
|
|
22
|
+
}
|
|
23
|
+
socket.on("update", (data) => {
|
|
24
|
+
latestData = data;
|
|
25
|
+
socket.broadcast.emit("sync", latestData);
|
|
26
|
+
});
|
|
27
|
+
socket.on("disconnect", () => {
|
|
28
|
+
console.log(`[jsonify-ws] Client disconnected (${io.engine.clientsCount} total)`);
|
|
29
|
+
});
|
|
30
|
+
socket.on("error", (err) => {
|
|
31
|
+
console.error("[jsonify-ws] Socket error:", err);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
console.log(`[jsonify-ws] Server running on http://localhost:${port}`);
|
|
35
|
+
return io;
|
|
36
|
+
}
|
|
37
|
+
if (typeof __require !== "undefined" && __require.main === module) {
|
|
38
|
+
createJsonifyServer();
|
|
39
|
+
}
|
|
40
|
+
var isMainModule = typeof process !== "undefined" && process.argv[1] && (process.argv[1].endsWith("/server.ts") || process.argv[1].endsWith("/server.js") || process.argv[1].endsWith("/server.mjs"));
|
|
41
|
+
if (isMainModule) {
|
|
42
|
+
createJsonifyServer();
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
createJsonifyServer
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts"],"sourcesContent":["import { Server } from \"socket.io\";\n\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/**\n * Create and start a jsonify-ws sync server.\n *\n * @param port - Port number (default: WSL_URL port or 4000)\n * @param corsOrigin - CORS origin (default: \"*\")\n */\nexport function createJsonifyServer(\n port: number = Number(process.env.WS_PORT) || 4000,\n corsOrigin: string | string[] = \"*\",\n) {\n const io = new Server(port, {\n cors: {\n origin: corsOrigin,\n methods: [\"GET\", \"POST\"],\n },\n });\n\n let latestData: JsonValue | null = null;\n\n io.on(\"connection\", (socket) => {\n console.log(`[jsonify-ws] Client connected (${io.engine.clientsCount} total)`);\n\n if (latestData !== null) {\n socket.emit(\"sync\", latestData);\n }\n\n socket.on(\"update\", (data: JsonValue) => {\n latestData = data;\n socket.broadcast.emit(\"sync\", latestData);\n });\n\n socket.on(\"disconnect\", () => {\n console.log(`[jsonify-ws] Client disconnected (${io.engine.clientsCount} total)`);\n });\n\n socket.on(\"error\", (err) => {\n console.error(\"[jsonify-ws] Socket error:\", err);\n });\n });\n\n console.log(`[jsonify-ws] Server running on http://localhost:${port}`);\n return io;\n}\n\n// Auto-start when run directly\nif (typeof require !== \"undefined\" && require.main === module) {\n createJsonifyServer();\n}\n\n// Also auto-start for ESM direct execution\nconst isMainModule =\n typeof process !== \"undefined\" &&\n process.argv[1] &&\n (process.argv[1].endsWith(\"/server.ts\") ||\n process.argv[1].endsWith(\"/server.js\") ||\n process.argv[1].endsWith(\"/server.mjs\"));\n\nif (isMainModule) {\n createJsonifyServer();\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,cAAc;AAgBhB,SAAS,oBACd,OAAe,OAAO,QAAQ,IAAI,OAAO,KAAK,KAC9C,aAAgC,KAChC;AACA,QAAM,KAAK,IAAI,OAAO,MAAM;AAAA,IAC1B,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS,CAAC,OAAO,MAAM;AAAA,IACzB;AAAA,EACF,CAAC;AAED,MAAI,aAA+B;AAEnC,KAAG,GAAG,cAAc,CAAC,WAAW;AAC9B,YAAQ,IAAI,kCAAkC,GAAG,OAAO,YAAY,SAAS;AAE7E,QAAI,eAAe,MAAM;AACvB,aAAO,KAAK,QAAQ,UAAU;AAAA,IAChC;AAEA,WAAO,GAAG,UAAU,CAAC,SAAoB;AACvC,mBAAa;AACb,aAAO,UAAU,KAAK,QAAQ,UAAU;AAAA,IAC1C,CAAC;AAED,WAAO,GAAG,cAAc,MAAM;AAC5B,cAAQ,IAAI,qCAAqC,GAAG,OAAO,YAAY,SAAS;AAAA,IAClF,CAAC;AAED,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,cAAQ,MAAM,8BAA8B,GAAG;AAAA,IACjD,CAAC;AAAA,EACH,CAAC;AAED,UAAQ,IAAI,mDAAmD,IAAI,EAAE;AACrE,SAAO;AACT;AAGA,IAAI,OAAO,cAAY,eAAe,UAAQ,SAAS,QAAQ;AAC7D,sBAAoB;AACtB;AAGA,IAAM,eACJ,OAAO,YAAY,eACnB,QAAQ,KAAK,CAAC,MACb,QAAQ,KAAK,CAAC,EAAE,SAAS,YAAY,KACpC,QAAQ,KAAK,CAAC,EAAE,SAAS,YAAY,KACrC,QAAQ,KAAK,CAAC,EAAE,SAAS,aAAa;AAE1C,IAAI,cAAc;AAChB,sBAAoB;AACtB;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@coderegtech/jsonify-ws",
|
|
3
|
+
"version": "1.0.5",
|
|
4
|
+
"description": "Real-time JSON sync over WebSocket using Socket.IO. Drop-in React hook + Node server for collaborative JSON editing.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"json",
|
|
7
|
+
"websocket",
|
|
8
|
+
"sync",
|
|
9
|
+
"real-time",
|
|
10
|
+
"socket.io",
|
|
11
|
+
"react",
|
|
12
|
+
"hook",
|
|
13
|
+
"collaborative",
|
|
14
|
+
"editing"
|
|
15
|
+
],
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": ""
|
|
19
|
+
},
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"author": "coderegtech",
|
|
22
|
+
"type": "commonjs",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"import": "./dist/index.mjs",
|
|
26
|
+
"require": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts"
|
|
28
|
+
},
|
|
29
|
+
"./server": {
|
|
30
|
+
"import": "./dist/server.mjs",
|
|
31
|
+
"require": "./dist/server.js",
|
|
32
|
+
"types": "./dist/server.d.ts"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"main": "dist/index.js",
|
|
39
|
+
"types": "dist/index.d.ts",
|
|
40
|
+
"files": [
|
|
41
|
+
"dist",
|
|
42
|
+
"README.md"
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsup",
|
|
46
|
+
"dev": "tsup --watch",
|
|
47
|
+
"server": "tsx src/server.ts"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"socket.io": "^4.8.3"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"tsup": "^8.0.0",
|
|
54
|
+
"tsx": "^4.0.0",
|
|
55
|
+
"typescript": "^5.0.0",
|
|
56
|
+
"react": "^18.3.1",
|
|
57
|
+
"socket.io-client": "^4.8.3",
|
|
58
|
+
"@types/react": "^18.3.0"
|
|
59
|
+
},
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"react": ">=17.0.0",
|
|
62
|
+
"socket.io-client": "^4.0.0"
|
|
63
|
+
},
|
|
64
|
+
"module": "dist/index.mjs"
|
|
65
|
+
}
|