@simplysm/service-server 13.0.100 → 14.0.4

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 (88) hide show
  1. package/README.md +79 -133
  2. package/dist/auth/auth-token-payload.js +2 -1
  3. package/dist/auth/auth-token-payload.js.map +1 -6
  4. package/dist/auth/jwt-manager.js +21 -21
  5. package/dist/auth/jwt-manager.js.map +1 -6
  6. package/dist/core/define-service.d.ts +12 -12
  7. package/dist/core/define-service.d.ts.map +1 -1
  8. package/dist/core/define-service.js +77 -63
  9. package/dist/core/define-service.js.map +1 -6
  10. package/dist/core/service-executor.d.ts.map +1 -1
  11. package/dist/core/service-executor.js +42 -32
  12. package/dist/core/service-executor.js.map +1 -6
  13. package/dist/index.d.ts +0 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +11 -2
  16. package/dist/index.js.map +1 -6
  17. package/dist/legacy/v1-auto-update-handler.d.ts +2 -2
  18. package/dist/legacy/v1-auto-update-handler.js +42 -35
  19. package/dist/legacy/v1-auto-update-handler.js.map +1 -6
  20. package/dist/protocol/protocol-wrapper.d.ts +9 -9
  21. package/dist/protocol/protocol-wrapper.js +64 -46
  22. package/dist/protocol/protocol-wrapper.js.map +1 -6
  23. package/dist/service-server.d.ts +2 -1
  24. package/dist/service-server.d.ts.map +1 -1
  25. package/dist/service-server.js +183 -165
  26. package/dist/service-server.js.map +1 -6
  27. package/dist/services/auto-update-service.js +35 -34
  28. package/dist/services/auto-update-service.js.map +1 -6
  29. package/dist/services/orm-service.js +114 -120
  30. package/dist/services/orm-service.js.map +1 -6
  31. package/dist/transport/http/http-request-handler.d.ts.map +1 -1
  32. package/dist/transport/http/http-request-handler.js +58 -46
  33. package/dist/transport/http/http-request-handler.js.map +1 -6
  34. package/dist/transport/http/static-file-handler.js +42 -39
  35. package/dist/transport/http/static-file-handler.js.map +1 -6
  36. package/dist/transport/http/upload-handler.d.ts.map +1 -1
  37. package/dist/transport/http/upload-handler.js +60 -55
  38. package/dist/transport/http/upload-handler.js.map +1 -6
  39. package/dist/transport/socket/service-socket.d.ts +13 -13
  40. package/dist/transport/socket/service-socket.js +132 -108
  41. package/dist/transport/socket/service-socket.js.map +1 -6
  42. package/dist/transport/socket/websocket-handler.d.ts +9 -13
  43. package/dist/transport/socket/websocket-handler.d.ts.map +1 -1
  44. package/dist/transport/socket/websocket-handler.js +148 -139
  45. package/dist/transport/socket/websocket-handler.js.map +1 -6
  46. package/dist/types/server-options.d.ts +1 -1
  47. package/dist/types/server-options.d.ts.map +1 -1
  48. package/dist/types/server-options.js +2 -1
  49. package/dist/types/server-options.js.map +1 -6
  50. package/dist/utils/config-manager.js +48 -46
  51. package/dist/utils/config-manager.js.map +1 -6
  52. package/dist/workers/service-protocol.worker.js +8 -11
  53. package/dist/workers/service-protocol.worker.js.map +1 -6
  54. package/docs/auth.md +28 -16
  55. package/docs/core.md +113 -54
  56. package/docs/legacy.md +21 -0
  57. package/docs/main.md +81 -0
  58. package/docs/protocol.md +31 -0
  59. package/docs/services.md +49 -44
  60. package/docs/transport.md +81 -76
  61. package/docs/types.md +31 -0
  62. package/docs/utilities.md +27 -0
  63. package/package.json +12 -13
  64. package/src/auth/jwt-manager.ts +2 -2
  65. package/src/core/define-service.ts +19 -19
  66. package/src/core/service-executor.ts +23 -17
  67. package/src/index.ts +10 -12
  68. package/src/legacy/v1-auto-update-handler.ts +10 -10
  69. package/src/protocol/protocol-wrapper.ts +16 -16
  70. package/src/service-server.ts +51 -43
  71. package/src/services/auto-update-service.ts +1 -1
  72. package/src/services/orm-service.ts +7 -7
  73. package/src/transport/http/http-request-handler.ts +16 -10
  74. package/src/transport/http/static-file-handler.ts +8 -8
  75. package/src/transport/http/upload-handler.ts +16 -9
  76. package/src/transport/socket/service-socket.ts +22 -22
  77. package/src/transport/socket/websocket-handler.ts +50 -70
  78. package/src/types/server-options.ts +1 -1
  79. package/src/utils/config-manager.ts +11 -11
  80. package/dist/services/smtp-client-service.d.ts +0 -8
  81. package/dist/services/smtp-client-service.d.ts.map +0 -1
  82. package/dist/services/smtp-client-service.js +0 -46
  83. package/dist/services/smtp-client-service.js.map +0 -6
  84. package/docs/server.md +0 -126
  85. package/src/services/smtp-client-service.ts +0 -59
  86. package/tests/define-service.spec.ts +0 -66
  87. package/tests/orm-service.spec.ts +0 -83
  88. package/tests/service-executor.spec.ts +0 -114
