@authup/core-realtime-kit 1.0.0-beta.20 → 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;IAqB1D,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"}
package/dist/index.cjs CHANGED
@@ -99,7 +99,6 @@ class ClientManager {
99
99
  this.sockets = new Map();
100
100
  this.manager = new socket_ioClient.Manager(ctx.url, {
101
101
  autoConnect: false,
102
- reconnectionAttempts: 10,
103
102
  ...ctx.options
104
103
  });
105
104
  this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
@@ -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 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 reconnectionAttempts: 10,\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","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
@@ -97,7 +97,6 @@ class ClientManager {
97
97
  this.sockets = new Map();
98
98
  this.manager = new Manager(ctx.url, {
99
99
  autoConnect: false,
100
- reconnectionAttempts: 10,
101
100
  ...ctx.options
102
101
  });
103
102
  this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
@@ -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 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 reconnectionAttempts: 10,\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","reconnectionAttempts","options","isEventTarget","isEventCallback","fnArgs","length"],"mappings":"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"}
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.20",
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,14 +41,14 @@
41
41
  },
42
42
  "homepage": "https://github.com/authup/authup#readme",
43
43
  "devDependencies": {
44
- "@authup/kit": "^1.0.0-beta.20",
45
- "@authup/core-kit": "^1.0.0-beta.20",
44
+ "@authup/kit": "^1.0.0-beta.21",
45
+ "@authup/core-kit": "^1.0.0-beta.21",
46
46
  "socket.io": "^4.8.0",
47
47
  "socket.io-client": "^4.8.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@authup/kit": "^1.0.0-beta.20",
51
- "@authup/core-kit": "^1.0.0-beta.20",
50
+ "@authup/kit": "^1.0.0-beta.21",
51
+ "@authup/core-kit": "^1.0.0-beta.21",
52
52
  "socket.io-client": "^4.8.0"
53
53
  },
54
54
  "publishConfig": {