@hlmr/sdk-js 1.0.21 → 1.0.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.
- package/dist/cjs/client/HlmrClient.d.ts +6 -1
- package/dist/cjs/client/HlmrClient.d.ts.map +1 -1
- package/dist/cjs/client/HlmrClient.js +2 -0
- package/dist/cjs/client/HlmrClient.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/events.d.ts +46 -0
- package/dist/cjs/modules/events.d.ts.map +1 -0
- package/dist/cjs/modules/events.js +361 -0
- package/dist/cjs/modules/events.js.map +1 -0
- package/dist/cjs/types/events.d.ts +82 -0
- package/dist/cjs/types/events.d.ts.map +1 -0
- package/dist/cjs/types/events.js +3 -0
- package/dist/cjs/types/events.js.map +1 -0
- package/dist/cjs/utils/auth.d.ts +11 -0
- package/dist/cjs/utils/auth.d.ts.map +1 -0
- package/dist/cjs/utils/auth.js +64 -0
- package/dist/cjs/utils/auth.js.map +1 -0
- package/dist/esm/client/HlmrClient.d.ts +6 -1
- package/dist/esm/client/HlmrClient.d.ts.map +1 -1
- package/dist/esm/client/HlmrClient.js +2 -0
- package/dist/esm/client/HlmrClient.js.map +1 -1
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/events.d.ts +46 -0
- package/dist/esm/modules/events.d.ts.map +1 -0
- package/dist/esm/modules/events.js +357 -0
- package/dist/esm/modules/events.js.map +1 -0
- package/dist/esm/types/events.d.ts +82 -0
- package/dist/esm/types/events.d.ts.map +1 -0
- package/dist/esm/types/events.js +2 -0
- package/dist/esm/types/events.js.map +1 -0
- package/dist/esm/utils/auth.d.ts +11 -0
- package/dist/esm/utils/auth.d.ts.map +1 -0
- package/dist/esm/utils/auth.js +59 -0
- package/dist/esm/utils/auth.js.map +1 -0
- package/dist/types/client/HlmrClient.d.ts +6 -1
- package/dist/types/client/HlmrClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/events.d.ts +46 -0
- package/dist/types/modules/events.d.ts.map +1 -0
- package/dist/types/types/events.d.ts +82 -0
- package/dist/types/types/events.d.ts.map +1 -0
- package/dist/types/utils/auth.d.ts +11 -0
- package/dist/types/utils/auth.d.ts.map +1 -0
- package/dist/umd/hlmr-sdk.js +421 -0
- package/dist/umd/hlmr-sdk.js.map +1 -1
- package/dist/umd/hlmr-sdk.min.js +1 -1
- package/dist/umd/hlmr-sdk.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface LogoutOptions {
|
|
2
|
+
redirectUrl?: string;
|
|
3
|
+
onClearCache?: () => void;
|
|
4
|
+
idpBaseUrl?: string;
|
|
5
|
+
clientId?: string;
|
|
6
|
+
callbackPath?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function clearAllCache(onClearCache?: () => void): void;
|
|
9
|
+
export declare function preventBackNavigation(): void;
|
|
10
|
+
export declare function performLogout(options?: LogoutOptions): void;
|
|
11
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/utils/auth.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAK5B,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAM1B,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAqC7D;AAMD,wBAAgB,qBAAqB,IAAI,IAAI,CAgB5C;AAOD,wBAAgB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,IAAI,CAgC/D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearAllCache = clearAllCache;
|
|
4
|
+
exports.preventBackNavigation = preventBackNavigation;
|
|
5
|
+
exports.performLogout = performLogout;
|
|
6
|
+
function clearAllCache(onClearCache) {
|
|
7
|
+
if (onClearCache) {
|
|
8
|
+
try {
|
|
9
|
+
onClearCache();
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
console.warn('[AuthUtils] Error clearing app-specific cache:', e);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
localStorage.clear();
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
sessionStorage.clear();
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
document.cookie.split(";").forEach((c) => {
|
|
27
|
+
const eqPos = c.indexOf("=");
|
|
28
|
+
const name = eqPos > -1 ? c.substr(0, eqPos).trim() : c.trim();
|
|
29
|
+
document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;
|
|
30
|
+
document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/;domain=${window.location.hostname}`;
|
|
31
|
+
document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/;domain=.${window.location.hostname}`;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function preventBackNavigation() {
|
|
38
|
+
window.history.pushState(null, '', window.location.href);
|
|
39
|
+
const handlePopState = () => {
|
|
40
|
+
window.history.pushState(null, '', window.location.href);
|
|
41
|
+
};
|
|
42
|
+
window.addEventListener('popstate', handlePopState);
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
window.removeEventListener('popstate', handlePopState);
|
|
45
|
+
}, 5000);
|
|
46
|
+
}
|
|
47
|
+
function performLogout(options = {}) {
|
|
48
|
+
const { redirectUrl, onClearCache, idpBaseUrl, clientId, callbackPath } = options;
|
|
49
|
+
clearAllCache(onClearCache);
|
|
50
|
+
preventBackNavigation();
|
|
51
|
+
let finalRedirectUrl;
|
|
52
|
+
if (redirectUrl) {
|
|
53
|
+
finalRedirectUrl = redirectUrl;
|
|
54
|
+
}
|
|
55
|
+
else if (idpBaseUrl && clientId && callbackPath) {
|
|
56
|
+
const finalLoginUrl = `${idpBaseUrl}/login?client_id=${clientId}&redirect_uri=${encodeURIComponent(window.location.origin + callbackPath)}`;
|
|
57
|
+
finalRedirectUrl = `${idpBaseUrl}/logout?redirect_uri=${encodeURIComponent(finalLoginUrl)}`;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
finalRedirectUrl = '/login';
|
|
61
|
+
}
|
|
62
|
+
window.location.replace(finalRedirectUrl);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/utils/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,18 @@ import { AuthModule } from '../modules/auth';
|
|
|
4
4
|
import { UserModule } from '../modules/user';
|
|
5
5
|
import { SystemModule } from '../modules/system';
|
|
6
6
|
import { AppsModule } from '../modules/apps';
|
|
7
|
+
import { EventsModule } from '../modules/events';
|
|
8
|
+
import type { EventsModuleConfig } from '../types/events';
|
|
7
9
|
export declare class HlmrClient {
|
|
8
10
|
private httpClient;
|
|
9
11
|
readonly auth: AuthModule;
|
|
10
12
|
readonly user: UserModule;
|
|
11
13
|
readonly system: SystemModule;
|
|
12
14
|
readonly apps: AppsModule;
|
|
13
|
-
|
|
15
|
+
readonly events: EventsModule;
|
|
16
|
+
constructor(options: HlmrClientOptions & {
|
|
17
|
+
eventsConfig?: EventsModuleConfig;
|
|
18
|
+
});
|
|
14
19
|
private buildConfig;
|
|
15
20
|
setBearerToken(token: string): void;
|
|
16
21
|
clearBearerToken(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HlmrClient.d.ts","sourceRoot":"","sources":["../../../src/client/HlmrClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"HlmrClient.d.ts","sourceRoot":"","sources":["../../../src/client/HlmrClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK1D,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAG/B,SAAgB,IAAI,EAAE,UAAU,CAAC;IAGjC,SAAgB,IAAI,EAAE,UAAU,CAAC;IAGjC,SAAgB,MAAM,EAAE,YAAY,CAAC;IAGrC,SAAgB,IAAI,EAAE,UAAU,CAAC;IAGjC,SAAgB,MAAM,EAAE,YAAY,CAAC;gBAEzB,OAAO,EAAE,iBAAiB,GAAG;QAAE,YAAY,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAe9E,OAAO,CAAC,WAAW;IAoCnB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUnC,gBAAgB,IAAI,IAAI;IAOxB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUlC,cAAc,IAAI,IAAI;IAOtB,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IActC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI;IAOjF,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOhC,MAAM,CAAC,cAAc,CACnB,WAAW,EAAE,MAAM,OAAO,YAAY,EACtC,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,UAAU;IAab,MAAM,CAAC,aAAa,CAAC,KAAK,GAAE,MAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU;IASjF,MAAM,CAAC,cAAc,CAAC,KAAK,GAAE,MAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU;IASlF,MAAM,CAAC,UAAU,CAAC,KAAK,GAAE,MAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU;IAaxE,aAAa,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;CAInE"}
|
|
@@ -5,6 +5,7 @@ import { AuthModule } from '../modules/auth';
|
|
|
5
5
|
import { UserModule } from '../modules/user';
|
|
6
6
|
import { SystemModule } from '../modules/system';
|
|
7
7
|
import { AppsModule } from '../modules/apps';
|
|
8
|
+
import { EventsModule } from '../modules/events';
|
|
8
9
|
export class HlmrClient {
|
|
9
10
|
constructor(options) {
|
|
10
11
|
const config = this.buildConfig(options);
|
|
@@ -13,6 +14,7 @@ export class HlmrClient {
|
|
|
13
14
|
this.user = new UserModule(this.httpClient);
|
|
14
15
|
this.system = new SystemModule(this.httpClient);
|
|
15
16
|
this.apps = new AppsModule(this.httpClient);
|
|
17
|
+
this.events = new EventsModule(this.httpClient, options.eventsConfig);
|
|
16
18
|
}
|
|
17
19
|
buildConfig(options) {
|
|
18
20
|
var _a, _b, _c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HlmrClient.js","sourceRoot":"","sources":["../../../src/client/HlmrClient.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"HlmrClient.js","sourceRoot":"","sources":["../../../src/client/HlmrClient.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -5,10 +5,14 @@ export type { UserProfile } from './types/user';
|
|
|
5
5
|
export type { SystemPingResponse, SystemPingOptions, SystemVersionResponse } from './types/system';
|
|
6
6
|
export type { LogSessionOptions, LogSessionResponse } from './modules/apps';
|
|
7
7
|
export { AppsModule } from './modules/apps';
|
|
8
|
+
export { EventsModule } from './modules/events';
|
|
9
|
+
export type { Subscription, SubscriptionOptions, SubscriptionFilters, EventNotification, SystemNotification, ConnectedMessage, SubscriptionConfirmedMessage, UnsubscribedMessage, ErrorMessage, WebSocketMessage, EventsModuleConfig, EventsModuleEvents } from './types/events';
|
|
8
10
|
export { HlmrApiError } from './types/errors';
|
|
9
11
|
export type { JSendResponse, JSendSuccessResponse, JSendFailResponse, JSendErrorResponse } from './types/errors';
|
|
10
12
|
export type { HttpClient } from './utils/http';
|
|
11
13
|
export { isJSendResponse, isJSendSuccess, isJSendFail, isJSendError } from './utils/jsend';
|
|
14
|
+
export { clearAllCache, preventBackNavigation, performLogout } from './utils/auth';
|
|
15
|
+
export type { LogoutOptions } from './utils/auth';
|
|
12
16
|
export declare const SDK_VERSION = "1.0.0";
|
|
13
17
|
export declare const SDK_NAME = "hlmr-sdk-js";
|
|
14
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,UAAU,EACX,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG3F,eAAO,MAAM,WAAW,UAAU,CAAC;AACnC,eAAO,MAAM,QAAQ,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,UAAU,EACX,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,eAAO,MAAM,WAAW,UAAU,CAAC;AACnC,eAAO,MAAM,QAAQ,gBAAgB,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { HlmrClient } from './client/HlmrClient';
|
|
2
2
|
export { AppsModule } from './modules/apps';
|
|
3
|
+
export { EventsModule } from './modules/events';
|
|
3
4
|
export { HlmrApiError } from './types/errors';
|
|
4
5
|
export { isJSendResponse, isJSendSuccess, isJSendFail, isJSendError } from './utils/jsend';
|
|
6
|
+
export { clearAllCache, preventBackNavigation, performLogout } from './utils/auth';
|
|
5
7
|
export const SDK_VERSION = '1.0.0';
|
|
6
8
|
export const SDK_NAME = 'hlmr-sdk-js';
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA6BjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAe9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG3F,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA6BjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkBhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAe9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAInF,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { HttpClient } from '../utils/http';
|
|
2
|
+
import type { Subscription, SubscriptionOptions, ConnectedMessage, EventsModuleConfig, EventsModuleEvents } from '../types/events';
|
|
3
|
+
type EventCallback<K extends keyof EventsModuleEvents> = EventsModuleEvents[K];
|
|
4
|
+
export declare class EventsModule {
|
|
5
|
+
private http;
|
|
6
|
+
private config;
|
|
7
|
+
private ws;
|
|
8
|
+
private pingIntervalId;
|
|
9
|
+
private reconnectAttempts;
|
|
10
|
+
private reconnectTimeoutId;
|
|
11
|
+
private isConnecting;
|
|
12
|
+
private isManualDisconnect;
|
|
13
|
+
private subscriptions;
|
|
14
|
+
private pendingSubscriptions;
|
|
15
|
+
private listeners;
|
|
16
|
+
private userId;
|
|
17
|
+
constructor(http: HttpClient, config?: EventsModuleConfig);
|
|
18
|
+
connect(): Promise<ConnectedMessage>;
|
|
19
|
+
private _connect;
|
|
20
|
+
disconnect(): void;
|
|
21
|
+
subscribe(domain: string, resource: string, options?: SubscriptionOptions): Promise<Subscription>;
|
|
22
|
+
unsubscribe(subscriptionId: string): Promise<void>;
|
|
23
|
+
on<K extends keyof EventsModuleEvents>(event: K, callback: EventCallback<K>): void;
|
|
24
|
+
off<K extends keyof EventsModuleEvents>(event: K, callback: EventCallback<K>): void;
|
|
25
|
+
get isConnected(): boolean;
|
|
26
|
+
get currentUserId(): string | null;
|
|
27
|
+
getSubscriptions(): Map<string, {
|
|
28
|
+
domain: string;
|
|
29
|
+
resource: string;
|
|
30
|
+
options?: SubscriptionOptions;
|
|
31
|
+
}>;
|
|
32
|
+
ping(): void;
|
|
33
|
+
updateConfig(config: Partial<EventsModuleConfig>): void;
|
|
34
|
+
private _buildWebSocketUrl;
|
|
35
|
+
private _handleMessage;
|
|
36
|
+
private _handleSubscriptionConfirmed;
|
|
37
|
+
private _emit;
|
|
38
|
+
private _startPingInterval;
|
|
39
|
+
private _stopPingInterval;
|
|
40
|
+
private _scheduleReconnect;
|
|
41
|
+
private _resubscribeAll;
|
|
42
|
+
private _cleanup;
|
|
43
|
+
private _generateId;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/modules/events.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAInB,gBAAgB,EAKhB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAYzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAK/E,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAA8C;IACxE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAS;IAGnC,OAAO,CAAC,aAAa,CAA+F;IACpH,OAAO,CAAC,oBAAoB,CAMb;IAGf,OAAO,CAAC,SAAS,CAA2D;IAG5E,OAAO,CAAC,MAAM,CAAuB;gBAEzB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAUnD,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAgB5B,QAAQ;IAwEtB,UAAU,IAAI,IAAI;IAsBZ,SAAS,CACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,CAAC;IA2DlB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxD,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EACnC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,IAAI;IAaP,GAAG,CAAC,CAAC,SAAS,MAAM,kBAAkB,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,IAAI;IAUP,IAAI,WAAW,IAAI,OAAO,CAEzB;IAKD,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;IAKD,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAOpG,IAAI,IAAI,IAAI;IASZ,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAYvD,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,cAAc;IAsDtB,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,KAAK;IAgBb,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;YAmCZ,eAAe;IAsB7B,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
const DEFAULT_CONFIG = {
|
|
2
|
+
pingInterval: 30000,
|
|
3
|
+
autoReconnect: true,
|
|
4
|
+
maxReconnectAttempts: 5,
|
|
5
|
+
reconnectDelay: 1000,
|
|
6
|
+
maxReconnectDelay: 30000,
|
|
7
|
+
debug: false
|
|
8
|
+
};
|
|
9
|
+
export class EventsModule {
|
|
10
|
+
constructor(http, config) {
|
|
11
|
+
this.ws = null;
|
|
12
|
+
this.pingIntervalId = null;
|
|
13
|
+
this.reconnectAttempts = 0;
|
|
14
|
+
this.reconnectTimeoutId = null;
|
|
15
|
+
this.isConnecting = false;
|
|
16
|
+
this.isManualDisconnect = false;
|
|
17
|
+
this.subscriptions = new Map();
|
|
18
|
+
this.pendingSubscriptions = new Map();
|
|
19
|
+
this.listeners = new Map();
|
|
20
|
+
this.userId = null;
|
|
21
|
+
this.http = http;
|
|
22
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
23
|
+
}
|
|
24
|
+
async connect() {
|
|
25
|
+
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
26
|
+
throw new Error('Already connected');
|
|
27
|
+
}
|
|
28
|
+
if (this.isConnecting) {
|
|
29
|
+
throw new Error('Connection in progress');
|
|
30
|
+
}
|
|
31
|
+
this.isConnecting = true;
|
|
32
|
+
this.isManualDisconnect = false;
|
|
33
|
+
this.reconnectAttempts = 0;
|
|
34
|
+
return this._connect();
|
|
35
|
+
}
|
|
36
|
+
async _connect() {
|
|
37
|
+
return new Promise((resolve, reject) => {
|
|
38
|
+
try {
|
|
39
|
+
const wsUrl = this._buildWebSocketUrl();
|
|
40
|
+
if (this.config.debug) {
|
|
41
|
+
console.log('[EventsModule] Connecting to:', wsUrl);
|
|
42
|
+
}
|
|
43
|
+
this.ws = new WebSocket(wsUrl);
|
|
44
|
+
const connectionTimeout = setTimeout(() => {
|
|
45
|
+
if (this.ws && this.ws.readyState !== WebSocket.OPEN) {
|
|
46
|
+
this.ws.close();
|
|
47
|
+
this.isConnecting = false;
|
|
48
|
+
reject(new Error('Connection timeout'));
|
|
49
|
+
}
|
|
50
|
+
}, 10000);
|
|
51
|
+
this.ws.onopen = () => {
|
|
52
|
+
if (this.config.debug) {
|
|
53
|
+
console.log('[EventsModule] WebSocket connected');
|
|
54
|
+
}
|
|
55
|
+
clearTimeout(connectionTimeout);
|
|
56
|
+
this._startPingInterval();
|
|
57
|
+
};
|
|
58
|
+
this.ws.onmessage = (event) => {
|
|
59
|
+
try {
|
|
60
|
+
const message = JSON.parse(event.data);
|
|
61
|
+
this._handleMessage(message, resolve);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
if (this.config.debug) {
|
|
65
|
+
console.error('[EventsModule] Failed to parse message:', err);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
this.ws.onerror = (error) => {
|
|
70
|
+
if (this.config.debug) {
|
|
71
|
+
console.error('[EventsModule] WebSocket error:', error);
|
|
72
|
+
}
|
|
73
|
+
clearTimeout(connectionTimeout);
|
|
74
|
+
this.isConnecting = false;
|
|
75
|
+
this._emit('error', new Error('WebSocket error'));
|
|
76
|
+
};
|
|
77
|
+
this.ws.onclose = (event) => {
|
|
78
|
+
if (this.config.debug) {
|
|
79
|
+
console.log('[EventsModule] WebSocket closed:', event.code, event.reason);
|
|
80
|
+
}
|
|
81
|
+
clearTimeout(connectionTimeout);
|
|
82
|
+
this._stopPingInterval();
|
|
83
|
+
this.isConnecting = false;
|
|
84
|
+
this._emit('disconnect', event.reason || 'Connection closed');
|
|
85
|
+
if (!this.isManualDisconnect && this.config.autoReconnect) {
|
|
86
|
+
this._scheduleReconnect();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.isConnecting = false;
|
|
92
|
+
reject(err);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
disconnect() {
|
|
97
|
+
this.isManualDisconnect = true;
|
|
98
|
+
this._cleanup();
|
|
99
|
+
if (this.ws) {
|
|
100
|
+
this.ws.close(1000, 'Client disconnect');
|
|
101
|
+
this.ws = null;
|
|
102
|
+
}
|
|
103
|
+
if (this.config.debug) {
|
|
104
|
+
console.log('[EventsModule] Disconnected');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async subscribe(domain, resource, options) {
|
|
108
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
109
|
+
throw new Error('Not connected');
|
|
110
|
+
}
|
|
111
|
+
const subscriptionId = this._generateId();
|
|
112
|
+
return new Promise((resolve, reject) => {
|
|
113
|
+
const subscriptionData = options
|
|
114
|
+
? { domain, resource, options }
|
|
115
|
+
: { domain, resource };
|
|
116
|
+
const pendingData = {
|
|
117
|
+
resolve: (sub) => {
|
|
118
|
+
this.subscriptions.set(sub.id, subscriptionData);
|
|
119
|
+
resolve(sub);
|
|
120
|
+
},
|
|
121
|
+
reject,
|
|
122
|
+
...subscriptionData
|
|
123
|
+
};
|
|
124
|
+
this.pendingSubscriptions.set(subscriptionId, pendingData);
|
|
125
|
+
const message = {
|
|
126
|
+
type: 'subscribe',
|
|
127
|
+
subscription_id: subscriptionId,
|
|
128
|
+
domain,
|
|
129
|
+
resource,
|
|
130
|
+
options: {
|
|
131
|
+
filters: (options === null || options === void 0 ? void 0 : options.filters) || {},
|
|
132
|
+
include_data: (options === null || options === void 0 ? void 0 : options.include_data) || false
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
this.ws.send(JSON.stringify(message));
|
|
136
|
+
if (this.config.debug) {
|
|
137
|
+
console.log('[EventsModule] Subscribing:', message);
|
|
138
|
+
}
|
|
139
|
+
setTimeout(() => {
|
|
140
|
+
if (this.pendingSubscriptions.has(subscriptionId)) {
|
|
141
|
+
this.pendingSubscriptions.delete(subscriptionId);
|
|
142
|
+
reject(new Error('Subscription timeout'));
|
|
143
|
+
}
|
|
144
|
+
}, 10000);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
async unsubscribe(subscriptionId) {
|
|
148
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
149
|
+
throw new Error('Not connected');
|
|
150
|
+
}
|
|
151
|
+
return new Promise((resolve, reject) => {
|
|
152
|
+
const message = {
|
|
153
|
+
type: 'unsubscribe',
|
|
154
|
+
subscription_id: subscriptionId
|
|
155
|
+
};
|
|
156
|
+
this.ws.send(JSON.stringify(message));
|
|
157
|
+
this.subscriptions.delete(subscriptionId);
|
|
158
|
+
if (this.config.debug) {
|
|
159
|
+
console.log('[EventsModule] Unsubscribing:', subscriptionId);
|
|
160
|
+
}
|
|
161
|
+
resolve();
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
on(event, callback) {
|
|
165
|
+
if (!this.listeners.has(event)) {
|
|
166
|
+
this.listeners.set(event, new Set());
|
|
167
|
+
}
|
|
168
|
+
this.listeners.get(event).add(callback);
|
|
169
|
+
}
|
|
170
|
+
off(event, callback) {
|
|
171
|
+
const listeners = this.listeners.get(event);
|
|
172
|
+
if (listeners) {
|
|
173
|
+
listeners.delete(callback);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
get isConnected() {
|
|
177
|
+
return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
|
|
178
|
+
}
|
|
179
|
+
get currentUserId() {
|
|
180
|
+
return this.userId;
|
|
181
|
+
}
|
|
182
|
+
getSubscriptions() {
|
|
183
|
+
return new Map(this.subscriptions);
|
|
184
|
+
}
|
|
185
|
+
ping() {
|
|
186
|
+
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
187
|
+
this.ws.send(JSON.stringify({ type: 'ping' }));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
updateConfig(config) {
|
|
191
|
+
this.config = { ...this.config, ...config };
|
|
192
|
+
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
193
|
+
this._stopPingInterval();
|
|
194
|
+
this._startPingInterval();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
_buildWebSocketUrl() {
|
|
198
|
+
const httpConfig = this.http.config;
|
|
199
|
+
const baseUrl = httpConfig.baseUrl;
|
|
200
|
+
const bearerToken = httpConfig.bearerToken;
|
|
201
|
+
const wsUrl = baseUrl
|
|
202
|
+
.replace('https://', 'wss://')
|
|
203
|
+
.replace('http://', 'ws://');
|
|
204
|
+
const url = new URL(`${wsUrl}/v1/events/ws`);
|
|
205
|
+
if (bearerToken) {
|
|
206
|
+
url.searchParams.set('token', bearerToken);
|
|
207
|
+
}
|
|
208
|
+
return url.toString();
|
|
209
|
+
}
|
|
210
|
+
_handleMessage(message, connectResolve) {
|
|
211
|
+
if (this.config.debug) {
|
|
212
|
+
console.log('[EventsModule] Message received:', message);
|
|
213
|
+
}
|
|
214
|
+
switch (message.type) {
|
|
215
|
+
case 'connected':
|
|
216
|
+
this.isConnecting = false;
|
|
217
|
+
this.userId = message.user_id;
|
|
218
|
+
this._emit('connect', message);
|
|
219
|
+
if (connectResolve) {
|
|
220
|
+
connectResolve(message);
|
|
221
|
+
}
|
|
222
|
+
if (this.reconnectAttempts > 0) {
|
|
223
|
+
this._resubscribeAll();
|
|
224
|
+
}
|
|
225
|
+
this.reconnectAttempts = 0;
|
|
226
|
+
break;
|
|
227
|
+
case 'subscription_confirmed':
|
|
228
|
+
this._handleSubscriptionConfirmed(message);
|
|
229
|
+
break;
|
|
230
|
+
case 'unsubscribed':
|
|
231
|
+
this.subscriptions.delete(message.subscription_id);
|
|
232
|
+
break;
|
|
233
|
+
case 'notification':
|
|
234
|
+
this._emit('notification', message);
|
|
235
|
+
break;
|
|
236
|
+
case 'system_notification':
|
|
237
|
+
this._emit('system_notification', message);
|
|
238
|
+
break;
|
|
239
|
+
case 'pong':
|
|
240
|
+
break;
|
|
241
|
+
case 'error':
|
|
242
|
+
this._emit('error', message);
|
|
243
|
+
break;
|
|
244
|
+
default:
|
|
245
|
+
if (this.config.debug) {
|
|
246
|
+
console.warn('[EventsModule] Unknown message type:', message.type);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
_handleSubscriptionConfirmed(message) {
|
|
251
|
+
const pending = this.pendingSubscriptions.get(message.subscription_id);
|
|
252
|
+
if (pending) {
|
|
253
|
+
this.pendingSubscriptions.delete(message.subscription_id);
|
|
254
|
+
const subscription = {
|
|
255
|
+
id: message.subscription_id,
|
|
256
|
+
domain: message.domain,
|
|
257
|
+
resource: message.resource,
|
|
258
|
+
filters: message.filters
|
|
259
|
+
};
|
|
260
|
+
pending.resolve(subscription);
|
|
261
|
+
}
|
|
262
|
+
this._emit('subscription_confirmed', message);
|
|
263
|
+
}
|
|
264
|
+
_emit(event, ...args) {
|
|
265
|
+
const listeners = this.listeners.get(event);
|
|
266
|
+
if (listeners) {
|
|
267
|
+
listeners.forEach((callback) => {
|
|
268
|
+
try {
|
|
269
|
+
callback(...args);
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
console.error(`[EventsModule] Error in ${event} listener:`, err);
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
_startPingInterval() {
|
|
278
|
+
if (this.config.pingInterval > 0) {
|
|
279
|
+
this.pingIntervalId = setInterval(() => {
|
|
280
|
+
this.ping();
|
|
281
|
+
}, this.config.pingInterval);
|
|
282
|
+
if (this.config.debug) {
|
|
283
|
+
console.log('[EventsModule] Ping interval started:', this.config.pingInterval);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
_stopPingInterval() {
|
|
288
|
+
if (this.pingIntervalId) {
|
|
289
|
+
clearInterval(this.pingIntervalId);
|
|
290
|
+
this.pingIntervalId = null;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
_scheduleReconnect() {
|
|
294
|
+
if (this.reconnectAttempts >= this.config.maxReconnectAttempts) {
|
|
295
|
+
if (this.config.debug) {
|
|
296
|
+
console.log('[EventsModule] Max reconnect attempts reached');
|
|
297
|
+
}
|
|
298
|
+
this._emit('error', new Error('Max reconnect attempts reached'));
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
this.reconnectAttempts++;
|
|
302
|
+
const delay = Math.min(this.config.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1), this.config.maxReconnectDelay);
|
|
303
|
+
if (this.config.debug) {
|
|
304
|
+
console.log(`[EventsModule] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`);
|
|
305
|
+
}
|
|
306
|
+
this._emit('reconnecting', this.reconnectAttempts);
|
|
307
|
+
this.reconnectTimeoutId = setTimeout(async () => {
|
|
308
|
+
try {
|
|
309
|
+
await this._connect();
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
if (this.config.debug) {
|
|
313
|
+
console.error('[EventsModule] Reconnect failed:', err);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}, delay);
|
|
317
|
+
}
|
|
318
|
+
async _resubscribeAll() {
|
|
319
|
+
if (this.config.debug) {
|
|
320
|
+
console.log('[EventsModule] Re-subscribing to', this.subscriptions.size, 'subscriptions');
|
|
321
|
+
}
|
|
322
|
+
const subscriptionsToRestore = new Map(this.subscriptions);
|
|
323
|
+
this.subscriptions.clear();
|
|
324
|
+
for (const [id, sub] of subscriptionsToRestore) {
|
|
325
|
+
try {
|
|
326
|
+
await this.subscribe(sub.domain, sub.resource, sub.options);
|
|
327
|
+
if (this.config.debug) {
|
|
328
|
+
console.log('[EventsModule] Re-subscribed:', sub.domain, sub.resource);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
if (this.config.debug) {
|
|
333
|
+
console.error('[EventsModule] Failed to re-subscribe:', err);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
_cleanup() {
|
|
339
|
+
this._stopPingInterval();
|
|
340
|
+
if (this.reconnectTimeoutId) {
|
|
341
|
+
clearTimeout(this.reconnectTimeoutId);
|
|
342
|
+
this.reconnectTimeoutId = null;
|
|
343
|
+
}
|
|
344
|
+
for (const pending of this.pendingSubscriptions.values()) {
|
|
345
|
+
pending.reject(new Error('Connection closed'));
|
|
346
|
+
}
|
|
347
|
+
this.pendingSubscriptions.clear();
|
|
348
|
+
}
|
|
349
|
+
_generateId() {
|
|
350
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
351
|
+
const r = (Math.random() * 16) | 0;
|
|
352
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
353
|
+
return v.toString(16);
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/modules/events.ts"],"names":[],"mappings":"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"}
|