@webiny/app-websockets 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e

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.
Files changed (50) hide show
  1. package/WebsocketsContextProvider.js +134 -142
  2. package/WebsocketsContextProvider.js.map +1 -1
  3. package/domain/WebsocketsAction.js +17 -24
  4. package/domain/WebsocketsAction.js.map +1 -1
  5. package/domain/WebsocketsActions.js +52 -73
  6. package/domain/WebsocketsActions.js.map +1 -1
  7. package/domain/WebsocketsConnection.d.ts +30 -0
  8. package/domain/WebsocketsConnection.js +161 -102
  9. package/domain/WebsocketsConnection.js.map +1 -1
  10. package/domain/WebsocketsManager.js +33 -34
  11. package/domain/WebsocketsManager.js.map +1 -1
  12. package/domain/WebsocketsSubscriptionManager.js +57 -64
  13. package/domain/WebsocketsSubscriptionManager.js.map +1 -1
  14. package/domain/abstractions/IWebsocketsAction.js +0 -3
  15. package/domain/abstractions/IWebsocketsActions.js +0 -3
  16. package/domain/abstractions/IWebsocketsConnection.js +7 -6
  17. package/domain/abstractions/IWebsocketsConnection.js.map +1 -1
  18. package/domain/abstractions/IWebsocketsManager.js +0 -3
  19. package/domain/abstractions/IWebsocketsSubscriptionManager.js +0 -3
  20. package/domain/abstractions/types.js +19 -18
  21. package/domain/abstractions/types.js.map +1 -1
  22. package/domain/index.js +0 -2
  23. package/domain/types.js +0 -2
  24. package/events/WebsocketEvent.d.ts +10 -0
  25. package/events/WebsocketEvent.js +13 -0
  26. package/events/WebsocketEvent.js.map +1 -0
  27. package/events/abstractions.d.ts +13 -0
  28. package/events/abstractions.js +5 -0
  29. package/events/abstractions.js.map +1 -0
  30. package/exports/admin/websockets.d.ts +1 -0
  31. package/exports/admin/websockets.js +1 -0
  32. package/hooks/index.js +0 -2
  33. package/hooks/useWebsockets.js +5 -6
  34. package/hooks/useWebsockets.js.map +1 -1
  35. package/index.d.ts +4 -1
  36. package/index.js +11 -12
  37. package/index.js.map +1 -1
  38. package/package.json +13 -9
  39. package/types.js +0 -3
  40. package/domain/abstractions/IWebsocketsAction.js.map +0 -1
  41. package/domain/abstractions/IWebsocketsActions.js.map +0 -1
  42. package/domain/abstractions/IWebsocketsManager.js.map +0 -1
  43. package/domain/abstractions/IWebsocketsSubscriptionManager.js.map +0 -1
  44. package/domain/index.js.map +0 -1
  45. package/domain/types.js.map +0 -1
  46. package/hooks/index.js.map +0 -1
  47. package/types.js.map +0 -1
  48. package/utils/getUrl.d.ts +0 -1
  49. package/utils/getUrl.js +0 -6
  50. package/utils/getUrl.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["WebsocketsReadyState"],"sources":["IWebsocketsConnection.ts"],"sourcesContent":["import type { IWebsocketsSubscriptionManager } from \"./IWebsocketsSubscriptionManager.js\";\nimport type { IGenericData, WebsocketsCloseCode } from \"./types.js\";\n\nexport type IWebsocketsConnectProtocol = string | string[] | undefined;\n\nexport interface IWebsocketsConnectionFactory {\n (url: string, protocol?: IWebsocketsConnectProtocol): WebSocket;\n}\n\nexport enum WebsocketsReadyState {\n CONNECTING = 0,\n OPEN = 1,\n CLOSING = 2,\n CLOSED = 3\n}\n\nexport interface IWebsocketsConnection {\n readonly subscriptionManager: IWebsocketsSubscriptionManager;\n\n isConnected(): boolean;\n isClosed(): boolean;\n\n connect(): Promise<void>;\n close(code: WebsocketsCloseCode, reason: string): Promise<boolean>;\n send<T extends IGenericData = IGenericData>(data: T): void;\n}\n"],"mappings":"AASA,WAAYA,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"domain/abstractions/IWebsocketsConnection.js","sources":["../../../src/domain/abstractions/IWebsocketsConnection.ts"],"sourcesContent":["import type { IWebsocketsSubscriptionManager } from \"./IWebsocketsSubscriptionManager.js\";\nimport type { IGenericData, WebsocketsCloseCode } from \"./types.js\";\n\nexport type IWebsocketsConnectProtocol = string | string[] | undefined;\n\nexport interface IWebsocketsConnectionFactory {\n (url: string, protocol?: IWebsocketsConnectProtocol): WebSocket;\n}\n\nexport enum WebsocketsReadyState {\n CONNECTING = 0,\n OPEN = 1,\n CLOSING = 2,\n CLOSED = 3\n}\n\nexport interface IWebsocketsConnection {\n readonly subscriptionManager: IWebsocketsSubscriptionManager;\n\n isConnected(): boolean;\n isClosed(): boolean;\n\n connect(): Promise<void>;\n close(code: WebsocketsCloseCode, reason: string): Promise<boolean>;\n send<T extends IGenericData = IGenericData>(data: T): void;\n}\n"],"names":["WebsocketsReadyState"],"mappings":"AASO,IAAKA,6CAAoBA,WAAAA,GAAAA,SAApBA,oBAAoB;8DACf;wDACN;2DACG;0DACD;WAJDA"}
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=IWebsocketsManager.js.map
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=IWebsocketsSubscriptionManager.js.map
@@ -1,21 +1,22 @@
1
- export let WebsocketsCloseCode = /*#__PURE__*/function (WebsocketsCloseCode) {
2
- WebsocketsCloseCode[WebsocketsCloseCode["NORMAL"] = 1000] = "NORMAL";
3
- WebsocketsCloseCode[WebsocketsCloseCode["GOING_AWAY"] = 1001] = "GOING_AWAY";
4
- WebsocketsCloseCode[WebsocketsCloseCode["PROTOCOL_ERROR"] = 1002] = "PROTOCOL_ERROR";
5
- WebsocketsCloseCode[WebsocketsCloseCode["CANNOT_ACCEPT"] = 1003] = "CANNOT_ACCEPT";
6
- WebsocketsCloseCode[WebsocketsCloseCode["RESERVED"] = 1004] = "RESERVED";
7
- WebsocketsCloseCode[WebsocketsCloseCode["NO_STATUS"] = 1005] = "NO_STATUS";
8
- WebsocketsCloseCode[WebsocketsCloseCode["ABNORMAL"] = 1006] = "ABNORMAL";
9
- WebsocketsCloseCode[WebsocketsCloseCode["INVALID_DATA"] = 1007] = "INVALID_DATA";
10
- WebsocketsCloseCode[WebsocketsCloseCode["POLICY_VIOLATION"] = 1008] = "POLICY_VIOLATION";
11
- WebsocketsCloseCode[WebsocketsCloseCode["TOO_BIG"] = 1009] = "TOO_BIG";
12
- WebsocketsCloseCode[WebsocketsCloseCode["MISSING_EXTENSION"] = 1010] = "MISSING_EXTENSION";
13
- WebsocketsCloseCode[WebsocketsCloseCode["SERVER_ERROR"] = 1011] = "SERVER_ERROR";
14
- WebsocketsCloseCode[WebsocketsCloseCode["SERVICE_RESTART"] = 1012] = "SERVICE_RESTART";
15
- WebsocketsCloseCode[WebsocketsCloseCode["TRY_AGAIN_LATER"] = 1013] = "TRY_AGAIN_LATER";
16
- WebsocketsCloseCode[WebsocketsCloseCode["BAD_GATEWAY"] = 1014] = "BAD_GATEWAY";
17
- WebsocketsCloseCode[WebsocketsCloseCode["TLS_HANDSHAKE"] = 1015] = "TLS_HANDSHAKE";
18
- return WebsocketsCloseCode;
1
+ var types_WebsocketsCloseCode = /*#__PURE__*/ function(WebsocketsCloseCode) {
2
+ WebsocketsCloseCode[WebsocketsCloseCode["NORMAL"] = 1000] = "NORMAL";
3
+ WebsocketsCloseCode[WebsocketsCloseCode["GOING_AWAY"] = 1001] = "GOING_AWAY";
4
+ WebsocketsCloseCode[WebsocketsCloseCode["PROTOCOL_ERROR"] = 1002] = "PROTOCOL_ERROR";
5
+ WebsocketsCloseCode[WebsocketsCloseCode["CANNOT_ACCEPT"] = 1003] = "CANNOT_ACCEPT";
6
+ WebsocketsCloseCode[WebsocketsCloseCode["RESERVED"] = 1004] = "RESERVED";
7
+ WebsocketsCloseCode[WebsocketsCloseCode["NO_STATUS"] = 1005] = "NO_STATUS";
8
+ WebsocketsCloseCode[WebsocketsCloseCode["ABNORMAL"] = 1006] = "ABNORMAL";
9
+ WebsocketsCloseCode[WebsocketsCloseCode["INVALID_DATA"] = 1007] = "INVALID_DATA";
10
+ WebsocketsCloseCode[WebsocketsCloseCode["POLICY_VIOLATION"] = 1008] = "POLICY_VIOLATION";
11
+ WebsocketsCloseCode[WebsocketsCloseCode["TOO_BIG"] = 1009] = "TOO_BIG";
12
+ WebsocketsCloseCode[WebsocketsCloseCode["MISSING_EXTENSION"] = 1010] = "MISSING_EXTENSION";
13
+ WebsocketsCloseCode[WebsocketsCloseCode["SERVER_ERROR"] = 1011] = "SERVER_ERROR";
14
+ WebsocketsCloseCode[WebsocketsCloseCode["SERVICE_RESTART"] = 1012] = "SERVICE_RESTART";
15
+ WebsocketsCloseCode[WebsocketsCloseCode["TRY_AGAIN_LATER"] = 1013] = "TRY_AGAIN_LATER";
16
+ WebsocketsCloseCode[WebsocketsCloseCode["BAD_GATEWAY"] = 1014] = "BAD_GATEWAY";
17
+ WebsocketsCloseCode[WebsocketsCloseCode["TLS_HANDSHAKE"] = 1015] = "TLS_HANDSHAKE";
18
+ return WebsocketsCloseCode;
19
19
  }({});
20
+ export { types_WebsocketsCloseCode as WebsocketsCloseCode };
20
21
 
21
22
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["WebsocketsCloseCode"],"sources":["types.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/app/types.js\";\n\nexport type IWebsocketsManagerMessageEvent<T = IGenericData> = MessageEvent<T>;\nexport type IWebsocketsManagerCloseEvent = CloseEvent;\nexport type IWebsocketsManagerOpenEvent = Event;\nexport type IWebsocketsManagerErrorEvent = Event;\n\nexport type IGenericData = GenericRecord;\n\nexport enum WebsocketsCloseCode {\n NORMAL = 1000,\n GOING_AWAY = 1001,\n PROTOCOL_ERROR = 1002,\n CANNOT_ACCEPT = 1003,\n RESERVED = 1004,\n NO_STATUS = 1005,\n ABNORMAL = 1006,\n INVALID_DATA = 1007,\n POLICY_VIOLATION = 1008,\n TOO_BIG = 1009,\n MISSING_EXTENSION = 1010,\n SERVER_ERROR = 1011,\n SERVICE_RESTART = 1012,\n TRY_AGAIN_LATER = 1013,\n BAD_GATEWAY = 1014,\n TLS_HANDSHAKE = 1015\n}\n"],"mappings":"AASA,WAAYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"domain/abstractions/types.js","sources":["../../../src/domain/abstractions/types.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/app/types.js\";\n\nexport type IWebsocketsManagerMessageEvent<T = IGenericData> = MessageEvent<T>;\nexport type IWebsocketsManagerCloseEvent = CloseEvent;\nexport type IWebsocketsManagerOpenEvent = Event;\nexport type IWebsocketsManagerErrorEvent = Event;\n\nexport type IGenericData = GenericRecord;\n\nexport enum WebsocketsCloseCode {\n NORMAL = 1000,\n GOING_AWAY = 1001,\n PROTOCOL_ERROR = 1002,\n CANNOT_ACCEPT = 1003,\n RESERVED = 1004,\n NO_STATUS = 1005,\n ABNORMAL = 1006,\n INVALID_DATA = 1007,\n POLICY_VIOLATION = 1008,\n TOO_BIG = 1009,\n MISSING_EXTENSION = 1010,\n SERVER_ERROR = 1011,\n SERVICE_RESTART = 1012,\n TRY_AGAIN_LATER = 1013,\n BAD_GATEWAY = 1014,\n TLS_HANDSHAKE = 1015\n}\n"],"names":["WebsocketsCloseCode"],"mappings":"AASO,IAAKA,4BAAmBA,WAAAA,GAAAA,SAAnBA,mBAAmB;wDAClB;4DACI;gEACI;+DACD;0DACL;2DACC;0DACD;8DACI;kEACI;yDACT;mEACU;8DACL;iEACG;iEACA;6DACJ;+DACE;WAhBRA"}
package/domain/index.js CHANGED
@@ -3,5 +3,3 @@ export * from "./WebsocketsActions.js";
3
3
  export * from "./WebsocketsConnection.js";
