@ekhein/sekiro-node-client 2.1.9 → 2.1.10

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/dist/main.d.ts CHANGED
@@ -1,12 +1,16 @@
1
- export declare class SekiroClient {
1
+ import { ErrorEvent, CloseEvent } from 'partysocket/ws.js';
2
+ import { W3CWebSocket } from './utils/ws.util';
3
+ export declare class SekiroClient extends W3CWebSocket {
4
+ readonly group: string;
5
+ readonly wsURL: string;
6
+ readonly clientId: string;
2
7
  private readonly logger;
3
8
  private readonly handlers;
4
- private readonly ws;
5
- constructor(concurrency?: number, group?: string, wsURL?: string);
6
- private onOpen;
7
- private onClose;
8
- private onError;
9
- private onData;
9
+ constructor(group?: string, wsURL?: string, clientId?: string);
10
+ onopen(event: Event): Promise<void>;
11
+ onclose(event: CloseEvent): Promise<void>;
12
+ onerror(event: ErrorEvent): Promise<void>;
13
+ onmessage(event: MessageEvent): Promise<void>;
10
14
  registerAction(action: {
11
15
  name: string;
12
16
  handler: Function;
package/dist/main.js CHANGED
@@ -5,47 +5,50 @@ const crypto_1 = require("crypto");
5
5
  const result_util_1 = require("./utils/result.util");
6
6
  const logger_util_1 = require("./utils/logger.util");
7
7
  const ws_util_1 = require("./utils/ws.util");
8
- class SekiroClient {
9
- logger = new logger_util_1.Logger();
8
+ class SekiroClient extends ws_util_1.W3CWebSocket {
9
+ group;
10
+ wsURL;
11
+ clientId;
12
+ logger = new logger_util_1.Logger(this);
10
13
  handlers = new Map();
11
- ws = new Map();
12
- constructor(concurrency = 1, group = process.env.namespace, wsURL = process.env.SEKIRO_WS) {
13
- for (let i = 0; i < concurrency; i++) {
14
- const register = new URL("/business-demo/register", wsURL);
15
- const clientId = (0, crypto_1.randomUUID)().replace(/-/g, "");
16
- register.searchParams.append("group", group);
17
- register.searchParams.append("clientId", clientId);
18
- const ws = new ws_util_1.W3CWebSocket({ wsURL: register.href });
19
- ws.addEventListener("open", this.onOpen.bind(this, group, clientId));
20
- ws.addEventListener("message", this.onData.bind(this, group, clientId));
21
- ws.addEventListener("close", this.onClose.bind(this, group, clientId));
22
- ws.addEventListener("error", this.onError.bind(this, group, clientId));
23
- this.ws.set(clientId, ws); /* save to this */
24
- }
14
+ constructor(group = process.env.namespace, wsURL = process.env.SEKIRO_WS, clientId = (0, crypto_1.randomUUID)().replace(/-/g, "")) {
15
+ const register = new URL("/business-demo/register", wsURL);
16
+ register.searchParams.append("group", group);
17
+ register.searchParams.append("clientId", clientId);
18
+ super({ wsURL: register.href });
19
+ this.group = group;
20
+ this.wsURL = wsURL;
21
+ this.clientId = clientId;
25
22
  }
26
- async onOpen(group, clientId, event) {
27
- this.logger.info(group, clientId, "Connection established");
23
+ // @ts-expect-error
24
+ async onopen(event) {
25
+ this.logger.info("Connection Established");
28
26
  }
29
- async onClose(group, clientId, event) {
30
- this.logger.warn(group, clientId, "Connection closed");
27
+ // @ts-expect-error
28
+ async onclose(event) {
29
+ this.logger.warn("Connection Closed", event.code);
31
30
  }
32
- async onError(group, clientId, event) {
33
- this.logger.warn(group, clientId, "WebSocket error", event.message);
31
+ // @ts-expect-error
32
+ async onerror(event) {
33
+ this.logger.warn("WebSocket Error", event.message);
34
34
  }
35
- async onData(group, clientId, event) {
36
- this.logger.info(group, clientId, "Received request", event.data);
35
+ // @ts-expect-error
36
+ async onmessage(event) {
37
+ this.logger.info("Request", event.data);
37
38
  const request = JSON.parse(event.data);
38
39
  try {
39
40
  const handler = this.handlers.get(request.action);
40
41
  if (!handler)
41
- throw new Error("No handler for this action");
42
+ throw new Error("Handler Not Found");
42
43
  const body = await handler.call(this, request.params);
43
- const pack = result_util_1.Result.success(request, body);
44
- this.ws.get(clientId).send(pack);
44
+ const pack = body.jsonrpc
45
+ ? result_util_1.Result.success(request, body.result)
46
+ : result_util_1.Result.success(request, body);
47
+ this.send(pack);
45
48
  }
46
49
  catch (error) {
47
50
  const pack = result_util_1.Result.unknown(request, error.message);
48
- this.ws.get(clientId).send(pack);
51
+ this.send(pack);
49
52
  }
50
53
  }
51
54
  async registerAction(action) {
@@ -1,4 +1,9 @@
1
1
  export declare class Logger {
2
+ private readonly context;
3
+ constructor(context: {
4
+ group: string;
5
+ clientId: string;
6
+ });
2
7
  private log;
3
8
  info(...message: any[]): void;
4
9
  warn(...message: any[]): void;
@@ -3,18 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Logger = void 0;
4
4
  const util_1 = require("util");
5
5
  class Logger {
6
+ context;
7
+ constructor(context) {
8
+ this.context = context;
9
+ }
6
10
  log(level, message) {
7
11
  const time = new Date().toLocaleString();
8
- const namespace = Array.from(message).at(0);
9
- const clientId = Array.from(message).at(1);
10
- const args = Array.from(message).slice(2);
11
- const base = (0, util_1.format)("[%s] [%s] [%s] [%s]", level, time, namespace, clientId);
12
+ const template = (0, util_1.format)("[%s] [%s] [%s] [%s]", level, time, this.context.group, this.context.clientId);
12
13
  switch (level) {
13
14
  case "INFO":
14
- console.info(base, ...args);
15
+ console.info(template, ...message);
15
16
  break;
16
17
  case "WARN":
17
- console.warn(base, ...args);
18
+ console.warn(template, ...message);
18
19
  break;
19
20
  }
20
21
  }
@@ -1,5 +1,5 @@
1
1
  import { WebSocket } from 'partysocket';
2
- export declare class W3CWebSocket extends WebSocket {
2
+ export declare abstract class W3CWebSocket extends WebSocket {
3
3
  constructor(options: {
4
4
  wsURL: string;
5
5
  headers?: Record<string, string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekhein/sekiro-node-client",
3
- "version": "2.1.9",
3
+ "version": "2.1.10",
4
4
  "license": "MIT",
5
5
  "author": "ekhein",
6
6
  "main": "./dist/main.js",