@authup/core-realtime-kit 1.0.0-beta.19 → 1.0.0-beta.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/client/manager/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG1E,qBAAa,aAAa,CACtB,YAAY,SAAS,aAAa,GAAG,SAAS,EAC9C,UAAU,SAAS,aAAa,GAAG,SAAS;IAE5C,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAEtD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,OAAO,EAAG,oBAAoB,CAAC;gBAE7B,GAAG,EAAE,oBAAoB;IAY/B,OAAO,CAAC,SAAS,SAAM,GAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAmBpE,UAAU,CAAC,SAAS,SAAM,GAAI,OAAO,CAAC,IAAI,CAAC;IA4B3C,SAAS,CAAC,SAAS,SAAM,GAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAWtE,YAAY,IAAK,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC;IAgBlE,MAAM,CAAC,SAAS,SAAM,GAAI,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;IAsB1D,KAAK,CAAC,SAAS,SAAM;CAMxB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/client/manager/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG1E,qBAAa,aAAa,CACtB,YAAY,SAAS,aAAa,GAAG,SAAS,EAC9C,UAAU,SAAS,aAAa,GAAG,SAAS;IAE5C,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAEtD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,OAAO,EAAG,oBAAoB,CAAC;gBAE7B,GAAG,EAAE,oBAAoB;IAW/B,OAAO,CAAC,SAAS,SAAM,GAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAmBpE,UAAU,CAAC,SAAS,SAAM,GAAI,OAAO,CAAC,IAAI,CAAC;IA4B3C,SAAS,CAAC,SAAS,SAAM,GAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAWtE,YAAY,IAAK,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC;IAgBlE,MAAM,CAAC,SAAS,SAAM,GAAI,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;IAqB1D,KAAK,CAAC,SAAS,SAAM;CAMxB"}
@@ -1,5 +1,7 @@
1
1
  import type { ManagerOptions } from 'socket.io-client';
