@simplysm/service-server 13.0.68 → 13.0.70

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 (49) hide show
  1. package/README.md +48 -249
  2. package/dist/auth/jwt-manager.js +2 -2
  3. package/dist/auth/jwt-manager.js.map +1 -1
  4. package/dist/core/define-service.js +2 -2
  5. package/dist/core/define-service.js.map +1 -1
  6. package/dist/core/service-executor.js +5 -5
  7. package/dist/core/service-executor.js.map +1 -1
  8. package/dist/legacy/v1-auto-update-handler.d.ts +2 -2
  9. package/dist/legacy/v1-auto-update-handler.js +2 -2
  10. package/dist/legacy/v1-auto-update-handler.js.map +1 -1
  11. package/dist/service-server.js +11 -11
  12. package/dist/service-server.js.map +1 -1
  13. package/dist/services/auto-update-service.js +1 -1
  14. package/dist/services/auto-update-service.js.map +1 -1
  15. package/dist/services/orm-service.js +6 -6
  16. package/dist/services/orm-service.js.map +1 -1
  17. package/dist/transport/http/http-request-handler.js +1 -1
  18. package/dist/transport/http/http-request-handler.js.map +1 -1
  19. package/dist/transport/http/static-file-handler.js +3 -3
  20. package/dist/transport/http/upload-handler.js +2 -2
  21. package/dist/transport/http/upload-handler.js.map +1 -1
  22. package/dist/transport/socket/service-socket.js +2 -2
  23. package/dist/transport/socket/service-socket.js.map +1 -1
  24. package/dist/transport/socket/websocket-handler.d.ts.map +1 -1
  25. package/dist/transport/socket/websocket-handler.js +11 -9
  26. package/dist/transport/socket/websocket-handler.js.map +1 -1
  27. package/dist/utils/config-manager.js +7 -7
  28. package/dist/utils/config-manager.js.map +1 -1
  29. package/package.json +9 -9
  30. package/src/auth/jwt-manager.ts +2 -2
  31. package/src/core/define-service.ts +2 -2
  32. package/src/core/service-executor.ts +13 -13
  33. package/src/legacy/v1-auto-update-handler.ts +8 -8
  34. package/src/service-server.ts +28 -28
  35. package/src/services/auto-update-service.ts +1 -1
  36. package/src/services/orm-service.ts +6 -6
  37. package/src/transport/http/http-request-handler.ts +5 -5
  38. package/src/transport/http/static-file-handler.ts +7 -7
  39. package/src/transport/http/upload-handler.ts +3 -3
  40. package/src/transport/socket/service-socket.ts +4 -4
  41. package/src/transport/socket/websocket-handler.ts +12 -10
  42. package/src/utils/config-manager.ts +11 -11
  43. package/tests/define-service.spec.ts +85 -0
  44. package/tests/orm-service.spec.ts +83 -0
  45. package/tests/service-executor.spec.ts +114 -0
  46. package/docs/authentication.md +0 -114
  47. package/docs/built-in-services.md +0 -100
  48. package/docs/server.md +0 -374
  49. package/docs/transport.md +0 -273
