@webiny/app-websockets 5.40.0-beta.4 → 5.40.0-beta.6

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.
@@ -10,7 +10,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _appTenancy = require("@webiny/app-tenancy");
12
12
  var _appI18n = require("@webiny/app-i18n");
13
- var _getToken = require("./utils/getToken");
13
+ var _appSecurity = require("@webiny/app-security");
14
14
  var _types = require("./types");
15
15
  var _domain = require("./domain");
16
16
  var _getUrl = require("./utils/getUrl");
@@ -20,12 +20,17 @@ var WebsocketsContextProvider = exports.WebsocketsContextProvider = function Web
20
20
  tenant = _useTenancy.tenant;
21
21
  var _useI18N = (0, _appI18n.useI18N)(),
22
22
  getCurrentLocale = _useI18N.getCurrentLocale;
23
+ var _useSecurity = (0, _appSecurity.useSecurity)(),
24
+ getIdToken = _useSecurity.getIdToken;
23
25
  var locale = getCurrentLocale("default");
24
26
  var socketsRef = (0, _react.useRef)();
25
27
  var _useState = (0, _react.useState)({}),
26
28
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
27
29
  current = _useState2[0],
28
30
  setCurrent = _useState2[1];
31
+ var getToken = (0, _react.useCallback)(async function () {
32
+ return await getIdToken();
33
+ }, [getIdToken]);
29
34
  var subscriptionManager = (0, _react.useMemo)(function () {
30
35
  var manager = (0, _domain.createWebsocketsSubscriptionManager)();
31
36
  var currentIteration = 0;
@@ -75,7 +80,7 @@ var WebsocketsContextProvider = exports.WebsocketsContextProvider = function Web
75
80
  }, []);
76
81
  (0, _react.useEffect)(function () {
77
82
  (async function () {
78
- var token = await (0, _getToken.getToken)();
83
+ var token = await getToken();
79
84
  if (!token || !tenant || !locale) {
80
85
  return;
81
86
  } else if (current.tenant === tenant && current.locale === locale) {
@@ -97,7 +102,7 @@ var WebsocketsContextProvider = exports.WebsocketsContextProvider = function Web
97
102
  url: url,
98
103
  tenant: tenant,
99
104
  locale: locale,
100
- getToken: _getToken.getToken,
105
+ getToken: getToken,
101
106
  protocol: ["webiny-ws-v1"]
102
107
  }));
103
108
  await socketsRef.current.connect();
@@ -106,15 +111,15 @@ var WebsocketsContextProvider = exports.WebsocketsContextProvider = function Web
106
111
  locale: locale
107
112
  });
108
113
  })();