2
- export type ClientManagerTokenFn = () => string | undefined;
2
+ export type ClientManagerTokenSyncFn = () => string | undefined;
3
+ export type ClientManagerTokenAsyncFn = () => Promise<string | undefined>;
4
+ export type ClientManagerTokenFn = ClientManagerTokenSyncFn | ClientManagerTokenAsyncFn;
3
5
  export type ClientManagerContext = {
4
6
  url: string;
5
7
  options?: Partial<ManagerOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/manager/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG,MAAM,MAAM,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAA;CACxC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/manager/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,wBAAwB,GAAG,MAAM,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC1E,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,yBAAyB,CAAC;AAExF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAA;CACxC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { DisconnectDescription } from '../../types';
2
2
  import type { ClientManagerTokenFn } from './types';
3
- export declare function toClientManagerTokenFn(input?: string | ClientManagerTokenFn): () => any;
3
+ export declare function toClientManagerTokenAsyncFn(input?: string | ClientManagerTokenFn): () => any;
4
4
  export declare function isDisconnectDescription(input: unknown): input is DisconnectDescription;
5
5
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/client/manager/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,aAU3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,qBAAqB,CAGvF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/client/manager/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,wBAAgB,2BAA2B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,aAUhF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,qBAAqB,CAGvF"}
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var socket_ioClient = require('socket.io-client');
4
4
  var kit = require('@authup/kit');
5
5
 
6
- function toClientManagerTokenFn(input) {
6
+ function toClientManagerTokenAsyncFn(input) {
7
7
  if (typeof input === 'undefined') {
8
8
  return ()=>undefined;
9
9
  }
@@ -79,14 +79,11 @@ class ClientManager {
79
79
  }
80
80
  const socket = this.manager.socket(namespace, {
81
81
  auth: (cb)=>{
82
- const token = this.tokenFn();
83
- if (token) {
82
+ Promise.resolve().then(()=>this.tokenFn()).then((token)=>{
84
83
  cb({
85
84
  token
86
85
  });
87
- return;
88
- }
89
- cb();
86
+ }).catch(()=>cb());
90
87
  }
91
88
  });
92
89
  this.sockets.set(namespace, socket);
@@ -102,10 +99,9 @@ class ClientManager {
102
99
  this.sockets = new Map();
103
100
  this.manager = new socket_ioClient.Manager(ctx.url, {
104
101
  autoConnect: false,
105
- reconnectionAttempts: 10,
106
102
  ...ctx.options
107
103
  });
108
- this.tokenFn = toClientManagerTokenFn(ctx.token);
104
+ this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
109
105
  }
110
106
  }
111
107
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { DisconnectDescription } from '../../types';\nimport type { ClientManagerTokenFn } from './types';\n\nexport function toClientManagerTokenFn(input?: string | ClientManagerTokenFn) {\n if (typeof input === 'undefined') {\n return () => undefined;\n }\n\n if (typeof input === 'string') {\n return () => input;\n }\n\n return input;\n}\n\nexport function isDisconnectDescription(input: unknown) : input is DisconnectDescription {\n return isObject(input) &&\n typeof input.description === 'string';\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\nimport type { CTSEvents, DefaultEvents, STCEvents } from '../../types';\nimport type { ClientManagerContext, ClientManagerTokenFn } from './types';\nimport { isDisconnectDescription, toClientManagerTokenFn } from './utils';\n\nexport class ClientManager<\n ListenEvents extends DefaultEvents = STCEvents,\n EmitEvents extends DefaultEvents = CTSEvents,\n> {\n protected manager : Manager<ListenEvents, EmitEvents>;\n\n protected sockets: Map<string, Socket<ListenEvents, EmitEvents>>;\n\n protected tokenFn : ClientManagerTokenFn;\n\n constructor(ctx: ClientManagerContext) {\n this.sockets = new Map();\n\n this.manager = new Manager(ctx.url, {\n autoConnect: false,\n reconnectionAttempts: 10,\n ...ctx.options,\n });\n\n this.tokenFn = toClientManagerTokenFn(ctx.token);\n }\n\n async connect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n const socket = this.inject(namespace);\n if (socket.connected) {\n return socket;\n }\n\n return new Promise((resolve, reject) => {\n socket.once('connect', () => {\n resolve(socket);\n });\n\n socket.once('connect_error', (err) => {\n reject(err);\n });\n\n socket.connect();\n });\n }\n\n async disconnect(namespace = '/') : Promise<void> {\n const socket = this.inject(namespace);\n if (!socket.connected) {\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n socket.once('disconnect', (\n reason,\n description,\n ) => {\n if (reason === 'io client disconnect') {\n resolve();\n return;\n }\n\n if (isDisconnectDescription(description)) {\n reject(new Error(description.description));\n return;\n }\n\n reject(description);\n });\n\n socket.disconnect();\n });\n }\n\n async reconnect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n await this.disconnect(namespace);\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this.connect(namespace)\n .then((socket) => resolve(socket))\n .catch((err) => reject(err));\n });\n });\n }\n\n async reconnectAll() : Promise<Socket<ListenEvents, EmitEvents>[]> {\n const keys = this.sockets.keys();\n const promises : Promise<Socket<ListenEvents, EmitEvents>>[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const key = keys.next();\n if (key.done) {\n break;\n }\n\n promises.push(this.reconnect(key.value));\n }\n\n return Promise.all(promises);\n }\n\n inject(namespace = '/') : Socket<ListenEvents, EmitEvents> {\n if (this.sockets.has(namespace)) {\n return this.sockets.get(namespace);\n }\n\n const socket = this.manager.socket(namespace, {\n auth: (cb: CallableFunction) => {\n const token = this.tokenFn();\n if (token) {\n cb({ token });\n return;\n }\n\n cb();\n },\n });\n\n this.sockets.set(namespace, socket);\n\n return socket;\n }\n\n eject(namespace = '/') {\n if (this.sockets[namespace]) {\n this.sockets[namespace].disconnect();\n delete this.sockets[namespace];\n }\n }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EventCallback, EventTarget } from './types';\n\nexport function isEventTarget(\n input: unknown,\n) : input is EventTarget {\n return typeof input === 'number' ||\n typeof input === 'string' ||\n typeof input === 'undefined';\n}\n\nexport function isEventCallback(\n input: unknown,\n fnArgs?: number,\n) : input is EventCallback {\n if (typeof fnArgs === 'undefined') {\n return typeof input === 'function';\n }\n\n return typeof input === 'function' &&\n input.length >= fnArgs;\n}\n"],"names":["toClientManagerTokenFn","input","undefined","isDisconnectDescription","isObject","description","ClientManager","connect","namespace","socket","inject","connected","Promise","resolve","reject","once","err","disconnect","reason","Error","reconnect","setTimeout","then","catch","reconnectAll","keys","sockets","promises","key","next","done","push","value","all","has","get","manager","auth","cb","token","tokenFn","set","eject","constructor","ctx","Map","Manager","url","autoConnect","reconnectionAttempts","options","isEventTarget","isEventCallback","fnArgs","length"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { DisconnectDescription } from '../../types';\nimport type { ClientManagerTokenFn } from './types';\n\nexport function toClientManagerTokenAsyncFn(input?: string | ClientManagerTokenFn) {\n if (typeof input === 'undefined') {\n return () => undefined;\n }\n\n if (typeof input === 'string') {\n return () => input;\n }\n\n return input;\n}\n\nexport function isDisconnectDescription(input: unknown) : input is DisconnectDescription {\n return isObject(input) &&\n typeof input.description === 'string';\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\nimport type { CTSEvents, DefaultEvents, STCEvents } from '../../types';\nimport type { ClientManagerContext, ClientManagerTokenFn } from './types';\nimport { isDisconnectDescription, toClientManagerTokenAsyncFn } from './utils';\n\nexport class ClientManager<\n ListenEvents extends DefaultEvents = STCEvents,\n EmitEvents extends DefaultEvents = CTSEvents,\n> {\n protected manager : Manager<ListenEvents, EmitEvents>;\n\n protected sockets: Map<string, Socket<ListenEvents, EmitEvents>>;\n\n protected tokenFn : ClientManagerTokenFn;\n\n constructor(ctx: ClientManagerContext) {\n this.sockets = new Map();\n\n this.manager = new Manager(ctx.url, {\n autoConnect: false,\n ...ctx.options,\n });\n\n this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);\n }\n\n async connect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n const socket = this.inject(namespace);\n if (socket.connected) {\n return socket;\n }\n\n return new Promise((resolve, reject) => {\n socket.once('connect', () => {\n resolve(socket);\n });\n\n socket.once('connect_error', (err) => {\n reject(err);\n });\n\n socket.connect();\n });\n }\n\n async disconnect(namespace = '/') : Promise<void> {\n const socket = this.inject(namespace);\n if (!socket.connected) {\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n socket.once('disconnect', (\n reason,\n description,\n ) => {\n if (reason === 'io client disconnect') {\n resolve();\n return;\n }\n\n if (isDisconnectDescription(description)) {\n reject(new Error(description.description));\n return;\n }\n\n reject(description);\n });\n\n socket.disconnect();\n });\n }\n\n async reconnect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n await this.disconnect(namespace);\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this.connect(namespace)\n .then((socket) => resolve(socket))\n .catch((err) => reject(err));\n });\n });\n }\n\n async reconnectAll() : Promise<Socket<ListenEvents, EmitEvents>[]> {\n const keys = this.sockets.keys();\n const promises : Promise<Socket<ListenEvents, EmitEvents>>[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const key = keys.next();\n if (key.done) {\n break;\n }\n\n promises.push(this.reconnect(key.value));\n }\n\n return Promise.all(promises);\n }\n\n inject(namespace = '/') : Socket<ListenEvents, EmitEvents> {\n if (this.sockets.has(namespace)) {\n return this.sockets.get(namespace);\n }\n\n const socket = this.manager.socket(namespace, {\n auth: (cb: CallableFunction) => {\n Promise.resolve()\n .then(() => this.tokenFn())\n .then((token) => {\n cb({ token });\n })\n .catch(() => cb());\n },\n });\n\n this.sockets.set(namespace, socket);\n\n return socket;\n }\n\n eject(namespace = '/') {\n if (this.sockets[namespace]) {\n this.sockets[namespace].disconnect();\n delete this.sockets[namespace];\n }\n }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EventCallback, EventTarget } from './types';\n\nexport function isEventTarget(\n input: unknown,\n) : input is EventTarget {\n return typeof input === 'number' ||\n typeof input === 'string' ||\n typeof input === 'undefined';\n}\n\nexport function isEventCallback(\n input: unknown,\n fnArgs?: number,\n) : input is EventCallback {\n if (typeof fnArgs === 'undefined') {\n return typeof input === 'function';\n }\n\n return typeof input === 'function' &&\n input.length >= fnArgs;\n}\n"],"names":["toClientManagerTokenAsyncFn","input","undefined","isDisconnectDescription","isObject","description","ClientManager","connect","namespace","socket","inject","connected","Promise","resolve","reject","once","err","disconnect","reason","Error","reconnect","setTimeout","then","catch","reconnectAll","keys","sockets","promises","key","next","done","push","value","all","has","get","manager","auth","cb","tokenFn","token","set","eject","constructor","ctx","Map","Manager","url","autoConnect","options","isEventTarget","isEventCallback","fnArgs","length"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Manager } from 'socket.io-client';
2
2
  import { isObject } from '@authup/kit';
