m2m-components 0.4.3-alpha-24f31bb.0 → 2.0.0

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 (47) hide show
  1. package/LitMenuBaseElement.js +2 -2
  2. package/LitMenuBaseElement.js.map +1 -1
  3. package/cjs/LitMenuBaseElement.js +2 -2
  4. package/cjs/LitMenuBaseElement.js.map +1 -1
  5. package/cjs/domains.js.map +1 -1
  6. package/cjs/endpoints/m2m-notifications.js.map +1 -1
  7. package/cjs/endpoints/m2m-notifications.v1.js.map +1 -1
  8. package/cjs/endpoints/m2m-users.js.map +1 -1
  9. package/cjs/endpoints/m2m-users.v1.js.map +1 -1
  10. package/cjs/index.js.map +1 -1
  11. package/cjs/m2m-apps-menu.js.map +1 -1
  12. package/cjs/m2m-user-menu.js.map +1 -1
  13. package/cjs/notification/NotificationProvider.js +3 -7
  14. package/cjs/notification/NotificationProvider.js.map +1 -1
  15. package/cjs/notification/ServiceIdProvider.js.map +1 -1
  16. package/cjs/notification/api.js.map +1 -1
  17. package/cjs/notification/domain.js.map +1 -1
  18. package/cjs/notification/index.js.map +1 -1
  19. package/cjs/storage/client.js.map +1 -1
  20. package/cjs/storage/hub.js.map +1 -1
  21. package/cjs/storage/lib/client.js.map +1 -1
  22. package/cjs/storage/lib/hub.js.map +1 -1
  23. package/cjs/storage/useM2mAuth.js.map +1 -1
  24. package/domains.js.map +1 -1
  25. package/endpoints/m2m-notifications.js.map +1 -1
  26. package/endpoints/m2m-notifications.v1.js.map +1 -1
  27. package/endpoints/m2m-users.js.map +1 -1
  28. package/endpoints/m2m-users.v1.js.map +1 -1
  29. package/index.js.map +1 -1
  30. package/m2m-apps-menu.js.map +1 -1
  31. package/m2m-user-menu.js.map +1 -1
  32. package/notification/NotificationProvider.d.ts +3 -3
  33. package/notification/NotificationProvider.d.ts.map +1 -1
  34. package/notification/NotificationProvider.js +0 -1
  35. package/notification/NotificationProvider.js.map +1 -1
  36. package/notification/ServiceIdProvider.js.map +1 -1
  37. package/notification/api.js.map +1 -1
  38. package/notification/domain.js.map +1 -1
  39. package/notification/index.js.map +1 -1
  40. package/package.json +13 -9
  41. package/storage/client.d.ts +2 -2
  42. package/storage/client.d.ts.map +1 -1
  43. package/storage/client.js.map +1 -1
  44. package/storage/hub.js.map +1 -1
  45. package/storage/lib/client.js.map +1 -1
  46. package/storage/lib/hub.js.map +1 -1
  47. package/storage/useM2mAuth.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/storage/lib/client.ts"],"names":["generateUUID","replace","c","r","Math","random","v","toString","StorageClient","constructor","url","opts","id","frameId","origin","requests","connected","closed","count","timeout","hub","URL","window","addEventListener","listener","bind","frame","createFrame","contentWindow","onConnect","Promise","resolve","reject","Error","connect","setTimeout","push","err","clearTimeout","undefined","set","key","value","request","get","keys","del","clear","getKeys","close","document","getElementById","parentNode","removeChild","removeEventListener","message","i","error","response","data","length","indexOf","JSON","parse","e","result","createElement","style","display","position","top","left","body","appendChild","src","method","params","req","postMessage","stringify"],"mappings":"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","sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\nconst generateUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n};\nexport class StorageClient {\n id: string;\n frameId: string;\n origin: string;\n requests: {\n [key: string]: any;\n };\n connected: boolean;\n closed: boolean;\n count: number;\n timeout: number;\n hub: null | Window;\n\n constructor(url: string, opts?: { frameId?: string; timeout?: number }) {\n opts = opts || {};\n\n this.id = generateUUID();\n this.frameId = opts.frameId || \"CrossStorageClient-\" + this.id;\n this.origin = new URL(url).origin;\n this.requests = {};\n this.connected = false;\n this.closed = false;\n this.count = 0;\n this.timeout = opts.timeout || 5000;\n\n window.addEventListener(\"message\", this.listener.bind(this), false);\n\n const frame = this.createFrame(url);\n this.hub = frame.contentWindow;\n }\n\n onConnect() {\n if (this.connected) {\n return Promise.resolve();\n } else if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n if (!this.requests.connect) {\n this.requests.connect = [];\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(function () {\n reject(new Error(\"StorageClient could not connect.\"));\n }, this.timeout);\n\n this.requests.connect.push((err: string) => {\n clearTimeout(timeout);\n if (err) return reject(err);\n\n resolve(undefined);\n });\n });\n }\n\n set(key: string, value: string) {\n return this.request(\"set\", {\n key: key,\n value: value,\n });\n }\n\n get(...keys: string[]) {\n return this.request(\"get\", { keys });\n }\n\n del(...keys: string[]) {\n return this.request(\"del\", { keys });\n }\n\n clear() {\n return this.request(\"clear\");\n }\n\n getKeys() {\n this.request(\"getKeys\");\n }\n\n close() {\n const frame = document.getElementById(this.frameId);\n if (frame && frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n\n window.removeEventListener(\"message\", this.listener, false);\n\n this.connected = false;\n this.closed = true;\n }\n\n private listener(message: MessageEvent) {\n let i, error, response;\n\n if (this.closed || !message.data || typeof message.data !== \"string\") {\n return;\n }\n\n const origin = message.origin;\n\n if (origin !== this.origin) return;\n\n if (message.data === \"cross-storage:unavailable\") {\n if (!this.closed) this.close();\n if (!this.requests.connect) return;\n\n error = new Error(\n \"Closing StorageClient. Could not access localStorage in StorageHub.\"\n );\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n\n return;\n }\n\n if (message.data.indexOf(\"cross-storage:\") !== -1 && !this.connected) {\n this.connected = true;\n if (!this.requests.connect) return;\n\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n delete this.requests.connect;\n }\n\n if (message.data === \"cross-storage:ready\") return;\n\n try {\n response = JSON.parse(message.data);\n } catch (e) {\n return;\n }\n\n if (!response.id) return;\n\n if (this.requests[response.id]) {\n this.requests[response.id](response.error, response.result);\n }\n }\n\n private createFrame(url: string) {\n const frame = window.document.createElement(\"iframe\");\n frame.id = this.frameId;\n\n frame.style.display = \"none\";\n frame.style.position = \"absolute\";\n frame.style.top = \"-999px\";\n frame.style.left = \"-999px\";\n\n window.document.body.appendChild(frame);\n frame.src = url;\n\n return frame;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private request(method: string, params?: {}) {\n if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n this.count++;\n\n const req = {\n id: this.id + \":\" + this.count,\n method: \"cross-storage:\" + method,\n params: params,\n };\n\n return new Promise((resolve, reject) => {\n const timeout = window.setTimeout(() => {\n if (!this.requests[req.id]) return;\n\n delete this.requests[req.id];\n reject(\n new Error(\"Timeout: StorageClient could not perform \" + req.method)\n );\n }, this.timeout);\n\n this.requests[req.id] = (err: string, result: string) => {\n clearTimeout(timeout);\n delete this.requests[req.id];\n if (err) return reject(new Error(err));\n resolve(result);\n };\n\n if (this.hub) {\n this.hub.postMessage(JSON.stringify(req), this.origin);\n } else {\n reject(new Error(\"Not found StorageHub.\"));\n }\n });\n }\n}\n"],"file":"client.js"}