4
4
  export * from "./WebsocketsManager.js";
5
5
  export * from "./WebsocketsSubscriptionManager.js";
6
-
7
- //# sourceMappingURL=index.js.map
package/domain/types.js CHANGED
@@ -1,4 +1,2 @@
1
1
  export * from "./abstractions/IWebsocketsConnection.js";
2
2
  export * from "./abstractions/types.js";
3
-
4
- //# sourceMappingURL=types.js.map
@@ -0,0 +1,10 @@
1
+ import { BaseEvent } from "@webiny/app/features/eventPublisher/index.js";
2
+ import type { IncomingGenericData } from "../types.js";
3
+ /**
4
+ * Published for every incoming websocket message. Carries the raw message data
5
+ * (which always includes an `action`), and routes to `WebsocketEventHandler` handlers.
6
+ */
7
+ export declare class WebsocketEvent extends BaseEvent<IncomingGenericData> {
8
+ readonly eventType: "Websockets/MessageReceived";
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/app/features/eventPublisher/abstractions.js").IEventHandler<WebsocketEvent>>;
10
+ }
@@ -0,0 +1,13 @@
1
+ import { BaseEvent } from "@webiny/app/features/eventPublisher/index.js";
2
+ import { WebsocketEventHandler } from "./abstractions.js";
3
+ class WebsocketEvent extends BaseEvent {
4
+ getHandlerAbstraction() {
5
+ return WebsocketEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "Websockets/MessageReceived";
9
+ }
10
+ }
11
+ export { WebsocketEvent };
12
+
13
+ //# sourceMappingURL=WebsocketEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events/WebsocketEvent.js","sources":["../../src/events/WebsocketEvent.ts"],"sourcesContent":["import { BaseEvent } from \"@webiny/app/features/eventPublisher/index.js\";\nimport { WebsocketEventHandler } from \"./abstractions.js\";\nimport type { IncomingGenericData } from \"~/types.js\";\n\n/**\n * Published for every incoming websocket message. Carries the raw message data\n * (which always includes an `action`), and routes to `WebsocketEventHandler` handlers.\n */\nexport class WebsocketEvent extends BaseEvent<IncomingGenericData> {\n readonly eventType = \"Websockets/MessageReceived\" as const;\n\n getHandlerAbstraction() {\n return WebsocketEventHandler;\n }\n}\n"],"names":["WebsocketEvent","BaseEvent","WebsocketEventHandler"],"mappings":";;AAQO,MAAMA,uBAAuBC;IAGhC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACM,SAAS,GAAG;;AAKzB"}
@@ -0,0 +1,13 @@
1
+ import type { IEventHandler } from "@webiny/app/features/eventPublisher/index.js";
2
+ import type { WebsocketEvent } from "./WebsocketEvent.js";
3
+ /**
4
+ * Handlers registered against this abstraction receive EVERY incoming websocket message
5
+ * (published as a `WebsocketEvent` by the websockets→EventPublisher bridge). Each handler
6
+ * is responsible for filtering by `event.payload.action` and reacting to the ones it cares
7
+ * about, instead of subscribing to the websocket service directly.
8
+ */
9
+ export declare const WebsocketEventHandler: import("@webiny/di").Abstraction<IEventHandler<WebsocketEvent>>;
10
+ export declare namespace WebsocketEventHandler {
11
+ type Interface = IEventHandler<WebsocketEvent>;
12
+ type Event = WebsocketEvent;
13
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const WebsocketEventHandler = createAbstraction("App/WebsocketEventHandler");
3
+ export { WebsocketEventHandler };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events/abstractions.js","sources":["../../src/events/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { IEventHandler } from \"@webiny/app/features/eventPublisher/index.js\";\nimport type { WebsocketEvent } from \"./WebsocketEvent.js\";\n\n/**\n * Handlers registered against this abstraction receive EVERY incoming websocket message\n * (published as a `WebsocketEvent` by the websockets→EventPublisher bridge). Each handler\n * is responsible for filtering by `event.payload.action` and reacting to the ones it cares\n * about, instead of subscribing to the websocket service directly.\n */\nexport const WebsocketEventHandler = createAbstraction<IEventHandler<WebsocketEvent>>(\n \"App/WebsocketEventHandler\"\n);\n\nexport namespace WebsocketEventHandler {\n export type Interface = IEventHandler<WebsocketEvent>;\n export type Event = WebsocketEvent;\n}\n"],"names":["WebsocketEventHandler","createAbstraction"],"mappings":";AAUO,MAAMA,wBAAwBC,kBACjC"}
@@ -0,0 +1 @@
1
+ export { WebsocketEventHandler } from "../../events/abstractions.js";
@@ -0,0 +1 @@
1
+ export { WebsocketEventHandler } from "../../events/abstractions.js";
package/hooks/index.js CHANGED
@@ -1,3 +1 @@
1
1
  export * from "./useWebsockets.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,11 +1,10 @@