3
3
 
4
- function toClientManagerTokenFn(input) {
4
+ function toClientManagerTokenAsyncFn(input) {
5
5
  if (typeof input === 'undefined') {
6
6
  return ()=>undefined;
7
7
  }
@@ -77,14 +77,11 @@ class ClientManager {
77
77
  }
78
78
  const socket = this.manager.socket(namespace, {
79
79
  auth: (cb)=>{
80
- const token = this.tokenFn();
81
- if (token) {
80
+ Promise.resolve().then(()=>this.tokenFn()).then((token)=>{
82
81
  cb({
83
82
  token
84
83
  });
85
- return;
86
- }
87
- cb();
84
+ }).catch(()=>cb());
88
85
  }
89
86
  });
90
87
  this.sockets.set(namespace, socket);
@@ -100,10 +97,9 @@ class ClientManager {
100
97
  this.sockets = new Map();
101
98
  this.manager = new Manager(ctx.url, {
102
99
  autoConnect: false,
103
- reconnectionAttempts: 10,
104
100
  ...ctx.options
105
101
  });
106
- this.tokenFn = toClientManagerTokenFn(ctx.token);
102
+ this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
107
103
  }
108
104
  }
109
105
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { DisconnectDescription } from '../../types';\nimport type { ClientManagerTokenFn } from './types';\n\nexport function toClientManagerTokenFn(input?: string | ClientManagerTokenFn) {\n if (typeof input === 'undefined') {\n return () => undefined;\n }\n\n if (typeof input === 'string') {\n return () => input;\n }\n\n return input;\n}\n\nexport function isDisconnectDescription(input: unknown) : input is DisconnectDescription {\n return isObject(input) &&\n typeof input.description === 'string';\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\nimport type { CTSEvents, DefaultEvents, STCEvents } from '../../types';\nimport type { ClientManagerContext, ClientManagerTokenFn } from './types';\nimport { isDisconnectDescription, toClientManagerTokenFn } from './utils';\n\nexport class ClientManager<\n ListenEvents extends DefaultEvents = STCEvents,\n EmitEvents extends DefaultEvents = CTSEvents,\n> {\n protected manager : Manager<ListenEvents, EmitEvents>;\n\n protected sockets: Map<string, Socket<ListenEvents, EmitEvents>>;\n\n protected tokenFn : ClientManagerTokenFn;\n\n constructor(ctx: ClientManagerContext) {\n this.sockets = new Map();\n\n this.manager = new Manager(ctx.url, {\n autoConnect: false,\n reconnectionAttempts: 10,\n ...ctx.options,\n });\n\n this.tokenFn = toClientManagerTokenFn(ctx.token);\n }\n\n async connect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n const socket = this.inject(namespace);\n if (socket.connected) {\n return socket;\n }\n\n return new Promise((resolve, reject) => {\n socket.once('connect', () => {\n resolve(socket);\n });\n\n socket.once('connect_error', (err) => {\n reject(err);\n });\n\n socket.connect();\n });\n }\n\n async disconnect(namespace = '/') : Promise<void> {\n const socket = this.inject(namespace);\n if (!socket.connected) {\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n socket.once('disconnect', (\n reason,\n description,\n ) => {\n if (reason === 'io client disconnect') {\n resolve();\n return;\n }\n\n if (isDisconnectDescription(description)) {\n reject(new Error(description.description));\n return;\n }\n\n reject(description);\n });\n\n socket.disconnect();\n });\n }\n\n async reconnect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n await this.disconnect(namespace);\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this.connect(namespace)\n .then((socket) => resolve(socket))\n .catch((err) => reject(err));\n });\n });\n }\n\n async reconnectAll() : Promise<Socket<ListenEvents, EmitEvents>[]> {\n const keys = this.sockets.keys();\n const promises : Promise<Socket<ListenEvents, EmitEvents>>[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const key = keys.next();\n if (key.done) {\n break;\n }\n\n promises.push(this.reconnect(key.value));\n }\n\n return Promise.all(promises);\n }\n\n inject(namespace = '/') : Socket<ListenEvents, EmitEvents> {\n if (this.sockets.has(namespace)) {\n return this.sockets.get(namespace);\n }\n\n const socket = this.manager.socket(namespace, {\n auth: (cb: CallableFunction) => {\n const token = this.tokenFn();\n if (token) {\n cb({ token });\n return;\n }\n\n cb();\n },\n });\n\n this.sockets.set(namespace, socket);\n\n return socket;\n }\n\n eject(namespace = '/') {\n if (this.sockets[namespace]) {\n this.sockets[namespace].disconnect();\n delete this.sockets[namespace];\n }\n }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EventCallback, EventTarget } from './types';\n\nexport function isEventTarget(\n input: unknown,\n) : input is EventTarget {\n return typeof input === 'number' ||\n typeof input === 'string' ||\n typeof input === 'undefined';\n}\n\nexport function isEventCallback(\n input: unknown,\n fnArgs?: number,\n) : input is EventCallback {\n if (typeof fnArgs === 'undefined') {\n return typeof input === 'function';\n }\n\n return typeof input === 'function' &&\n input.length >= fnArgs;\n}\n"],"names":["toClientManagerTokenFn","input","undefined","isDisconnectDescription","isObject","description","ClientManager","connect","namespace","socket","inject","connected","Promise","resolve","reject","once","err","disconnect","reason","Error","reconnect","setTimeout","then","catch","reconnectAll","keys","sockets","promises","key","next","done","push","value","all","has","get","manager","auth","cb","token","tokenFn","set","eject","constructor","ctx","Map","Manager","url","autoConnect","reconnectionAttempts","options","isEventTarget","isEventCallback","fnArgs","length"],"mappings":";;;AAWO,SAASA,uBAAuBC,KAAqC,EAAA;IACxE,IAAI,OAAOA,UAAU,WAAa,EAAA;AAC9B,QAAA,OAAO,IAAMC,SAAAA,CAAAA;AACjB,KAAA;IAEA,IAAI,OAAOD,UAAU,QAAU,EAAA;AAC3B,QAAA,OAAO,IAAMA,KAAAA,CAAAA;AACjB,KAAA;IAEA,OAAOA,KAAAA,CAAAA;AACX,CAAA;AAEO,SAASE,wBAAwBF,KAAc,EAAA;AAClD,IAAA,OAAOG,QAASH,CAAAA,KAAAA,CAAAA,IACZ,OAAOA,KAAAA,CAAMI,WAAW,KAAK,QAAA,CAAA;AACrC;;ACbO,MAAMC,aAAAA,CAAAA;IAsBT,MAAMC,OAAAA,CAAQC,SAAY,GAAA,GAAG,EAA8C;AACvE,QAAA,MAAMC,MAAS,GAAA,IAAI,CAACC,MAAM,CAACF,SAAAA,CAAAA,CAAAA;QAC3B,IAAIC,MAAAA,CAAOE,SAAS,EAAE;YAClB,OAAOF,MAAAA,CAAAA;AACX,SAAA;QAEA,OAAO,IAAIG,OAAQ,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;YACzBL,MAAOM,CAAAA,IAAI,CAAC,SAAW,EAAA,IAAA;gBACnBF,OAAQJ,CAAAA,MAAAA,CAAAA,CAAAA;AACZ,aAAA,CAAA,CAAA;YAEAA,MAAOM,CAAAA,IAAI,CAAC,eAAA,EAAiB,CAACC,GAAAA,GAAAA;gBAC1BF,MAAOE,CAAAA,GAAAA,CAAAA,CAAAA;AACX,aAAA,CAAA,CAAA;AAEAP,YAAAA,MAAAA,CAAOF,OAAO,EAAA,CAAA;AAClB,SAAA,CAAA,CAAA;AACJ,KAAA;IAEA,MAAMU,UAAAA,CAAWT,SAAY,GAAA,GAAG,EAAkB;AAC9C,QAAA,MAAMC,MAAS,GAAA,IAAI,CAACC,MAAM,CAACF,SAAAA,CAAAA,CAAAA;QAC3B,IAAI,CAACC,MAAOE,CAAAA,SAAS,EAAE;AACnB,YAAA,OAAA;AACJ,SAAA;QAEA,MAAM,IAAIC,OAAc,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;AAC9BL,YAAAA,MAAAA,CAAOM,IAAI,CAAC,YAAc,EAAA,CACtBG,MACAb,EAAAA,WAAAA,GAAAA;AAEA,gBAAA,IAAIa,WAAW,sBAAwB,EAAA;AACnCL,oBAAAA,OAAAA,EAAAA,CAAAA;AACA,oBAAA,OAAA;AACJ,iBAAA;AAEA,gBAAA,IAAIV,wBAAwBE,WAAc,CAAA,EAAA;oBACtCS,MAAO,CAAA,IAAIK,KAAMd,CAAAA,WAAAA,CAAYA,WAAW,CAAA,CAAA,CAAA;AACxC,oBAAA,OAAA;AACJ,iBAAA;gBAEAS,MAAOT,CAAAA,WAAAA,CAAAA,CAAAA;AACX,aAAA,CAAA,CAAA;AAEAI,YAAAA,MAAAA,CAAOQ,UAAU,EAAA,CAAA;AACrB,SAAA,CAAA,CAAA;AACJ,KAAA;IAEA,MAAMG,SAAAA,CAAUZ,SAAY,GAAA,GAAG,EAA8C;QACzE,MAAM,IAAI,CAACS,UAAU,CAACT,SAAAA,CAAAA,CAAAA;QACtB,OAAO,IAAII,OAAQ,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;YACzBO,UAAW,CAAA,IAAA;AACP,gBAAA,IAAI,CAACd,OAAO,CAACC,SAAAA,CAAAA,CACRc,IAAI,CAAC,CAACb,MAAWI,GAAAA,OAAAA,CAAQJ,MACzBc,CAAAA,CAAAA,CAAAA,KAAK,CAAC,CAACP,MAAQF,MAAOE,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;AAC/B,aAAA,CAAA,CAAA;AACJ,SAAA,CAAA,CAAA;AACJ,KAAA;AAEA,IAAA,MAAMQ,YAA6D,GAAA;AAC/D,QAAA,MAAMC,IAAO,GAAA,IAAI,CAACC,OAAO,CAACD,IAAI,EAAA,CAAA;AAC9B,QAAA,MAAME,WAAyD,EAAE,CAAA;;AAEjE,QAAA,MAAO,IAAM,CAAA;YACT,MAAMC,GAAAA,GAAMH,KAAKI,IAAI,EAAA,CAAA;YACrB,IAAID,GAAAA,CAAIE,IAAI,EAAE;AACV,gBAAA,MAAA;AACJ,aAAA;AAEAH,YAAAA,QAAAA,CAASI,IAAI,CAAC,IAAI,CAACX,SAAS,CAACQ,IAAII,KAAK,CAAA,CAAA,CAAA;AAC1C,SAAA;QAEA,OAAOpB,OAAAA,CAAQqB,GAAG,CAACN,QAAAA,CAAAA,CAAAA;AACvB,KAAA;IAEAjB,MAAOF,CAAAA,SAAAA,GAAY,GAAG,EAAqC;AACvD,QAAA,IAAI,IAAI,CAACkB,OAAO,CAACQ,GAAG,CAAC1B,SAAY,CAAA,EAAA;AAC7B,YAAA,OAAO,IAAI,CAACkB,OAAO,CAACS,GAAG,CAAC3B,SAAAA,CAAAA,CAAAA;AAC5B,SAAA;AAEA,QAAA,MAAMC,SAAS,IAAI,CAAC2B,OAAO,CAAC3B,MAAM,CAACD,SAAW,EAAA;AAC1C6B,YAAAA,IAAAA,EAAM,CAACC,EAAAA,GAAAA;gBACH,MAAMC,KAAAA,GAAQ,IAAI,CAACC,OAAO,EAAA,CAAA;AAC1B,gBAAA,IAAID,KAAO,EAAA;oBACPD,EAAG,CAAA;AAAEC,wBAAAA,KAAAA;AAAM,qBAAA,CAAA,CAAA;AACX,oBAAA,OAAA;AACJ,iBAAA;AAEAD,gBAAAA,EAAAA,EAAAA,CAAAA;AACJ,aAAA;AACJ,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACZ,OAAO,CAACe,GAAG,CAACjC,SAAWC,EAAAA,MAAAA,CAAAA,CAAAA;QAE5B,OAAOA,MAAAA,CAAAA;AACX,KAAA;IAEAiC,KAAMlC,CAAAA,SAAAA,GAAY,GAAG,EAAE;AACnB,QAAA,IAAI,IAAI,CAACkB,OAAO,CAAClB,UAAU,EAAE;AACzB,YAAA,IAAI,CAACkB,OAAO,CAAClB,SAAAA,CAAU,CAACS,UAAU,EAAA,CAAA;AAClC,YAAA,OAAO,IAAI,CAACS,OAAO,CAAClB,SAAU,CAAA,CAAA;AAClC,SAAA;AACJ,KAAA;AAjHAmC,IAAAA,WAAAA,CAAYC,GAAyB,CAAE;QACnC,IAAI,CAAClB,OAAO,GAAG,IAAImB,GAAAA,EAAAA,CAAAA;AAEnB,QAAA,IAAI,CAACT,OAAO,GAAG,IAAIU,OAAQF,CAAAA,GAAAA,CAAIG,GAAG,EAAE;YAChCC,WAAa,EAAA,KAAA;YACbC,oBAAsB,EAAA,EAAA;AACtB,YAAA,GAAGL,IAAIM,OAAO;AAClB,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACV,OAAO,GAAGxC,sBAAAA,CAAuB4C,IAAIL,KAAK,CAAA,CAAA;AACnD,KAAA;AAwGJ;;ACzIA;;;;;IASO,SAASY,aAAAA,CACZlD,KAAc,EAAA;AAEd,IAAA,OAAO,OAAOA,KAAU,KAAA,QAAA,IACpB,OAAOA,KAAU,KAAA,QAAA,IACjB,OAAOA,KAAU,KAAA,WAAA,CAAA;AACzB,CAAA;AAEO,SAASmD,eAAAA,CACZnD,KAAc,EACdoD,MAAe,EAAA;IAEf,IAAI,OAAOA,WAAW,WAAa,EAAA;AAC/B,QAAA,OAAO,OAAOpD,KAAU,KAAA,UAAA,CAAA;AAC5B,KAAA;AAEA,IAAA,OAAO,OAAOA,KAAAA,KAAU,UACpBA,IAAAA,KAAAA,CAAMqD,MAAM,IAAID,MAAAA,CAAAA;AACxB;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { DisconnectDescription } from '../../types';\nimport type { ClientManagerTokenFn } from './types';\n\nexport function toClientManagerTokenAsyncFn(input?: string | ClientManagerTokenFn) {\n if (typeof input === 'undefined') {\n return () => undefined;\n }\n\n if (typeof input === 'string') {\n return () => input;\n }\n\n return input;\n}\n\nexport function isDisconnectDescription(input: unknown) : input is DisconnectDescription {\n return isObject(input) &&\n typeof input.description === 'string';\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\nimport type { CTSEvents, DefaultEvents, STCEvents } from '../../types';\nimport type { ClientManagerContext, ClientManagerTokenFn } from './types';\nimport { isDisconnectDescription, toClientManagerTokenAsyncFn } from './utils';\n\nexport class ClientManager<\n ListenEvents extends DefaultEvents = STCEvents,\n EmitEvents extends DefaultEvents = CTSEvents,\n> {\n protected manager : Manager<ListenEvents, EmitEvents>;\n\n protected sockets: Map<string, Socket<ListenEvents, EmitEvents>>;\n\n protected tokenFn : ClientManagerTokenFn;\n\n constructor(ctx: ClientManagerContext) {\n this.sockets = new Map();\n\n this.manager = new Manager(ctx.url, {\n autoConnect: false,\n ...ctx.options,\n });\n\n this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);\n }\n\n async connect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n const socket = this.inject(namespace);\n if (socket.connected) {\n return socket;\n }\n\n return new Promise((resolve, reject) => {\n socket.once('connect', () => {\n resolve(socket);\n });\n\n socket.once('connect_error', (err) => {\n reject(err);\n });\n\n socket.connect();\n });\n }\n\n async disconnect(namespace = '/') : Promise<void> {\n const socket = this.inject(namespace);\n if (!socket.connected) {\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n socket.once('disconnect', (\n reason,\n description,\n ) => {\n if (reason === 'io client disconnect') {\n resolve();\n return;\n }\n\n if (isDisconnectDescription(description)) {\n reject(new Error(description.description));\n return;\n }\n\n reject(description);\n });\n\n socket.disconnect();\n });\n }\n\n async reconnect(namespace = '/') : Promise<Socket<ListenEvents, EmitEvents>> {\n await this.disconnect(namespace);\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this.connect(namespace)\n .then((socket) => resolve(socket))\n .catch((err) => reject(err));\n });\n });\n }\n\n async reconnectAll() : Promise<Socket<ListenEvents, EmitEvents>[]> {\n const keys = this.sockets.keys();\n const promises : Promise<Socket<ListenEvents, EmitEvents>>[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const key = keys.next();\n if (key.done) {\n break;\n }\n\n promises.push(this.reconnect(key.value));\n }\n\n return Promise.all(promises);\n }\n\n inject(namespace = '/') : Socket<ListenEvents, EmitEvents> {\n if (this.sockets.has(namespace)) {\n return this.sockets.get(namespace);\n }\n\n const socket = this.manager.socket(namespace, {\n auth: (cb: CallableFunction) => {\n Promise.resolve()\n .then(() => this.tokenFn())\n .then((token) => {\n cb({ token });\n })\n .catch(() => cb());\n },\n });\n\n this.sockets.set(namespace, socket);\n\n return socket;\n }\n\n eject(namespace = '/') {\n if (this.sockets[namespace]) {\n this.sockets[namespace].disconnect();\n delete this.sockets[namespace];\n }\n }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EventCallback, EventTarget } from './types';\n\nexport function isEventTarget(\n input: unknown,\n) : input is EventTarget {\n return typeof input === 'number' ||\n typeof input === 'string' ||\n typeof input === 'undefined';\n}\n\nexport function isEventCallback(\n input: unknown,\n fnArgs?: number,\n) : input is EventCallback {\n if (typeof fnArgs === 'undefined') {\n return typeof input === 'function';\n }\n\n return typeof input === 'function' &&\n input.length >= fnArgs;\n}\n"],"names":["toClientManagerTokenAsyncFn","input","undefined","isDisconnectDescription","isObject","description","ClientManager","connect","namespace","socket","inject","connected","Promise","resolve","reject","once","err","disconnect","reason","Error","reconnect","setTimeout","then","catch","reconnectAll","keys","sockets","promises","key","next","done","push","value","all","has","get","manager","auth","cb","tokenFn","token","set","eject","constructor","ctx","Map","Manager","url","autoConnect","options","isEventTarget","isEventCallback","fnArgs","length"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authup/core-realtime-kit",
3
- "version": "1.0.0-beta.19",
3
+ "version": "1.0.0-beta.21",
4
4
  "description": "Package containing a toolkit for the core realtime service.",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -41,15 +41,15 @@
41
41
  },
42
42
  "homepage": "https://github.com/authup/authup#readme",
43
43
  "devDependencies": {
44
- "@authup/kit": "^1.0.0-beta.19",
45
- "@authup/core-kit": "^1.0.0-beta.19",
46
- "socket.io": "^4.7.5",
47
- "socket.io-client": "^4.7.5"
44
+ "@authup/kit": "^1.0.0-beta.21",
45
+ "@authup/core-kit": "^1.0.0-beta.21",
46
+ "socket.io": "^4.8.0",
47
+ "socket.io-client": "^4.8.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@authup/kit": "^1.0.0-beta.18",
51
- "@authup/core-kit": "^1.0.0-beta.18",
52
- "socket.io-client": "^4.7.5"
50
+ "@authup/kit": "^1.0.0-beta.21",
51
+ "@authup/core-kit": "^1.0.0-beta.21",
52
+ "socket.io-client": "^4.8.0"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public"