@chativa/connector-signalr 0.0.1
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.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.create;var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var d=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of r(n))!h.call(e,o)&&o!==t&&i(e,o,{get:()=>n[o],enumerable:!(s=a(n,o))||s.enumerable});return e};var g=(e,n,t)=>(t=e!=null?c(l(e)):{},d(n||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class u{constructor(n){this.name="signalr",this.addSentToHistory=!0,this.connection=null,this.messageHandler=null,this.connectHandler=null,this.disconnectHandler=null,this.options={hubName:"chat",receiveMethod:"ReceiveMessage",sendMethod:"SendMessage",accessTokenFactory:()=>"",...n}}async connect(){const n=await import("@microsoft/signalr").catch(()=>{throw new Error("SignalRConnector: @microsoft/signalr not installed. Run: npm install @microsoft/signalr")});this.connection=new n.HubConnectionBuilder().withUrl(this.options.url,{accessTokenFactory:this.options.accessTokenFactory}).withAutomaticReconnect().build(),this.connection.on(this.options.receiveMethod,t=>{this.messageHandler?.(typeof t=="object"&&t!==null?t:{id:`sr-${Date.now()}`,type:"text",data:{text:String(t)},timestamp:Date.now()})}),this.connection.onclose(t=>{this.disconnectHandler?.(t?.message)}),await this.connection.start(),this.connectHandler?.()}async disconnect(){await this.connection?.stop(),this.connection=null}async sendMessage(n){if(!this.connection)throw new Error("SignalRConnector: not connected.");await this.connection.invoke(this.options.sendMethod,n)}onMessage(n){this.messageHandler=n}onConnect(n){this.connectHandler=n}onDisconnect(n){this.disconnectHandler=n}}exports.SignalRConnector=u;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/SignalRConnector.ts"],"sourcesContent":["import type {\n IConnector,\n MessageHandler,\n ConnectHandler,\n DisconnectHandler,\n} from \"@chativa/core\";\nimport type { OutgoingMessage } from \"@chativa/core\";\n\nexport interface SignalRConnectorOptions {\n url: string;\n hubName?: string;\n receiveMethod?: string;\n sendMethod?: string;\n accessTokenFactory?: () => string | Promise<string>;\n}\n\n/**\n * SignalRConnector — Microsoft SignalR hub adapter.\n *\n * Requires @microsoft/signalr as a peer dependency.\n * Install: npm install @microsoft/signalr\n */\nexport class SignalRConnector implements IConnector {\n readonly name = \"signalr\";\n readonly addSentToHistory = true;\n\n // Typed as any to avoid requiring @microsoft/signalr as a hard dep\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private connection: any | null = null;\n private options: Required<SignalRConnectorOptions>;\n\n private messageHandler: MessageHandler | null = null;\n private connectHandler: ConnectHandler | null = null;\n private disconnectHandler: DisconnectHandler | null = null;\n\n constructor(options: SignalRConnectorOptions) {\n this.options = {\n hubName: \"chat\",\n receiveMethod: \"ReceiveMessage\",\n sendMethod: \"SendMessage\",\n accessTokenFactory: () => \"\",\n ...options,\n };\n }\n\n async connect(): Promise<void> {\n // Dynamic import so @microsoft/signalr is an optional peer dep\n const signalR = await import(\"@microsoft/signalr\").catch(() => {\n throw new Error(\n \"SignalRConnector: @microsoft/signalr not installed. \" +\n \"Run: npm install @microsoft/signalr\"\n );\n });\n\n this.connection = new signalR.HubConnectionBuilder()\n .withUrl(this.options.url, {\n accessTokenFactory: this.options.accessTokenFactory,\n })\n .withAutomaticReconnect()\n .build();\n\n this.connection.on(\n this.options.receiveMethod,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n this.messageHandler?.(\n typeof data === \"object\" && data !== null\n ? data\n : {\n id: `sr-${Date.now()}`,\n type: \"text\",\n data: { text: String(data) },\n timestamp: Date.now(),\n }\n );\n }\n );\n\n this.connection.onclose((error?: Error) => {\n this.disconnectHandler?.(error?.message);\n });\n\n await this.connection.start();\n this.connectHandler?.();\n }\n\n async disconnect(): Promise<void> {\n await this.connection?.stop();\n this.connection = null;\n }\n\n async sendMessage(message: OutgoingMessage): Promise<void> {\n if (!this.connection) {\n throw new Error(\"SignalRConnector: not connected.\");\n }\n await this.connection.invoke(this.options.sendMethod, message);\n }\n\n onMessage(callback: MessageHandler): void {\n this.messageHandler = callback;\n }\n\n onConnect(callback: ConnectHandler): void {\n this.connectHandler = callback;\n }\n\n onDisconnect(callback: DisconnectHandler): void {\n this.disconnectHandler = callback;\n }\n}\n"],"names":["SignalRConnector","options","signalR","data","error","message","callback"],"mappings":"2hBAsBO,MAAMA,CAAuC,CAalD,YAAYC,EAAkC,CAZ9C,KAAS,KAAO,UAChB,KAAS,iBAAmB,GAI5B,KAAQ,WAAyB,KAGjC,KAAQ,eAAwC,KAChD,KAAQ,eAAwC,KAChD,KAAQ,kBAA8C,KAGpD,KAAK,QAAU,CACb,QAAS,OACT,cAAe,iBACf,WAAY,cACZ,mBAAoB,IAAM,GAC1B,GAAGA,CAAA,CAEP,CAEA,MAAM,SAAyB,CAE7B,MAAMC,EAAU,KAAM,QAAO,oBAAoB,EAAE,MAAM,IAAM,CAC7D,MAAM,IAAI,MACR,yFAAA,CAGJ,CAAC,EAED,KAAK,WAAa,IAAIA,EAAQ,qBAAA,EAC3B,QAAQ,KAAK,QAAQ,IAAK,CACzB,mBAAoB,KAAK,QAAQ,kBAAA,CAClC,EACA,uBAAA,EACA,MAAA,EAEH,KAAK,WAAW,GACd,KAAK,QAAQ,cAEZC,GAAc,CACb,KAAK,iBACH,OAAOA,GAAS,UAAYA,IAAS,KACjCA,EACA,CACE,GAAI,MAAM,KAAK,IAAA,CAAK,GACpB,KAAM,OACN,KAAM,CAAE,KAAM,OAAOA,CAAI,CAAA,EACzB,UAAW,KAAK,IAAA,CAAI,CACtB,CAER,CAAA,EAGF,KAAK,WAAW,QAASC,GAAkB,CACzC,KAAK,oBAAoBA,GAAO,OAAO,CACzC,CAAC,EAED,MAAM,KAAK,WAAW,MAAA,EACtB,KAAK,iBAAA,CACP,CAEA,MAAM,YAA4B,CAChC,MAAM,KAAK,YAAY,KAAA,EACvB,KAAK,WAAa,IACpB,CAEA,MAAM,YAAYC,EAAyC,CACzD,GAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,kCAAkC,EAEpD,MAAM,KAAK,WAAW,OAAO,KAAK,QAAQ,WAAYA,CAAO,CAC/D,CAEA,UAAUC,EAAgC,CACxC,KAAK,eAAiBA,CACxB,CAEA,UAAUA,EAAgC,CACxC,KAAK,eAAiBA,CACxB,CAEA,aAAaA,EAAmC,CAC9C,KAAK,kBAAoBA,CAC3B,CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ConnectHandler } from '../../core/src/index.ts';
|
|
2
|
+
import { DisconnectHandler } from '../../core/src/index.ts';
|
|
3
|
+
import { IConnector } from '../../core/src/index.ts';
|
|
4
|
+
import { MessageHandler } from '../../core/src/index.ts';
|
|
5
|
+
import { OutgoingMessage } from '../../core/src/index.ts';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* SignalRConnector — Microsoft SignalR hub adapter.
|
|
9
|
+
*
|
|
10
|
+
* Requires @microsoft/signalr as a peer dependency.
|
|
11
|
+
* Install: npm install @microsoft/signalr
|
|
12
|
+
*/
|
|
13
|
+
export declare class SignalRConnector implements IConnector {
|
|
14
|
+
readonly name = "signalr";
|
|
15
|
+
readonly addSentToHistory = true;
|
|
16
|
+
private connection;
|
|
17
|
+
private options;
|
|
18
|
+
private messageHandler;
|
|
19
|
+
private connectHandler;
|
|
20
|
+
private disconnectHandler;
|
|
21
|
+
constructor(options: SignalRConnectorOptions);
|
|
22
|
+
connect(): Promise<void>;
|
|
23
|
+
disconnect(): Promise<void>;
|
|
24
|
+
sendMessage(message: OutgoingMessage): Promise<void>;
|
|
25
|
+
onMessage(callback: MessageHandler): void;
|
|
26
|
+
onConnect(callback: ConnectHandler): void;
|
|
27
|
+
onDisconnect(callback: DisconnectHandler): void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export declare interface SignalRConnectorOptions {
|
|
31
|
+
url: string;
|
|
32
|
+
hubName?: string;
|
|
33
|
+
receiveMethod?: string;
|
|
34
|
+
sendMethod?: string;
|
|
35
|
+
accessTokenFactory?: () => string | Promise<string>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { }
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
class o {
|
|
2
|
+
constructor(n) {
|
|
3
|
+
this.name = "signalr", this.addSentToHistory = !0, this.connection = null, this.messageHandler = null, this.connectHandler = null, this.disconnectHandler = null, this.options = {
|
|
4
|
+
hubName: "chat",
|
|
5
|
+
receiveMethod: "ReceiveMessage",
|
|
6
|
+
sendMethod: "SendMessage",
|
|
7
|
+
accessTokenFactory: () => "",
|
|
8
|
+
...n
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
async connect() {
|
|
12
|
+
const n = await import("@microsoft/signalr").catch(() => {
|
|
13
|
+
throw new Error(
|
|
14
|
+
"SignalRConnector: @microsoft/signalr not installed. Run: npm install @microsoft/signalr"
|
|
15
|
+
);
|
|
16
|
+
});
|
|
17
|
+
this.connection = new n.HubConnectionBuilder().withUrl(this.options.url, {
|
|
18
|
+
accessTokenFactory: this.options.accessTokenFactory
|
|
19
|
+
}).withAutomaticReconnect().build(), this.connection.on(
|
|
20
|
+
this.options.receiveMethod,
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
(t) => {
|
|
23
|
+
this.messageHandler?.(
|
|
24
|
+
typeof t == "object" && t !== null ? t : {
|
|
25
|
+
id: `sr-${Date.now()}`,
|
|
26
|
+
type: "text",
|
|
27
|
+
data: { text: String(t) },
|
|
28
|
+
timestamp: Date.now()
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
), this.connection.onclose((t) => {
|
|
33
|
+
this.disconnectHandler?.(t?.message);
|
|
34
|
+
}), await this.connection.start(), this.connectHandler?.();
|
|
35
|
+
}
|
|
36
|
+
async disconnect() {
|
|
37
|
+
await this.connection?.stop(), this.connection = null;
|
|
38
|
+
}
|
|
39
|
+
async sendMessage(n) {
|
|
40
|
+
if (!this.connection)
|
|
41
|
+
throw new Error("SignalRConnector: not connected.");
|
|
42
|
+
await this.connection.invoke(this.options.sendMethod, n);
|
|
43
|
+
}
|
|
44
|
+
onMessage(n) {
|
|
45
|
+
this.messageHandler = n;
|
|
46
|
+
}
|
|
47
|
+
onConnect(n) {
|
|
48
|
+
this.connectHandler = n;
|
|
49
|
+
}
|
|
50
|
+
onDisconnect(n) {
|
|
51
|
+
this.disconnectHandler = n;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
o as SignalRConnector
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/SignalRConnector.ts"],"sourcesContent":["import type {\n IConnector,\n MessageHandler,\n ConnectHandler,\n DisconnectHandler,\n} from \"@chativa/core\";\nimport type { OutgoingMessage } from \"@chativa/core\";\n\nexport interface SignalRConnectorOptions {\n url: string;\n hubName?: string;\n receiveMethod?: string;\n sendMethod?: string;\n accessTokenFactory?: () => string | Promise<string>;\n}\n\n/**\n * SignalRConnector — Microsoft SignalR hub adapter.\n *\n * Requires @microsoft/signalr as a peer dependency.\n * Install: npm install @microsoft/signalr\n */\nexport class SignalRConnector implements IConnector {\n readonly name = \"signalr\";\n readonly addSentToHistory = true;\n\n // Typed as any to avoid requiring @microsoft/signalr as a hard dep\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private connection: any | null = null;\n private options: Required<SignalRConnectorOptions>;\n\n private messageHandler: MessageHandler | null = null;\n private connectHandler: ConnectHandler | null = null;\n private disconnectHandler: DisconnectHandler | null = null;\n\n constructor(options: SignalRConnectorOptions) {\n this.options = {\n hubName: \"chat\",\n receiveMethod: \"ReceiveMessage\",\n sendMethod: \"SendMessage\",\n accessTokenFactory: () => \"\",\n ...options,\n };\n }\n\n async connect(): Promise<void> {\n // Dynamic import so @microsoft/signalr is an optional peer dep\n const signalR = await import(\"@microsoft/signalr\").catch(() => {\n throw new Error(\n \"SignalRConnector: @microsoft/signalr not installed. \" +\n \"Run: npm install @microsoft/signalr\"\n );\n });\n\n this.connection = new signalR.HubConnectionBuilder()\n .withUrl(this.options.url, {\n accessTokenFactory: this.options.accessTokenFactory,\n })\n .withAutomaticReconnect()\n .build();\n\n this.connection.on(\n this.options.receiveMethod,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n this.messageHandler?.(\n typeof data === \"object\" && data !== null\n ? data\n : {\n id: `sr-${Date.now()}`,\n type: \"text\",\n data: { text: String(data) },\n timestamp: Date.now(),\n }\n );\n }\n );\n\n this.connection.onclose((error?: Error) => {\n this.disconnectHandler?.(error?.message);\n });\n\n await this.connection.start();\n this.connectHandler?.();\n }\n\n async disconnect(): Promise<void> {\n await this.connection?.stop();\n this.connection = null;\n }\n\n async sendMessage(message: OutgoingMessage): Promise<void> {\n if (!this.connection) {\n throw new Error(\"SignalRConnector: not connected.\");\n }\n await this.connection.invoke(this.options.sendMethod, message);\n }\n\n onMessage(callback: MessageHandler): void {\n this.messageHandler = callback;\n }\n\n onConnect(callback: ConnectHandler): void {\n this.connectHandler = callback;\n }\n\n onDisconnect(callback: DisconnectHandler): void {\n this.disconnectHandler = callback;\n }\n}\n"],"names":["SignalRConnector","options","signalR","data","error","message","callback"],"mappings":"AAsBO,MAAMA,EAAuC;AAAA,EAalD,YAAYC,GAAkC;AAZ9C,SAAS,OAAO,WAChB,KAAS,mBAAmB,IAI5B,KAAQ,aAAyB,MAGjC,KAAQ,iBAAwC,MAChD,KAAQ,iBAAwC,MAChD,KAAQ,oBAA8C,MAGpD,KAAK,UAAU;AAAA,MACb,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,oBAAoB,MAAM;AAAA,MAC1B,GAAGA;AAAA,IAAA;AAAA,EAEP;AAAA,EAEA,MAAM,UAAyB;AAE7B,UAAMC,IAAU,MAAM,OAAO,oBAAoB,EAAE,MAAM,MAAM;AAC7D,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAGJ,CAAC;AAED,SAAK,aAAa,IAAIA,EAAQ,qBAAA,EAC3B,QAAQ,KAAK,QAAQ,KAAK;AAAA,MACzB,oBAAoB,KAAK,QAAQ;AAAA,IAAA,CAClC,EACA,uBAAA,EACA,MAAA,GAEH,KAAK,WAAW;AAAA,MACd,KAAK,QAAQ;AAAA;AAAA,MAEb,CAACC,MAAc;AACb,aAAK;AAAA,UACH,OAAOA,KAAS,YAAYA,MAAS,OACjCA,IACA;AAAA,YACE,IAAI,MAAM,KAAK,IAAA,CAAK;AAAA,YACpB,MAAM;AAAA,YACN,MAAM,EAAE,MAAM,OAAOA,CAAI,EAAA;AAAA,YACzB,WAAW,KAAK,IAAA;AAAA,UAAI;AAAA,QACtB;AAAA,MAER;AAAA,IAAA,GAGF,KAAK,WAAW,QAAQ,CAACC,MAAkB;AACzC,WAAK,oBAAoBA,GAAO,OAAO;AAAA,IACzC,CAAC,GAED,MAAM,KAAK,WAAW,MAAA,GACtB,KAAK,iBAAA;AAAA,EACP;AAAA,EAEA,MAAM,aAA4B;AAChC,UAAM,KAAK,YAAY,KAAA,GACvB,KAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,YAAYC,GAAyC;AACzD,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,kCAAkC;AAEpD,UAAM,KAAK,WAAW,OAAO,KAAK,QAAQ,YAAYA,CAAO;AAAA,EAC/D;AAAA,EAEA,UAAUC,GAAgC;AACxC,SAAK,iBAAiBA;AAAA,EACxB;AAAA,EAEA,UAAUA,GAAgC;AACxC,SAAK,iBAAiBA;AAAA,EACxB;AAAA,EAEA,aAAaA,GAAmC;AAC9C,SAAK,oBAAoBA;AAAA,EAC3B;AACF;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chativa/connector-signalr",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Chativa SignalR connector — Microsoft SignalR hub adapter.",
|
|
5
|
+
"author": "Hamza Agar",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.cjs",
|
|
9
|
+
"module": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/index.cjs",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"chativa",
|
|
23
|
+
"chat",
|
|
24
|
+
"connector",
|
|
25
|
+
"signalr",
|
|
26
|
+
"microsoft"
|
|
27
|
+
],
|
|
28
|
+
"homepage": "https://github.com/AimTune/chativa#readme",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/AimTune/chativa/issues"
|
|
31
|
+
},
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/AimTune/chativa.git"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@chativa/core": ">=0.0.1",
|
|
38
|
+
"@microsoft/signalr": ">=7.0.0"
|
|
39
|
+
},
|
|
40
|
+
"peerDependenciesMeta": {
|
|
41
|
+
"@microsoft/signalr": {
|
|
42
|
+
"optional": true
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"typescript": "~5.8.3",
|
|
47
|
+
"vite": "^7.0.3",
|
|
48
|
+
"vite-plugin-dts": "^4.5.4",
|
|
49
|
+
"vitest": "^4.0.18",
|
|
50
|
+
"@chativa/core": "0.0.1"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "vite build",
|
|
54
|
+
"test": "vitest run --passWithNoTests",
|
|
55
|
+
"typecheck": "tsc --noEmit"
|
|
56
|
+
}
|
|
57
|
+
}
|