@fuzionx/framework 0.1.29 → 0.1.30

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 (41) hide show
  1. package/cli/index.js +90 -109
  2. package/cli/templates/{app/fuzionx → make/app}/controllers/HomeController.js +1 -0
  3. package/cli/templates/{app/tester → make/app}/views/default/errors/404.html +0 -4
  4. package/cli/templates/{app/fuzionx/views/default/errors/404.html → make/app/views/default/errors/500.html} +1 -2
  5. package/cli/templates/make/app/views/default/pages/home.html +11 -0
  6. package/lib/core/Application.js +4 -1
  7. package/package.json +2 -2
  8. package/cli/templates/app/.env.example.tpl +0 -14
  9. package/cli/templates/app/.gitignore.tpl +0 -4
  10. package/cli/templates/app/app.js.tpl +0 -6
  11. package/cli/templates/app/database/models/User.js +0 -9
  12. package/cli/templates/app/fuzionx/views/default/errors/500.html +0 -14
  13. package/cli/templates/app/fuzionx/views/default/pages/home.html +0 -188
  14. package/cli/templates/app/fuzionx.yaml.tpl +0 -202
  15. package/cli/templates/app/locales/en.json +0 -52
  16. package/cli/templates/app/locales/ko.json +0 -52
  17. package/cli/templates/app/package.json.tpl +0 -16
  18. package/cli/templates/app/shared/events/userEvents.js +0 -10
  19. package/cli/templates/app/shared/jobs/CleanupJob.js +0 -18
  20. package/cli/templates/app/shared/jobs/EmailTask.js +0 -17
  21. package/cli/templates/app/shared/jobs/VideoPreviewTask.js +0 -47
  22. package/cli/templates/app/shared/workers/heavy.js +0 -18
  23. package/cli/templates/app/tester/controllers/FileController.js +0 -288
  24. package/cli/templates/app/tester/controllers/HomeController.js +0 -36
  25. package/cli/templates/app/tester/controllers/UserController.js +0 -43
  26. package/cli/templates/app/tester/middleware/RequestLogger.js +0 -13
  27. package/cli/templates/app/tester/routes/api.js +0 -397
  28. package/cli/templates/app/tester/routes/web.js +0 -8
  29. package/cli/templates/app/tester/services/UserService.js +0 -52
  30. package/cli/templates/app/tester/views/default/errors/500.html +0 -14
  31. package/cli/templates/app/tester/views/default/layouts/main.html +0 -82
  32. package/cli/templates/app/tester/views/default/pages/home.html +0 -56
  33. package/cli/templates/app/tester/views/default/pages/i18n.html +0 -104
  34. package/cli/templates/app/tester/views/default/pages/upload.html +0 -149
  35. package/cli/templates/app/tester/views/default/pages/websocket.html +0 -239
  36. package/cli/templates/app/tester/views/default/partials/footer.html +0 -8
  37. package/cli/templates/app/tester/views/default/partials/header.html +0 -20
  38. package/cli/templates/app/tester/ws/ChatHandler.js +0 -98
  39. /package/cli/templates/{app/fuzionx/routes/api.js.tpl → make/app/routes/api.js} +0 -0
  40. /package/cli/templates/{app/fuzionx/routes/web.js.tpl → make/app/routes/web.js} +0 -0
  41. /package/cli/templates/{app/fuzionx → make/app}/views/default/layouts/main.html +0 -0
@@ -1,98 +0,0 @@
1
- import { WsHandler } from '@fuzionx/framework';
2
-
3
- /** 채팅 WebSocket 핸들러 */
4
- export default class ChatHandler extends WsHandler {
5
- static namespace = '/chat';
6
- static middleware = [];
7
-
8
- static events(e) {
9
- e.on('message', ChatHandler.prototype.handleMessage);
10
- e.on('broadcast', ChatHandler.prototype.handleBroadcast);
11
- e.on('typing', ChatHandler.prototype.handleTyping);
12
- e.on('userlist', ChatHandler.prototype.handleUserList);
13
- }
14
-
15
- /** 접속자 목록 브로드캐스트 헬퍼 */
16
- _broadcastUserList(socket) {
17
- try {
18
- const count = socket.onlineCount;
19
- const sessions = socket.sessionIds;
20
- const payload = JSON.stringify({
21
- type: 'userlist',
22
- data: { count, sessions: sessions.map(s => s.slice(0, 8)) },
23
- });
24
- socket.broadcast(payload);
25
- } catch (e) {
26
- console.error('[Chat] userlist error:', e.message);
27
- }
28
- }
29
-
30
- async onConnect(socket) {
31
- const sid = socket.sessionId;
32
- console.log(`[Chat] 연결: ${sid.slice(0,8)}`);
33
- // 전체 알림: 새 사용자 입장
34
- socket.broadcastExcluding(JSON.stringify({
35
- type: 'system',
36
- data: { text: `사용자(${sid.slice(0,8)}) 입장`, timestamp: Date.now() },
37
- }));
38
- // 접속자 목록 갱신
39
- this._broadcastUserList(socket);
40
- }
41
-
42
- /** message — 본인 제외 전체 전송 */
43
- async handleMessage(socket, data) {
44
- const sid = socket.sessionId;
45
- console.log(`[Chat] msg(${sid.slice(0,8)}): ${JSON.stringify(data)}`);
46
- const payload = JSON.stringify({
47
- type: 'message',
48
- data: { user: sid.slice(0,8), text: data.text || data, timestamp: Date.now() },
49
- });
50
- // 본인 제외 전체 전송 (본인은 UI에서 이미 sent로 표시)
51
- socket.broadcastExcluding(payload);
52
- }
53
-
54
- /** broadcast — 본인 제외 전체 전송 (공지) */
55
- async handleBroadcast(socket, data) {
56
- const sid = socket.sessionId;
57
- console.log(`[Chat] broadcast(${sid.slice(0,8)}): ${JSON.stringify(data)}`);
58
- const payload = JSON.stringify({
59
- type: 'broadcast',
60
- data: { user: sid.slice(0,8), text: data.text || data, timestamp: Date.now() },
61
- });
62
- socket.broadcastExcluding(payload);
63
- }
64
-
65
- /** typing — 본인 제외 전체 전송 */
66
- async handleTyping(socket, data) {
67
- const sid = socket.sessionId;
68
- socket.broadcastExcluding(JSON.stringify({
69
- type: 'typing',
70
- data: { user: sid.slice(0,8) },
71
- }));
72
- }
73
-
74
- /** userlist 요청 — 접속자 목록 반환 */
75
- async handleUserList(socket, data) {
76
- try {
77
- const count = socket.onlineCount;
78
- const sessions = socket.sessionIds;
79
- return {
80
- type: 'userlist',
81
- data: { count, sessions: sessions.map(s => s.slice(0, 8)) },
82
- };
83
- } catch (e) {
84
- return { type: 'userlist', data: { count: 0, sessions: [] } };
85
- }
86
- }
87
-
88
- async onDisconnect(socket, code, reason) {
89
- const sid = socket.sessionId;
90
- console.log(`[Chat] 해제: ${sid.slice(0,8)} code=${code}`);
91
- socket.broadcastExcluding(JSON.stringify({
92
- type: 'system',
93
- data: { text: `사용자(${sid.slice(0,8)}) 퇴장`, timestamp: Date.now() },
94
- }));
95
- // 접속자 목록 갱신
96
- this._broadcastUserList(socket);
97
- }
98
- }