@authup/core-realtime-kit 1.0.0-beta.34 → 1.0.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +82 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +127 -170
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -6
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Manager, ManagerOptions, Socket } from "socket.io-client";
|
|
2
|
+
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
type STCEventContext<T extends Record<string, any>> = T & {
|
|
5
|
+
meta: {
|
|
6
|
+
roomName?: string;
|
|
7
|
+
roomId?: string | number;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
type EventTarget = string | number | undefined;
|
|
11
|
+
interface EventCallback<T = any> {
|
|
12
|
+
(error: Error | null): void;
|
|
13
|
+
(error: Error | null, data: T): void;
|
|
14
|
+
}
|
|
15
|
+
type DefaultEvents = {
|
|
16
|
+
[event: string]: any;
|
|
17
|
+
};
|
|
18
|
+
type STSEvents = {
|
|
19
|
+
[event: string]: (...args: any[]) => void;
|
|
20
|
+
};
|
|
21
|
+
type STCEvents = {
|
|
22
|
+
[event: string]: (...args: any[]) => void;
|
|
23
|
+
};
|
|
24
|
+
type CTSEvents = {
|
|
25
|
+
[event: string]: (...args: any[]) => void;
|
|
26
|
+
};
|
|
27
|
+
type DisconnectDescription = {
|
|
28
|
+
description: string;
|
|
29
|
+
context?: unknown;
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/client/manager/types.d.ts
|
|
33
|
+
type ClientManagerTokenSyncFn = () => string | undefined;
|
|
34
|
+
type ClientManagerTokenAsyncFn = () => Promise<string | undefined>;
|
|
35
|
+
type ClientManagerTokenFn = ClientManagerTokenSyncFn | ClientManagerTokenAsyncFn;
|
|
36
|
+
type ClientManagerContext = {
|
|
37
|
+
url: string;
|
|
38
|
+
options?: Partial<ManagerOptions>;
|
|
39
|
+
token?: string | ClientManagerTokenFn;
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/client/manager/module.d.ts
|
|
43
|
+
declare class ClientManager<ListenEvents extends DefaultEvents = STCEvents, EmitEvents extends DefaultEvents = CTSEvents> {
|
|
44
|
+
protected manager: Manager<ListenEvents, EmitEvents>;
|
|
45
|
+
protected sockets: Map<string, Socket<ListenEvents, EmitEvents>>;
|
|
46
|
+
protected tokenFn: ClientManagerTokenFn;
|
|
47
|
+
constructor(ctx: ClientManagerContext);
|
|
48
|
+
get options(): Partial<ManagerOptions>;
|
|
49
|
+
connect(namespace?: string): Promise<Socket<ListenEvents, EmitEvents>>;
|
|
50
|
+
disconnect(namespace?: string): Promise<void>;
|
|
51
|
+
reconnect(namespace?: string): Promise<Socket<ListenEvents, EmitEvents>>;
|
|
52
|
+
reconnectAll(): Promise<Socket<ListenEvents, EmitEvents>[]>;
|
|
53
|
+
inject(namespace?: string): Socket<ListenEvents, EmitEvents>;
|
|
54
|
+
eject(namespace?: string): void;
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/event/constants.d.ts
|
|
58
|
+
declare enum EventNameSuffix {
|
|
59
|
+
CREATED = "created",
|
|
60
|
+
DELETED = "deleted",
|
|
61
|
+
UPDATED = "updated",
|
|
62
|
+
SUBSCRIBE = "subscribe",
|
|
63
|
+
UNSUBSCRIBE = "unsubscribe"
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/event/types.d.ts
|
|
67
|
+
type EventPayload = {
|
|
68
|
+
event: string;
|
|
69
|
+
type: string;
|
|
70
|
+
data: Record<string, any>;
|
|
71
|
+
};
|
|
72
|
+
type EventFullName<ENTITY extends string = string, EVENT extends string = string> = `${ENTITY}${Capitalize<EVENT>}`;
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/event/helpers.d.ts
|
|
75
|
+
declare function buildEventFullName<ENTITY extends string, VERB extends string>(entity: ENTITY, event: VERB): EventFullName<ENTITY, VERB>;
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/helpers.d.ts
|
|
78
|
+
declare function isEventTarget(input: unknown): input is EventTarget;
|
|
79
|
+
declare function isEventCallback(input: unknown, fnArgs?: number): input is EventCallback;
|
|
80
|
+
//#endregion
|
|
81
|
+
export { CTSEvents, ClientManager, ClientManagerContext, ClientManagerTokenAsyncFn, ClientManagerTokenFn, ClientManagerTokenSyncFn, DefaultEvents, DisconnectDescription, EventCallback, EventFullName, EventNameSuffix, EventPayload, EventTarget, STCEventContext, STCEvents, STSEvents, buildEventFullName, isEventCallback, isEventTarget };
|
|
82
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/client/manager/types.ts","../src/client/manager/module.ts","../src/event/constants.ts","../src/event/types.ts","../src/event/helpers.ts","../src/helpers.ts"],"mappings":";;;KAOY,eAAA,WAA0B,MAAA,iBAAuB,CAAA;EACzD,IAAA;IACI,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,KAII,WAAA;AAAA,UACK,aAAA;EAAA,CACZ,KAAA,EAAO,KAAA;EAAA,CACP,KAAA,EAAO,KAAA,SAAc,IAAA,EAAM,CAAA;AAAA;AAAA,KAGpB,aAAA;EAAA,CACP,KAAA;AAAA;AAAA,KAGO,SAAA;EAAA,CACP,KAAA,eAAoB,IAAA;AAAA;AAAA,KAGb,SAAA;EAAA,CACP,KAAA,eAAoB,IAAA;AAAA;AAAA,KAGb,SAAA;EAAA,CACP,KAAA,eAAoB,IAAA;AAAA;AAAA,KAGb,qBAAA;EACR,WAAA;EACA,OAAA;AAAA;;;KC7BQ,wBAAA;AAAA,KACA,yBAAA,SAAkC,OAAA;AAAA,KAClC,oBAAA,GAAuB,wBAAA,GAA2B,yBAAA;AAAA,KAElD,oBAAA;EACR,GAAA;EACA,OAAA,GAAU,OAAA,CAAQ,cAAA;EAClB,KAAA,YAAiB,oBAAA;AAAA;;;cCFR,aAAA,sBACY,aAAA,GAAgB,SAAA,qBAClB,aAAA,GAAgB,SAAA;EAAA,UAEzB,OAAA,EAAU,OAAA,CAAQ,YAAA,EAAc,UAAA;EAAA,UAEhC,OAAA,EAAS,GAAA,SAAY,MAAA,CAAO,YAAA,EAAc,UAAA;EAAA,UAE1C,OAAA,EAAU,oBAAA;cAER,GAAA,EAAK,oBAAA;EAAA,IA4Bb,OAAA,CAAA,GAAO,OAAA,CAAA,cAAA;EAIL,OAAA,CAAQ,SAAA,YAAmB,OAAA,CAAQ,MAAA,CAAO,YAAA,EAAc,UAAA;EAmBxD,UAAA,CAAW,SAAA,YAAmB,OAAA;EA4B9B,SAAA,CAAU,SAAA,YAAmB,OAAA,CAAQ,MAAA,CAAO,YAAA,EAAc,UAAA;EAW1D,YAAA,CAAA,GAAiB,OAAA,CAAQ,MAAA,CAAO,YAAA,EAAc,UAAA;EAgBpD,MAAA,CAAO,SAAA,YAAmB,MAAA,CAAO,YAAA,EAAc,UAAA;EAsB/C,KAAA,CAAM,SAAA;AAAA;;;aCjJE,eAAA;EACR,OAAA;EACA,OAAA;EACA,OAAA;EAEA,SAAA;EACA,WAAA;AAAA;;;KCNQ,YAAA;EACR,KAAA;EACA,IAAA;EACA,IAAA,EAAM,MAAA;AAAA;AAAA,KAGE,aAAA,qEAGL,MAAA,GAAS,UAAA,CAAW,KAAA;;;iBCPX,kBAAA,4CAAA,CAIZ,MAAA,EAAQ,MAAA,EACR,KAAA,EAAO,IAAA,GACP,aAAA,CAAc,MAAA,EAAQ,IAAA;;;iBCNV,aAAA,CACZ,KAAA,YACA,KAAA,IAAS,WAAA;AAAA,iBAMG,eAAA,CACZ,KAAA,WACA,MAAA,YACA,KAAA,IAAS,aAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,181 +1,138 @@
|
|
|
1
|
-
import { Manager } from
|
|
2
|
-
import { isObject } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* For the full copyright and license information,
|
|
8
|
-
* view the LICENSE file that was distributed with this source code.
|
|
9
|
-
*/ function cleanDoubleSlashes(input = '') {
|
|
10
|
-
if (input.includes('://')) {
|
|
11
|
-
return input.split('://').map((str)=>cleanDoubleSlashes(str)).join('://');
|
|
12
|
-
}
|
|
13
|
-
return input.replace(/\/+/g, '/');
|
|
1
|
+
import { Manager } from "socket.io-client";
|
|
2
|
+
import { isObject } from "@authup/kit";
|
|
3
|
+
//#region src/utils/url.ts
|
|
4
|
+
function cleanDoubleSlashes(input = "") {
|
|
5
|
+
if (input.includes("://")) return input.split("://").map((str) => cleanDoubleSlashes(str)).join("://");
|
|
6
|
+
return input.replace(/\/+/g, "/");
|
|
14
7
|
}
|
|
15
|
-
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/client/manager/utils.ts
|
|
16
10
|
function toClientManagerTokenAsyncFn(input) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (typeof input === 'string') {
|
|
21
|
-
return ()=>input;
|
|
22
|
-
}
|
|
23
|
-
return input;
|
|
11
|
+
if (typeof input === "undefined") return () => void 0;
|
|
12
|
+
if (typeof input === "string") return () => input;
|
|
13
|
+
return input;
|
|
24
14
|
}
|
|
25
15
|
function isDisconnectDescription(input) {
|
|
26
|
-
|
|
16
|
+
return isObject(input) && typeof input.description === "string";
|
|
27
17
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return socket;
|
|
131
|
-
}
|
|
132
|
-
eject(namespace = '/') {
|
|
133
|
-
const socket = this.sockets.get(namespace);
|
|
134
|
-
if (socket) {
|
|
135
|
-
socket.disconnect();
|
|
136
|
-
this.sockets.delete(namespace);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/*
|
|
142
|
-
* Copyright (c) 2024-2024.
|
|
143
|
-
* Author Peter Placzek (tada5hi)
|
|
144
|
-
* For the full copyright and license information,
|
|
145
|
-
* view the LICENSE file that was distributed with this source code.
|
|
146
|
-
*/ var EventNameSuffix = /*#__PURE__*/ function(EventNameSuffix) {
|
|
147
|
-
EventNameSuffix["CREATED"] = "created";
|
|
148
|
-
EventNameSuffix["DELETED"] = "deleted";
|
|
149
|
-
EventNameSuffix["UPDATED"] = "updated";
|
|
150
|
-
EventNameSuffix["SUBSCRIBE"] = "subscribe";
|
|
151
|
-
EventNameSuffix["UNSUBSCRIBE"] = "unsubscribe";
|
|
152
|
-
return EventNameSuffix;
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/client/manager/module.ts
|
|
20
|
+
var ClientManager = class {
|
|
21
|
+
manager;
|
|
22
|
+
sockets;
|
|
23
|
+
tokenFn;
|
|
24
|
+
constructor(ctx) {
|
|
25
|
+
this.sockets = /* @__PURE__ */ new Map();
|
|
26
|
+
const url = new URL(ctx.url);
|
|
27
|
+
const baseURL = `${url.protocol}//${url.host}`;
|
|
28
|
+
const options = { ...ctx.options || {} };
|
|
29
|
+
if (options.path) {
|
|
30
|
+
if (url.pathname.endsWith(options.path)) options.path = url.pathname;
|
|
31
|
+
else if (url.pathname !== "/") options.path = cleanDoubleSlashes(url.pathname + options.path);
|
|
32
|
+
} else if (url.pathname.endsWith("/socket.io")) options.path = url.pathname;
|
|
33
|
+
else if (url.pathname !== "/") options.path = cleanDoubleSlashes(`${url.pathname}/socket.io`);
|
|
34
|
+
this.manager = new Manager(baseURL, {
|
|
35
|
+
autoConnect: false,
|
|
36
|
+
...options
|
|
37
|
+
});
|
|
38
|
+
this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);
|
|
39
|
+
}
|
|
40
|
+
get options() {
|
|
41
|
+
return this.manager.opts;
|
|
42
|
+
}
|
|
43
|
+
async connect(namespace = "/") {
|
|
44
|
+
const socket = this.inject(namespace);
|
|
45
|
+
if (socket.connected) return socket;
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
socket.once("connect", () => {
|
|
48
|
+
resolve(socket);
|
|
49
|
+
});
|
|
50
|
+
socket.once("connect_error", (err) => {
|
|
51
|
+
reject(err);
|
|
52
|
+
});
|
|
53
|
+
socket.connect();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async disconnect(namespace = "/") {
|
|
57
|
+
const socket = this.inject(namespace);
|
|
58
|
+
if (!socket.connected) return;
|
|
59
|
+
await new Promise((resolve, reject) => {
|
|
60
|
+
socket.once("disconnect", (reason, description) => {
|
|
61
|
+
if (reason === "io client disconnect") {
|
|
62
|
+
resolve();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (isDisconnectDescription(description)) {
|
|
66
|
+
reject(new Error(description.description));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
reject(description);
|
|
70
|
+
});
|
|
71
|
+
socket.disconnect();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async reconnect(namespace = "/") {
|
|
75
|
+
await this.disconnect(namespace);
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
setTimeout(() => {
|
|
78
|
+
this.connect(namespace).then((socket) => resolve(socket)).catch((err) => reject(err));
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async reconnectAll() {
|
|
83
|
+
const keys = this.sockets.keys();
|
|
84
|
+
const promises = [];
|
|
85
|
+
while (true) {
|
|
86
|
+
const key = keys.next();
|
|
87
|
+
if (key.done) break;
|
|
88
|
+
promises.push(this.reconnect(key.value));
|
|
89
|
+
}
|
|
90
|
+
return Promise.all(promises);
|
|
91
|
+
}
|
|
92
|
+
inject(namespace = "/") {
|
|
93
|
+
let socket = this.sockets.get(namespace);
|
|
94
|
+
if (socket) return socket;
|
|
95
|
+
socket = this.manager.socket(namespace, { auth: (cb) => {
|
|
96
|
+
Promise.resolve().then(() => this.tokenFn()).then((token) => {
|
|
97
|
+
cb({ token });
|
|
98
|
+
}).catch(() => cb());
|
|
99
|
+
} });
|
|
100
|
+
this.sockets.set(namespace, socket);
|
|
101
|
+
return socket;
|
|
102
|
+
}
|
|
103
|
+
eject(namespace = "/") {
|
|
104
|
+
const socket = this.sockets.get(namespace);
|
|
105
|
+
if (socket) {
|
|
106
|
+
socket.disconnect();
|
|
107
|
+
this.sockets.delete(namespace);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/event/constants.ts
|
|
113
|
+
let 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;
|
|
153
120
|
}({});
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
* For the full copyright and license information,
|
|
159
|
-
* view the LICENSE file that was distributed with this source code.
|
|
160
|
-
*/ function buildEventFullName(entity, event) {
|
|
161
|
-
const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);
|
|
162
|
-
return entity + eventCapitalized;
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/event/helpers.ts
|
|
123
|
+
function buildEventFullName(entity, event) {
|
|
124
|
+
return entity + (event.substring(0, 1).toUpperCase() + event.substring(1));
|
|
163
125
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
* For the full copyright and license information,
|
|
169
|
-
* view the LICENSE file that was distributed with this source code.
|
|
170
|
-
*/ function isEventTarget(input) {
|
|
171
|
-
return typeof input === 'number' || typeof input === 'string' || typeof input === 'undefined';
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/helpers.ts
|
|
128
|
+
function isEventTarget(input) {
|
|
129
|
+
return typeof input === "number" || typeof input === "string" || typeof input === "undefined";
|
|
172
130
|
}
|
|
173
131
|
function isEventCallback(input, fnArgs) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
return typeof input === 'function' && input.length >= fnArgs;
|
|
132
|
+
if (typeof fnArgs === "undefined") return typeof input === "function";
|
|
133
|
+
return typeof input === "function" && input.length >= fnArgs;
|
|
178
134
|
}
|
|
179
|
-
|
|
135
|
+
//#endregion
|
|
180
136
|
export { ClientManager, EventNameSuffix, buildEventFullName, isEventCallback, isEventTarget };
|
|
181
|
-
|
|
137
|
+
|
|
138
|
+
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/utils/url.ts","../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/event/constants.ts","../src/event/helpers.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 function cleanDoubleSlashes(input = ''): string {\n if (input.includes('://')) {\n return input.split('://')\n .map((str) => cleanDoubleSlashes(str))\n .join('://');\n }\n\n return input.replace(/\\/+/g, '/');\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 { 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 { ManagerOptions, Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\nimport type { CTSEvents, DefaultEvents, STCEvents } from '../../types';\nimport { cleanDoubleSlashes } from '../../utils';\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 const url = new URL(ctx.url);\n const baseURL = `${url.protocol}//${url.host}`;\n\n const options : Partial<ManagerOptions> = { ...(ctx.options || {}) };\n\n if (options.path) {\n if (url.pathname.endsWith(options.path)) {\n options.path = url.pathname;\n } else if (url.pathname !== '/') {\n options.path = cleanDoubleSlashes(url.pathname + options.path);\n }\n } else if (url.pathname.endsWith('/socket.io')) {\n options.path = url.pathname;\n } else if (url.pathname !== '/') {\n options.path = cleanDoubleSlashes(`${url.pathname}/socket.io`);\n }\n\n this.manager = new Manager(baseURL, {\n autoConnect: false,\n ...options,\n });\n\n this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);\n }\n\n get options() {\n return this.manager.opts;\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 \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 let socket = this.sockets.get(namespace);\n if (socket) {\n return socket;\n }\n\n 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 const socket = this.sockets.get(namespace);\n\n if (socket) {\n socket.disconnect();\n this.sockets.delete(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-2026.\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":["cleanDoubleSlashes","input","includes","split","map","str","join","replace","toClientManagerTokenAsyncFn","undefined","isDisconnectDescription","isObject","description","ClientManager","manager","sockets","tokenFn","ctx","Map","url","URL","baseURL","protocol","host","options","path","pathname","endsWith","Manager","autoConnect","token","opts","connect","namespace","socket","inject","connected","Promise","resolve","reject","once","err","disconnect","reason","Error","reconnect","setTimeout","then","catch","reconnectAll","keys","promises","key","next","done","push","value","all","get","auth","cb","set","eject","delete","EventNameSuffix","buildEventFullName","entity","event","eventCapitalized","substring","toUpperCase","isEventTarget","isEventCallback","fnArgs","length"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/utils/url.ts","../src/client/manager/utils.ts","../src/client/manager/module.ts","../src/event/constants.ts","../src/event/helpers.ts","../src/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-2026.\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 function cleanDoubleSlashes(input = ''): string {\n if (input.includes('://')) {\n return input.split('://')\n .map((str) => cleanDoubleSlashes(str))\n .join('://');\n }\n\n return input.replace(/\\/+/g, '/');\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 { 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 { ManagerOptions, Socket } from 'socket.io-client';\nimport { Manager } from 'socket.io-client';\nimport type { CTSEvents, DefaultEvents, STCEvents } from '../../types';\nimport { cleanDoubleSlashes } from '../../utils';\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 const url = new URL(ctx.url);\n const baseURL = `${url.protocol}//${url.host}`;\n\n const options : Partial<ManagerOptions> = { ...(ctx.options || {}) };\n\n if (options.path) {\n if (url.pathname.endsWith(options.path)) {\n options.path = url.pathname;\n } else if (url.pathname !== '/') {\n options.path = cleanDoubleSlashes(url.pathname + options.path);\n }\n } else if (url.pathname.endsWith('/socket.io')) {\n options.path = url.pathname;\n } else if (url.pathname !== '/') {\n options.path = cleanDoubleSlashes(`${url.pathname}/socket.io`);\n }\n\n this.manager = new Manager(baseURL, {\n autoConnect: false,\n ...options,\n });\n\n this.tokenFn = toClientManagerTokenAsyncFn(ctx.token);\n }\n\n get options() {\n return this.manager.opts;\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 \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 let socket = this.sockets.get(namespace);\n if (socket) {\n return socket;\n }\n\n 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 const socket = this.sockets.get(namespace);\n\n if (socket) {\n socket.disconnect();\n this.sockets.delete(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-2026.\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"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authup/core-realtime-kit",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.36",
|
|
5
5
|
"description": "Package containing a toolkit for the core realtime service.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"exports": {
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
|
21
|
-
"build:js": "
|
|
22
|
-
"build": "rimraf ./dist &&
|
|
23
|
-
"build:watch": "npm run build -- --watch",
|
|
21
|
+
"build:js": "tsdown",
|
|
22
|
+
"build": "rimraf ./dist && npm run build:js && npm run build:types",
|
|
24
23
|
"test": "cross-env NODE_ENV=test vitest run test/unit",
|
|
25
24
|
"test:coverage": "cross-env NODE_ENV=test vitest run --coverage"
|
|
26
25
|
},
|
|
@@ -51,13 +50,13 @@
|
|
|
51
50
|
},
|
|
52
51
|
"homepage": "https://github.com/authup/authup#readme",
|
|
53
52
|
"devDependencies": {
|
|
54
|
-
"@authup/kit": "^1.0.0-beta.
|
|
53
|
+
"@authup/kit": "^1.0.0-beta.36",
|
|
55
54
|
"socket.io": "^4.8.3",
|
|
56
55
|
"socket.io-client": "^4.8.3",
|
|
57
56
|
"vitest": "^4.0.14"
|
|
58
57
|
},
|
|
59
58
|
"peerDependencies": {
|
|
60
|
-
"@authup/kit": "^1.0.0-beta.
|
|
59
|
+
"@authup/kit": "^1.0.0-beta.36",
|
|
61
60
|
"socket.io-client": "^4.8.3"
|
|
62
61
|
},
|
|
63
62
|
"publishConfig": {
|