@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.
- package/dist/client/manager/module.d.ts.map +1 -1
- package/dist/client/manager/types.d.ts +3 -1
- package/dist/client/manager/types.d.ts.map +1 -1
- package/dist/client/manager/utils.d.ts +1 -1
- package/dist/client/manager/utils.d.ts.map +1 -1
- package/dist/index.cjs +4 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -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;
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
|
|
83
|
-
if (token) {
|
|
82
|
+
Promise.resolve().then(()=>this.tokenFn()).then((token)=>{
|
|
84
83
|
cb({
|
|
85
84
|
token
|
|
86
85
|
});
|
|
87
|
-
|
|
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 =
|
|
104
|
+
this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
|
|
109
105
|
}
|
|
110
106
|
}
|
|
111
107
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
81
|
-
if (token) {
|
|
80
|
+
Promise.resolve().then(()=>this.tokenFn()).then((token)=>{
|
|
82
81
|
cb({
|
|
83
82
|
token
|
|
84
83
|
});
|
|
85
|
-
|
|
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 =
|
|
102
|
+
this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
|
|
107
103
|
}
|
|
108
104
|
}
|
|
109
105
|
|
package/dist/index.mjs.map
CHANGED
|
@@ -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":"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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.
|
|
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.
|
|
45
|
-
"@authup/core-kit": "^1.0.0-beta.
|
|
46
|
-
"socket.io": "^4.
|
|
47
|
-
"socket.io-client": "^4.
|
|
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.
|
|
51
|
-
"@authup/core-kit": "^1.0.0-beta.
|
|
52
|
-
"socket.io-client": "^4.
|
|
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"
|