@proj-airi/server-sdk 0.6.1 → 0.7.0-beta.1

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/index.mjs CHANGED
@@ -1,10 +1,7 @@
1
1
  import WebSocket from "crossws/websocket";
2
- import { defu } from "defu";
3
2
 
4
- //#region src/utils/concurrency.ts
5
- function sleep(ms) {
6
- return new Promise((resolve) => setTimeout(resolve, ms));
7
- }
3
+ //#region ../../node_modules/.pnpm/@moeru+std@0.1.0-beta.4/node_modules/@moeru/std/dist/sleep/index.js
4
+ const sleep = async (delay) => new Promise((resolve) => setTimeout(resolve, delay));
8
5
 
9
6
  //#endregion
10
7
  //#region src/client.ts
@@ -16,14 +13,15 @@ var Client = class {
16
13
  reconnectAttempts = 0;
17
14
  shouldClose = false;
18
15
  constructor(options) {
19
- this.opts = defu(options, {
16
+ this.opts = {
20
17
  url: "ws://localhost:6121/ws",
21
18
  possibleEvents: [],
22
19
  onError: () => {},
23
20
  onClose: () => {},
24
21
  autoConnect: true,
25
- autoReconnect: true
26
- });
22
+ autoReconnect: true,
23
+ ...options
24
+ };
27
25
  if (this.opts.autoConnect) try {
28
26
  this.connect();
29
27
  } catch (err) {
@@ -40,7 +38,7 @@ var Client = class {
40
38
  } catch (err) {
41
39
  console.error("Encountered an error when retrying", err);
42
40
  await sleep(2 ** attempts * 1e3);
43
- await this.retryWithExponentialBackoff(fn, attempts++, maxAttempts);
41
+ await this.retryWithExponentialBackoff(fn, attempts + 1, maxAttempts);
44
42
  }
45
43
  }
46
44
  async tryReconnectWithExponentialBackoff() {
@@ -129,7 +127,6 @@ var Client = class {
129
127
  const listeners = this.eventListeners.get(event);
130
128
  if (!listeners) return;
131
129
  listeners.push(callback);
132
- this.eventListeners.set(event, listeners);
133
130
  }
134
131
  send(data) {
135
132
  this.websocket?.send(JSON.stringify(data));
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["ms: number","options: ClientOptions<C>","fn: () => void | Promise<void>","event: any","event: E","callback: (data: WebSocketBaseEvent<E, WebSocketEvents<C>[E]>) => void | Promise<void>","data: WebSocketEvent<C>","data: string | ArrayBufferLike | ArrayBufferView"],"sources":["../src/utils/concurrency.ts","../src/client.ts"],"sourcesContent":["export function sleep(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n","import type { WebSocketBaseEvent, WebSocketEvent, WebSocketEvents } from '@proj-airi/server-shared/types'\n\nimport WebSocket from 'crossws/websocket'\nimport { defu } from 'defu'\n\nimport { sleep } from './utils'\n\nexport interface ClientOptions<C = undefined> {\n url?: string\n name: string\n possibleEvents?: Array<(keyof WebSocketEvents<C>)>\n token?: string\n onError?: (error: unknown) => void\n onClose?: () => void\n autoConnect?: boolean\n autoReconnect?: boolean\n}\n\nexport class Client<C = undefined> {\n private connected = false\n private opts: Required<ClientOptions<C>>\n private websocket: WebSocket | undefined\n private eventListeners: Map<keyof WebSocketEvents<C>, Array<(data: WebSocketBaseEvent<any, any>) => void | Promise<void>>> = new Map()\n\n private reconnectAttempts = 0\n private shouldClose = false\n\n constructor(options: ClientOptions<C>) {\n this.opts = defu<Required<ClientOptions<C>>, Required<Omit<ClientOptions<C>, 'name' | 'token'>>[]>(\n options,\n {\n url: 'ws://localhost:6121/ws',\n possibleEvents: [],\n onError: () => { },\n onClose: () => { },\n autoConnect: true,\n autoReconnect: true,\n },\n )\n\n if (this.opts.autoConnect) {\n try {\n this.connect()\n }\n catch (err) {\n console.error(err)\n }\n }\n }\n\n async retryWithExponentialBackoff(fn: () => void | Promise<void>, attempts = 0, maxAttempts = -1) {\n if (maxAttempts !== -1 && attempts >= maxAttempts) {\n console.error(`Maximum retry attempts (${maxAttempts}) reached`)\n return\n }\n\n try {\n await fn()\n }\n catch (err) {\n console.error('Encountered an error when retrying', err)\n await sleep(2 ** attempts * 1000)\n await this.retryWithExponentialBackoff(fn, attempts++, maxAttempts)\n }\n }\n\n async tryReconnectWithExponentialBackoff() {\n await this.retryWithExponentialBackoff(() => this._connect(), this.reconnectAttempts)\n }\n\n private _connect() {\n return new Promise<void>((resolve, reject) => {\n if (this.shouldClose) {\n resolve()\n return\n }\n\n if (this.connected) {\n resolve()\n return\n }\n\n this.websocket = new WebSocket(this.opts.url)\n\n this.onEvent('module:authenticated', async (event) => {\n const auth = event.data.authenticated\n if (!auth) {\n this.retryWithExponentialBackoff(() => this.tryAuthenticate())\n }\n else {\n this.tryAnnounce()\n }\n })\n\n this.websocket.onerror = (event) => {\n this.opts.onError?.(event)\n\n if ('error' in event && event.error instanceof Error) {\n if (event.error.message === 'Received network error or non-101 status code.') {\n this.connected = false\n\n if (!this.opts.autoReconnect) {\n this.opts.onError?.(event)\n this.opts.onClose?.()\n reject(event.error)\n return\n }\n\n reject(event.error)\n }\n }\n }\n\n this.websocket.onclose = () => {\n this.opts.onClose?.()\n this.connected = false\n\n if (!this.opts.autoReconnect) {\n this.opts.onClose?.()\n }\n else {\n this.tryReconnectWithExponentialBackoff()\n }\n }\n\n this.websocket.onmessage = (event) => {\n this.handleMessage(event)\n }\n\n this.websocket.onopen = () => {\n this.reconnectAttempts = 0\n\n if (this.opts.token) {\n this.tryAuthenticate()\n }\n else {\n this.tryAnnounce()\n }\n\n this.connected = true\n\n resolve()\n }\n })\n }\n\n async connect() {\n await this.tryReconnectWithExponentialBackoff()\n }\n\n private tryAnnounce() {\n this.send({\n type: 'module:announce',\n data: {\n name: this.opts.name,\n possibleEvents: this.opts.possibleEvents,\n },\n })\n }\n\n private tryAuthenticate() {\n if (this.opts.token) {\n this.send({ type: 'module:authenticate', data: { token: this.opts.token || '' } })\n }\n }\n\n private async handleMessage(event: any) {\n try {\n const data = JSON.parse(event.data) as WebSocketEvent<C>\n const listeners = this.eventListeners.get(data.type)\n if (!listeners)\n return\n\n for (const listener of listeners)\n await listener(data)\n }\n catch (err) {\n console.error('Failed to parse message:', err)\n this.opts.onError?.(err)\n }\n }\n\n onEvent<E extends keyof WebSocketEvents<C>>(\n event: E,\n callback: (data: WebSocketBaseEvent<E, WebSocketEvents<C>[E]>) => void | Promise<void>,\n ): void {\n if (!this.eventListeners.get(event)) {\n this.eventListeners.set(event, [])\n }\n\n const listeners = this.eventListeners.get(event)\n if (!listeners) {\n return\n }\n\n listeners.push(callback as unknown as (data: WebSocketBaseEvent<E, WebSocketEvents<C>[E]>) => void | Promise<void>)\n this.eventListeners.set(event, listeners)\n }\n\n send(data: WebSocketEvent<C>): void {\n this.websocket?.send(JSON.stringify(data))\n }\n\n sendRaw(data: string | ArrayBufferLike | ArrayBufferView): void {\n this.websocket?.send(data)\n }\n\n close(): void {\n this.shouldClose = true\n\n if (this.connected && this.websocket) {\n this.websocket.close()\n this.connected = false\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["options: ClientOptions<C>","fn: () => void | Promise<void>","event: any","event: E","callback: (data: WebSocketBaseEvent<E, WebSocketEvents<C>[E]>) => void | Promise<void>","data: WebSocketEvent<C>","data: string | ArrayBufferLike | ArrayBufferView"],"sources":["../../../node_modules/.pnpm/@moeru+std@0.1.0-beta.4/node_modules/@moeru/std/dist/sleep/index.js","../src/client.ts"],"sourcesContent":["const sleep = async (delay) => new Promise((resolve) => setTimeout(resolve, delay));\n\nexport { sleep };\n","import type { WebSocketBaseEvent, WebSocketEvent, WebSocketEvents } from '@proj-airi/server-shared/types'\n\nimport WebSocket from 'crossws/websocket'\n\nimport { sleep } from '@moeru/std'\n\nexport interface ClientOptions<C = undefined> {\n url?: string\n name: string\n possibleEvents?: Array<(keyof WebSocketEvents<C>)>\n token?: string\n onError?: (error: unknown) => void\n onClose?: () => void\n autoConnect?: boolean\n autoReconnect?: boolean\n}\n\nexport class Client<C = undefined> {\n private connected = false\n private opts: Required<Omit<ClientOptions<C>, 'token'>> & Pick<ClientOptions<C>, 'token'>\n private websocket: WebSocket | undefined\n private eventListeners: Map<keyof WebSocketEvents<C>, Array<(data: WebSocketBaseEvent<any, any>) => void | Promise<void>>> = new Map()\n\n private reconnectAttempts = 0\n private shouldClose = false\n\n constructor(options: ClientOptions<C>) {\n this.opts = {\n url: 'ws://localhost:6121/ws',\n possibleEvents: [],\n onError: () => { },\n onClose: () => { },\n autoConnect: true,\n autoReconnect: true,\n ...options,\n }\n\n if (this.opts.autoConnect) {\n try {\n this.connect()\n }\n catch (err) {\n console.error(err)\n }\n }\n }\n\n async retryWithExponentialBackoff(fn: () => void | Promise<void>, attempts = 0, maxAttempts = -1) {\n if (maxAttempts !== -1 && attempts >= maxAttempts) {\n console.error(`Maximum retry attempts (${maxAttempts}) reached`)\n return\n }\n\n try {\n await fn()\n }\n catch (err) {\n console.error('Encountered an error when retrying', err)\n await sleep(2 ** attempts * 1000)\n await this.retryWithExponentialBackoff(fn, attempts + 1, maxAttempts)\n }\n }\n\n async tryReconnectWithExponentialBackoff() {\n await this.retryWithExponentialBackoff(() => this._connect(), this.reconnectAttempts)\n }\n\n private _connect() {\n return new Promise<void>((resolve, reject) => {\n if (this.shouldClose) {\n resolve()\n return\n }\n\n if (this.connected) {\n resolve()\n return\n }\n\n this.websocket = new WebSocket(this.opts.url)\n\n this.onEvent('module:authenticated', async (event) => {\n const auth = event.data.authenticated\n if (!auth) {\n this.retryWithExponentialBackoff(() => this.tryAuthenticate())\n }\n else {\n this.tryAnnounce()\n }\n })\n\n this.websocket.onerror = (event) => {\n this.opts.onError?.(event)\n\n if ('error' in event && event.error instanceof Error) {\n if (event.error.message === 'Received network error or non-101 status code.') {\n this.connected = false\n\n if (!this.opts.autoReconnect) {\n this.opts.onError?.(event)\n this.opts.onClose?.()\n reject(event.error)\n return\n }\n\n reject(event.error)\n }\n }\n }\n\n this.websocket.onclose = () => {\n this.opts.onClose?.()\n this.connected = false\n\n if (!this.opts.autoReconnect) {\n this.opts.onClose?.()\n }\n else {\n this.tryReconnectWithExponentialBackoff()\n }\n }\n\n this.websocket.onmessage = (event) => {\n this.handleMessage(event)\n }\n\n this.websocket.onopen = () => {\n this.reconnectAttempts = 0\n\n if (this.opts.token) {\n this.tryAuthenticate()\n }\n else {\n this.tryAnnounce()\n }\n\n this.connected = true\n\n resolve()\n }\n })\n }\n\n async connect() {\n await this.tryReconnectWithExponentialBackoff()\n }\n\n private tryAnnounce() {\n this.send({\n type: 'module:announce',\n data: {\n name: this.opts.name,\n possibleEvents: this.opts.possibleEvents,\n },\n })\n }\n\n private tryAuthenticate() {\n if (this.opts.token) {\n this.send({ type: 'module:authenticate', data: { token: this.opts.token || '' } })\n }\n }\n\n private async handleMessage(event: any) {\n try {\n const data = JSON.parse(event.data) as WebSocketEvent<C>\n const listeners = this.eventListeners.get(data.type)\n if (!listeners)\n return\n\n for (const listener of listeners)\n await listener(data)\n }\n catch (err) {\n console.error('Failed to parse message:', err)\n this.opts.onError?.(err)\n }\n }\n\n onEvent<E extends keyof WebSocketEvents<C>>(\n event: E,\n callback: (data: WebSocketBaseEvent<E, WebSocketEvents<C>[E]>) => void | Promise<void>,\n ): void {\n if (!this.eventListeners.get(event)) {\n this.eventListeners.set(event, [])\n }\n\n const listeners = this.eventListeners.get(event)\n if (!listeners) {\n return\n }\n\n listeners.push(callback as unknown as (data: WebSocketBaseEvent<E, WebSocketEvents<C>[E]>) => void | Promise<void>)\n }\n\n send(data: WebSocketEvent<C>): void {\n this.websocket?.send(JSON.stringify(data))\n }\n\n sendRaw(data: string | ArrayBufferLike | ArrayBufferView): void {\n this.websocket?.send(data)\n }\n\n close(): void {\n this.shouldClose = true\n\n if (this.connected && this.websocket) {\n this.websocket.close()\n this.connected = false\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/utils/node/process.ts"],"sourcesContent":["import process from 'node:process'\n\nlet running = true\n\nfunction killProcess() {\n running = false\n}\n\nprocess.on('SIGTERM', () => {\n killProcess()\n})\nprocess.on('SIGINT', () => {\n killProcess()\n})\nprocess.on('uncaughtException', (e) => {\n console.error(e)\n killProcess()\n})\n\nexport function runUntilSignal() {\n setTimeout(() => {\n if (running)\n runUntilSignal()\n }, 10)\n}\n"],"mappings":";;;AAEA,IAAI,UAAU;AAEd,SAAS,cAAc;AACrB,WAAU;AACX;AAED,QAAQ,GAAG,WAAW,MAAM;AAC1B,cAAa;AACd,EAAC;AACF,QAAQ,GAAG,UAAU,MAAM;AACzB,cAAa;AACd,EAAC;AACF,QAAQ,GAAG,qBAAqB,CAAC,MAAM;AACrC,SAAQ,MAAM,EAAE;AAChB,cAAa;AACd,EAAC;AAEF,SAAgB,iBAAiB;AAC/B,YAAW,MAAM;AACf,MAAI,QACF,iBAAgB;CACnB,GAAE,GAAG;AACP"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/utils/node/process.ts"],"sourcesContent":["import process from 'node:process'\n\nlet running = true\n\nfunction killProcess() {\n running = false\n}\n\nprocess.on('SIGTERM', () => {\n killProcess()\n})\nprocess.on('SIGINT', () => {\n killProcess()\n})\nprocess.on('uncaughtException', (e) => {\n console.error(e)\n killProcess()\n})\n\nexport function runUntilSignal() {\n setTimeout(() => {\n if (running)\n runUntilSignal()\n }, 10)\n}\n"],"mappings":";;;AAEA,IAAI,UAAU;AAEd,SAAS,cAAc;CACrB,UAAU;AACX;AAED,QAAQ,GAAG,WAAW,MAAM;CAC1B,aAAa;AACd,EAAC;AACF,QAAQ,GAAG,UAAU,MAAM;CACzB,aAAa;AACd,EAAC;AACF,QAAQ,GAAG,qBAAqB,CAAC,MAAM;CACrC,QAAQ,MAAM,EAAE;CAChB,aAAa;AACd,EAAC;AAEF,SAAgB,iBAAiB;CAC/B,WAAW,MAAM;AACf,MAAI,SACF,gBAAgB;CACnB,GAAE,GAAG;AACP"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@proj-airi/server-sdk",
3
3
  "type": "module",
4
- "version": "0.6.1",
4
+ "version": "0.7.0-beta.1",
5
5
  "description": "Client-side SDK implementation for connecting to AIRI server components and runtimes",
6
6
  "author": {
7
7
  "name": "Moeru AI Project AIRI Team",
@@ -17,17 +17,14 @@
17
17
  "exports": {
18
18
  ".": {
19
19
  "types": "./dist/index.d.mts",
20
- "import": "./dist/index.mjs",
21
- "require": "./dist/index.mjs"
20
+ "default": "./dist/index.mjs"
22
21
  },
23
22
  "./utils/node": {
24
23
  "types": "./dist/utils/node/index.d.mts",
25
- "import": "./dist/utils/node/index.mjs",
26
- "require": "./dist/utils/node/index.mjs"
24
+ "default": "./dist/utils/node/index.mjs"
27
25
  }
28
26
  },
29
27
  "main": "./dist/index.mjs",
30
- "module": "./dist/index.mjs",
31
28
  "types": "./dist/index.d.mts",
32
29
  "files": [
33
30
  "README.md",
@@ -37,11 +34,13 @@
37
34
  "dependencies": {
38
35
  "crossws": "^0.4.1",
39
36
  "defu": "^6.1.4",
40
- "@proj-airi/server-shared": "^0.6.1"
37
+ "@proj-airi/server-shared": "^0.7.0-beta.1"
38
+ },
39
+ "devDependencies": {
40
+ "@moeru/std": "0.1.0-beta.4"
41
41
  },
42
42
  "scripts": {
43
43
  "dev": "pnpm run build",
44
- "stub": "pnpm run build",
45
44
  "build": "tsdown",
46
45
  "typecheck": "tsc --noEmit"
47
46
  }