109
- }, [tenant, locale, subscriptionManager]);
114
+ }, [tenant, locale, subscriptionManager, getToken]);
110
115
  var websocketActions = (0, _react.useMemo)(function () {
111
116
  return (0, _domain.createWebsocketsActions)({
112
117
  manager: socketsRef.current,
113
118
  tenant: tenant,
114
119
  locale: locale,
115
- getToken: _getToken.getToken
120
+ getToken: getToken
116
121
  });
117
- }, [socketsRef.current, tenant, locale]);
122
+ }, [socketsRef.current, tenant, locale, getToken]);
118
123
  var send = (0, _react.useCallback)(async function (action, data, timeout) {
119
124
  return websocketActions.run({
120
125
  action: action,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_appTenancy","_appI18n","_getToken","_types","_domain","_getUrl","WebsocketsContext","exports","React","createContext","undefined","WebsocketsContextProvider","props","_useTenancy","useTenancy","tenant","_useI18N","useI18N","getCurrentLocale","locale","socketsRef","useRef","_useState","useState","_useState2","_slicedToArray2","default","current","setCurrent","subscriptionManager","useMemo","manager","createWebsocketsSubscriptionManager","currentIteration","onClose","event","code","WebsocketsCloseCode","GOING_AWAY","setTimeout","isClosed","console","log","connect","useEffect","fn","window","addEventListener","removeEventListener","token","getToken","close","NORMAL","url","getUrl","error","createWebsocketsManager","createWebsocketsConnection","protocol","websocketActions","createWebsocketsActions","send","useCallback","action","data","timeout","run","createAction","name","createWebsocketsAction","onMessage","cb","loader","value","createElement","Provider","Object","assign"],"sources":["WebsocketsContextProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTenancy } from \"@webiny/app-tenancy\";\nimport { useI18N } from \"@webiny/app-i18n\";\nimport { getToken } from \"./utils/getToken\";\nimport {\n IncomingGenericData,\n IWebsocketsContext,\n IWebsocketsContextSendCallable,\n WebsocketsCloseCode\n} from \"~/types\";\nimport {\n createWebsocketsAction,\n createWebsocketsActions,\n createWebsocketsConnection,\n createWebsocketsManager,\n createWebsocketsSubscriptionManager\n} from \"./domain\";\nimport { IGenericData, IWebsocketsManager } from \"./domain/types\";\nimport { getUrl } from \"./utils/getUrl\";\n\nexport interface IWebsocketsContextProviderProps {\n loader?: React.ReactElement;\n children: React.ReactNode;\n}\n\nexport const WebsocketsContext = React.createContext<IWebsocketsContext>(\n undefined as unknown as IWebsocketsContext\n);\n\ninterface ICurrentData {\n tenant?: string;\n locale?: string;\n}\n\nexport const WebsocketsContextProvider = (props: IWebsocketsContextProviderProps) => {\n const { tenant } = useTenancy();\n const { getCurrentLocale } = useI18N();\n const locale = getCurrentLocale(\"default\");\n\n const socketsRef = useRef<IWebsocketsManager>();\n\n const [current, setCurrent] = useState<ICurrentData>({});\n\n const subscriptionManager = useMemo(() => {\n const manager = createWebsocketsSubscriptionManager();\n\n let currentIteration = 0;\n manager.onClose(event => {\n if (currentIteration > 5 || event.code !== WebsocketsCloseCode.GOING_AWAY) {\n return;\n }\n currentIteration++;\n setTimeout(() => {\n if (!socketsRef.current) {\n return;\n } else if (socketsRef.current.isClosed()) {\n console.log(\"Running auto-reconnect.\");\n\n socketsRef.current.connect();\n }\n }, 1000);\n });\n\n return manager;\n }, []);\n /**\n * We need this useEffect to close the websocket connection and remove window focus event in case component is unmounted.\n * This will, probably, happen only during the development phase.\n *\n * If we did not disconnect on component unmount, we would have a memory leak - multiple connections would be opened.\n */\n useEffect(() => {\n /**\n * We want to add a window event listener which will check if the connection is closed, and if its - it will connect again.\n */\n const fn = () => {\n if (!socketsRef.current) {\n return;\n } else if (socketsRef.current.isClosed()) {\n console.log(\"Running auto-reconnect on focus.\");\n socketsRef.current.connect();\n }\n };\n window.addEventListener(\"focus\", fn);\n\n return () => {\n window.removeEventListener(\"focus\", fn);\n // if (!socketsRef.current) {\n // return;\n // }\n\n // socketsRef.current.close(WebsocketsCloseCode.NORMAL, \"Component unmounted.\");\n };\n }, []);\n\n useEffect(() => {\n (async () => {\n const token = await getToken();\n if (!token || !tenant || !locale) {\n return;\n } else if (current.tenant === tenant && current.locale === locale) {\n return;\n } else if (socketsRef.current) {\n await socketsRef.current.close(\n WebsocketsCloseCode.NORMAL,\n \"Changing tenant/locale.\"\n );\n }\n const url = getUrl();\n\n if (!url) {\n console.error(\"Not possible to connect to the websocket without a valid URL.\", {\n tenant,\n locale,\n token\n });\n return;\n }\n\n socketsRef.current = createWebsocketsManager(\n createWebsocketsConnection({\n subscriptionManager,\n url,\n tenant,\n locale,\n getToken,\n protocol: [\"webiny-ws-v1\"]\n })\n );\n await socketsRef.current.connect();\n\n setCurrent({\n tenant,\n locale\n });\n })();\n }, [tenant, locale, subscriptionManager]);\n\n const websocketActions = useMemo(() => {\n return createWebsocketsActions({\n manager: socketsRef.current!,\n tenant,\n locale,\n getToken\n });\n }, [socketsRef.current, tenant, locale]);\n\n const send = useCallback<IWebsocketsContextSendCallable>(\n async (action, data, timeout) => {\n return websocketActions.run({\n action,\n data,\n timeout\n });\n },\n [websocketActions]\n );\n\n const createAction = useCallback(\n <T extends IGenericData = IGenericData, R extends IGenericData = IGenericData>(\n name: string\n ) => {\n return createWebsocketsAction<T, R>(websocketActions, name);\n },\n [websocketActions]\n );\n\n const onMessage = useCallback(\n <T extends IncomingGenericData = IncomingGenericData>(\n action: string,\n cb: (data: T) => void\n ) => {\n return socketsRef.current!.onMessage<T>(async event => {\n if (event.data.action !== action) {\n return;\n }\n cb(event.data);\n });\n },\n [socketsRef.current]\n );\n\n if (!socketsRef.current) {\n return props.loader || null;\n }\n\n const value: IWebsocketsContext = {\n send,\n createAction,\n onMessage\n };\n return <WebsocketsContext.Provider value={value} {...props} />;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_appTenancy","_appI18n","_appSecurity","_types","_domain","_getUrl","WebsocketsContext","exports","React","createContext","undefined","WebsocketsContextProvider","props","_useTenancy","useTenancy","tenant","_useI18N","useI18N","getCurrentLocale","_useSecurity","useSecurity","getIdToken","locale","socketsRef","useRef","_useState","useState","_useState2","_slicedToArray2","default","current","setCurrent","getToken","useCallback","subscriptionManager","useMemo","manager","createWebsocketsSubscriptionManager","currentIteration","onClose","event","code","WebsocketsCloseCode","GOING_AWAY","setTimeout","isClosed","console","log","connect","useEffect","fn","window","addEventListener","removeEventListener","token","close","NORMAL","url","getUrl","error","createWebsocketsManager","createWebsocketsConnection","protocol","websocketActions","createWebsocketsActions","send","action","data","timeout","run","createAction","name","createWebsocketsAction","onMessage","cb","loader","value","createElement","Provider","Object","assign"],"sources":["WebsocketsContextProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTenancy } from \"@webiny/app-tenancy\";\nimport { useI18N } from \"@webiny/app-i18n\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n IncomingGenericData,\n IWebsocketsContext,\n IWebsocketsContextSendCallable,\n WebsocketsCloseCode\n} from \"~/types\";\nimport {\n createWebsocketsAction,\n createWebsocketsActions,\n createWebsocketsConnection,\n createWebsocketsManager,\n createWebsocketsSubscriptionManager\n} from \"./domain\";\nimport { IGenericData, IWebsocketsManager } from \"./domain/types\";\nimport { getUrl } from \"./utils/getUrl\";\n\nexport interface IWebsocketsContextProviderProps {\n loader?: React.ReactElement;\n children: React.ReactNode;\n}\n\nexport const WebsocketsContext = React.createContext<IWebsocketsContext>(\n undefined as unknown as IWebsocketsContext\n);\n\ninterface ICurrentData {\n tenant?: string;\n locale?: string;\n}\n\nexport const WebsocketsContextProvider = (props: IWebsocketsContextProviderProps) => {\n const { tenant } = useTenancy();\n const { getCurrentLocale } = useI18N();\n const { getIdToken } = useSecurity();\n const locale = getCurrentLocale(\"default\");\n\n const socketsRef = useRef<IWebsocketsManager>();\n\n const [current, setCurrent] = useState<ICurrentData>({});\n\n const getToken = useCallback(async () => {\n return await getIdToken();\n }, [getIdToken]);\n\n const subscriptionManager = useMemo(() => {\n const manager = createWebsocketsSubscriptionManager();\n\n let currentIteration = 0;\n manager.onClose(event => {\n if (currentIteration > 5 || event.code !== WebsocketsCloseCode.GOING_AWAY) {\n return;\n }\n currentIteration++;\n setTimeout(() => {\n if (!socketsRef.current) {\n return;\n } else if (socketsRef.current.isClosed()) {\n console.log(\"Running auto-reconnect.\");\n\n socketsRef.current.connect();\n }\n }, 1000);\n });\n\n return manager;\n }, []);\n /**\n * We need this useEffect to close the websocket connection and remove window focus event in case component is unmounted.\n * This will, probably, happen only during the development phase.\n *\n * If we did not disconnect on component unmount, we would have a memory leak - multiple connections would be opened.\n */\n useEffect(() => {\n /**\n * We want to add a window event listener which will check if the connection is closed, and if its - it will connect again.\n */\n const fn = () => {\n if (!socketsRef.current) {\n return;\n } else if (socketsRef.current.isClosed()) {\n console.log(\"Running auto-reconnect on focus.\");\n socketsRef.current.connect();\n }\n };\n window.addEventListener(\"focus\", fn);\n\n return () => {\n window.removeEventListener(\"focus\", fn);\n // if (!socketsRef.current) {\n // return;\n // }\n\n // socketsRef.current.close(WebsocketsCloseCode.NORMAL, \"Component unmounted.\");\n };\n }, []);\n\n useEffect(() => {\n (async () => {\n const token = await getToken();\n if (!token || !tenant || !locale) {\n return;\n } else if (current.tenant === tenant && current.locale === locale) {\n return;\n } else if (socketsRef.current) {\n await socketsRef.current.close(\n WebsocketsCloseCode.NORMAL,\n \"Changing tenant/locale.\"\n );\n }\n const url = getUrl();\n\n if (!url) {\n console.error(\"Not possible to connect to the websocket without a valid URL.\", {\n tenant,\n locale,\n token\n });\n return;\n }\n\n socketsRef.current = createWebsocketsManager(\n createWebsocketsConnection({\n subscriptionManager,\n url,\n tenant,\n locale,\n getToken,\n protocol: [\"webiny-ws-v1\"]\n })\n );\n await socketsRef.current.connect();\n\n setCurrent({\n tenant,\n locale\n });\n })();\n }, [tenant, locale, subscriptionManager, getToken]);\n\n const websocketActions = useMemo(() => {\n return createWebsocketsActions({\n manager: socketsRef.current!,\n tenant,\n locale,\n getToken\n });\n }, [socketsRef.current, tenant, locale, getToken]);\n\n const send = useCallback<IWebsocketsContextSendCallable>(\n async (action, data, timeout) => {\n return websocketActions.run({\n action,\n data,\n timeout\n });\n },\n [websocketActions]\n );\n\n const createAction = useCallback(\n <T extends IGenericData = IGenericData, R extends IGenericData = IGenericData>(\n name: string\n ) => {\n return createWebsocketsAction<T, R>(websocketActions, name);\n },\n [websocketActions]\n );\n\n const onMessage = useCallback(\n <T extends IncomingGenericData = IncomingGenericData>(\n action: string,\n cb: (data: T) => void\n ) => {\n return socketsRef.current!.onMessage<T>(async event => {\n if (event.data.action !== action) {\n return;\n }\n cb(event.data);\n });\n },\n [socketsRef.current]\n );\n\n if (!socketsRef.current) {\n return props.loader || null;\n }\n\n const value: IWebsocketsContext = {\n send,\n createAction,\n onMessage\n };\n return <WebsocketsContext.Provider value={value} {...props} />;\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAMA,IAAAK,OAAA,GAAAL,OAAA;AAQA,IAAAM,OAAA,GAAAN,OAAA;AAOO,IAAMO,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,gBAAGE,cAAK,CAACC,aAAa,CAChDC,SACJ,CAAC;AAOM,IAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAIC,KAAsC,EAAK;EACjF,IAAAC,WAAA,GAAmB,IAAAC,sBAAU,EAAC,CAAC;IAAvBC,MAAM,GAAAF,WAAA,CAANE,MAAM;EACd,IAAAC,QAAA,GAA6B,IAAAC,gBAAO,EAAC,CAAC;IAA9BC,gBAAgB,GAAAF,QAAA,CAAhBE,gBAAgB;EACxB,IAAAC,YAAA,GAAuB,IAAAC,wBAAW,EAAC,CAAC;IAA5BC,UAAU,GAAAF,YAAA,CAAVE,UAAU;EAClB,IAAMC,MAAM,GAAGJ,gBAAgB,CAAC,SAAS,CAAC;EAE1C,IAAMK,UAAU,GAAG,IAAAC,aAAM,EAAqB,CAAC;EAE/C,IAAAC,SAAA,GAA8B,IAAAC,eAAQ,EAAe,CAAC,CAAC,CAAC;IAAAC,UAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,SAAA;IAAjDK,OAAO,GAAAH,UAAA;IAAEI,UAAU,GAAAJ,UAAA;EAE1B,IAAMK,QAAQ,GAAG,IAAAC,kBAAW,EAAC,kBAAY;IACrC,OAAO,MAAMZ,UAAU,CAAC,CAAC;EAC7B,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhB,IAAMa,mBAAmB,GAAG,IAAAC,cAAO,EAAC,YAAM;IACtC,IAAMC,OAAO,GAAG,IAAAC,2CAAmC,EAAC,CAAC;IAErD,IAAIC,gBAAgB,GAAG,CAAC;IACxBF,OAAO,CAACG,OAAO,CAAC,UAAAC,KAAK,EAAI;MACrB,IAAIF,gBAAgB,GAAG,CAAC,IAAIE,KAAK,CAACC,IAAI,KAAKC,0BAAmB,CAACC,UAAU,EAAE;QACvE;MACJ;MACAL,gBAAgB,EAAE;MAClBM,UAAU,CAAC,YAAM;QACb,IAAI,CAACrB,UAAU,CAACO,OAAO,EAAE;UACrB;QACJ,CAAC,MAAM,IAAIP,UAAU,CAACO,OAAO,CAACe,QAAQ,CAAC,CAAC,EAAE;UACtCC,OAAO,CAACC,GAAG,CAAC,yBAAyB,CAAC;UAEtCxB,UAAU,CAACO,OAAO,CAACkB,OAAO,CAAC,CAAC;QAChC;MACJ,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC;IAEF,OAAOZ,OAAO;EAClB,CAAC,EAAE,EAAE,CAAC;EACN;AACJ;AACA;AACA;AACA;AACA;EACI,IAAAa,gBAAS,EAAC,YAAM;IACZ;AACR;AACA;IACQ,IAAMC,EAAE,GAAG,SAALA,EAAEA,CAAA,EAAS;MACb,IAAI,CAAC3B,UAAU,CAACO,OAAO,EAAE;QACrB;MACJ,CAAC,MAAM,IAAIP,UAAU,CAACO,OAAO,CAACe,QAAQ,CAAC,CAAC,EAAE;QACtCC,OAAO,CAACC,GAAG,CAAC,kCAAkC,CAAC;QAC/CxB,UAAU,CAACO,OAAO,CAACkB,OAAO,CAAC,CAAC;MAChC;IACJ,CAAC;IACDG,MAAM,CAACC,gBAAgB,CAAC,OAAO,EAAEF,EAAE,CAAC;IAEpC,OAAO,YAAM;MACTC,MAAM,CAACE,mBAAmB,CAAC,OAAO,EAAEH,EAAE,CAAC;MACvC;MACA;MACA;;MAEA;IACJ,CAAC;EACL,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAD,gBAAS,EAAC,YAAM;IACZ,CAAC,kBAAY;MACT,IAAMK,KAAK,GAAG,MAAMtB,QAAQ,CAAC,CAAC;MAC9B,IAAI,CAACsB,KAAK,IAAI,CAACvC,MAAM,IAAI,CAACO,MAAM,EAAE;QAC9B;MACJ,CAAC,MAAM,IAAIQ,OAAO,CAACf,MAAM,KAAKA,MAAM,IAAIe,OAAO,CAACR,MAAM,KAAKA,MAAM,EAAE;QAC/D;MACJ,CAAC,MAAM,IAAIC,UAAU,CAACO,OAAO,EAAE;QAC3B,MAAMP,UAAU,CAACO,OAAO,CAACyB,KAAK,CAC1Bb,0BAAmB,CAACc,MAAM,EAC1B,yBACJ,CAAC;MACL;MACA,IAAMC,GAAG,GAAG,IAAAC,cAAM,EAAC,CAAC;MAEpB,IAAI,CAACD,GAAG,EAAE;QACNX,OAAO,CAACa,KAAK,CAAC,+DAA+D,EAAE;UAC3E5C,MAAM,EAANA,MAAM;UACNO,MAAM,EAANA,MAAM;UACNgC,KAAK,EAALA;QACJ,CAAC,CAAC;QACF;MACJ;MAEA/B,UAAU,CAACO,OAAO,GAAG,IAAA8B,+BAAuB,EACxC,IAAAC,kCAA0B,EAAC;QACvB3B,mBAAmB,EAAnBA,mBAAmB;QACnBuB,GAAG,EAAHA,GAAG;QACH1C,MAAM,EAANA,MAAM;QACNO,MAAM,EAANA,MAAM;QACNU,QAAQ,EAARA,QAAQ;QACR8B,QAAQ,EAAE,CAAC,cAAc;MAC7B,CAAC,CACL,CAAC;MACD,MAAMvC,UAAU,CAACO,OAAO,CAACkB,OAAO,CAAC,CAAC;MAElCjB,UAAU,CAAC;QACPhB,MAAM,EAANA,MAAM;QACNO,MAAM,EAANA;MACJ,CAAC,CAAC;IACN,CAAC,EAAE,CAAC;EACR,CAAC,EAAE,CAACP,MAAM,EAAEO,MAAM,EAAEY,mBAAmB,EAAEF,QAAQ,CAAC,CAAC;EAEnD,IAAM+B,gBAAgB,GAAG,IAAA5B,cAAO,EAAC,YAAM;IACnC,OAAO,IAAA6B,+BAAuB,EAAC;MAC3B5B,OAAO,EAAEb,UAAU,CAACO,OAAQ;MAC5Bf,MAAM,EAANA,MAAM;MACNO,MAAM,EAANA,MAAM;MACNU,QAAQ,EAARA;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACT,UAAU,CAACO,OAAO,EAAEf,MAAM,EAAEO,MAAM,EAAEU,QAAQ,CAAC,CAAC;EAElD,IAAMiC,IAAI,GAAG,IAAAhC,kBAAW,EACpB,gBAAOiC,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAK;IAC7B,OAAOL,gBAAgB,CAACM,GAAG,CAAC;MACxBH,MAAM,EAANA,MAAM;MACNC,IAAI,EAAJA,IAAI;MACJC,OAAO,EAAPA;IACJ,CAAC,CAAC;EACN,CAAC,EACD,CAACL,gBAAgB,CACrB,CAAC;EAED,IAAMO,YAAY,GAAG,IAAArC,kBAAW,EAC5B,UACIsC,IAAY,EACX;IACD,OAAO,IAAAC,8BAAsB,EAAOT,gBAAgB,EAAEQ,IAAI,CAAC;EAC/D,CAAC,EACD,CAACR,gBAAgB,CACrB,CAAC;EAED,IAAMU,SAAS,GAAG,IAAAxC,kBAAW,EACzB,UACIiC,MAAc,EACdQ,EAAqB,EACpB;IACD,OAAOnD,UAAU,CAACO,OAAO,CAAE2C,SAAS,CAAI,gBAAMjC,KAAK,EAAI;MACnD,IAAIA,KAAK,CAAC2B,IAAI,CAACD,MAAM,KAAKA,MAAM,EAAE;QAC9B;MACJ;MACAQ,EAAE,CAAClC,KAAK,CAAC2B,IAAI,CAAC;IAClB,CAAC,CAAC;EACN,CAAC,EACD,CAAC5C,UAAU,CAACO,OAAO,CACvB,CAAC;EAED,IAAI,CAACP,UAAU,CAACO,OAAO,EAAE;IACrB,OAAOlB,KAAK,CAAC+D,MAAM,IAAI,IAAI;EAC/B;EAEA,IAAMC,KAAyB,GAAG;IAC9BX,IAAI,EAAJA,IAAI;IACJK,YAAY,EAAZA,YAAY;IACZG,SAAS,EAATA;EACJ,CAAC;EACD,oBAAO5E,MAAA,CAAAgC,OAAA,CAAAgD,aAAA,CAACvE,iBAAiB,CAACwE,QAAQ,EAAAC,MAAA,CAAAC,MAAA;IAACJ,KAAK,EAAEA;EAAM,GAAKhE,KAAK,CAAG,CAAC;AAClE,CAAC","ignoreList":[]}
@@ -3,7 +3,7 @@ export interface IWebsocketActionsParams {
3
3
  manager: IWebsocketsManager;
4
4
  tenant: string | null;
5
5
  locale: string | null;
6
- getToken: () => Promise<string | null>;
6
+ getToken: () => Promise<string | undefined>;
7
7
  }
8
8
  export declare class WebsocketsActions implements IWebsocketsActions {
9
9
  readonly manager: IWebsocketsManager;
@@ -1 +1 @@
1
- {"version":3,"names":["WebsocketsActions","exports","params","_classCallCheck2","default","manager","tenant","locale","getToken","_createClass2","key","value","run","_this","action","timeout","data","token","console","error","send","Promise","resolve","reject","promiseTimeout","subscription","onMessage","event","messageId","id","off","clearTimeout","setTimeout","message","concat","Error","catch","ex","createWebsocketsActions"],"sources":["WebsocketsActions.ts"],"sourcesContent":["import {\n IGenericData,\n IWebsocketsActions,\n IWebsocketsActionsRunParams,\n IWebsocketsManager,\n IWebsocketManagerSendData\n} from \"./types\";\n\nexport interface IWebsocketActionsParams {\n manager: IWebsocketsManager;\n tenant: string | null;\n locale: string | null;\n getToken: () => Promise<string | null>;\n}\n\nexport class WebsocketsActions implements IWebsocketsActions {\n public readonly manager: IWebsocketsManager;\n\n private readonly getToken: () => Promise<string | null>;\n private readonly tenant: string | null;\n private readonly locale: string | null;\n\n public constructor(params: IWebsocketActionsParams) {\n this.manager = params.manager;\n this.tenant = params.tenant;\n this.locale = params.locale;\n this.getToken = params.getToken;\n }\n\n public async run<T extends IGenericData = IGenericData, R extends IGenericData = IGenericData>(\n params: IWebsocketsActionsRunParams<T>\n ): Promise<R | null> {\n const { action, timeout, data } = params;\n const token = await this.getToken();\n if (!token) {\n console.error(\"Token is not set - cannot send a websocket message.\");\n return null;\n } else if (!this.tenant) {\n console.error(\"Tenant is not set - cannot send a websocket message.\");\n return null;\n } else if (!this.locale) {\n console.error(\"Locale is not set - cannot send a websocket message.\");\n return null;\n }\n /**\n * If no timeout was sent, we will just send the message and return null.\n * No waiting for the response.\n */\n if (!timeout || timeout < 0) {\n this.manager.send<IWebsocketManagerSendData<T>>({\n /**\n * It is ok to cast as we are checking the values a few lines above.\n */\n token,\n tenant: this.tenant as string,\n locale: this.locale as string,\n action,\n data: data || ({} as T)\n });\n return null;\n }\n /**\n * In case of a timeout, we will send the message and wait for the response.\n */\n return await new Promise<R>((resolve, reject) => {\n let promiseTimeout: NodeJS.Timeout | null = null;\n const subscription = this.manager.onMessage<R>(async event => {\n if (event.data.messageId !== subscription.id) {\n return;\n }\n resolve(event.data);\n subscription.off();\n if (!promiseTimeout) {\n return;\n }\n clearTimeout(promiseTimeout);\n });\n\n promiseTimeout = setTimeout(() => {\n const message = `Websocket action \"${action}\" timeout.`;\n subscription.off();\n reject(new Error(message));\n }, timeout);\n\n this.manager.send<IWebsocketManagerSendData<T>>({\n /**\n * It is ok to cast as we are checking the values a few lines above.\n */\n token,\n tenant: this.tenant as string,\n locale: this.locale as string,\n messageId: subscription.id,\n action,\n data: data || ({} as T)\n });\n }).catch(ex => {\n console.error(\"Error while sending websocket message.\", ex);\n return null;\n });\n }\n}\n\nexport const createWebsocketsActions = (params: IWebsocketActionsParams): IWebsocketsActions => {\n return new WebsocketsActions(params);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebsocketsActions","exports","params","_classCallCheck2","default","manager","tenant","locale","getToken","_createClass2","key","value","run","_this","action","timeout","data","token","console","error","send","Promise","resolve","reject","promiseTimeout","subscription","onMessage","event","messageId","id","off","clearTimeout","setTimeout","message","concat","Error","catch","ex","createWebsocketsActions"],"sources":["WebsocketsActions.ts"],"sourcesContent":["import {\n IGenericData,\n IWebsocketsActions,\n IWebsocketsActionsRunParams,\n IWebsocketsManager,\n IWebsocketManagerSendData\n} from \"./types\";\n\nexport interface IWebsocketActionsParams {\n manager: IWebsocketsManager;\n tenant: string | null;\n locale: string | null;\n getToken: () => Promise<string | undefined>;\n}\n\nexport class WebsocketsActions implements IWebsocketsActions {\n public readonly manager: IWebsocketsManager;\n\n private readonly getToken: () => Promise<string | undefined>;\n private readonly tenant: string | null;\n private readonly locale: string | null;\n\n public constructor(params: IWebsocketActionsParams) {\n this.manager = params.manager;\n this.tenant = params.tenant;\n this.locale = params.locale;\n this.getToken = params.getToken;\n }\n\n public async run<T extends IGenericData = IGenericData, R extends IGenericData = IGenericData>(\n params: IWebsocketsActionsRunParams<T>\n ): Promise<R | null> {\n const { action, timeout, data } = params;\n const token = await this.getToken();\n if (!token) {\n console.error(\"Token is not set - cannot send a websocket message.\");\n return null;\n } else if (!this.tenant) {\n console.error(\"Tenant is not set - cannot send a websocket message.\");\n return null;\n } else if (!this.locale) {\n console.error(\"Locale is not set - cannot send a websocket message.\");\n return null;\n }\n /**\n * If no timeout was sent, we will just send the message and return null.\n * No waiting for the response.\n */\n if (!timeout || timeout < 0) {\n this.manager.send<IWebsocketManagerSendData<T>>({\n /**\n * It is ok to cast as we are checking the values a few lines above.\n */\n token,\n tenant: this.tenant as string,\n locale: this.locale as string,\n action,\n data: data || ({} as T)\n });\n return null;\n }\n /**\n * In case of a timeout, we will send the message and wait for the response.\n */\n return await new Promise<R>((resolve, reject) => {\n let promiseTimeout: NodeJS.Timeout | null = null;\n const subscription = this.manager.onMessage<R>(async event => {\n if (event.data.messageId !== subscription.id) {\n return;\n }\n resolve(event.data);\n subscription.off();\n if (!promiseTimeout) {\n return;\n }\n clearTimeout(promiseTimeout);\n });\n\n promiseTimeout = setTimeout(() => {\n const message = `Websocket action \"${action}\" timeout.`;\n subscription.off();\n reject(new Error(message));\n }, timeout);\n\n this.manager.send<IWebsocketManagerSendData<T>>({\n /**\n * It is ok to cast as we are checking the values a few lines above.\n */\n token,\n tenant: this.tenant as string,\n locale: this.locale as string,\n messageId: subscription.id,\n action,\n data: data || ({} as T)\n });\n }).catch(ex => {\n console.error(\"Error while sending websocket message.\", ex);\n return null;\n });\n }\n}\n\nexport const createWebsocketsActions = (params: IWebsocketActionsParams): IWebsocketsActions => {\n return new WebsocketsActions(params);\n};\n"],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,7 @@ export interface IWebsocketsConnectionParams {
14
14
  url: string;
15
15
  tenant: string;
16
16
  locale: string;
17
- getToken(): Promise<string | null>;
17
+ getToken(): Promise<string | undefined>;
18
18
  subscriptionManager: IWebsocketsSubscriptionManager;
19
19
  protocol?: IWebsocketsConnectProtocol;
20
20
  factory?: IWebsocketsConnectionFactory;
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","defaultFactory","url","protocol","WebSocket","window","WebinyWebsocketsConnectionCache","ws","connectionCache","WebsocketsConnection","exports","params","_classCallCheck2","default","tenant","locale","getToken","subscriptionManager","factory","_createClass2","key","value","setTenant","setLocale","connect","getConnection","close","code","reason","readyState","WebsocketsReadyState","CLOSED","CLOSING","undefined","send","data","connection","OPEN","console","info","JSON","stringify","isConnected","isClosed","createUrl","token","error","concat","_this","CONNECTING","result","Error","start","Date","getTime","log","addEventListener","event","end","triggerOnOpen","triggerOnClose","triggerOnError","triggerOnMessage","createWebsocketsConnection"],"sources":["WebsocketsConnection.ts"],"sourcesContent":["import {\n IGenericData,\n IWebsocketsConnection,\n IWebsocketsConnectionFactory,\n IWebsocketsConnectProtocol,\n IWebsocketsManagerMessageEvent,\n IWebsocketsSubscriptionManager,\n WebsocketsCloseCode,\n WebsocketsReadyState\n} from \"./types\";\n\ninterface ICreateUrlResult {\n token: string;\n url: string;\n}\n\nconst defaultFactory: IWebsocketsConnectionFactory = (url, protocol) => {\n return new WebSocket(url, protocol);\n};\n\ninterface IConnection {\n ws: WebSocket | null;\n}\n\n/**\n * We need to attach the websockets cache to window object, or it will be reset on every hot reload.\n */\ndeclare global {\n interface Window {\n WebinyWebsocketsConnectionCache: IConnection;\n }\n}\n\nif (!window.WebinyWebsocketsConnectionCache) {\n window.WebinyWebsocketsConnectionCache = {\n ws: null\n };\n}\n\nconst connectionCache = window.WebinyWebsocketsConnectionCache;\n\nexport interface IWebsocketsConnectionParams {\n url: string;\n tenant: string;\n locale: string;\n getToken(): Promise<string | null>;\n subscriptionManager: IWebsocketsSubscriptionManager;\n protocol?: IWebsocketsConnectProtocol;\n factory?: IWebsocketsConnectionFactory;\n}\n\nexport class WebsocketsConnection implements IWebsocketsConnection {\n private readonly url: string;\n private readonly getToken: () => Promise<string | null>;\n private tenant: string;\n private locale: string;\n private readonly protocol: IWebsocketsConnectProtocol;\n public readonly subscriptionManager: IWebsocketsSubscriptionManager;\n private readonly factory: IWebsocketsConnectionFactory;\n\n public constructor(params: IWebsocketsConnectionParams) {\n this.url = params.url;\n this.tenant = params.tenant;\n this.locale = params.locale;\n this.getToken = params.getToken;\n this.protocol = params.protocol;\n this.subscriptionManager = params.subscriptionManager;\n this.factory = params.factory || defaultFactory;\n }\n\n public setTenant(tenant: string): void {\n this.tenant = tenant;\n }\n\n public setLocale(locale: string): void {\n this.locale = locale;\n }\n\n public async connect(): Promise<void> {\n await this.getConnection();\n }\n\n public async close(code: WebsocketsCloseCode, reason: string): Promise<boolean> {\n if (\n !connectionCache.ws ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSED ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSING\n ) {\n connectionCache.ws = undefined as unknown as null;\n\n return true;\n }\n connectionCache.ws.close(code, reason);\n\n connectionCache.ws = undefined as unknown as null;\n return true;\n }\n\n public async send<T extends IGenericData = IGenericData>(data: T): Promise<void> {\n const connection = await this.getConnection();\n if (connection.readyState !== WebsocketsReadyState.OPEN) {\n console.info(\"Websocket connection is not open, cannot send any data.\", data);\n return;\n }\n connection.send(JSON.stringify(data));\n }\n\n public isConnected(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.OPEN;\n }\n\n public isClosed(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.CLOSED;\n }\n\n private async createUrl(): Promise<ICreateUrlResult | null> {\n const token = await this.getToken();\n if (!token) {\n console.error(`Missing token to connect to websockets.`);\n return null;\n }\n return {\n token,\n url: `${this.url}?token=${token}&tenant=${this.tenant}&locale=${this.locale}`\n };\n }\n\n private async getConnection(): Promise<WebSocket> {\n if (connectionCache.ws?.readyState === WebsocketsReadyState.OPEN) {\n return connectionCache.ws;\n } else if (connectionCache.ws?.readyState === WebsocketsReadyState.CONNECTING) {\n return connectionCache.ws;\n }\n\n const result = await this.createUrl();\n if (!result) {\n throw new Error(`Missing URL for WebSocket to connect to.`);\n }\n const { url } = result;\n\n connectionCache.ws = this.factory(url, this.protocol);\n\n const start = new Date().getTime();\n\n console.log(`Websockets connecting to ${this.url}...`);\n\n connectionCache.ws.addEventListener(\"open\", event => {\n const end = new Date().getTime();\n console.log(`...connected in ${end - start}ms.`);\n return this.subscriptionManager.triggerOnOpen(event);\n });\n connectionCache.ws.addEventListener(\"close\", event => {\n return this.subscriptionManager.triggerOnClose(event);\n });\n connectionCache.ws.addEventListener(\"error\", event => {\n console.info(`Error in the Websocket connection.`, event);\n return this.subscriptionManager.triggerOnError(event);\n });\n\n connectionCache.ws.addEventListener(\n \"message\",\n (event: IWebsocketsManagerMessageEvent<string>) => {\n return this.subscriptionManager.triggerOnMessage(event);\n }\n );\n\n return connectionCache.ws;\n }\n}\n\nexport const createWebsocketsConnection = (\n params: IWebsocketsConnectionParams\n): IWebsocketsConnection => {\n return new WebsocketsConnection(params);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","defaultFactory","url","protocol","WebSocket","window","WebinyWebsocketsConnectionCache","ws","connectionCache","WebsocketsConnection","exports","params","_classCallCheck2","default","tenant","locale","getToken","subscriptionManager","factory","_createClass2","key","value","setTenant","setLocale","connect","getConnection","close","code","reason","readyState","WebsocketsReadyState","CLOSED","CLOSING","undefined","send","data","connection","OPEN","console","info","JSON","stringify","isConnected","isClosed","createUrl","token","error","concat","_this","CONNECTING","result","Error","start","Date","getTime","log","addEventListener","event","end","triggerOnOpen","triggerOnClose","triggerOnError","triggerOnMessage","createWebsocketsConnection"],"sources":["WebsocketsConnection.ts"],"sourcesContent":["import {\n IGenericData,\n IWebsocketsConnection,\n IWebsocketsConnectionFactory,\n IWebsocketsConnectProtocol,\n IWebsocketsManagerMessageEvent,\n IWebsocketsSubscriptionManager,\n WebsocketsCloseCode,\n WebsocketsReadyState\n} from \"./types\";\n\ninterface ICreateUrlResult {\n token: string;\n url: string;\n}\n\nconst defaultFactory: IWebsocketsConnectionFactory = (url, protocol) => {\n return new WebSocket(url, protocol);\n};\n\ninterface IConnection {\n ws: WebSocket | null;\n}\n\n/**\n * We need to attach the websockets cache to window object, or it will be reset on every hot reload.\n */\ndeclare global {\n interface Window {\n WebinyWebsocketsConnectionCache: IConnection;\n }\n}\n\nif (!window.WebinyWebsocketsConnectionCache) {\n window.WebinyWebsocketsConnectionCache = {\n ws: null\n };\n}\n\nconst connectionCache = window.WebinyWebsocketsConnectionCache;\n\nexport interface IWebsocketsConnectionParams {\n url: string;\n tenant: string;\n locale: string;\n getToken(): Promise<string | undefined>;\n subscriptionManager: IWebsocketsSubscriptionManager;\n protocol?: IWebsocketsConnectProtocol;\n factory?: IWebsocketsConnectionFactory;\n}\n\nexport class WebsocketsConnection implements IWebsocketsConnection {\n private readonly url: string;\n private readonly getToken: () => Promise<string | undefined>;\n private tenant: string;\n private locale: string;\n private readonly protocol: IWebsocketsConnectProtocol;\n public readonly subscriptionManager: IWebsocketsSubscriptionManager;\n private readonly factory: IWebsocketsConnectionFactory;\n\n public constructor(params: IWebsocketsConnectionParams) {\n this.url = params.url;\n this.tenant = params.tenant;\n this.locale = params.locale;\n this.getToken = params.getToken;\n this.protocol = params.protocol;\n this.subscriptionManager = params.subscriptionManager;\n this.factory = params.factory || defaultFactory;\n }\n\n public setTenant(tenant: string): void {\n this.tenant = tenant;\n }\n\n public setLocale(locale: string): void {\n this.locale = locale;\n }\n\n public async connect(): Promise<void> {\n await this.getConnection();\n }\n\n public async close(code: WebsocketsCloseCode, reason: string): Promise<boolean> {\n if (\n !connectionCache.ws ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSED ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSING\n ) {\n connectionCache.ws = undefined as unknown as null;\n\n return true;\n }\n connectionCache.ws.close(code, reason);\n\n connectionCache.ws = undefined as unknown as null;\n return true;\n }\n\n public async send<T extends IGenericData = IGenericData>(data: T): Promise<void> {\n const connection = await this.getConnection();\n if (connection.readyState !== WebsocketsReadyState.OPEN) {\n console.info(\"Websocket connection is not open, cannot send any data.\", data);\n return;\n }\n connection.send(JSON.stringify(data));\n }\n\n public isConnected(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.OPEN;\n }\n\n public isClosed(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.CLOSED;\n }\n\n private async createUrl(): Promise<ICreateUrlResult | null> {\n const token = await this.getToken();\n if (!token) {\n console.error(`Missing token to connect to websockets.`);\n return null;\n }\n return {\n token,\n url: `${this.url}?token=${token}&tenant=${this.tenant}&locale=${this.locale}`\n };\n }\n\n private async getConnection(): Promise<WebSocket> {\n if (connectionCache.ws?.readyState === WebsocketsReadyState.OPEN) {\n return connectionCache.ws;\n } else if (connectionCache.ws?.readyState === WebsocketsReadyState.CONNECTING) {\n return connectionCache.ws;\n }\n\n const result = await this.createUrl();\n if (!result) {\n throw new Error(`Missing URL for WebSocket to connect to.`);\n }\n const { url } = result;\n\n connectionCache.ws = this.factory(url, this.protocol);\n\n const start = new Date().getTime();\n\n console.log(`Websockets connecting to ${this.url}...`);\n\n connectionCache.ws.addEventListener(\"open\", event => {\n const end = new Date().getTime();\n console.log(`...connected in ${end - start}ms.`);\n return this.subscriptionManager.triggerOnOpen(event);\n });\n connectionCache.ws.addEventListener(\"close\", event => {\n return this.subscriptionManager.triggerOnClose(event);\n });\n connectionCache.ws.addEventListener(\"error\", event => {\n console.info(`Error in the Websocket connection.`, event);\n return this.subscriptionManager.triggerOnError(event);\n });\n\n connectionCache.ws.addEventListener(\n \"message\",\n (event: IWebsocketsManagerMessageEvent<string>) => {\n return this.subscriptionManager.triggerOnMessage(event);\n }\n );\n\n return connectionCache.ws;\n }\n}\n\nexport const createWebsocketsConnection = (\n params: IWebsocketsConnectionParams\n): IWebsocketsConnection => {\n return new WebsocketsConnection(params);\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-websockets",
3
- "version": "5.40.0-beta.4",
3
+ "version": "5.40.0-beta.6",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,11 +13,11 @@
13
13
  ],
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@aws-amplify/auth": "5.1.9",
17
- "@webiny/app": "5.40.0-beta.4",
18
- "@webiny/app-i18n": "5.40.0-beta.4",
19
- "@webiny/app-tenancy": "5.40.0-beta.4",
20
- "@webiny/utils": "5.40.0-beta.4",
16
+ "@webiny/app": "5.40.0-beta.6",
17
+ "@webiny/app-i18n": "5.40.0-beta.6",
18
+ "@webiny/app-security": "5.40.0-beta.6",
19
+ "@webiny/app-tenancy": "5.40.0-beta.6",
20
+ "@webiny/utils": "5.40.0-beta.6",
21
21
  "react": "18.2.0",
22
22
  "react-dom": "18.2.0"
23
23
  },
@@ -27,8 +27,8 @@
27
27
  "@babel/preset-env": "7.24.3",
28
28
  "@babel/preset-react": "7.24.1",
29
29
  "@babel/preset-typescript": "7.24.1",
30
- "@webiny/cli": "5.40.0-beta.4",
31
- "@webiny/project-utils": "5.40.0-beta.4",
30
+ "@webiny/cli": "5.40.0-beta.6",
31
+ "@webiny/project-utils": "5.40.0-beta.6",
32
32
  "rimraf": "5.0.5",
33
33
  "ttypescript": "1.5.15",
34
34
  "typescript": "4.7.4"
@@ -41,5 +41,5 @@
41
41
  "build": "yarn webiny run build",
42
42
  "watch": "yarn webiny run watch"
43
43
  },
44
- "gitHead": "42f3b1c985d6f8317d5c1084838b43a270c79f01"
44
+ "gitHead": "e6ce53a387a9b1ab39aa8d15e4ed9be2359f17aa"
45
45
  }
@@ -1 +0,0 @@
1
- export declare const getToken: () => Promise<string | null>;
package/utils/getToken.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getToken = void 0;
7
- var _auth = require("@aws-amplify/auth");
8
- var getToken = exports.getToken = async function getToken() {
9
- var user = await _auth.Auth.currentSession();
10
- if (!user) {
11
- return null;
12
- }
13
- var token = user.getIdToken();
14
- if (!token) {
15
- return null;
16
- }
17
- return token.getJwtToken();
18
- };
19
-
20
- //# sourceMappingURL=getToken.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_auth","require","getToken","exports","user","Auth","currentSession","token","getIdToken","getJwtToken"],"sources":["getToken.ts"],"sourcesContent":["import { Auth } from \"@aws-amplify/auth\";\n\nexport const getToken = async (): Promise<string | null> => {\n const user = await Auth.currentSession();\n if (!user) {\n return null;\n }\n const token = user.getIdToken();\n if (!token) {\n return null;\n }\n return token.getJwtToken();\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,IAAMC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,eAAXA,QAAQA,CAAA,EAAuC;EACxD,IAAME,IAAI,GAAG,MAAMC,UAAI,CAACC,cAAc,CAAC,CAAC;EACxC,IAAI,CAACF,IAAI,EAAE;IACP,OAAO,IAAI;EACf;EACA,IAAMG,KAAK,GAAGH,IAAI,CAACI,UAAU,CAAC,CAAC;EAC/B,IAAI,CAACD,KAAK,EAAE;IACR,OAAO,IAAI;EACf;EACA,OAAOA,KAAK,CAACE,WAAW,CAAC,CAAC;AAC9B,CAAC","ignoreList":[]}