@@ -13,14 +13,14 @@ const OrmService = defineService(
13
13
  const sock = () => {
14
14
  const socket = ctx.socket;
15
15
  if (socket == null) {
16
- throw new Error("WebSocket \uC5F0\uACB0\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. HTTP\uB85C\uB294 ORM \uC11C\uBE44\uC2A4\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.");
16
+ throw new Error("WebSocket connection is required. ORM service cannot be used over HTTP.");
17
17
  }
18
18
  return socket;
19
19
  };
20
20
  const getConf = async (opt) => {
21
21
  const config = (await ctx.getConfig("orm"))[opt.configName];
22
22
  if (config == null) {
23
- throw new Error(`ORM \uC124\uC815\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: ${opt.configName}`);
23
+ throw new Error(`ORM configuration not found: ${opt.configName}`);
24
24
  }
25
25
  return { ...config, ...opt.config };
26
26
  };
@@ -28,7 +28,7 @@ const OrmService = defineService(
28
28
  const myConns = socketConns.get(sock());
29
29
  const conn = myConns?.get(connId);
30
30
  if (conn == null) {
31
- throw new Error("DB\uC5D0 \uC5F0\uACB0\uB418\uC5B4\uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. (Invalid Connection ID)");
31
+ throw new Error("Not connected to database. (Invalid Connection ID)");
32
32
  }
33
33
  return conn;
34
34
  };
@@ -48,7 +48,7 @@ const OrmService = defineService(
48
48
  socketConns.set(sock(), myConns);
49
49
  sock().on("close", async () => {
50
50
  if (myConns == null) return;
51
- logger.debug("\uC18C\uCF13 \uC5F0\uACB0 \uC885\uB8CC \uAC10\uC9C0: \uC5F4\uB824\uC788\uB294 \uBAA8\uB4E0 DB \uC5F0\uACB0\uC744 \uC815\uB9AC\uD569\uB2C8\uB2E4.");
51
+ logger.debug("Socket close detected: cleaning up all open DB connections.");
52
52
  const conns = Array.from(myConns.values());
53
53
  await Promise.all(
54
54
  conns.map(async (conn) => {
@@ -57,7 +57,7 @@ const OrmService = defineService(
57
57
  await conn.close();
58
58
  }
59
59
  } catch (err) {
60
- logger.warn("DB \uC5F0\uACB0 \uAC15\uC81C \uC885\uB8CC \uC911 \uC624\uB958 \uBB34\uC2DC\uB428", err);
60
+ logger.warn("Error ignored during forced DB connection close", err);
61
61
  }
62
62
  })
63
63
  );
@@ -80,7 +80,7 @@ const OrmService = defineService(
80
80
  const conn = getConn(connId);
81
81
  await conn.close();
82
82
  } catch (err) {
83
- logger.warn("DB \uC5F0\uACB0 \uC885\uB8CC \uC911 \uC624\uB958 \uBB34\uC2DC\uB428", err);
83
+ logger.warn("Error ignored during DB connection close", err);
84
84
  }
85
85
  },
86
86
  async beginTransaction(connId, isolationLevel) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/services/orm-service.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -8,7 +8,7 @@ async function handleHttpRequest(req, reply, jwtSecret, runMethod) {
8
8
  try {
9
9
  const authHeader = req.headers.authorization;
10
10
  if (authHeader != null) {
11
- if (jwtSecret == null) throw new Error("JWT Secret\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.");
11
+ if (jwtSecret == null) throw new Error("JWT Secret is not defined.");
12
12
  const token = authHeader.split(" ")[1];
13
13
  authTokenPayload = await verifyJwt(jwtSecret, token);
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/transport/http/http-request-handler.ts"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,iBAAiB;AAG1B,eAAsB,kBACpB,KACA,OACA,WACA,WAMe;AACf,QAAM,EAAE,SAAS,OAAO,IAAI,IAAI;AAGhC,QAAM,aAAa,IAAI,QAAQ,kBAAkB;AACjD,MAAI,cAAc,KAAM,OAAM,IAAI,MAAM,+BAA+B;AAGvE,MAAI;AACJ,MAAI;AACF,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,cAAc,MAAM;AACtB,UAAI,aAAa,KAAM,OAAM,IAAI,MAAM,2EAAyB;AAEhE,YAAM,QAAQ,WAAW,MAAM,GAAG,EAAE,CAAC;AACrC,yBAAmB,MAAM,UAAqB,WAAW,KAAK;AAAA,IAChE;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,OAAO,GAAG,EAAE,KAAK;AAAA,MACrB,OAAO;AAAA,MACP,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D,CAAC;AACD;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,IAAI,WAAW,OAAO;AACxB,UAAM,QAAQ,IAAI;AAClB,QAAI,OAAO,MAAM,SAAS,UAAU;AAClC,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AACA,aAAS,UAAU,MAAM,IAAI;AAAA,EAC/B,WAAW,IAAI,WAAW,QAAQ;AAChC,QAAI,CAAC,MAAM,QAAQ,IAAI,IAAI,GAAG;AAC5B,YAAM,OAAO,GAAG,EAAE,KAAK;AAAA,QACrB,OAAO;AAAA,QACP,SAAS;AAAA,MACX,CAAC;AACD;AAAA,IACF;AAEA,aAAS,IAAI;AAAA,EACf;AAGA,MAAI,UAAU,MAAM;AAClB,UAAM,gBAAgB,MAAM,UAAU;AAAA,MACpC,aAAa;AAAA,MACb,YAAY;AAAA,MACZ;AAAA,MACA,MAAM,EAAE,YAAY,iBAAiB;AAAA,IACvC,CAAC;AAED,UAAM,KAAK,aAAa;AAAA,EAC1B;AACF;",
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,iBAAiB;AAG1B,eAAsB,kBACpB,KACA,OACA,WACA,WAMe;AACf,QAAM,EAAE,SAAS,OAAO,IAAI,IAAI;AAGhC,QAAM,aAAa,IAAI,QAAQ,kBAAkB;AACjD,MAAI,cAAc,KAAM,OAAM,IAAI,MAAM,+BAA+B;AAGvE,MAAI;AACJ,MAAI;AACF,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,cAAc,MAAM;AACtB,UAAI,aAAa,KAAM,OAAM,IAAI,MAAM,4BAA4B;AAEnE,YAAM,QAAQ,WAAW,MAAM,GAAG,EAAE,CAAC;AACrC,yBAAmB,MAAM,UAAqB,WAAW,KAAK;AAAA,IAChE;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,OAAO,GAAG,EAAE,KAAK;AAAA,MACrB,OAAO;AAAA,MACP,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D,CAAC;AACD;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,IAAI,WAAW,OAAO;AACxB,UAAM,QAAQ,IAAI;AAClB,QAAI,OAAO,MAAM,SAAS,UAAU;AAClC,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AACA,aAAS,UAAU,MAAM,IAAI;AAAA,EAC/B,WAAW,IAAI,WAAW,QAAQ;AAChC,QAAI,CAAC,MAAM,QAAQ,IAAI,IAAI,GAAG;AAC5B,YAAM,OAAO,GAAG,EAAE,KAAK;AAAA,QACrB,OAAO;AAAA,QACP,SAAS;AAAA,MACX,CAAC;AACD;AAAA,IACF;AAEA,aAAS,IAAI;AAAA,EACf;AAGA,MAAI,UAAU,MAAM;AAClB,UAAM,gBAAgB,MAAM,UAAU;AAAA,MACpC,aAAa;AAAA,MACb,YAAY;AAAA,MACZ;AAAA,MACA,MAAM,EAAE,YAAY,iBAAiB;AAAA,IACvC,CAAC;AAED,UAAM,KAAK,aAAa;AAAA,EAC1B;AACF;",
5
5
  "names": []
6
6
  }
@@ -17,7 +17,7 @@ async function handleStaticFile(req, reply, rootPath, urlPath) {
17
17
  targetFilePath = path.resolve(targetFilePath, "index.html");
18
18
  }
19
19
  if (path.basename(targetFilePath).startsWith(".")) {
20
- const errorMessage = "\uD30C\uC77C\uC744 \uC0AC\uC6A9\uD560 \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.";
20
+ const errorMessage = "You do not have permission to access this file.";
21
21
  responseErrorHtml(reply, 403, errorMessage);
22
22
  logger.warn(`[403] ${errorMessage} (${targetFilePath})`);
23
23
  return;
@@ -29,11 +29,11 @@ async function handleStaticFile(req, reply, rootPath, urlPath) {
29
29
  } catch (err) {
30
30
  const error = err;
31
31
  if (error.code === "ENOENT") {
32
- const errorMessage = "\uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.";
32
+ const errorMessage = "File not found.";
33
33
  responseErrorHtml(reply, 404, errorMessage);
34
34
  logger.warn(`[404] ${errorMessage} (${targetFilePath})`);
35
35
  } else {
36
- const errorMessage = "\uD30C\uC77C \uC804\uC1A1 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.";
36
+ const errorMessage = "An error occurred while sending the file.";
37
37
  responseErrorHtml(reply, 500, errorMessage);
38
38
  logger.error(`[500] ${errorMessage}`, err);
39
39
  }
@@ -14,10 +14,10 @@ async function handleUpload(req, reply, rootPath, jwtSecret) {
14
14
  try {
15
15
  const authHeader = req.headers.authorization;
16
16
  if (authHeader == null) {
17
- throw new Error("\uC778\uC99D \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.");
17
+ throw new Error("Authentication token is missing.");
18
18
  }
19
19
  if (jwtSecret == null) {
20
- throw new Error("JWT Secret\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.");
20
+ throw new Error("JWT Secret is not defined.");
21
21
  }
22
22
  const token = authHeader.split(" ")[1];
23
23
  await verifyJwt(jwtSecret, token);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/transport/http/upload-handler.ts"],
4
- "mappings": "AAAA,OAAO,UAAU;AACjB,SAAS,yBAAyB;AAClC,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,SAAS,QAAQ,YAAY;AAGtC,SAAS,iBAAiB;AAC1B,OAAO,aAAa;AAEpB,MAAM,SAAS,QAAQ,QAAQ,8BAA8B;AAE7D,eAAsB,aACpB,KACA,OACA,UACA,WACe;AACf,MAAI,CAAC,IAAI,YAAY,GAAG;AACtB,UAAM,OAAO,GAAG,EAAE,KAAK,4BAA4B;AACnD;AAAA,EACF;AAGA,MAAI;AACF,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,cAAc,MAAM;AACtB,YAAM,IAAI,MAAM,2DAAc;AAAA,IAChC;AACA,QAAI,aAAa,MAAM;AACrB,YAAM,IAAI,MAAM,2EAAyB;AAAA,IAC3C;AACA,UAAM,QAAQ,WAAW,MAAM,GAAG,EAAE,CAAC;AACrC,UAAM,UAAU,WAAW,KAAK;AAAA,EAClC,SAAS,KAAK;AACZ,UAAM,OAAO,GAAG,EAAE,KAAK;AAAA,MACrB,OAAO;AAAA,MACP,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D,CAAC;AACD;AAAA,EACF;AAEA,QAAM,SAAgC,CAAC;AACvC,QAAM,YAAY,KAAK,QAAQ,UAAU,OAAO,SAAS;AAEzD,QAAM,QAAQ,SAAS;AAEvB,MAAI;AAEJ,MAAI;AACF,qBAAiB,QAAQ,IAAI,MAAM,GAAG;AACpC,UAAI,KAAK,SAAS,QAAQ;AACxB,cAAM,mBAAmB,KAAK;AAC9B,cAAM,YAAY,KAAK,QAAQ,gBAAgB;AAC/C,cAAM,WAAW,GAAG,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,SAAS;AACrD,0BAAkB,KAAK,KAAK,WAAW,QAAQ;AAE/C,cAAM,SAAS,KAAK,MAAM,kBAAkB,eAAe,CAAC;AAE5D,YAAI,KAAK,KAAK,WAAW;AACvB,gBAAM,IAAI,MAAM,wBAAwB,gBAAgB,EAAE;AAAA,QAC5D;AAEA,cAAM,QAAQ,MAAM,OAAO,eAAe;AAE1C,eAAO,KAAK;AAAA,UACV,MAAM,WAAW,QAAQ;AAAA,UACzB,UAAU;AAAA,UACV,MAAM,MAAM;AAAA,QACd,CAAC;AAED,0BAAkB;AAAA,MACpB;AAAA,IACF;AAEA,UAAM,KAAK,MAAM;AAAA,EACnB,SAAS,KAAK;AACZ,WAAO,MAAM,gBAAgB,GAAG;AAEhC,QAAI,mBAAmB,MAAM;AAC3B,YAAM,KAAK,eAAe,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAC1C,aAAO,KAAK,4BAA4B,eAAe,EAAE;AAAA,IAC3D;AAEA,UAAM,KAAK,GAAG,EAAE,KAAK,eAAe;AAAA,EACtC;AACF;",
4
+ "mappings": "AAAA,OAAO,UAAU;AACjB,SAAS,yBAAyB;AAClC,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,SAAS,QAAQ,YAAY;AAGtC,SAAS,iBAAiB;AAC1B,OAAO,aAAa;AAEpB,MAAM,SAAS,QAAQ,QAAQ,8BAA8B;AAE7D,eAAsB,aACpB,KACA,OACA,UACA,WACe;AACf,MAAI,CAAC,IAAI,YAAY,GAAG;AACtB,UAAM,OAAO,GAAG,EAAE,KAAK,4BAA4B;AACnD;AAAA,EACF;AAGA,MAAI;AACF,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,cAAc,MAAM;AACtB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,QAAI,aAAa,MAAM;AACrB,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AACA,UAAM,QAAQ,WAAW,MAAM,GAAG,EAAE,CAAC;AACrC,UAAM,UAAU,WAAW,KAAK;AAAA,EAClC,SAAS,KAAK;AACZ,UAAM,OAAO,GAAG,EAAE,KAAK;AAAA,MACrB,OAAO;AAAA,MACP,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D,CAAC;AACD;AAAA,EACF;AAEA,QAAM,SAAgC,CAAC;AACvC,QAAM,YAAY,KAAK,QAAQ,UAAU,OAAO,SAAS;AAEzD,QAAM,QAAQ,SAAS;AAEvB,MAAI;AAEJ,MAAI;AACF,qBAAiB,QAAQ,IAAI,MAAM,GAAG;AACpC,UAAI,KAAK,SAAS,QAAQ;AACxB,cAAM,mBAAmB,KAAK;AAC9B,cAAM,YAAY,KAAK,QAAQ,gBAAgB;AAC/C,cAAM,WAAW,GAAG,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,SAAS;AACrD,0BAAkB,KAAK,KAAK,WAAW,QAAQ;AAE/C,cAAM,SAAS,KAAK,MAAM,kBAAkB,eAAe,CAAC;AAE5D,YAAI,KAAK,KAAK,WAAW;AACvB,gBAAM,IAAI,MAAM,wBAAwB,gBAAgB,EAAE;AAAA,QAC5D;AAEA,cAAM,QAAQ,MAAM,OAAO,eAAe;AAE1C,eAAO,KAAK;AAAA,UACV,MAAM,WAAW,QAAQ;AAAA,UACzB,UAAU;AAAA,UACV,MAAM,MAAM;AAAA,QACd,CAAC;AAED,0BAAkB;AAAA,MACpB;AAAA,IACF;AAEA,UAAM,KAAK,MAAM;AAAA,EACnB,SAAS,KAAK;AACZ,WAAO,MAAM,gBAAgB,GAAG;AAEhC,QAAI,mBAAmB,MAAM;AAC3B,YAAM,KAAK,eAAe,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAC1C,aAAO,KAAK,4BAA4B,eAAe,EAAE;AAAA,IAC3D;AAEA,UAAM,KAAK,GAAG,EAAE,KAAK,eAAe;AAAA,EACtC;AACF;",
5
5
  "names": []
6
6
  }
@@ -31,7 +31,7 @@ function createServiceSocket(socket, clientId, clientName, connReq) {
31
31
  }
32
32
  }
33
33
  function onError(err) {
34
- logger.error("WebSocket \uD074\uB77C\uC774\uC5B8\uD2B8 \uC624\uB958 \uBC1C\uC0DD", err);
34
+ logger.error("WebSocket client error", err);
35
35
  emitEvent("error", err);
36
36
  }
37
37
  function onClose(code) {
@@ -61,7 +61,7 @@ function createServiceSocket(socket, clientId, clientName, connReq) {
61
61
  emitEvent("message", { uuid: decodeResult.uuid, msg });
62
62
  }
63
63
  } catch (err) {
64
- logger.error("WebSocket \uBA54\uC2DC\uC9C0 \uCC98\uB9AC \uC911 \uC624\uB958 \uBC1C\uC0DD", err);
64
+ logger.error("Error processing WebSocket message", err);
65
65
  }
66
66
  }
67
67
  socket.on("close", onClose);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/transport/socket/service-socket.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-handler.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\transport\\socket\\websocket-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAElG;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EACvB,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EACvC,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EACtC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,CAAC,GAAG,EAAE;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,KAAK,OAAO,CAAC,OAAO,CAAC,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,gBAAgB,CAgMlB"}
1
+ {"version":3,"file":"websocket-handler.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\transport\\socket\\websocket-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAElG;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EACvB,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EACvC,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EACtC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,CAAC,GAAG,EAAE;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,KAAK,OAAO,CAAC,OAAO,CAAC,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,gBAAgB,CAkMlB"}
@@ -46,12 +46,12 @@ function createWebSocketHandler(runMethod, jwtSecret) {
46
46
  }
47
47
  return await serviceSocket.send(uuid, { name: "response" });
48
48
  } else if (message.name === "auth") {
49
- if (jwtSecret == null) throw new Error("JWT Secret\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.");
49
+ if (jwtSecret == null) throw new Error("JWT Secret is not defined.");
50
50
  const token = message.body;
51
51
  serviceSocket.authTokenPayload = await verifyJwt(jwtSecret, token);
52
52
  return await serviceSocket.send(uuid, { name: "response" });
53
53
  } else {
54
- const err = new Error("\uC694\uCCAD\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
54
+ const err = new Error("Invalid request.");
55
55
  return await serviceSocket.send(uuid, {
56
56
  name: "error",
57
57
  body: {
@@ -63,7 +63,7 @@ function createWebSocketHandler(runMethod, jwtSecret) {
63
63
  });
64
64
  }
65
65
  } catch (err) {
66
- const error = err instanceof Error ? err : new Error(typeof err === "string" ? err : "\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD558\uC600\uC2B5\uB2C8\uB2E4.");
66
+ const error = err instanceof Error ? err : new Error(typeof err === "string" ? err : "An unknown error has occurred.");
67
67
  return serviceSocket.send(uuid, {
68
68
  name: "error",
69
69
  body: {
@@ -83,26 +83,28 @@ function createWebSocketHandler(runMethod, jwtSecret) {
83
83
  if (prevServiceSocket != null) {
84
84
  prevServiceSocket.close();
85
85
  const connectionDateTimeText = prevServiceSocket.connectedAtDateTime.toFormatString("yyyy:MM:dd HH:mm:ss.fff");
86
- logger.debug(`\uD074\uB77C\uC774\uC5B8\uD2B8 \uAE30\uC874\uC5F0\uACB0 \uB04A\uC74C: ${clientId}: ${connectionDateTimeText}`);
86
+ logger.debug(
87
+ `Disconnected previous client connection: ${clientId}: ${connectionDateTimeText}`
88
+ );
87
89
  }
88
90
  socketMap.set(clientId, serviceSocket);
89
91
  serviceSocket.on("close", (code) => {
90
- logger.debug(`\uD074\uB77C\uC774\uC5B8\uD2B8 \uC5F0\uACB0 \uB04A\uAE40: (code: ${code})`);
92
+ logger.debug(`Client disconnected: (code: ${code})`);
91
93
  if (socketMap.get(clientId) !== serviceSocket) return;
92
94
  socketMap.delete(clientId);
93
95
  });
94
96
  serviceSocket.on("message", async ({ uuid, msg }) => {
95
- logger.debug("\uC694\uCCAD \uC218\uC2E0", msg);
97
+ logger.debug("Request received", msg);
96
98
  const sentSize = await processRequest(serviceSocket, uuid, msg);
97
- logger.debug(`\uC751\uB2F5 \uC804\uC1A1 (size: ${sentSize})`);
99
+ logger.debug(`Response sent (size: ${sentSize})`);
98
100
  });
99
- logger.debug("\uD074\uB77C\uC774\uC5B8\uD2B8 \uC5F0\uACB0\uB428", {
101
+ logger.debug("Client connected", {
100
102
  clientId,
101
103
  remoteAddress: connReq.socket.remoteAddress,
102
104
  socketSize: socketMap.size
103
105
  });
104
106
  } catch (err) {
105
- logger.error("\uC5F0\uACB0 \uCC98\uB9AC \uC911 \uC624\uB958 \uBC1C\uC0DD", err);
107
+ logger.error("Error handling connection", err);
106
108
  socket.terminate();
107
109
  }
108
110
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/transport/socket/websocket-handler.ts"],
4
- "mappings": "AACA,SAAS,YAAY;AAErB,SAAS,2BAA+C;AACxD,SAAS,iBAAiB;AAE1B,OAAO,aAAa;AAEpB,MAAM,SAAS,QAAQ,QAAQ,iCAAiC;AAwCzD,SAAS,uBACd,WAMA,WACkB;AAKlB,QAAM,YAAY,oBAAI,IAA2B;AAMjD,iBAAe,eACb,eACA,MACA,SACiB;AACjB,QAAI;AACF,UAAI,QAAQ,KAAK,SAAS,GAAG,KAAK,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7D,cAAM,CAAC,aAAa,UAAU,IAAI,QAAQ,KAAK,MAAM,GAAG;AAExD,cAAM,SAAS,MAAM,UAAU;AAAA,UAC7B;AAAA,UACA;AAAA,UACA,QAAQ,QAAQ;AAAA,UAChB,QAAQ;AAAA,QACV,CAAC;AAED,eAAO,MAAM,cAAc,KAAK,MAAM,EAAE,MAAM,YAAY,MAAM,OAAO,CAAC;AAAA,MAC1E,WAAW,QAAQ,SAAS,WAAW;AACrC,cAAM,EAAE,KAAK,MAAM,KAAK,IAAI,QAAQ;AACpC,sBAAc,iBAAiB,KAAK,MAAM,IAAI;AAC9C,eAAO,MAAM,cAAc,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAAA,MAC5D,WAAW,QAAQ,SAAS,cAAc;AACxC,cAAM,EAAE,IAAI,IAAI,QAAQ;AACxB,sBAAc,oBAAoB,GAAG;AACrC,eAAO,MAAM,cAAc,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAAA,MAC5D,WAAW,QAAQ,SAAS,YAAY;AACtC,cAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,cAAM,QAAQ,MAAM,KAAK,UAAU,OAAO,CAAC,EAAE;AAAA,UAAQ,CAAC,YACpD,QAAQ,kBAAkB,IAAI;AAAA,QAChC;AACA,eAAO,MAAM,cAAc,KAAK,MAAM,EAAE,MAAM,YAAY,MAAM,MAAM,CAAC;AAAA,MACzE,WAAW,QAAQ,SAAS,YAAY;AACtC,cAAM,EAAE,MAAM,KAAK,IAAI,QAAQ;AAE/B,mBAAW,WAAW,UAAU,OAAO,GAAG;AACxC,gBAAM,aAAa,QAAQ,sBAAsB,IAAI;AACrD,cAAI,WAAW,SAAS,GAAG;AACzB,kBAAM,QAAQ,KAAK,MAAM;AAAA,cACvB,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,MAAM;AAAA,gBACN;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAEA,eAAO,MAAM,cAAc,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAAA,MAC5D,WAAW,QAAQ,SAAS,QAAQ;AAClC,YAAI,aAAa,KAAM,OAAM,IAAI,MAAM,2EAAyB;AAEhE,cAAM,QAAQ,QAAQ;AACtB,sBAAc,mBAAmB,MAAM,UAAU,WAAW,KAAK;AACjE,eAAO,MAAM,cAAc,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAAA,MAC5D,OAAO;AACL,cAAM,MAAM,IAAI,MAAM,gEAAc;AAEpC,eAAO,MAAM,cAAc,KAAK,MAAM;AAAA,UACpC,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,MAAM,IAAI;AAAA,YACV,SAAS,IAAI;AAAA,YACb,OAAO,IAAI;AAAA,YACX,MAAM;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,QACJ,eAAe,QACX,MACA,IAAI,MAAM,OAAO,QAAQ,WAAW,MAAM,2FAAqB;AAErE,aAAO,cAAc,KAAK,MAAM;AAAA,QAC9B,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM,MAAM;AAAA,UACZ,SAAS,MAAM;AAAA,UACf,MAAM;AAAA,UACN,OAAO,MAAM;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAMA,SAAO;AAAA,IACL,UACE,QACA,UACA,YACA,SACM;AACN,UAAI;AACF,cAAM,gBAAgB,oBAAoB,QAAQ,UAAU,YAAY,OAAO;AAG/E,cAAM,oBAAoB,UAAU,IAAI,QAAQ;AAChD,YAAI,qBAAqB,MAAM;AAC7B,4BAAkB,MAAM;AAExB,gBAAM,yBACJ,kBAAkB,oBAAoB,eAAe,yBAAyB;AAChF,iBAAO,MAAM,yEAAkB,QAAQ,KAAK,sBAAsB,EAAE;AAAA,QACtE;AAEA,kBAAU,IAAI,UAAU,aAAa;AAErC,sBAAc,GAAG,SAAS,CAAC,SAAS;AAClC,iBAAO,MAAM,oEAAuB,IAAI,GAAG;AAE3C,cAAI,UAAU,IAAI,QAAQ,MAAM,cAAe;AAC/C,oBAAU,OAAO,QAAQ;AAAA,QAC3B,CAAC;AAED,sBAAc,GAAG,WAAW,OAAO,EAAE,MAAM,IAAI,MAAM;AACnD,iBAAO,MAAM,6BAAS,GAAG;AACzB,gBAAM,WAAW,MAAM,eAAe,eAAe,MAAM,GAAG;AAC9D,iBAAO,MAAM,oCAAgB,QAAQ,GAAG;AAAA,QAC1C,CAAC;AAED,eAAO,MAAM,qDAAa;AAAA,UACxB;AAAA,UACA,eAAe,QAAQ,OAAO;AAAA,UAC9B,YAAY,UAAU;AAAA,QACxB,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,eAAO,MAAM,8DAAiB,GAAG;AACjC,eAAO,UAAU;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,WAAiB;AACf,iBAAW,iBAAiB,UAAU,OAAO,GAAG;AAC9C,sBAAc,MAAM;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,MAAM,gBACJ,YACA,gBACe;AACf,iBAAW,iBAAiB,UAAU,OAAO,GAAG;AAC9C,cAAM,cAAc,KAAK,KAAK,IAAI,EAAE,SAAS,GAAG;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,YACJ;AAAA,YACA;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,MAAM,aACJ,UACA,cACA,MACe;AACf,YAAM,YAAY,SAAS;AAC3B,YAAM,aAAa,MAAM,KAAK,UAAU,OAAO,CAAC,EAC7C,QAAQ,CAAC,YAAY,QAAQ,kBAAkB,SAAS,CAAC,EACzD,OAAO,CAAC,SAAS,aAAa,KAAK,IAAa,CAAC,EACjD,IAAI,CAAC,SAAS,KAAK,GAAG;AAEzB,iBAAW,WAAW,UAAU,OAAO,GAAG;AACxC,cAAM,gBAAgB,QAAQ,sBAAsB,UAAU;AAC9D,YAAI,cAAc,SAAS,GAAG;AAC5B,gBAAM,QAAQ,KAAK,KAAK,IAAI,EAAE,SAAS,GAAG;AAAA,YACxC,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,MAAM;AAAA,cACN;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -5,11 +5,11 @@ import consola from "consola";
5
5
  const logger = consola.withTag("service-server:ConfigManager");
6
6
  const _cache = new LazyGcMap({
7
7
  gcInterval: 10 * 60 * 1e3,
8
- // 10분마다
8
+ // Every 10 minutes
9
9
  expireTime: 60 * 60 * 1e3,
10
- // 1시간 만료
10
+ // Expire after 1 hour
11
11
  onExpire: async (filePath) => {
12
- logger.debug(`\uC124\uC815 \uCE90\uC2DC \uB9CC\uB8CC \uBC0F \uAC10\uC2DC \uD574\uC81C: ${path.basename(filePath)}`);
12
+ logger.debug(`Config cache expired and watcher released: ${path.basename(filePath)}`);
13
13
  await closeWatcher(filePath);
14
14
  }
15
15
  });
@@ -29,19 +29,19 @@ async function getConfig(filePath) {
29
29
  if (!await fsExists(filePath)) {
30
30
  _cache.delete(filePath);
31
31
  await closeWatcher(filePath);
32
- logger.debug(`\uC124\uC815 \uD30C\uC77C \uC0AD\uC81C\uB428: ${path.basename(filePath)}`);
32
+ logger.debug(`Config file deleted: ${path.basename(filePath)}`);
33
33
  return;
34
34
  }
35
35
  try {
36
36
  const newConfig = await fsReadJson(filePath);
37
37
  _cache.set(filePath, newConfig);
38
- logger.debug(`\uC124\uC815 \uD30C\uC77C \uC2E4\uC2DC\uAC04 \uAC31\uC2E0: ${path.basename(filePath)}`);
38
+ logger.debug(`Config file live-reloaded: ${path.basename(filePath)}`);
39
39
  } catch (err) {
40
- logger.warn(`\uC124\uC815 \uD30C\uC77C \uAC31\uC2E0 \uC2E4\uD328: ${filePath}`, err);
40
+ logger.warn(`Config file reload failed: ${filePath}`, err);
41
41
  }
42
42
  });
43
43
  } catch (err) {
44
- logger.error(`\uAC10\uC2DC \uC2E4\uD328: ${filePath}`, err);
44
+ logger.error(`Watch failed: ${filePath}`, err);
45
45
  }
46
46
  }
47
47
  return config;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/config-manager.ts"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,UAAU,YAAY,iBAAiB;AAChD,OAAO,UAAU;AACjB,OAAO,aAAa;AAEpB,MAAM,SAAS,QAAQ,QAAQ,8BAA8B;AAG7D,MAAM,SAAS,IAAI,UAA2B;AAAA,EAC5C,YAAY,KAAK,KAAK;AAAA;AAAA,EACtB,YAAY,KAAK,KAAK;AAAA;AAAA,EACtB,UAAU,OAAO,aAAa;AAC5B,WAAO,MAAM,4EAAqB,KAAK,SAAS,QAAQ,CAAC,EAAE;AAC3D,UAAM,aAAa,QAAQ;AAAA,EAC7B;AACF,CAAC;AAED,MAAM,YAAY,oBAAI,IAAuB;AAE7C,eAAsB,UAAmB,UAAgD;AAEvF,MAAI,OAAO,IAAI,QAAQ,GAAG;AACxB,WAAO,OAAO,IAAI,QAAQ;AAAA,EAC5B;AAEA,MAAI,CAAE,MAAM,SAAS,QAAQ,EAAI,QAAO;AAGxC,QAAM,SAAS,MAAM,WAAW,QAAQ;AACxC,SAAO,IAAI,UAAU,MAAM;AAG3B,MAAI,CAAC,UAAU,IAAI,QAAQ,GAAG;AAC5B,QAAI;AACF,YAAM,UAAU,MAAM,UAAU,MAAM,CAAC,QAAQ,CAAC;AAChD,gBAAU,IAAI,UAAU,OAAO;AAE/B,cAAQ,SAAS,EAAE,OAAO,IAAI,GAAG,YAAY;AAC3C,YAAI,CAAE,MAAM,SAAS,QAAQ,GAAI;AAC/B,iBAAO,OAAO,QAAQ;AACtB,gBAAM,aAAa,QAAQ;AAC3B,iBAAO,MAAM,iDAAc,KAAK,SAAS,QAAQ,CAAC,EAAE;AACpD;AAAA,QACF;AAEA,YAAI;AACF,gBAAM,YAAY,MAAM,WAAW,QAAQ;AAC3C,iBAAO,IAAI,UAAU,SAAS;AAC9B,iBAAO,MAAM,8DAAiB,KAAK,SAAS,QAAQ,CAAC,EAAE;AAAA,QACzD,SAAS,KAAK;AACZ,iBAAO,KAAK,wDAAgB,QAAQ,IAAI,GAAG;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,aAAO,MAAM,8BAAU,QAAQ,IAAI,GAAG;AAAA,IACxC;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,aAAa,UAAkB;AAC5C,QAAM,UAAU,UAAU,IAAI,QAAQ;AACtC,MAAI,WAAW,MAAM;AACnB,UAAM,QAAQ,MAAM;AACpB,cAAU,OAAO,QAAQ;AAAA,EAC3B;AACF;",
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,UAAU,YAAY,iBAAiB;AAChD,OAAO,UAAU;AACjB,OAAO,aAAa;AAEpB,MAAM,SAAS,QAAQ,QAAQ,8BAA8B;AAG7D,MAAM,SAAS,IAAI,UAA2B;AAAA,EAC5C,YAAY,KAAK,KAAK;AAAA;AAAA,EACtB,YAAY,KAAK,KAAK;AAAA;AAAA,EACtB,UAAU,OAAO,aAAa;AAC5B,WAAO,MAAM,8CAA8C,KAAK,SAAS,QAAQ,CAAC,EAAE;AACpF,UAAM,aAAa,QAAQ;AAAA,EAC7B;AACF,CAAC;AAED,MAAM,YAAY,oBAAI,IAAuB;AAE7C,eAAsB,UAAmB,UAAgD;AAEvF,MAAI,OAAO,IAAI,QAAQ,GAAG;AACxB,WAAO,OAAO,IAAI,QAAQ;AAAA,EAC5B;AAEA,MAAI,CAAE,MAAM,SAAS,QAAQ,EAAI,QAAO;AAGxC,QAAM,SAAS,MAAM,WAAW,QAAQ;AACxC,SAAO,IAAI,UAAU,MAAM;AAG3B,MAAI,CAAC,UAAU,IAAI,QAAQ,GAAG;AAC5B,QAAI;AACF,YAAM,UAAU,MAAM,UAAU,MAAM,CAAC,QAAQ,CAAC;AAChD,gBAAU,IAAI,UAAU,OAAO;AAE/B,cAAQ,SAAS,EAAE,OAAO,IAAI,GAAG,YAAY;AAC3C,YAAI,CAAE,MAAM,SAAS,QAAQ,GAAI;AAC/B,iBAAO,OAAO,QAAQ;AACtB,gBAAM,aAAa,QAAQ;AAC3B,iBAAO,MAAM,wBAAwB,KAAK,SAAS,QAAQ,CAAC,EAAE;AAC9D;AAAA,QACF;AAEA,YAAI;AACF,gBAAM,YAAY,MAAM,WAAW,QAAQ;AAC3C,iBAAO,IAAI,UAAU,SAAS;AAC9B,iBAAO,MAAM,8BAA8B,KAAK,SAAS,QAAQ,CAAC,EAAE;AAAA,QACtE,SAAS,KAAK;AACZ,iBAAO,KAAK,8BAA8B,QAAQ,IAAI,GAAG;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,aAAO,MAAM,iBAAiB,QAAQ,IAAI,GAAG;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,aAAa,UAAkB;AAC5C,QAAM,UAAU,UAAU,IAAI,QAAQ;AACtC,MAAI,WAAW,MAAM;AACnB,UAAM,QAAQ,MAAM;AACpB,cAAU,OAAO,QAAQ;AAAA,EAC3B;AACF;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@simplysm/service-server",
3
- "version": "13.0.68",
4
- "description": "심플리즘 패키지 - 서비스 모듈 (server)",
5
- "author": "김석래",
3
+ "version": "13.0.70",
4
+ "description": "Simplysm package - service module (server)",
5
+ "author": "simplysm",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",
@@ -15,7 +15,7 @@
15
15
  "files": [
16
16
  "dist",
17
17
  "src",
18
- "docs"
18
+ "tests"
19
19
  ],
20
20
  "sideEffects": false,
21
21
  "dependencies": {
@@ -34,11 +34,11 @@
34
34
  "semver": "^7.7.4",
35
35
  "utf-8-validate": "^6.0.6",
36
36
  "ws": "^8.19.0",
37
- "@simplysm/core-common": "13.0.68",
38
- "@simplysm/orm-common": "13.0.68",
39
- "@simplysm/core-node": "13.0.68",
40
- "@simplysm/service-common": "13.0.68",
41
- "@simplysm/orm-node": "13.0.68"
37
+ "@simplysm/orm-common": "13.0.70",
38
+ "@simplysm/core-node": "13.0.70",
39
+ "@simplysm/core-common": "13.0.70",
40
+ "@simplysm/service-common": "13.0.70",
41
+ "@simplysm/orm-node": "13.0.70"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/semver": "^7.7.1",
@@ -25,9 +25,9 @@ export async function verifyJwt<TAuthInfo = unknown>(
25
25
  return payload as AuthTokenPayload<TAuthInfo>;
26
26
  } catch (err) {
27
27
  if (err != null && typeof err === "object" && "code" in err && err.code === "ERR_JWT_EXPIRED") {
28
- throw new Error("토큰이 만료되었습니다.");
28
+ throw new Error("Token has expired.");
29
29
  }
30
- throw new Error("유효하지 않은 토큰입니다.");
30
+ throw new Error("Invalid token.");
31
31
  }
32
32
  }
33
33
 
@@ -49,7 +49,7 @@ export function createServiceContext<TAuthInfo = unknown>(
49
49
  if (name == null) return undefined;
50
50
 
51
51
  if (name === "" || name.includes("..") || name.includes("/") || name.includes("\\")) {
52
- throw new Error(`유효하지 않은 클라이언트 명입니다: ${name}`);
52
+ throw new Error(`Invalid client name: ${name}`);
53
53
  }
54
54
 
55
55
  return name;
@@ -79,7 +79,7 @@ export function createServiceContext<TAuthInfo = unknown>(
79
79
  }
80
80
 
81
81
  const config = configParent[section];
82
- if (config == null) throw new Error(`설정 섹션을 찾을 없습니다: ${section}`);
82
+ if (config == null) throw new Error(`Configuration section not found: ${section}`);
83
83
  return config;
84
84
  },
85
85
  };
@@ -13,36 +13,36 @@ export async function runServiceMethod(
13
13
  http?: { clientName: string; authTokenPayload?: AuthTokenPayload };
14
14
  },
15
15
  ): Promise<unknown> {
16
- // 서비스 정의 찾기
16
+ // Find service definition
17
17
  const serviceDef = server.options.services.find((item) => item.name === def.serviceName);
18
18
 
19
19
  if (serviceDef == null) {
20
- throw new Error(`서비스[${def.serviceName}] 찾을 수 없습니다.`);
20
+ throw new Error(`Service [${def.serviceName}] not found.`);
21
21
  }
22
22
 
23
- // 요청 검증 (Gatekeeper)
23
+ // Request validation (gatekeeper)
24
24
  const clientName = def.socket?.clientName ?? def.http?.clientName;
25
25
  if (clientName != null) {
26
26
  if (clientName.includes("..") || clientName.includes("/") || clientName.includes("\\")) {
27
- throw new Error(`[Security] 유효하지 않은 클라이언트명입니다: ${clientName}`);
27
+ throw new Error(`[Security] Invalid client name: ${clientName}`);
28
28
  }
29
29
  }
30
30
 
31
- // Context 생성
31
+ // Create context
32
32
  const ctx = createServiceContext(server, def.socket, def.http);
33
33
 
34
- // Factory 호출하여 메서드 객체 생성
34
+ // Invoke factory to create method object
35
35
  const methods = serviceDef.factory(ctx);
36
36
 
37
- // 메서드 찾기
37
+ // Find method
38
38
  const method = (methods as Record<string, unknown>)[def.methodName];
39
39
  if (typeof method !== "function") {
40
- throw new Error(`메소드[${def.serviceName}.${def.methodName}] 찾을 수 없습니다.`);
40
+ throw new Error(`Method [${def.serviceName}.${def.methodName}] not found.`);
41
41
  }
42
42
 
43
- // 인증 검사
43
+ // Auth check
44
44
  if (server.options.auth != null) {
45
- // 메서드 레벨 auth 먼저 확인, 없으면 서비스 레벨 확인
45
+ // Check method-level auth first, fallback to service-level
46
46
  const methodPerms = getServiceAuthPermissions(method);
47
47
  const requiredPerms = methodPerms ?? serviceDef.authPermissions;
48
48
 
@@ -50,18 +50,18 @@ export async function runServiceMethod(
50
50
  const authTokenPayload = def.socket?.authTokenPayload ?? def.http?.authTokenPayload;
51
51
 
52
52
  if (authTokenPayload == null) {
53
- throw new Error("로그인이 필요합니다.");
53
+ throw new Error("Login is required.");
54
54
  }
55
55
 
56
56
  if (requiredPerms.length > 0) {
57
57
  const hasPerm = requiredPerms.some((perm) => authTokenPayload.roles.includes(perm));
58
58
  if (!hasPerm) {
59
- throw new Error("권한이 부족합니다.");
59
+ throw new Error("Insufficient permissions.");
60
60
  }
61
61
  }
62
62
  }
63
63
  }
64
64
 
65
- // 실행
65
+ // Execute
66
66
  return await method(...def.params);
67
67
  }
@@ -18,24 +18,24 @@ interface IV1Response {
18
18
  }
19
19
 
20
20
  /**
21
- * V1 레거시 클라이언트 처리 (auto-update 지원)
22
- * 다른 모든 요청은 업그레이드 유도 에러를 반환합니다.
21
+ * V1 legacy client handler (only auto-update supported).
22
+ * All other requests return an upgrade-required error.
23
23
  */
24
24
  export function handleV1Connection(
25
25
  socket: WebSocket,
26
26
  autoUpdateMethods: { getLastVersion: (platform: string) => Promise<any> },
27
27
  clientNameSetter?: (clientName: string | undefined) => void,
28
28
  ) {
29
- // 연결 완료 알림
29
+ // Notify connection established
30
30
  socket.send(JSON.stringify({ name: "connected" }));
31
31
 
32
32
  socket.on("message", (data) => {
33
33
  try {
34
34
  const msg = JSON.parse(data.toString()) as IV1Request;
35
35
 
36
- // SdAutoUpdateService.getLastVersion만 허용
36
+ // Only allow SdAutoUpdateService.getLastVersion
37
37
  if (msg.command === "SdAutoUpdateService.getLastVersion") {
38
- // legacy 컨텍스트 설정
38
+ // Set legacy context
39
39
  clientNameSetter?.(msg.clientName);
40
40
 
41
41
  const result = autoUpdateMethods.getLastVersion(msg.params[0] as string);
@@ -48,20 +48,20 @@ export function handleV1Connection(
48
48
  };
49
49
  socket.send(JSON.stringify(response));
50
50
  } else {
51
- // 다른 모든 요청은 업그레이드 유도
51
+ // All other requests prompt for upgrade
52
52
  const response: IV1Response = {
53
53
  name: "response",
54
54
  reqUuid: msg.uuid,
55
55
  state: "error",
56
56
  body: {
57
- message: " 업데이트가 필요합니다.",
57
+ message: "App upgrade is required.",
58
58
  code: "UPGRADE_REQUIRED",
59
59
  },
60
60
  };
61
61
  socket.send(JSON.stringify(response));
62
62
  }
63
63
  } catch (err) {
64
- logger.warn("V1 메시지 처리 오류", err);
64
+ logger.warn("V1 message processing error", err);
65
65
  }
66
66
  });
67
67
  }