1
1
  import { useContext } from "react";
2
2
  import { WebsocketsContext } from "../WebsocketsContextProvider.js";
3
- export const useWebsockets = () => {
4
- const context = useContext(WebsocketsContext);
5
- if (!context) {
6
- throw new Error("useWebsockets must be used within a SocketsProvider");
7
- }
8
- return context;
3
+ const useWebsockets = ()=>{
4
+ const context = useContext(WebsocketsContext);
5
+ if (!context) throw new Error("useWebsockets must be used within a SocketsProvider");
6
+ return context;
9
7
  };
8
+ export { useWebsockets };
10
9
 
11
10
  //# sourceMappingURL=useWebsockets.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","WebsocketsContext","useWebsockets","context","Error"],"sources":["useWebsockets.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { WebsocketsContext } from \"~/WebsocketsContextProvider.js\";\nimport type { IWebsocketsContext } from \"~/types.js\";\n\nexport const useWebsockets = (): IWebsocketsContext => {\n const context = useContext(WebsocketsContext);\n if (!context) {\n throw new Error(\"useWebsockets must be used within a SocketsProvider\");\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,iBAAiB;AAG1B,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAA0B;EACnD,MAAMC,OAAO,GAAGH,UAAU,CAACC,iBAAiB,CAAC;EAC7C,IAAI,CAACE,OAAO,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EAC1E;EACA,OAAOD,OAAO;AAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"hooks/useWebsockets.js","sources":["../../src/hooks/useWebsockets.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { WebsocketsContext } from \"~/WebsocketsContextProvider.js\";\nimport type { IWebsocketsContext } from \"~/types.js\";\n\nexport const useWebsockets = (): IWebsocketsContext => {\n const context = useContext(WebsocketsContext);\n if (!context) {\n throw new Error(\"useWebsockets must be used within a SocketsProvider\");\n }\n return context;\n};\n"],"names":["useWebsockets","context","useContext","WebsocketsContext","Error"],"mappings":";;AAIO,MAAMA,gBAAgB;IACzB,MAAMC,UAAUC,WAAWC;IAC3B,IAAI,CAACF,SACD,MAAM,IAAIG,MAAM;IAEpB,OAAOH;AACX"}
package/index.d.ts CHANGED
@@ -2,6 +2,9 @@ import React from "react";
2
2
  export interface WebsocketsProviderProps {
3
3
  children: React.ReactNode;
4
4
  }
5
- export declare const Websockets: React.MemoExoticComponent<() => React.JSX.Element>;
5
+ declare const WebsocketsExtension: () => React.JSX.Element;
6
+ export declare const Websockets: React.MemoExoticComponent<typeof WebsocketsExtension>;
6
7
  export * from "./types.js";
7
8
  export * from "./hooks/index.js";
9
+ export * from "./events/WebsocketEvent.js";
10
+ export * from "./events/abstractions.js";
package/index.js CHANGED
@@ -1,18 +1,17 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { Provider } from "@webiny/app";
3
3
  import { WebsocketsContextProvider } from "./WebsocketsContextProvider.js";
4
- const WebsocketsHoc = Component => {
5
- return function WebsocketsProvider(props) {
6
- return /*#__PURE__*/React.createElement(WebsocketsContextProvider, null, /*#__PURE__*/React.createElement(Component, props));
7
- };
8
- };
9
- const WebsocketsExtension = () => {
10
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Provider, {
11
- hoc: WebsocketsHoc
12
- }));
13
- };
14
- export const Websockets = /*#__PURE__*/React.memo(WebsocketsExtension);
15
4
  export * from "./types.js";
