@stateflows/signalr-client
Version:
SignalR-based client for Stateflows framework
1 lines • 6.02 kB
Source Map (JSON)
{"version":3,"sources":["../src/classes/signalr-transport.ts","../src/classes/signalr-transport-factory.ts"],"sourcesContent":["import { HubConnection, HubConnectionBuilder, HubConnectionState } from \"@microsoft/signalr\";\r\nimport { Event, BehaviorClass, BehaviorId, IStateflowsClientTransport, SendResult, JsonUtils, IWatcher } from \"@stateflows/common\";\r\nimport { HubConnectionBuilderAction } from \"../types/hub-connection-builder-action\";\r\n\r\nexport class SignalRTransport implements IStateflowsClientTransport {\r\n #hub: Promise<HubConnection> | null = null;\r\n\r\n private get hub(): Promise<HubConnection> {\r\n if (this.#hub == null) {\r\n this.#hub = new Promise<HubConnection>((resolve, reject) => {\r\n let hubBuilder = new HubConnectionBuilder()\r\n .withUrl(this.url + \"stateflows_v1\");\r\n\r\n if (this.builderAction !== null) {\r\n hubBuilder = this.builderAction(hubBuilder);\r\n }\r\n \r\n let hub = hubBuilder\r\n .build();\r\n\r\n hub.start().then(() => resolve(hub));\r\n });\r\n }\r\n\r\n return this.#hub;\r\n }\r\n\r\n private get reconnectingHub(): Promise<HubConnection> {\r\n return new Promise<HubConnection>(async (resolve, reject) => {\r\n let hub = await this.hub;\r\n if (hub.state != HubConnectionState.Connected) {\r\n hub.start()\r\n .then(() => resolve(hub))\r\n .catch(reason => reject(reason));\r\n } else {\r\n resolve(hub);\r\n }\r\n });\r\n }\r\n\r\n constructor(\r\n private url: string,\r\n private builderAction: HubConnectionBuilderAction = null\r\n ) {\r\n if (url.slice(-1) != '/') {\r\n url = url + '/';\r\n }\r\n }\r\n\r\n getAvailableClasses(): Promise<BehaviorClass[]> {\r\n return new Promise<BehaviorClass[]>(async (resolve, reject) => {\r\n let hub = await this.reconnectingHub;\r\n let result = await hub.invoke('GetAvailableClasses');\r\n resolve(result);\r\n });\r\n }\r\n \r\n send(behaviorId: BehaviorId, event: Event): Promise<SendResult> {\r\n return new Promise<SendResult>(async (resolve, reject) => {\r\n let hub = await this.reconnectingHub;\r\n let resultString = await hub.invoke(\"Send\", behaviorId, JsonUtils.stringify(event));\r\n let result = JsonUtils.parse(resultString);\r\n if (result.response) {\r\n (event as any).response = result.response;\r\n delete result.response;\r\n }\r\n resolve(new SendResult(event, result.status, result.validation));\r\n });\r\n }\r\n\r\n async watch(watcher: IWatcher, notificationName: string): Promise<void> {\r\n }\r\n\r\n async unwatch(watcher: IWatcher, notificationName: string): Promise<void> {\r\n }\r\n}","import { IStateflowsClientTransport, IStateflowsClientTransportFactory } from \"@stateflows/common\";\r\nimport { SignalRTransport } from \"./signalr-transport\";\r\nimport { HubConnectionBuilderAction } from \"../types/hub-connection-builder-action\";\r\n\r\nexport class SignalRTransportFactory implements IStateflowsClientTransportFactory {\r\n constructor(\r\n private url: string,\r\n private builderAction: HubConnectionBuilderAction\r\n ) {}\r\n\r\n getTransport(): Promise<IStateflowsClientTransport> {\r\n return Promise.resolve(new SignalRTransport(this.url, this.builderAction));\r\n }\r\n}\r\n\r\nexport function UseSignalR(url: string, builderAction: HubConnectionBuilderAction = null): IStateflowsClientTransportFactory {\r\n if (builderAction !== null) {\r\n builderAction = b => b;\r\n }\r\n return new SignalRTransportFactory(url, builderAction);\r\n}"],"mappings":"2UAAA,OAAwB,wBAAAA,EAAsB,sBAAAC,MAA0B,qBACxE,OAAuE,cAAAC,EAAY,aAAAC,MAA2B,qBAD9G,IAAAC,EAIaC,EAAN,KAA6D,CAoChE,YACYC,EACAC,EAA4C,KACtD,CAFU,SAAAD,EACA,mBAAAC,EArCZC,EAAA,KAAAJ,EAAsC,MAuC9BE,EAAI,MAAM,EAAE,GAAK,MACjBA,EAAMA,EAAM,IAEpB,CAxCA,IAAY,KAA8B,CACtC,OAAIG,EAAA,KAAKL,IAAQ,MACbM,EAAA,KAAKN,EAAO,IAAI,QAAuB,CAACO,EAASC,IAAW,CACxD,IAAIC,EAAa,IAAIC,EAAqB,EACrC,QAAQ,KAAK,IAAM,eAAe,EAEnC,KAAK,gBAAkB,OACvBD,EAAa,KAAK,cAAcA,CAAU,GAG9C,IAAIE,EAAMF,EACL,MAAM,EAEXE,EAAI,MAAM,EAAE,KAAK,IAAMJ,EAAQI,CAAG,CAAC,CACvC,CAAC,GAGEN,EAAA,KAAKL,EAChB,CAEA,IAAY,iBAA0C,CAClD,OAAO,IAAI,QAAuB,MAAOO,EAASC,IAAW,CACzD,IAAIG,EAAM,MAAM,KAAK,IACjBA,EAAI,OAASC,EAAmB,UAChCD,EAAI,MAAM,EACL,KAAK,IAAMJ,EAAQI,CAAG,CAAC,EACvB,MAAME,GAAUL,EAAOK,CAAM,CAAC,EAEnCN,EAAQI,CAAG,CAEnB,CAAC,CACL,CAWA,qBAAgD,CAC5C,OAAO,IAAI,QAAyB,MAAOJ,EAASC,IAAW,CAE3D,IAAIM,EAAS,MADH,MAAM,KAAK,iBACE,OAAO,qBAAqB,EACnDP,EAAQO,CAAM,CAClB,CAAC,CACL,CAEA,KAAKC,EAAwBC,EAAmC,CAC5D,OAAO,IAAI,QAAoB,MAAOT,EAASC,IAAW,CAEtD,IAAIS,EAAe,MADT,MAAM,KAAK,iBACQ,OAAO,OAAQF,EAAYG,EAAU,UAAUF,CAAK,CAAC,EAC9EF,EAASI,EAAU,MAAMD,CAAY,EACrCH,EAAO,WACNE,EAAc,SAAWF,EAAO,SACjC,OAAOA,EAAO,UAElBP,EAAQ,IAAIY,EAAWH,EAAOF,EAAO,OAAQA,EAAO,UAAU,CAAC,CACnE,CAAC,CACL,CAEA,MAAM,MAAMM,EAAmBC,EAAyC,CACxE,CAEA,MAAM,QAAQD,EAAmBC,EAAyC,CAC1E,CACJ,EAtEIrB,EAAA,YCDG,IAAMsB,EAAN,KAA2E,CAC9E,YACYC,EACAC,EACV,CAFU,SAAAD,EACA,mBAAAC,CACT,CAEH,cAAoD,CAChD,OAAO,QAAQ,QAAQ,IAAIC,EAAiB,KAAK,IAAK,KAAK,aAAa,CAAC,CAC7E,CACJ,EAEO,SAASC,EAAWH,EAAaC,EAA4C,KAAyC,CACzH,OAAIA,IAAkB,OAClBA,EAAgBG,GAAKA,GAElB,IAAIL,EAAwBC,EAAKC,CAAa,CACzD","names":["HubConnectionBuilder","HubConnectionState","SendResult","JsonUtils","_hub","SignalRTransport","url","builderAction","__privateAdd","__privateGet","__privateSet","resolve","reject","hubBuilder","HubConnectionBuilder","hub","HubConnectionState","reason","result","behaviorId","event","resultString","JsonUtils","SendResult","watcher","notificationName","SignalRTransportFactory","url","builderAction","SignalRTransport","UseSignalR","b"]}