@authup/core-realtime-kit 1.0.0-beta.22 → 1.0.0-beta.24

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.
@@ -0,0 +1,8 @@
1
+ export declare enum EventNameSuffix {
2
+ CREATED = "created",
3
+ DELETED = "deleted",
4
+ UPDATED = "updated",
5
+ SUBSCRIBE = "subscribe",
6
+ UNSUBSCRIBE = "unsubscribe"
7
+ }
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/event/constants.ts"],"names":[],"mappings":"AAOA,oBAAY,eAAe;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IAEnB,SAAS,cAAc;IACvB,WAAW,gBAAgB;CAC9B"}
@@ -0,0 +1,4 @@
1
+ export * from './constants';
2
+ export * from './types';
3
+ export * from './utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/event/index.ts"],"names":[],"mappings":"AAOA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type EventPayload = {
2
+ event: string;
3
+ type: string;
4
+ data: Record<string, any>;
5
+ };
6
+ export type EventFullName<ENTITY extends string = string, EVENT extends string = string> = `${ENTITY}${Capitalize<EVENT>}`;
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/event/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,CACrB,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,SAAS,MAAM,GAAG,MAAM,IAC7B,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { EventFullName } from './types';
2
+ export declare function buildEventFullName<ENTITY extends string, VERB extends string>(entity: ENTITY, event: VERB): EventFullName<ENTITY, VERB>;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/event/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,kBAAkB,CAC9B,MAAM,SAAS,MAAM,EACrB,IAAI,SAAS,MAAM,EAEnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,GACX,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAI9B"}
package/dist/index.cjs CHANGED
@@ -106,7 +106,31 @@ class ClientManager {
106
106
  }
107
107
 