16
5
  export * from "./hooks/index.js";
6
+ export * from "./events/WebsocketEvent.js";
7
+ export * from "./events/abstractions.js";
8
+ const WebsocketsHoc = (Component)=>function(props) {
9
+ return /*#__PURE__*/ react.createElement(WebsocketsContextProvider, null, /*#__PURE__*/ react.createElement(Component, props));
10
+ };
11
+ const WebsocketsExtension = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Provider, {
12
+ hoc: WebsocketsHoc
13
+ }));
14
+ const Websockets = /*#__PURE__*/ react.memo(WebsocketsExtension);
15
+ export { Websockets };
17
16
 
18
17
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["React","Provider","WebsocketsContextProvider","WebsocketsHoc","Component","WebsocketsProvider","props","createElement","WebsocketsExtension","Fragment","hoc","Websockets","memo"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Provider } from \"@webiny/app\";\nimport { WebsocketsContextProvider } from \"~/WebsocketsContextProvider.js\";\n\nexport interface WebsocketsProviderProps {\n children: React.ReactNode;\n}\n\nconst WebsocketsHoc = (Component: React.ComponentType<React.PropsWithChildren>) => {\n return function WebsocketsProvider(props: WebsocketsProviderProps) {\n return (\n <WebsocketsContextProvider>\n <Component {...props} />\n </WebsocketsContextProvider>\n );\n };\n};\n\nconst WebsocketsExtension = () => {\n return (\n <>\n <Provider hoc={WebsocketsHoc} />\n </>\n );\n};\n\nexport const Websockets = React.memo(WebsocketsExtension);\n\nexport * from \"./types.js\";\nexport * from \"./hooks/index.js\";\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,yBAAyB;AAMlC,MAAMC,aAAa,GAAIC,SAAuD,IAAK;EAC/E,OAAO,SAASC,kBAAkBA,CAACC,KAA8B,EAAE;IAC/D,oBACIN,KAAA,CAAAO,aAAA,CAACL,yBAAyB,qBACtBF,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKE,KAAQ,CACA,CAAC;EAEpC,CAAC;AACL,CAAC;AAED,MAAME,mBAAmB,GAAGA,CAAA,KAAM;EAC9B,oBACIR,KAAA,CAAAO,aAAA,CAAAP,KAAA,CAAAS,QAAA,qBACIT,KAAA,CAAAO,aAAA,CAACN,QAAQ;IAACS,GAAG,EAAEP;EAAc,CAAE,CACjC,CAAC;AAEX,CAAC;AAED,OAAO,MAAMQ,UAAU,gBAAGX,KAAK,CAACY,IAAI,CAACJ,mBAAmB,CAAC;AAEzD;AACA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Provider } from \"@webiny/app\";\nimport { WebsocketsContextProvider } from \"~/WebsocketsContextProvider.js\";\n\nexport interface WebsocketsProviderProps {\n children: React.ReactNode;\n}\n\nconst WebsocketsHoc = (Component: React.ComponentType<React.PropsWithChildren>) => {\n return function WebsocketsProvider(props: WebsocketsProviderProps) {\n return (\n <WebsocketsContextProvider>\n <Component {...props} />\n </WebsocketsContextProvider>\n );\n };\n};\n\nconst WebsocketsExtension = () => {\n return (\n <>\n <Provider hoc={WebsocketsHoc} />\n </>\n );\n};\n\nexport const Websockets = React.memo(WebsocketsExtension);\n\nexport * from \"./types.js\";\nexport * from \"./hooks/index.js\";\nexport * from \"./events/WebsocketEvent.js\";\nexport * from \"./events/abstractions.js\";\n"],"names":["WebsocketsHoc","Component","props","WebsocketsContextProvider","WebsocketsExtension","Provider","Websockets","React"],"mappings":";;;;;;;AAQA,MAAMA,gBAAgB,CAACC,YACZ,SAA4BC,KAA8B;QAC7D,OAAO,WAAP,GACI,oBAACC,2BAAyBA,MAAAA,WAAAA,GACtB,oBAACF,WAAcC;IAG3B;AAGJ,MAAME,sBAAsB,IACjB,WAAP,GACI,wDACI,oBAACC,UAAQA;QAAC,KAAKL;;AAKpB,MAAMM,aAAa,WAAHA,GAAGC,MAAAA,IAAU,CAACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-websockets",
3
- "version": "0.0.0-unstable.e6f0dc8ca7",
3
+ "version": "0.0.0-unstable.eb81deee7e",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -17,20 +17,24 @@
17
17
  ],
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@webiny/app": "0.0.0-unstable.e6f0dc8ca7",
21
- "@webiny/app-admin": "0.0.0-unstable.e6f0dc8ca7",
22
- "@webiny/utils": "0.0.0-unstable.e6f0dc8ca7",
20
+ "@webiny/app": "0.0.0-unstable.eb81deee7e",
21
+ "@webiny/app-admin": "0.0.0-unstable.eb81deee7e",
22
+ "@webiny/feature": "0.0.0-unstable.eb81deee7e",
23
+ "@webiny/utils": "0.0.0-unstable.eb81deee7e",
23
24
  "react": "18.3.1",