1
+ {"version":3,"file":"client.js","names":["generateUUID","replace","c","r","Math","random","v","toString","StorageClient","constructor","url","opts","id","frameId","origin","requests","connected","closed","count","timeout","hub","URL","window","addEventListener","listener","bind","frame","createFrame","contentWindow","onConnect","Promise","resolve","reject","Error","connect","setTimeout","push","err","clearTimeout","undefined","set","key","value","request","get","keys","del","clear","getKeys","close","document","getElementById","parentNode","removeChild","removeEventListener","message","i","error","response","data","length","indexOf","JSON","parse","e","result","createElement","style","display","position","top","left","body","appendChild","src","method","params","req","postMessage","stringify"],"sources":["../../src/storage/lib/client.ts"],"sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\nconst generateUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n};\nexport class StorageClient {\n id: string;\n frameId: string;\n origin: string;\n requests: {\n [key: string]: any;\n };\n connected: boolean;\n closed: boolean;\n count: number;\n timeout: number;\n hub: null | Window;\n\n constructor(url: string, opts?: { frameId?: string; timeout?: number }) {\n opts = opts || {};\n\n this.id = generateUUID();\n this.frameId = opts.frameId || \"CrossStorageClient-\" + this.id;\n this.origin = new URL(url).origin;\n this.requests = {};\n this.connected = false;\n this.closed = false;\n this.count = 0;\n this.timeout = opts.timeout || 5000;\n\n window.addEventListener(\"message\", this.listener.bind(this), false);\n\n const frame = this.createFrame(url);\n this.hub = frame.contentWindow;\n }\n\n onConnect() {\n if (this.connected) {\n return Promise.resolve();\n } else if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n if (!this.requests.connect) {\n this.requests.connect = [];\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(function () {\n reject(new Error(\"StorageClient could not connect.\"));\n }, this.timeout);\n\n this.requests.connect.push((err: string) => {\n clearTimeout(timeout);\n if (err) return reject(err);\n\n resolve(undefined);\n });\n });\n }\n\n set(key: string, value: string) {\n return this.request(\"set\", {\n key: key,\n value: value,\n });\n }\n\n get(...keys: string[]) {\n return this.request(\"get\", { keys });\n }\n\n del(...keys: string[]) {\n return this.request(\"del\", { keys });\n }\n\n clear() {\n return this.request(\"clear\");\n }\n\n getKeys() {\n this.request(\"getKeys\");\n }\n\n close() {\n const frame = document.getElementById(this.frameId);\n if (frame && frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n\n window.removeEventListener(\"message\", this.listener, false);\n\n this.connected = false;\n this.closed = true;\n }\n\n private listener(message: MessageEvent) {\n let i, error, response;\n\n if (this.closed || !message.data || typeof message.data !== \"string\") {\n return;\n }\n\n const origin = message.origin;\n\n if (origin !== this.origin) return;\n\n if (message.data === \"cross-storage:unavailable\") {\n if (!this.closed) this.close();\n if (!this.requests.connect) return;\n\n error = new Error(\n \"Closing StorageClient. Could not access localStorage in StorageHub.\"\n );\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n\n return;\n }\n\n if (message.data.indexOf(\"cross-storage:\") !== -1 && !this.connected) {\n this.connected = true;\n if (!this.requests.connect) return;\n\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n delete this.requests.connect;\n }\n\n if (message.data === \"cross-storage:ready\") return;\n\n try {\n response = JSON.parse(message.data);\n } catch (e) {\n return;\n }\n\n if (!response.id) return;\n\n if (this.requests[response.id]) {\n this.requests[response.id](response.error, response.result);\n }\n }\n\n private createFrame(url: string) {\n const frame = window.document.createElement(\"iframe\");\n frame.id = this.frameId;\n\n frame.style.display = \"none\";\n frame.style.position = \"absolute\";\n frame.style.top = \"-999px\";\n frame.style.left = \"-999px\";\n\n window.document.body.appendChild(frame);\n frame.src = url;\n\n return frame;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private request(method: string, params?: {}) {\n if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n this.count++;\n\n const req = {\n id: this.id + \":\" + this.count,\n method: \"cross-storage:\" + method,\n params: params,\n };\n\n return new Promise((resolve, reject) => {\n const timeout = window.setTimeout(() => {\n if (!this.requests[req.id]) return;\n\n delete this.requests[req.id];\n reject(\n new Error(\"Timeout: StorageClient could not perform \" + req.method)\n );\n }, this.timeout);\n\n this.requests[req.id] = (err: string, result: string) => {\n clearTimeout(timeout);\n delete this.requests[req.id];\n if (err) return reject(new Error(err));\n resolve(result);\n };\n\n if (this.hub) {\n this.hub.postMessage(JSON.stringify(req), this.origin);\n } else {\n reject(new Error(\"Not found StorageHub.\"));\n }\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/storage/lib/hub.ts"],"names":["context","init","permissions","window","addEventListener","listener","parent","postMessage","permitted","origin","method","available","includes","undefined","i","length","entry","match","test","allow","methods","get","params","storage","localStorage","result","keys","value","getItem","push","set","setItem","key","del","removeItem","getKeys","clear","message","data","request","JSON","parse","split","error","err","response","stringify","id","targetOrigin"],"mappings":"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","sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\ntype Method = \"get\" | \"set\" | \"del\" | \"getKeys\" | \"clear\";\n\nexport interface Permission {\n origin: RegExp;\n allow: Method[];\n}\n\nconst context: {\n permissions?: Permission[];\n} = {};\n\n/**\n * Do not use this directly. This specifications are subject to significant change.\n * @internal\n */\nexport const init = (permissions: Permission[]) => {\n context.permissions = permissions;\n window.addEventListener(\"message\", listener, false);\n window.parent.postMessage(\"cross-storage:ready\", \"*\");\n};\n\nconst permitted = (origin: string, method: Method) => {\n const available = [\"get\", \"set\", \"del\", \"clear\", \"getKeys\"];\n if (!available.includes(method)) {\n return false;\n }\n\n if (context.permissions === undefined) {\n return false;\n }\n\n for (let i = 0; i < context.permissions.length; i++) {\n const entry = context.permissions[i];\n const match = entry.origin.test(origin);\n if (match && entry.allow.includes(method)) {\n return true;\n }\n }\n return false;\n};\n\nconst methods: {\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key in Method]: Function;\n} = {\n get: (params: { keys: string[] }) => {\n const storage = window.localStorage;\n const result = [];\n for (let i = 0; i < params.keys.length; i++) {\n const value = storage.getItem(params.keys[i]) || null;\n result.push(value);\n }\n // Todo: このパターン好きじゃない\n return result.length > 1 ? result : result[0];\n },\n set: (params: { key: string; value: string }) => {\n window.localStorage.setItem(params.key, params.value);\n },\n del: (params: { keys: string[] }) => {\n // eslint-disable-next-line no-var\n for (var i = 0; i < params.keys.length; i++) {\n window.localStorage.removeItem(params.keys[i]);\n }\n },\n getKeys: () => {\n const keys = [];\n const length = window.localStorage.length;\n\n for (let i = 0; i < length; i++) {\n keys.push(window.localStorage.key(i));\n }\n\n return keys;\n },\n clear: () => {\n window.localStorage.clear();\n },\n};\n\ninterface Message {\n origin: string;\n data: string;\n}\n\nconst listener = (message: Message) => {\n // postMessage returns the string \"null\" as the origin for \"file://\"\n const origin = message.origin === \"null\" ? \"file://\" : message.origin;\n\n // Handle polling for a ready message\n if (message.data === \"cross-storage:poll\") {\n return window.parent.postMessage(\"cross-storage:ready\", message.origin);\n }\n\n // Ignore the ready message when viewing the hub directly\n if (message.data === \"cross-storage:ready\") return;\n\n const request: {\n id: string;\n method?: string;\n // eslint-disable-next-line @typescript-eslint/ban-types\n params: Object;\n } = JSON.parse(message.data);\n\n // Check whether request.method is a string\n if (!request || typeof request.method !== \"string\") {\n return;\n }\n\n const method = request.method.split(\"cross-storage:\")[1] as Method;\n\n let error = \"\";\n let result: string | undefined = undefined;\n\n if (!method) {\n return;\n } else if (!permitted(origin, method)) {\n error = \"Invalid permissions for \" + method;\n } else {\n try {\n result = methods[method](request.params);\n } catch (err) {\n error = (err as unknown as Error).message;\n }\n }\n\n const response = JSON.stringify({\n id: request.id,\n error: error,\n result: result,\n });\n\n // postMessage requires that the target origin be set to \"*\" for \"file://\"\n const targetOrigin = origin === \"file://\" ? \"*\" : origin;\n\n window.parent.postMessage(response, targetOrigin);\n};\n"],"file":"hub.js"}
1
+ {"version":3,"file":"hub.js","names":["context","init","permissions","window","addEventListener","listener","parent","postMessage","permitted","origin","method","available","includes","undefined","i","length","entry","match","test","allow","methods","get","params","storage","localStorage","result","keys","value","getItem","push","set","setItem","key","del","removeItem","getKeys","clear","message","data","request","JSON","parse","split","error","err","response","stringify","id","targetOrigin"],"sources":["../../src/storage/lib/hub.ts"],"sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\ntype Method = \"get\" | \"set\" | \"del\" | \"getKeys\" | \"clear\";\n\nexport interface Permission {\n origin: RegExp;\n allow: Method[];\n}\n\nconst context: {\n permissions?: Permission[];\n} = {};\n\n/**\n * Do not use this directly. This specifications are subject to significant change.\n * @internal\n */\nexport const init = (permissions: Permission[]) => {\n context.permissions = permissions;\n window.addEventListener(\"message\", listener, false);\n window.parent.postMessage(\"cross-storage:ready\", \"*\");\n};\n\nconst permitted = (origin: string, method: Method) => {\n const available = [\"get\", \"set\", \"del\", \"clear\", \"getKeys\"];\n if (!available.includes(method)) {\n return false;\n }\n\n if (context.permissions === undefined) {\n return false;\n }\n\n for (let i = 0; i < context.permissions.length; i++) {\n const entry = context.permissions[i];\n const match = entry.origin.test(origin);\n if (match && entry.allow.includes(method)) {\n return true;\n }\n }\n return false;\n};\n\nconst methods: {\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key in Method]: Function;\n} = {\n get: (params: { keys: string[] }) => {\n const storage = window.localStorage;\n const result = [];\n for (let i = 0; i < params.keys.length; i++) {\n const value = storage.getItem(params.keys[i]) || null;\n result.push(value);\n }\n // Todo: このパターン好きじゃない\n return result.length > 1 ? result : result[0];\n },\n set: (params: { key: string; value: string }) => {\n window.localStorage.setItem(params.key, params.value);\n },\n del: (params: { keys: string[] }) => {\n // eslint-disable-next-line no-var\n for (var i = 0; i < params.keys.length; i++) {\n window.localStorage.removeItem(params.keys[i]);\n }\n },\n getKeys: () => {\n const keys = [];\n const length = window.localStorage.length;\n\n for (let i = 0; i < length; i++) {\n keys.push(window.localStorage.key(i));\n }\n\n return keys;\n },\n clear: () => {\n window.localStorage.clear();\n },\n};\n\ninterface Message {\n origin: string;\n data: string;\n}\n\nconst listener = (message: Message) => {\n // postMessage returns the string \"null\" as the origin for \"file://\"\n const origin = message.origin === \"null\" ? \"file://\" : message.origin;\n\n // Handle polling for a ready message\n if (message.data === \"cross-storage:poll\") {\n return window.parent.postMessage(\"cross-storage:ready\", message.origin);\n }\n\n // Ignore the ready message when viewing the hub directly\n if (message.data === \"cross-storage:ready\") return;\n\n const request: {\n id: string;\n method?: string;\n // eslint-disable-next-line @typescript-eslint/ban-types\n params: Object;\n } = JSON.parse(message.data);\n\n // Check whether request.method is a string\n if (!request || typeof request.method !== \"string\") {\n return;\n }\n\n const method = request.method.split(\"cross-storage:\")[1] as Method;\n\n let error = \"\";\n let result: string | undefined = undefined;\n\n if (!method) {\n return;\n } else if (!permitted(origin, method)) {\n error = \"Invalid permissions for \" + method;\n } else {\n try {\n result = methods[method](request.params);\n } catch (err) {\n error = (err as unknown as Error).message;\n }\n }\n\n const response = JSON.stringify({\n id: request.id,\n error: error,\n result: result,\n });\n\n // postMessage requires that the target origin be set to \"*\" for \"file://\"\n const targetOrigin = origin === \"file://\" ? \"*\" : origin;\n\n window.parent.postMessage(response, targetOrigin);\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/storage/useM2mAuth.tsx"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","children","token","setToken","getCache","authenticated","tryCheckAuth","authToken","get","clear","set","input","method","body","stringify","data","fetcherResult","accessToken","logout","window","location","reload","state","useAuth","ctx","Error"],"mappings":";;;;;;;;;;AAAA,OAAOA,KAAP,IACEC,aADF,EAEEC,WAFF,EAGEC,UAHF,EAIEC,SAJF,EAKEC,OALF,EAMEC,QANF,QAOO,OAPP;AAQA,SAASC,OAAT,QAAwB,eAAxB;AACA,SAASC,eAAT,QAAgC,UAAhC;AACA,SAASC,KAAK,IAAIC,iBAAlB,QAA2C,2BAA3C;AAcA,IAAMC,qBAAqB,gBAAGV,aAAa,CACzCW,SADyC,CAA3C;;AAIA,IAAMC,kBAAkB,GAAIC,GAAD,IAA0B;AACnD,MAAMC,QAAQ,GAAGD,GAAG,CAACE,KAAJ,CAAU,GAAV,CAAjB;AACA,MAAID,QAAQ,CAACE,MAAT,KAAoB,CAAxB,EAA2B,OAAO,KAAP;AAE3B,MAAM,GAAGC,OAAH,IAAcH,QAApB;AACA,MAAMI,GAAG,GAAGC,IAAI,CAACC,KAAL,CAAWC,IAAI,CAACJ,OAAD,CAAf,EAA0B,KAA1B,CAAZ;AACA,SAAO,IAAIK,IAAJ,KAAa,IAAIA,IAAJ,CAASJ,GAAG,GAAG,IAAf,CAApB;AACD,CAPD;;AASA,OAAO,IAAMK,yBAAyB,GAAG,QAInC;AAAA,MAJoC;AACxCC,IAAAA;AADwC,GAIpC;AACJ,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBrB,QAAQ,CAACE,eAAe,CAACoB,QAAhB,MAA8B,EAA/B,CAAlC;AAEA,MAAMC,aAAa,GAAGxB,OAAO,CAAC,MAAM,CAAC,CAACqB,KAAT,EAAgB,CAACA,KAAD,CAAhB,CAA7B;AAEA,MAAMI,YAAY,GAAG5B,WAAW,iCAAC,aAAY;AAC3C,QAAM6B,SAAS,SAASvB,eAAe,CAACwB,GAAhB,EAAxB;;AACA,QAAI,EAAED,SAAS,IAAIlB,kBAAkB,CAACkB,SAAD,CAAjC,CAAJ,EAAmD;AACjDvB,MAAAA,eAAe,CAACyB,KAAhB;AACAN,MAAAA,QAAQ,CAAC,EAAD,CAAR;AACD,KAHD,MAGO;AACLnB,MAAAA,eAAe,CAAC0B,GAAhB,CAAoBH,SAApB;AACAJ,MAAAA,QAAQ,CAACI,SAAD,CAAR;AACD;AACF,GAT+B,GAS7B,EAT6B,CAAhC;AAWA3B,EAAAA,SAAS,CAAC,MAAM;AACd0B,IAAAA,YAAY;AACb,GAFQ,EAEN,CAACA,YAAD,CAFM,CAAT;AAIA,MAAMrB,KAAK,GAAGP,WAAW;AAAA,kCAAC,WAAOiC,KAAP,EAA6B;AACrD,iCAAyC5B,OAAO,CAE7CG,iBAAiB,EAF4B,EAExB;AACtB0B,QAAAA,MAAM,EAAE,MADc;AAEtBC,QAAAA,IAAI,EAAEjB,IAAI,CAACkB,SAAL,CAAeH,KAAf;AAFgB,OAFwB,CAAhD;AAAA,UAAM;AAAEI,QAAAA;AAAF,OAAN;AAAA,UAAiBC,aAAjB;;AAMA,UAAID,IAAJ,EAAU;AACR,YAAMR,SAAS,GAAGQ,IAAI,CAACE,WAAvB;AAEAjC,QAAAA,eAAe,CAAC0B,GAAhB,CAAoBH,SAApB;AACAJ,QAAAA,QAAQ,CAACI,SAAD,CAAR;AACD;;AACD,aAAOS,aAAP;AACD,KAdwB;;AAAA;AAAA;AAAA;AAAA,OActB,EAdsB,CAAzB;AAgBA,MAAME,MAAM,GAAGxC,WAAW,CAAC,MAAM;AAC/BM,IAAAA,eAAe,CAACyB,KAAhB;AACAU,IAAAA,MAAM,CAACC,QAAP,CAAgBC,MAAhB;AACD,GAHyB,EAGvB,EAHuB,CAA1B;AAKA,MAAMC,KAAK,GAAGzC,OAAO,CAAC,MAAM;AAC1B,WAAO;AACLI,MAAAA,KADK;AAELiC,MAAAA,MAFK;AAGLhB,MAAAA,KAHK;AAILG,MAAAA;AAJK,KAAP;AAMD,GAPoB,EAOlB,CAACA,aAAD,EAAgBpB,KAAhB,EAAuBiC,MAAvB,EAA+BhB,KAA/B,CAPkB,CAArB;AAQA,sBACE,oBAAC,qBAAD,CAAuB,QAAvB;AAAgC,IAAA,KAAK,EAAEoB;AAAvC,KACGrB,QADH,CADF;AAKD,CA1DM;AA4DP,OAAO,IAAMsB,OAAO,GAAG,MAAM;AAC3B,MAAMC,GAAG,GAAG7C,UAAU,CAACQ,qBAAD,CAAtB;;AACA,MAAI,CAACqC,GAAL,EAAU;AACR,UAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACD;;AACD,SAAOD,GAAP;AACD,CANM","sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { fetcher } from \"matsuri-hooks\";\nimport { m2mAuthTokenApi } from \"./client\";\nimport { login as m2mUsers_v1_login } from \"../endpoints/m2m-users.v1\";\n\ninterface LoginInput {\n email: string;\n password: string;\n}\n\ntype AuthenticationState = {\n token: string;\n authenticated: boolean;\n login: (input: LoginInput) => Promise<{ error?: Error }>;\n logout: () => void;\n};\n\nconst AuthenticationContext = createContext<AuthenticationState | undefined>(\n undefined\n);\n\nconst checkJwtExpiration = (jwt: string): boolean => {\n const splitted = jwt.split(\".\");\n if (splitted.length !== 3) return false;\n\n const [, payload] = splitted;\n const exp = JSON.parse(atob(payload))[\"exp\"];\n return new Date() < new Date(exp * 1000);\n};\n\nexport const M2mAuthenticationProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [token, setToken] = useState(m2mAuthTokenApi.getCache() || \"\");\n\n const authenticated = useMemo(() => !!token, [token]);\n\n const tryCheckAuth = useCallback(async () => {\n const authToken = await m2mAuthTokenApi.get();\n if (!(authToken && checkJwtExpiration(authToken))) {\n m2mAuthTokenApi.clear();\n setToken(\"\");\n } else {\n m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n }, []);\n\n useEffect(() => {\n tryCheckAuth();\n }, [tryCheckAuth]);\n\n const login = useCallback(async (input: LoginInput) => {\n const { data, ...fetcherResult } = await fetcher<{\n accessToken: string;\n }>(m2mUsers_v1_login(), {\n method: \"POST\",\n body: JSON.stringify(input),\n });\n if (data) {\n const authToken = data.accessToken;\n\n m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n return fetcherResult;\n }, []);\n\n const logout = useCallback(() => {\n m2mAuthTokenApi.clear();\n window.location.reload();\n }, []);\n\n const state = useMemo(() => {\n return {\n login,\n logout,\n token,\n authenticated,\n };\n }, [authenticated, login, logout, token]);\n return (\n <AuthenticationContext.Provider value={state}>\n {children}\n </AuthenticationContext.Provider>\n );\n};\n\nexport const useAuth = () => {\n const ctx = useContext(AuthenticationContext);\n if (!ctx) {\n throw new Error(\"AuthenticationProvider is not found\");\n }\n return ctx;\n};\n"],"file":"useM2mAuth.js"}
1
+ {"version":3,"file":"useM2mAuth.js","names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","children","token","setToken","getCache","authenticated","tryCheckAuth","authToken","get","clear","set","input","method","body","stringify","data","fetcherResult","accessToken","logout","window","location","reload","state","useAuth","ctx","Error"],"sources":["../src/storage/useM2mAuth.tsx"],"sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { fetcher } from \"matsuri-hooks\";\nimport { m2mAuthTokenApi } from \"./client\";\nimport { login as m2mUsers_v1_login } from \"../endpoints/m2m-users.v1\";\n\ninterface LoginInput {\n email: string;\n password: string;\n}\n\ntype AuthenticationState = {\n token: string;\n authenticated: boolean;\n login: (input: LoginInput) => Promise<{ error?: Error }>;\n logout: () => void;\n};\n\nconst AuthenticationContext = createContext<AuthenticationState | undefined>(\n undefined\n);\n\nconst checkJwtExpiration = (jwt: string): boolean => {\n const splitted = jwt.split(\".\");\n if (splitted.length !== 3) return false;\n\n const [, payload] = splitted;\n const exp = JSON.parse(atob(payload))[\"exp\"];\n return new Date() < new Date(exp * 1000);\n};\n\nexport const M2mAuthenticationProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [token, setToken] = useState(m2mAuthTokenApi.getCache() || \"\");\n\n const authenticated = useMemo(() => !!token, [token]);\n\n const tryCheckAuth = useCallback(async () => {\n const authToken = await m2mAuthTokenApi.get();\n if (!(authToken && checkJwtExpiration(authToken))) {\n m2mAuthTokenApi.clear();\n setToken(\"\");\n } else {\n m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n }, []);\n\n useEffect(() => {\n tryCheckAuth();\n }, [tryCheckAuth]);\n\n const login = useCallback(async (input: LoginInput) => {\n const { data, ...fetcherResult } = await fetcher<{\n accessToken: string;\n }>(m2mUsers_v1_login(), {\n method: \"POST\",\n body: JSON.stringify(input),\n });\n if (data) {\n const authToken = data.accessToken;\n\n m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n return fetcherResult;\n }, []);\n\n const logout = useCallback(() => {\n m2mAuthTokenApi.clear();\n window.location.reload();\n }, []);\n\n const state = useMemo(() => {\n return {\n login,\n logout,\n token,\n authenticated,\n };\n }, [authenticated, login, logout, token]);\n return (\n <AuthenticationContext.Provider value={state}>\n {children}\n </AuthenticationContext.Provider>\n );\n};\n\nexport const useAuth = () => {\n const ctx = useContext(AuthenticationContext);\n if (!ctx) {\n throw new Error(\"AuthenticationProvider is not found\");\n }\n return ctx;\n};\n"],"mappings":"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"}