108
108
  /*
109
- * Copyright (c) 2021.
109
+ * Copyright (c) 2024-2024.
110
+ * Author Peter Placzek (tada5hi)
111
+ * For the full copyright and license information,
112
+ * view the LICENSE file that was distributed with this source code.
113
+ */ var EventNameSuffix = /*#__PURE__*/ function(EventNameSuffix) {
114
+ EventNameSuffix["CREATED"] = "created";
115
+ EventNameSuffix["DELETED"] = "deleted";
116
+ EventNameSuffix["UPDATED"] = "updated";
117
+ EventNameSuffix["SUBSCRIBE"] = "subscribe";
118
+ EventNameSuffix["UNSUBSCRIBE"] = "unsubscribe";
119
+ return EventNameSuffix;
120
+ }({});
121
+
122
+ /*
123
+ * Copyright (c) 2023-2024.
124
+ * Author Peter Placzek (tada5hi)
125
+ * For the full copyright and license information,
126
+ * view the LICENSE file that was distributed with this source code.
127
+ */ function buildEventFullName(entity, event) {
128
+ const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);
129
+ return entity + eventCapitalized;
130
+ }
131
+
132
+ /*
133
+ * Copyright (c) 2021-2024.
110
134
  * Author Peter Placzek (tada5hi)
111
135
  * For the full copyright and license information,
112
136
  * view the LICENSE file that was distributed with this source code.
@@ -121,6 +145,8 @@ function isEventCallback(input, fnArgs) {
121
145
  }
122
146
 
123
147
  exports.ClientManager = ClientManager;
148
+ exports.EventNameSuffix = EventNameSuffix;
149
+ exports.buildEventFullName = buildEventFullName;
124
150
  exports.isEventCallback = isEventCallback;
125
151
  exports.isEventTarget = isEventTarget;
126
152
  //# sourceMappingURL=index.cjs.map
@@ -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 ...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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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/event/constants.ts","../src/event/utils.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-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-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) 2024-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\nexport enum EventNameSuffix {\n CREATED = 'created',\n DELETED = 'deleted',\n UPDATED = 'updated',\n\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n","/*\n * Copyright (c) 2023-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 { EventFullName } from './types';\n\nexport function buildEventFullName<\n ENTITY extends string,\n VERB extends string,\n>(\n entity: ENTITY,\n event: VERB,\n) : EventFullName<ENTITY, VERB> {\n const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);\n\n return entity + eventCapitalized as EventFullName<ENTITY, VERB>;\n}\n","/*\n * Copyright (c) 2021-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 { 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","EventNameSuffix","buildEventFullName","entity","event","eventCapitalized","substring","toUpperCase","isEventTarget","isEventCallback","fnArgs","length"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './client';
2
+ export * from './event';
2
3
  export * from './helpers';
3
4
  export * from './types';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
package/dist/index.mjs CHANGED
@@ -104,7 +104,31 @@ class ClientManager {
104
104
  }
105
105
 
106
106
  /*
107
- * Copyright (c) 2021.
107
+ * Copyright (c) 2024-2024.
108
+ * Author Peter Placzek (tada5hi)
109
+ * For the full copyright and license information,
110
+ * view the LICENSE file that was distributed with this source code.
111
+ */ var EventNameSuffix = /*#__PURE__*/ function(EventNameSuffix) {
112
+ EventNameSuffix["CREATED"] = "created";
113
+ EventNameSuffix["DELETED"] = "deleted";
114
+ EventNameSuffix["UPDATED"] = "updated";
115
+ EventNameSuffix["SUBSCRIBE"] = "subscribe";
116
+ EventNameSuffix["UNSUBSCRIBE"] = "unsubscribe";
117
+ return EventNameSuffix;
118
+ }({});
119
+
120
+ /*
121
+ * Copyright (c) 2023-2024.
122
+ * Author Peter Placzek (tada5hi)
123
+ * For the full copyright and license information,
124
+ * view the LICENSE file that was distributed with this source code.
125
+ */ function buildEventFullName(entity, event) {
126
+ const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);
127
+ return entity + eventCapitalized;
128
+ }
129
+
130
+ /*
131
+ * Copyright (c) 2021-2024.
108
132
  * Author Peter Placzek (tada5hi)
109
133
  * For the full copyright and license information,
110
134
  * view the LICENSE file that was distributed with this source code.
@@ -118,5 +142,5 @@ function isEventCallback(input, fnArgs) {
118
142
  return typeof input === 'function' && input.length >= fnArgs;
119
143
  }
120
144
 
121
- export { ClientManager, isEventCallback, isEventTarget };
145
+ export { ClientManager, EventNameSuffix, buildEventFullName, isEventCallback, isEventTarget };
122
146
  //# sourceMappingURL=index.mjs.map
@@ -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 ...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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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/event/constants.ts","../src/event/utils.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-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-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) 2024-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\nexport enum EventNameSuffix {\n CREATED = 'created',\n DELETED = 'deleted',\n UPDATED = 'updated',\n\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n","/*\n * Copyright (c) 2023-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 { EventFullName } from './types';\n\nexport function buildEventFullName<\n ENTITY extends string,\n VERB extends string,\n>(\n entity: ENTITY,\n event: VERB,\n) : EventFullName<ENTITY, VERB> {\n const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);\n\n return entity + eventCapitalized as EventFullName<ENTITY, VERB>;\n}\n","/*\n * Copyright (c) 2021-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 { 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","EventNameSuffix","buildEventFullName","entity","event","eventCapitalized","substring","toUpperCase","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.22",
3
+ "version": "1.0.0-beta.24",
4
4
  "description": "Package containing a toolkit for the core realtime service.",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
@@ -41,15 +41,13 @@
41
41
  },
42
42
  "homepage": "https://github.com/authup/authup#readme",
43
43
  "devDependencies": {
44
- "@authup/kit": "^1.0.0-beta.22",
45
- "@authup/core-kit": "^1.0.0-beta.22",
46
- "socket.io": "^4.8.0",
47
- "socket.io-client": "^4.8.0"
44
+ "@authup/kit": "^1.0.0-beta.24",
45
+ "socket.io": "^4.8.1",
46
+ "socket.io-client": "^4.8.1"
48
47
  },
49
48
  "peerDependencies": {
50
- "@authup/kit": "^1.0.0-beta.22",
51
- "@authup/core-kit": "^1.0.0-beta.22",
52
- "socket.io-client": "^4.8.0"
49
+ "@authup/kit": "^1.0.0-beta.24",
50
+ "socket.io-client": "^4.8.1"
53
51
  },
54
52
  "publishConfig": {
55
53
  "access": "public"