24
25
  "react-dom": "18.3.1"
25
26
  },
26
27
  "devDependencies": {
27
- "@webiny/build-tools": "0.0.0-unstable.e6f0dc8ca7",
28
+ "@webiny/build-tools": "0.0.0-unstable.eb81deee7e",
28
29
  "rimraf": "6.1.3",
29
- "typescript": "6.0.3"
30
+ "typescript": "7.0.2",
31
+ "vitest": "4.1.11"
30
32
  },
31
33
  "publishConfig": {
32
- "access": "public",
33
- "directory": "dist"
34
+ "access": "public"
34
35
  },
35
- "gitHead": "e6f0dc8ca741c1fcc3fec9a5b9e86fdd49544641"
36
+ "gitHead": "8476da73b653c89cc1474d968baf55c1b0ae0e5f",
37
+ "webiny": {
38
+ "publishFrom": "dist"
39
+ }
36
40
  }
package/types.js CHANGED
@@ -1,4 +1 @@
1
1
  export * from "./domain/types.js";
2
- export {};
3
-
4
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsAction.ts"],"sourcesContent":["import type { IGenericData } from \"./types.js\";\n\nexport interface IWebsocketActionOnResponse<R extends IGenericData = IGenericData> {\n (response: R | null): R | null;\n}\n\nexport interface IWebsocketsActionsTriggerParams<\n T extends IGenericData = IGenericData,\n R extends IGenericData = IGenericData\n> {\n data?: T;\n /**\n * Does this action expect some response from the server?\n * If defined, the response will be passed to this function.\n */\n onResponse?: IWebsocketActionOnResponse<R>;\n /**\n * How long to wait for the response?\n * In milliseconds.\n */\n timeout?: number;\n}\n\nexport interface IWebsocketsAction<\n T extends IGenericData = IGenericData,\n R extends IGenericData = IGenericData\n> {\n /**\n * Trigger the action - send data to the server via Websockets.\n * If onResponse is defined the method will wait for the response.\n * If onResponse is not defined, the method will return null immediately.\n */\n trigger(params?: IWebsocketsActionsTriggerParams<T, R>): Promise<R | null>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsActions.ts"],"sourcesContent":["import type { IWebsocketsManager } from \"./IWebsocketsManager.js\";\nimport type { IGenericData } from \"./types.js\";\n\nexport interface IWebsocketsActionsRunParams<T extends IGenericData = IGenericData> {\n action: string;\n data?: T;\n timeout?: number;\n}\n\nexport interface IWebsocketsActions {\n manager: IWebsocketsManager;\n run<T extends IGenericData = IGenericData, R extends IGenericData = IGenericData>(\n params: IWebsocketsActionsRunParams<T>\n ): Promise<R | null>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsManager.ts"],"sourcesContent":["import type {\n IWebsocketsSubscription,\n IWebsocketsSubscriptionCallback\n} from \"./IWebsocketsSubscriptionManager.js\";\nimport type {\n IGenericData,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsManagerOpenEvent,\n WebsocketsCloseCode\n} from \"./types.js\";\n\nexport interface IWebsocketManagerSendData<\n T extends IGenericData = IGenericData\n> extends IGenericData {\n /**\n * A user token, which will identify the user sending the message.\n */\n token: string;\n /**\n * Current tenant.\n */\n tenant: string;\n /**\n * A unique message ID - generated on the UI side.\n * TODO implement waiting for the message response.\n */\n messageId?: string;\n /**\n * Action being fired on the API side.\n */\n action: string;\n /**\n * Data being sent to the API. Must be an object.\n */\n data: T;\n}\n\nexport interface IWebsocketsManager {\n isConnected(): boolean;\n isClosed(): boolean;\n\n connect(): Promise<void>;\n close(code: WebsocketsCloseCode, reason: string): Promise<boolean>;\n send<T extends IWebsocketManagerSendData = IWebsocketManagerSendData>(data: T): void;\n\n onOpen(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerOpenEvent>;\n\n onClose(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerCloseEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent>;\n\n onError(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerErrorEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent>;\n\n onMessage<T extends IGenericData = IGenericData>(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerMessageEvent<T>>\n ): IWebsocketsSubscription<IWebsocketsManagerMessageEvent<T>>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsSubscriptionManager.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/app/types.js\";\nimport type {\n IGenericData,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsManagerOpenEvent\n} from \"./types.js\";\n\nexport type IWebsocketManagerEvent = \"open\" | \"close\" | \"error\" | \"message\";\n\nexport interface IWebsocketsSubscriptionCallback<T> {\n (data: T): Promise<void> | void;\n}\n\nexport interface IWebsocketsSubscription<T> {\n cb: IWebsocketsSubscriptionCallback<T>;\n id: string;\n /**\n * Remove the subscription on the message.\n */\n off: () => void;\n}\n\nexport interface IWebsocketsSubscriptionManagerSubscriptions<\n T extends IGenericData = IGenericData\n> {\n open: GenericRecord<string, IWebsocketsSubscription<IWebsocketsManagerOpenEvent>>;\n close: GenericRecord<string, IWebsocketsSubscription<IWebsocketsManagerCloseEvent>>;\n error: GenericRecord<string, IWebsocketsSubscription<IWebsocketsManagerErrorEvent>>;\n message: GenericRecord<string, IWebsocketsSubscription<T>>;\n}\n\nexport interface IWebsocketsSubscriptionManager {\n onOpen(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerOpenEvent>;\n\n onClose(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerCloseEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent>;\n\n onError(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerErrorEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent>;\n\n onMessage<T extends IGenericData = IGenericData>(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerMessageEvent<T>>\n ): IWebsocketsSubscription<IWebsocketsManagerMessageEvent<T>>;\n\n triggerOnOpen(event: IWebsocketsManagerOpenEvent): Promise<void>;\n triggerOnClose(event: IWebsocketsManagerCloseEvent): Promise<void>;\n triggerOnError(event: IWebsocketsManagerErrorEvent): Promise<void>;\n triggerOnMessage(event: IWebsocketsManagerMessageEvent<string>): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./WebsocketsAction.js\";\nexport * from \"./WebsocketsActions.js\";\nexport * from \"./WebsocketsConnection.js\";\nexport * from \"./WebsocketsManager.js\";\nexport * from \"./WebsocketsSubscriptionManager.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type * from \"./abstractions/IWebsocketsAction.js\";\nexport type * from \"./abstractions/IWebsocketsActions.js\";\nexport * from \"./abstractions/IWebsocketsConnection.js\";\nexport type * from \"./abstractions/IWebsocketsManager.js\";\nexport type * from \"./abstractions/IWebsocketsSubscriptionManager.js\";\n\nexport * from \"./abstractions/types.js\";\n"],"mappings":"AAEA;AAIA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./useWebsockets.js\";\n"],"mappings":"AAAA","ignoreList":[]}
package/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n IGenericData,\n IWebsocketsAction,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsSubscription\n} from \"~/domain/types.js\";\n\nexport * from \"./domain/types.js\";\n\nexport interface IWebsocketsContextSendCallable {\n <T extends IGenericData = IGenericData>(action: string, data?: T, timeout?: number): void;\n}\n\nexport interface IWebsocketsContextCreateActionCallable<\n T extends IGenericData = IGenericData,\n R extends IGenericData = IGenericData\n> {\n (name: string): IWebsocketsAction<T, R>;\n}\n\nexport interface ISocketsContextOnMessageCallable {\n <T extends IncomingGenericData = IncomingGenericData>(\n action: string,\n cb: (data: T) => void\n ): IWebsocketsSubscription<IWebsocketsManagerMessageEvent<T>>;\n}\n\nexport interface ISocketsContextOnErrorCallable {\n (\n cb: (data: IWebsocketsManagerErrorEvent) => void\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent>;\n}\n\nexport interface ISocketsContextOnCloseCallable {\n (\n cb: (data: IWebsocketsManagerCloseEvent) => void\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent>;\n}\n\nexport interface IWebsocketsContext {\n send: IWebsocketsContextSendCallable;\n createAction: IWebsocketsContextCreateActionCallable;\n onMessage: ISocketsContextOnMessageCallable;\n onError: ISocketsContextOnErrorCallable;\n onClose: ISocketsContextOnCloseCallable;\n}\n\nexport interface IncomingGenericData extends IGenericData {\n action: string;\n}\n"],"mappings":"AASA;AAAkC","ignoreList":[]}
package/utils/getUrl.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const getUrl: () => string | undefined;
package/utils/getUrl.js DELETED
@@ -1,6 +0,0 @@
1
- export const getUrl = () => {
2
- const websocketApiUrl = process.env.REACT_APP_WEBSOCKET_URL;
3
- return !websocketApiUrl || websocketApiUrl === "undefined" ? undefined : websocketApiUrl;
4
- };
5
-
6
- //# sourceMappingURL=getUrl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getUrl","websocketApiUrl","process","env","REACT_APP_WEBSOCKET_URL","undefined"],"sources":["getUrl.ts"],"sourcesContent":["export const getUrl = (): string | undefined => {\n const websocketApiUrl = process.env.REACT_APP_WEBSOCKET_URL;\n\n return !websocketApiUrl || websocketApiUrl === \"undefined\" ? undefined : websocketApiUrl;\n};\n"],"mappings":"AAAA,OAAO,MAAMA,MAAM,GAAGA,CAAA,KAA0B;EAC5C,MAAMC,eAAe,GAAGC,OAAO,CAACC,GAAG,CAACC,uBAAuB;EAE3D,OAAO,CAACH,eAAe,IAAIA,eAAe,KAAK,WAAW,GAAGI,SAAS,GAAGJ,eAAe;AAC5F,CAAC","ignoreList":[]}