@@ -17,172 +17,190 @@ import { handleV1Connection } from "./legacy/v1-auto-update-handler.js";
17
17
  import { createServiceContext } from "./core/define-service.js";
18
18
  import consola from "consola";
19
19
  const logger = consola.withTag("service-server:ServiceServer");
20
- class ServiceServer extends EventEmitter {
21
- constructor(options) {
22
- super();
23
- this.options = options;
24
- const httpsConf = options.ssl ? { pfx: Buffer.from(options.ssl.pfxBytes), passphrase: options.ssl.passphrase } : null;
25
- this.fastify = fastify({ https: httpsConf });
26
- this._wsHandler = createWebSocketHandler(
27
- (def) => executeServiceMethod(this, def),
28
- options.auth?.jwtSecret
29
- );
30
- }
31
- isOpen = false;
32
- _wsHandler;
33
- fastify;
34
- async listen() {
35
- logger.info(`Server starting... ${env.VER ?? ""}`);
36
- await this.fastify.register(fastifyWebsocket);
37
- await this.fastify.register(fastifyHelmet, {
38
- global: true,
39
- contentSecurityPolicy: {
40
- directives: {
41
- ...fastifyHelmet.contentSecurityPolicy.getDefaultDirectives(),
42
- "default-src": ["'self'", "data:", "blob:", "*"],
43
- "script-src-attr": ["'unsafe-inline'"],
44
- "script-src": ["'self'", "'unsafe-inline'", "data:", "blob:", "*"],
45
- ...this.options.ssl != null ? {} : {
46
- "upgrade-insecure-requests": null
47
- }
20
+ export class ServiceServer extends EventEmitter {
21
+ options;
22
+ isOpen = false;
23
+ _wsHandler;
24
+ _jwtSecret;
25
+ _shutdownRegistered = false;
26
+ fastify;
27
+ constructor(options) {
28
+ super();
29
+ this.options = options;
30
+ this._jwtSecret = options.auth != null && options.auth !== false ? options.auth.jwtSecret : undefined;
31
+ // SSL 설정 (동기)
32
+ // 참고: Fastify HTTPS는 Buffer 타입이 필요함 (Uint8Array를 직접 사용할 수 없음)
33
+ const httpsConf = options.ssl
34
+ ? { pfx: Buffer.from(options.ssl.pfxBytes), passphrase: options.ssl.passphrase }
35
+ : null;
36
+ this.fastify = fastify({ https: httpsConf });
37
+ this._wsHandler = createWebSocketHandler((def) => executeServiceMethod(this, def), this._jwtSecret);
38
+ }
39
+ async listen() {
40
+ logger.info(`서버 시작 중... ${env.VER ?? ""}`);
41
+ // auth 설정 검증: auth 미설정(undefined)인데 auth 요구 서비스가 있으면 에러
42
+ if (this.options.auth === undefined) {
43
+ const authRequiredService = this.options.services.find((s) => s.authPermissions != null);
44
+ if (authRequiredService != null) {
45
+ throw new Error(`auth 설정이 필요합니다: 서비스 [${authRequiredService.name}]에 auth가 설정되어 있습니다.`);
46
+ }
48
47
  }
49
- },
50
- hsts: this.options.ssl != null,
51
- crossOriginOpenerPolicy: this.options.ssl != null,
52
- originAgentCluster: false
53
- });
54
- await this.fastify.register(fastifyMultipart);
55
- await this.fastify.register(fastifyStatic, {
56
- root: path.resolve(this.options.rootPath, "www"),
57
- wildcard: false,
58
- serve: false
59
- });
60
- await this.fastify.register(fastifyCors, {
61
- origin: (_origin, cb) => {
62
- cb(null, true);
63
- },
64
- allowedHeaders: ["Content-Type", "Authorization", "x-sd-client-name"],
65
- exposedHeaders: ["Content-Disposition", "Content-Length"]
66
- });
67
- this.fastify.addContentTypeParser(
68
- "application/json",
69
- { parseAs: "string" },
70
- (req, body, done) => {
71
- try {
72
- const parsed = json.parse(body);
73
- done(null, parsed);
74
- } catch (err) {
75
- const error = err;
76
- error.statusCode = 400;
77
- done(error, void 0);
78
- }
79
- }
80
- );
81
- this.fastify.setSerializerCompiler(() => (data) => json.stringify(data));
82
- this.fastify.all("/api/:service/:method", async (req, reply) => {
83
- await handleHttpRequest(
84
- req,
85
- reply,
86
- this.options.auth?.jwtSecret,
87
- (def) => executeServiceMethod(this, def)
88
- );
89
- });
90
- this.fastify.all("/upload", async (req, reply) => {
91
- await handleUpload(req, reply, this.options.rootPath, this.options.auth?.jwtSecret);
92
- });
93
- const onWebSocketConnected = (socket, req) => {
94
- const { ver, clientId, clientName } = req.query;
95
- if (ver === "2") {
96
- if (clientId == null || clientName == null) {
97
- socket.close(1008, "Missing Client ID/NAME");
98
- return;
99
- }
100
- this._wsHandler.addSocket(socket, clientId, clientName, req);
101
- } else {
102
- const autoUpdateDef = this.options.services.find((s) => s.name === "AutoUpdate");
103
- if (autoUpdateDef == null) {
104
- socket.close(1008, "AutoUpdate service not configured");
105
- return;
106
- }
107
- const legacyCtx = createServiceContext(this, void 0, void 0, {});
108
- const autoUpdateMethods = autoUpdateDef.factory(legacyCtx);
109
- handleV1Connection(socket, autoUpdateMethods, (name) => {
110
- legacyCtx.legacy = { clientName: name };
48
+ // WebSocket 플러그인
49
+ await this.fastify.register(fastifyWebsocket);
50
+ // 보안 플러그인
51
+ await this.fastify.register(fastifyHelmet, {
52
+ global: true,
53
+ contentSecurityPolicy: {
54
+ directives: {
55
+ ...fastifyHelmet.contentSecurityPolicy.getDefaultDirectives(),
56
+ "default-src": ["'self'", "data:", "blob:", "*"],
57
+ "script-src-attr": ["'unsafe-inline'"],
58
+ "script-src": ["'self'", "'unsafe-inline'", "data:", "blob:", "*"],
59
+ ...(this.options.ssl != null
60
+ ? {}
61
+ : {
62
+ "upgrade-insecure-requests": null,
63
+ }),
64
+ },
65
+ },
66
+ hsts: this.options.ssl != null,
67
+ crossOriginOpenerPolicy: this.options.ssl != null,
68
+ originAgentCluster: false,
111
69
  });
112
- }
113
- };
114
- this.fastify.get("/", { websocket: true }, onWebSocketConnected.bind(this));
115
- this.fastify.get("/ws", { websocket: true }, onWebSocketConnected.bind(this));
116
- this.fastify.route({
117
- method: ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD"],
118
- url: "/*",
119
- handler: async (req, reply) => {
120
- const urlObj = new URL(req.raw.url, "http://localhost");
121
- const urlPath = decodeURI(urlObj.pathname.slice(1));
122
- await handleStaticFile(req, reply, this.options.rootPath, urlPath);
123
- }
124
- });
125
- this.fastify.server.on("error", (err) => {
126
- logger.error("HTTP server error", err);
127
- });
128
- await this.fastify.listen({ port: this.options.port, host: "0.0.0.0" });
129
- this._registerGracefulShutdown();
130
- this.isOpen = true;
131
- logger.info(`Server started (port: ${this.options.port})`);
132
- this.emit("ready");
133
- }
134
- async close() {
135
- this._wsHandler.closeAll();
136
- await this.fastify.close();
137
- this.isOpen = false;
138
- logger.debug("Server closed");
139
- this.emit("close");
140
- }
141
- async broadcastReload(clientName, changedFileSet) {
142
- logger.debug("Broadcasting RELOAD to all server clients");
143
- await this._wsHandler.broadcastReload(clientName, changedFileSet);
144
- }
145
- async emitEvent(eventDef, infoSelector, data) {
146
- await this._wsHandler.emit(eventDef, infoSelector, data);
147
- }
148
- async signAuthToken(payload) {
149
- const jwtSecret = this.options.auth?.jwtSecret;
150
- if (jwtSecret == null) throw new Error("JWT Secret is not defined.");
151
- return signJwt(jwtSecret, payload);
152
- }
153
- async verifyAuthToken(token) {
154
- const jwtSecret = this.options.auth?.jwtSecret;
155
- if (jwtSecret == null) throw new Error("JWT Secret is not defined.");
156
- return verifyJwt(jwtSecret, token);
157
- }
158
- _registerGracefulShutdown() {
159
- const shutdownHandler = async (signal) => {
160
- logger.info(`${signal} signal received. Starting server shutdown...`);
161
- const forceExitTimer = setTimeout(() => {
162
- logger.error("Server shutdown timed out (10s). Forcing exit.");
163
- process.exit(1);
164
- }, 1e4);
165
- try {
166
- if (this.isOpen) {
167
- await this.close();
168
- }
169
- logger.info("Server shut down gracefully.");
170
- clearTimeout(forceExitTimer);
171
- process.exit(0);
172
- } catch (err) {
173
- logger.error("Error during server shutdown", err);
174
- process.exit(1);
175
- }
176
- };
177
- process.on("SIGINT", () => shutdownHandler("SIGINT"));
178
- process.on("SIGTERM", () => shutdownHandler("SIGTERM"));
179
- }
70
+ // 업로드 플러그인
71
+ await this.fastify.register(fastifyMultipart);
72
+ // @fastify/static 등록
73
+ await this.fastify.register(fastifyStatic, {
74
+ root: path.resolve(this.options.rootPath, "www"),
75
+ wildcard: false,
76
+ serve: false,
77
+ });
78
+ // CORS 설정
79
+ await this.fastify.register(fastifyCors, {
80
+ origin: (_origin, cb) => {
81
+ cb(null, true);
82
+ },
83
+ allowedHeaders: ["Content-Type", "Authorization", "x-sd-client-name"],
84
+ exposedHeaders: ["Content-Disposition", "Content-Length"],
85
+ });
86
+ // JSON 파서
87
+ this.fastify.addContentTypeParser("application/json", { parseAs: "string" }, (req, body, done) => {
88
+ try {
89
+ const parsed = json.parse(body);
90
+ done(null, parsed);
91
+ }
92
+ catch (err) {
93
+ const error = err;
94
+ error.statusCode = 400;
95
+ done(error, undefined);
96
+ }
97
+ });
98
+ // JSON 직렬화기
99
+ this.fastify.setSerializerCompiler(() => (data) => json.stringify(data));
100
+ // API 라우트
101
+ this.fastify.all("/api/:service/:method", async (req, reply) => {
102
+ await handleHttpRequest(req, reply, this._jwtSecret, (def) => executeServiceMethod(this, def));
103
+ });
104
+ // 업로드 라우트
105
+ this.fastify.all("/upload", async (req, reply) => {
106
+ await handleUpload(req, reply, this.options.rootPath, this._jwtSecret);
107
+ });
108
+ // WebSocket 라우트
109
+ const onWebSocketConnected = (socket, req) => {
110
+ const { ver, clientId, clientName } = req.query;
111
+ if (ver === "2") {
112
+ if (clientId == null || clientName == null) {
113
+ socket.close(1008, "클라이언트 ID/NAME이 누락되었습니다");
114
+ return;
115
+ }
116
+ this._wsHandler.addSocket(socket, clientId, clientName, req);
117
+ }
118
+ else {
119
+ // V1 레거시 지원 (자동 업데이트 전용)
120
+ const autoUpdateDef = this.options.services.find((s) => s.name === "AutoUpdate");
121
+ if (autoUpdateDef == null) {
122
+ socket.close(1008, "AutoUpdate 서비스가 설정되지 않았습니다");
123
+ return;
124
+ }
125
+ const legacyCtx = createServiceContext(this, undefined, undefined, {});
126
+ const autoUpdateMethods = autoUpdateDef.factory(legacyCtx);
127
+ handleV1Connection(socket, autoUpdateMethods, (name) => {
128
+ legacyCtx.legacy = { clientName: name };
129
+ });
130
+ }
131
+ };
132
+ this.fastify.get("/", { websocket: true }, onWebSocketConnected.bind(this));
133
+ this.fastify.get("/ws", { websocket: true }, onWebSocketConnected.bind(this));
134
+ // 정적 파일 와일드카드 핸들러
135
+ this.fastify.route({
136
+ method: ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD"],
137
+ url: "/*",
138
+ handler: async (req, reply) => {
139
+ const urlObj = new URL(req.raw.url, "http://localhost");
140
+ const urlPath = decodeURI(urlObj.pathname.slice(1));
141
+ await handleStaticFile(req, reply, this.options.rootPath, urlPath);
142
+ },
143
+ });
144
+ // HTTP 서버 수준 에러 핸들링
145
+ this.fastify.server.on("error", (err) => {
146
+ logger.error("HTTP 서버 에러", err);
147
+ });
148
+ // 리슨
149
+ await this.fastify.listen({ port: this.options.port, host: "0.0.0.0" });
150
+ // 정상 종료 핸들러 등록
151
+ this._registerGracefulShutdown();
152
+ this.isOpen = true;
153
+ logger.info(`서버 시작됨 (포트: ${this.options.port})`);
154
+ this.emit("ready");
155
+ }
156
+ async close() {
157
+ this._wsHandler.closeAll();
158
+ await this.fastify.close();
159
+ this.isOpen = false;
160
+ logger.debug("서버 종료됨");
161
+ this.emit("close");
162
+ }
163
+ async emitEvent(eventDef, infoSelector, data) {
164
+ await this._wsHandler.emit(eventDef, infoSelector, data);
165
+ }
166
+ async signAuthToken(payload) {
167
+ if (this._jwtSecret == null)
168
+ throw new Error("JWT Secret이 정의되지 않았습니다.");
169
+ return signJwt(this._jwtSecret, payload);
170
+ }
171
+ async verifyAuthToken(token) {
172
+ if (this._jwtSecret == null)
173
+ throw new Error("JWT Secret이 정의되지 않았습니다.");
174
+ return verifyJwt(this._jwtSecret, token);
175
+ }
176
+ _registerGracefulShutdown() {
177
+ if (this._shutdownRegistered)
178
+ return;
179
+ this._shutdownRegistered = true;
180
+ const shutdownHandler = async (signal) => {
181
+ logger.info(`${signal} 시그널 수신됨. 서버 종료를 시작합니다...`);
182
+ const forceExitTimer = setTimeout(() => {
183
+ logger.error("서버 종료 시간 초과 (10초). 강제 종료합니다.");
184
+ process.exit(1);
185
+ }, 10000);
186
+ try {
187
+ if (this.isOpen) {
188
+ await this.close();
189
+ }
190
+ logger.info("서버가 정상적으로 종료되었습니다.");
191
+ clearTimeout(forceExitTimer);
192
+ process.exit(0);
193
+ }
194
+ catch (err) {
195
+ logger.error("서버 종료 중 에러 발생", err);
196
+ process.exit(1);
197
+ }
198
+ };
199
+ process.on("SIGINT", () => shutdownHandler("SIGINT"));
200
+ process.on("SIGTERM", () => shutdownHandler("SIGTERM"));
201
+ }
180
202
  }
181
- function createServiceServer(options) {
182
- return new ServiceServer(options);
203
+ export function createServiceServer(options) {
204
+ return new ServiceServer(options);
183
205
  }
184
- export {
185
- ServiceServer,
186
- createServiceServer
187
- };
188
- //# sourceMappingURL=service-server.js.map
206
+ //# sourceMappingURL=service-server.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/service-server.ts"],
4
- "mappings": "AACA,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AACrC,SAAS,MAAM,cAAc,WAAW;AAExC,OAAO,aAAa;AACpB,OAAO,sBAAsB;AAC7B,OAAO,mBAAmB;AAC1B,OAAO,sBAAsB;AAC7B,OAAO,mBAAmB;AAC1B,OAAO,iBAAiB;AACxB,OAAO,UAAU;AACjB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AAEvC,SAAS,SAAS,iBAAiB;AAGnC,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AACrC,OAAO,aAAa;AAEpB,MAAM,SAAS,QAAQ,QAAQ,8BAA8B;AAEtD,MAAM,sBAA2C,aAGrD;AAAA,EAOD,YAAqB,SAA+B;AAClD,UAAM;AADa;AAKnB,UAAM,YAAY,QAAQ,MACtB,EAAE,KAAK,OAAO,KAAK,QAAQ,IAAI,QAAQ,GAAG,YAAY,QAAQ,IAAI,WAAW,IAC7E;AAEJ,SAAK,UAAU,QAAQ,EAAE,OAAO,UAAU,CAAC;AAE3C,SAAK,aAAa;AAAA,MAChB,CAAC,QAAQ,qBAAqB,MAAM,GAAG;AAAA,MACvC,QAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EArBA,SAAS;AAAA,EAEQ;AAAA,EAER;AAAA,EAmBT,MAAM,SAAwB;AAC5B,WAAO,KAAK,sBAAsB,IAAI,OAAO,EAAE,EAAE;AAGjD,UAAM,KAAK,QAAQ,SAAS,gBAAgB;AAG5C,UAAM,KAAK,QAAQ,SAAS,eAAe;AAAA,MACzC,QAAQ;AAAA,MACR,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,GAAG,cAAc,sBAAsB,qBAAqB;AAAA,UAC5D,eAAe,CAAC,UAAU,SAAS,SAAS,GAAG;AAAA,UAC/C,mBAAmB,CAAC,iBAAiB;AAAA,UACrC,cAAc,CAAC,UAAU,mBAAmB,SAAS,SAAS,GAAG;AAAA,UACjE,GAAI,KAAK,QAAQ,OAAO,OACpB,CAAC,IACD;AAAA,YACE,6BAA6B;AAAA,UAC/B;AAAA,QACN;AAAA,MACF;AAAA,MACA,MAAM,KAAK,QAAQ,OAAO;AAAA,MAC1B,yBAAyB,KAAK,QAAQ,OAAO;AAAA,MAC7C,oBAAoB;AAAA,IACtB,CAAC;AAGD,UAAM,KAAK,QAAQ,SAAS,gBAAgB;AAG5C,UAAM,KAAK,QAAQ,SAAS,eAAe;AAAA,MACzC,MAAM,KAAK,QAAQ,KAAK,QAAQ,UAAU,KAAK;AAAA,MAC/C,UAAU;AAAA,MACV,OAAO;AAAA,IACT,CAAC;AAGD,UAAM,KAAK,QAAQ,SAAS,aAAa;AAAA,MACvC,QAAQ,CAAC,SAAS,OAAO;AACvB,WAAG,MAAM,IAAI;AAAA,MACf;AAAA,MACA,gBAAgB,CAAC,gBAAgB,iBAAiB,kBAAkB;AAAA,MACpE,gBAAgB,CAAC,uBAAuB,gBAAgB;AAAA,IAC1D,CAAC;AAGD,SAAK,QAAQ;AAAA,MACX;AAAA,MACA,EAAE,SAAS,SAAS;AAAA,MACpB,CAAC,KAAK,MAAM,SAAS;AACnB,YAAI;AACF,gBAAM,SAAS,KAAK,MAAM,IAAc;AACxC,eAAK,MAAM,MAAM;AAAA,QACnB,SAAS,KAAc;AACrB,gBAAM,QAAQ;AACd,gBAAM,aAAa;AACnB,eAAK,OAAO,MAAS;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAGA,SAAK,QAAQ,sBAAsB,MAAM,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC;AAGvE,SAAK,QAAQ,IAAI,yBAAyB,OAAO,KAAK,UAAU;AAC9D,YAAM;AAAA,QAAkB;AAAA,QAAK;AAAA,QAAO,KAAK,QAAQ,MAAM;AAAA,QAAW,CAAC,QACjE,qBAAqB,MAAM,GAAG;AAAA,MAChC;AAAA,IACF,CAAC;AAGD,SAAK,QAAQ,IAAI,WAAW,OAAO,KAAK,UAAU;AAChD,YAAM,aAAa,KAAK,OAAO,KAAK,QAAQ,UAAU,KAAK,QAAQ,MAAM,SAAS;AAAA,IACpF,CAAC;AAGD,UAAM,uBAAuB,CAAC,QAAmB,QAAwB;AACvE,YAAM,EAAE,KAAK,UAAU,WAAW,IAAI,IAAI;AAM1C,UAAI,QAAQ,KAAK;AACf,YAAI,YAAY,QAAQ,cAAc,MAAM;AAC1C,iBAAO,MAAM,MAAM,wBAAwB;AAC3C;AAAA,QACF;AACA,aAAK,WAAW,UAAU,QAAQ,UAAU,YAAY,GAAG;AAAA,MAC7D,OAAO;AAEL,cAAM,gBAAgB,KAAK,QAAQ,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,YAAY;AAC/E,YAAI,iBAAiB,MAAM;AACzB,iBAAO,MAAM,MAAM,mCAAmC;AACtD;AAAA,QACF;AAEA,cAAM,YAAY,qBAAqB,MAAM,QAAW,QAAW,CAAC,CAAC;AACrE,cAAM,oBAAoB,cAAc,QAAQ,SAAS;AAIzD,2BAAmB,QAAQ,mBAAmB,CAAC,SAAS;AACtD,oBAAU,SAAS,EAAE,YAAY,KAAK;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF;AACA,SAAK,QAAQ,IAAI,KAAK,EAAE,WAAW,KAAK,GAAG,qBAAqB,KAAK,IAAI,CAAC;AAC1E,SAAK,QAAQ,IAAI,OAAO,EAAE,WAAW,KAAK,GAAG,qBAAqB,KAAK,IAAI,CAAC;AAG5E,SAAK,QAAQ,MAAM;AAAA,MACjB,QAAQ,CAAC,OAAO,QAAQ,OAAO,UAAU,SAAS,MAAM;AAAA,MACxD,KAAK;AAAA,MACL,SAAS,OAAO,KAAK,UAAU;AAC7B,cAAM,SAAS,IAAI,IAAI,IAAI,IAAI,KAAM,kBAAkB;AACvD,cAAM,UAAU,UAAU,OAAO,SAAS,MAAM,CAAC,CAAC;AAElD,cAAM,iBAAiB,KAAK,OAAO,KAAK,QAAQ,UAAU,OAAO;AAAA,MACnE;AAAA,IACF,CAAC;AAGD,SAAK,QAAQ,OAAO,GAAG,SAAS,CAAC,QAAQ;AACvC,aAAO,MAAM,qBAAqB,GAAG;AAAA,IACvC,CAAC;AAGD,UAAM,KAAK,QAAQ,OAAO,EAAE,MAAM,KAAK,QAAQ,MAAM,MAAM,UAAU,CAAC;AAGtE,SAAK,0BAA0B;AAE/B,SAAK,SAAS;AACd,WAAO,KAAK,yBAAyB,KAAK,QAAQ,IAAI,GAAG;AACzD,SAAK,KAAK,OAAO;AAAA,EACnB;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,WAAW,SAAS;AACzB,UAAM,KAAK,QAAQ,MAAM;AAEzB,SAAK,SAAS;AACd,WAAO,MAAM,eAAe;AAC5B,SAAK,KAAK,OAAO;AAAA,EACnB;AAAA,EAEA,MAAM,gBAAgB,YAAgC,gBAA6B;AACjF,WAAO,MAAM,2CAA2C;AACxD,UAAM,KAAK,WAAW,gBAAgB,YAAY,cAAc;AAAA,EAClE;AAAA,EAEA,MAAM,UACJ,UACA,cACA,MACA;AACA,UAAM,KAAK,WAAW,KAAK,UAAU,cAAc,IAAI;AAAA,EACzD;AAAA,EAEA,MAAM,cAAc,SAAsC;AACxD,UAAM,YAAY,KAAK,QAAQ,MAAM;AACrC,QAAI,aAAa,KAAM,OAAM,IAAI,MAAM,4BAA4B;AAEnE,WAAO,QAAQ,WAAW,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,gBAAgB,OAAqD;AACzE,UAAM,YAAY,KAAK,QAAQ,MAAM;AACrC,QAAI,aAAa,KAAM,OAAM,IAAI,MAAM,4BAA4B;AAEnE,WAAO,UAAU,WAAW,KAAK;AAAA,EACnC;AAAA,EAEQ,4BAA4B;AAClC,UAAM,kBAAkB,OAAO,WAAmB;AAChD,aAAO,KAAK,GAAG,MAAM,+CAA+C;AAEpE,YAAM,iBAAiB,WAAW,MAAM;AACtC,eAAO,MAAM,gDAAgD;AAC7D,gBAAQ,KAAK,CAAC;AAAA,MAChB,GAAG,GAAK;AAER,UAAI;AACF,YAAI,KAAK,QAAQ;AACf,gBAAM,KAAK,MAAM;AAAA,QACnB;AACA,eAAO,KAAK,8BAA8B;AAC1C,qBAAa,cAAc;AAC3B,gBAAQ,KAAK,CAAC;AAAA,MAChB,SAAS,KAAK;AACZ,eAAO,MAAM,gCAAgC,GAAG;AAChD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,GAAG,UAAU,MAAM,gBAAgB,QAAQ,CAAC;AACpD,YAAQ,GAAG,WAAW,MAAM,gBAAgB,SAAS,CAAC;AAAA,EACxD;AACF;AAEO,SAAS,oBACd,SAC0B;AAC1B,SAAO,IAAI,cAAyB,OAAO;AAC7C;",
5
- "names": []
6
- }
1
+ {"version":3,"file":"service-server.js","sourceRoot":"","sources":["..\\src\\service-server.ts"],"names":[],"mappings":"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"}
@@ -2,38 +2,39 @@ import path from "path";
2
2
  import semver from "semver";
3
3
  import { fsx, pathx } from "@simplysm/core-node";
4
4
  import { defineService } from "../core/define-service.js";
5
- const AutoUpdateService = defineService("AutoUpdate", (ctx) => ({
6
- async getLastVersion(platform) {
7
- const clientPath = ctx.clientPath;
8
- if (clientPath == null) throw new Error("Client path not found.");
9
- if (!await fsx.exists(path.resolve(clientPath, platform, "updates"))) return void 0;
10
- const updates = await fsx.readdir(path.resolve(clientPath, platform, "updates"));
11
- const versions = updates.map((item) => ({
12
- fileName: item,
13
- version: path.basename(item, path.extname(item)),
14
- extName: path.extname(item)
15
- })).filter((item) => {
16
- if (platform === "android") {
17
- return item.extName === ".apk" && /^[0-9.]*$/.test(item.version);
18
- } else {
19
- return item.extName === ".exe" && /^[0-9.]*$/.test(item.version);
20
- }
21
- });
22
- const version = semver.maxSatisfying(
23
- versions.map((item) => item.version),
24
- "*"
25
- );
26
- if (version == null) return void 0;
27
- const versionItem = versions.find((item) => item.version === version);
28
- if (versionItem == null) return void 0;
29
- const downloadPath = "/" + pathx.posix(ctx.clientName ?? "", platform, "updates", versionItem.fileName);
30
- return {
31
- version: version.toString(),
32
- downloadPath
33
- };
34
- }
5
+ export const AutoUpdateService = defineService("AutoUpdate", (ctx) => ({
6
+ async getLastVersion(platform) {
7
+ const clientPath = ctx.clientPath;
8
+ if (clientPath == null)
9
+ throw new Error("클라이언트 경로를 찾을 수 없습니다.");
10
+ if (!(await fsx.exists(path.resolve(clientPath, platform, "updates"))))
11
+ return undefined;
12
+ const updates = await fsx.readdir(path.resolve(clientPath, platform, "updates"));
13
+ const versions = updates
14
+ .map((item) => ({
15
+ fileName: item,
16
+ version: path.basename(item, path.extname(item)),
17
+ extName: path.extname(item),
18
+ }))
19
+ .filter((item) => {
20
+ if (platform === "android") {
21
+ return item.extName === ".apk" && /^[0-9.]*$/.test(item.version);
22
+ }
23
+ else {
24
+ return item.extName === ".exe" && /^[0-9.]*$/.test(item.version);
25
+ }
26
+ });
27
+ const version = semver.maxSatisfying(versions.map((item) => item.version), "*");
28
+ if (version == null)
29
+ return undefined;
30
+ const versionItem = versions.find((item) => item.version === version);
31
+ if (versionItem == null)
32
+ return undefined;
33
+ const downloadPath = "/" + pathx.posix(ctx.clientName ?? "", platform, "updates", versionItem.fileName);
34
+ return {
35
+ version: version.toString(),
36
+ downloadPath,
37
+ };
38
+ },
35
39
  }));
36
- export {
37
- AutoUpdateService
38
- };
39
- //# sourceMappingURL=auto-update-service.js.map
40
+ //# sourceMappingURL=auto-update-service.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/services/auto-update-service.ts"],
4
- "mappings": "AAAA,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,SAAS,KAAK,aAAa;AAC3B,SAAS,qBAA0C;AAE5C,MAAM,oBAAoB,cAAc,cAAc,CAAC,SAAS;AAAA,EACrE,MAAM,eAAe,UAMnB;AACA,UAAM,aAAa,IAAI;AACvB,QAAI,cAAc,KAAM,OAAM,IAAI,MAAM,wBAAwB;AAEhE,QAAI,CAAE,MAAM,IAAI,OAAO,KAAK,QAAQ,YAAY,UAAU,SAAS,CAAC,EAAI,QAAO;AAE/E,UAAM,UAAU,MAAM,IAAI,QAAQ,KAAK,QAAQ,YAAY,UAAU,SAAS,CAAC;AAC/E,UAAM,WAAW,QACd,IAAI,CAAC,UAAU;AAAA,MACd,UAAU;AAAA,MACV,SAAS,KAAK,SAAS,MAAM,KAAK,QAAQ,IAAI,CAAC;AAAA,MAC/C,SAAS,KAAK,QAAQ,IAAI;AAAA,IAC5B,EAAE,EACD,OAAO,CAAC,SAAS;AAChB,UAAI,aAAa,WAAW;AAC1B,eAAO,KAAK,YAAY,UAAU,YAAY,KAAK,KAAK,OAAO;AAAA,MACjE,OAAO;AACL,eAAO,KAAK,YAAY,UAAU,YAAY,KAAK,KAAK,OAAO;AAAA,MACjE;AAAA,IACF,CAAC;AAEH,UAAM,UAAU,OAAO;AAAA,MACrB,SAAS,IAAI,CAAC,SAAS,KAAK,OAAO;AAAA,MACnC;AAAA,IACF;AAEA,QAAI,WAAW,KAAM,QAAO;AAE5B,UAAM,cAAc,SAAS,KAAK,CAAC,SAAS,KAAK,YAAY,OAAO;AACpE,QAAI,eAAe,KAAM,QAAO;AAEhC,UAAM,eACJ,MAAM,MAAM,MAAM,IAAI,cAAc,IAAI,UAAU,WAAW,YAAY,QAAQ;AAEnF,WAAO;AAAA,MACL,SAAS,QAAQ,SAAS;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACF,EAAE;",
5
- "names": []
6
- }
1
+ {"version":3,"file":"auto-update-service.js","sourceRoot":"","sources":["..\\..\\src\\services\\auto-update-service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAuB,MAAM,wBAAwB,CAAC;AAE5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,cAAc,CAAC,QAAgB;QAOnC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,IAAI,UAAU,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEhE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,OAAO;aACrB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5B,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAClC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EACpC,GAAG,CACJ,CAAC;QAEF,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QAEtC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACtE,IAAI,WAAW,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,YAAY,GAChB,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QAErF,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;YAC3B,YAAY;SACb,CAAC;IACJ,CAAC;CACF,CAAC,CAAC,CAAC"}