m2m-components 3.1.1 → 3.1.2

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/MenuBaseElement.js.map +1 -1
  2. package/cjs/MenuBaseElement.js.map +1 -1
  3. package/cjs/endpoints/m2m-notifications.v1.js.map +1 -1
  4. package/cjs/endpoints/m2m-users.v1.js.map +1 -1
  5. package/cjs/endpoints/matsuri-forms.v1.js.map +1 -1
  6. package/cjs/feedback/MultipleTextQuestion.js.map +1 -1
  7. package/cjs/feedback/SelectQuestion.js.map +1 -1
  8. package/cjs/feedback/getRandomId.js.map +1 -1
  9. package/cjs/feedback/index.js.map +1 -1
  10. package/cjs/m2m-apps-menu.js.map +1 -1
  11. package/cjs/m2m-user-menu.js.map +1 -1
  12. package/cjs/notification/NotificationProvider.js.map +1 -1
  13. package/cjs/notification/ServiceIdProvider.js.map +1 -1
  14. package/cjs/notification/api.js.map +1 -1
  15. package/cjs/storage/client.js.map +1 -1
  16. package/cjs/storage/lib/client.js.map +1 -1
  17. package/cjs/storage/lib/hub.js.map +1 -1
  18. package/cjs/storage/useM2mAuth.js.map +1 -1
  19. package/endpoints/m2m-notifications.v1.js.map +1 -1
  20. package/endpoints/m2m-users.v1.js.map +1 -1
  21. package/endpoints/matsuri-forms.v1.js.map +1 -1
  22. package/feedback/MultipleTextQuestion.d.ts +1 -1
  23. package/feedback/MultipleTextQuestion.d.ts.map +1 -1
  24. package/feedback/MultipleTextQuestion.js.map +1 -1
  25. package/feedback/SelectQuestion.d.ts +1 -1
  26. package/feedback/SelectQuestion.d.ts.map +1 -1
  27. package/feedback/SelectQuestion.js.map +1 -1
  28. package/feedback/getRandomId.js.map +1 -1
  29. package/feedback/index.d.ts +1 -1
  30. package/feedback/index.d.ts.map +1 -1
  31. package/feedback/index.js.map +1 -1
  32. package/m2m-apps-menu.js.map +1 -1
  33. package/m2m-user-menu.js.map +1 -1
  34. package/notification/NotificationProvider.d.ts +1 -1
  35. package/notification/NotificationProvider.d.ts.map +1 -1
  36. package/notification/NotificationProvider.js.map +1 -1
  37. package/notification/ServiceIdProvider.d.ts +1 -1
  38. package/notification/ServiceIdProvider.d.ts.map +1 -1
  39. package/notification/ServiceIdProvider.js.map +1 -1
  40. package/notification/api.js.map +1 -1
  41. package/package.json +20 -20
  42. package/storage/client.js.map +1 -1
  43. package/storage/lib/client.js.map +1 -1
  44. package/storage/lib/hub.js.map +1 -1
  45. package/storage/useM2mAuth.d.ts +1 -1
  46. package/storage/useM2mAuth.d.ts.map +1 -1
  47. package/storage/useM2mAuth.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":["fetcher","m2mNotifications_v1","requestUpdateNotificationStatusToRead","_ref","_asyncToGenerator","token","id","updateNotificationStatus","method","body","JSON","stringify","status","_x","_x2","apply","arguments","requestSubscribe","_ref2","serviceId","input","error","saveSubscription","_objectSpread","console","_x3","_x4","_x5","requestUnSubscribe","_ref3","_x6","_x7","_x8"],"sources":["../src/notification/api.ts"],"sourcesContent":["import { fetcher } from \"matsuri-hooks\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\nimport { Subscription } from \"./domain\";\n\nexport const requestUpdateNotificationStatusToRead = async (\n token: string,\n id: string\n) => {\n await fetcher(\n m2mNotifications_v1.updateNotificationStatus({\n id,\n }),\n {\n method: \"PUT\",\n token,\n body: JSON.stringify({ status: \"read\" }),\n }\n );\n};\n\nexport const requestSubscribe = async (\n token: string,\n serviceId: string,\n input: Pick<Subscription, \"notificationType\" | \"resourceSubscription\">\n) => {\n const { error } = await fetcher(m2mNotifications_v1.saveSubscription(), {\n method: \"POST\",\n token,\n body: JSON.stringify({\n ...input,\n serviceId,\n status: \"subscribed\",\n }),\n });\n if (error) {\n console.error(error);\n }\n};\n\nexport const requestUnSubscribe = async (\n token: string,\n serviceId: string,\n input: Pick<Subscription, \"notificationType\" | \"resourceSubscription\">\n) => {\n const { error } = await fetcher(m2mNotifications_v1.saveSubscription(), {\n method: \"POST\",\n token,\n body: JSON.stringify({\n ...input,\n serviceId,\n status: \"denied\",\n }),\n });\n if (error) {\n console.error(error);\n }\n};\n"],"mappings":";;;;;;;AAAA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,mBAAmB,QAAQ,mCAAmC;AAGvE,OAAO,IAAMC,qCAAqC;EAAA,IAAAC,IAAA,GAAAC,iBAAA,CAAG,WACnDC,KAAa,EACbC,EAAU,EACP;IACH,MAAMN,OAAO,CACXC,mBAAmB,CAACM,wBAAwB,CAAC;MAC3CD;IACF,CAAC,CAAC,EACF;MACEE,MAAM,EAAE,KAAK;MACbH,KAAK;MACLI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QAAEC,MAAM,EAAE;MAAO,CAAC;IACzC,CAAC,CACF;EACH,CAAC;EAAA,gBAdYV,qCAAqCA,CAAAW,EAAA,EAAAC,GAAA;IAAA,OAAAX,IAAA,CAAAY,KAAA,OAAAC,SAAA;EAAA;AAAA,GAcjD;AAED,OAAO,IAAMC,gBAAgB;EAAA,IAAAC,KAAA,GAAAd,iBAAA,CAAG,WAC9BC,KAAa,EACbc,SAAiB,EACjBC,KAAsE,EACnE;IACH,IAAM;MAAEC;IAAM,CAAC,SAASrB,OAAO,CAACC,mBAAmB,CAACqB,gBAAgB,EAAE,EAAE;MACtEd,MAAM,EAAE,MAAM;MACdH,KAAK;MACLI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAAY,aAAA,CAAAA,aAAA,KACfH,KAAK;QACRD,SAAS;QACTP,MAAM,EAAE;MAAY;IAExB,CAAC,CAAC;IACF,IAAIS,KAAK,EAAE;MACTG,OAAO,CAACH,KAAK,CAACA,KAAK,CAAC;IACtB;EACF,CAAC;EAAA,gBAjBYJ,gBAAgBA,CAAAQ,GAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAAT,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAiB5B;AAED,OAAO,IAAMY,kBAAkB;EAAA,IAAAC,KAAA,GAAAzB,iBAAA,CAAG,WAChCC,KAAa,EACbc,SAAiB,EACjBC,KAAsE,EACnE;IACH,IAAM;MAAEC;IAAM,CAAC,SAASrB,OAAO,CAACC,mBAAmB,CAACqB,gBAAgB,EAAE,EAAE;MACtEd,MAAM,EAAE,MAAM;MACdH,KAAK;MACLI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAAY,aAAA,CAAAA,aAAA,KACfH,KAAK;QACRD,SAAS;QACTP,MAAM,EAAE;MAAQ;IAEpB,CAAC,CAAC;IACF,IAAIS,KAAK,EAAE;MACTG,OAAO,CAACH,KAAK,CAACA,KAAK,CAAC;IACtB;EACF,CAAC;EAAA,gBAjBYO,kBAAkBA,CAAAE,GAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAAH,KAAA,CAAAd,KAAA,OAAAC,SAAA;EAAA;AAAA,GAiB9B"}
1
+ {"version":3,"file":"api.js","names":["fetcher","m2mNotifications_v1","requestUpdateNotificationStatusToRead","_ref","_asyncToGenerator","token","id","updateNotificationStatus","method","body","JSON","stringify","status","_x","_x2","apply","arguments","requestSubscribe","_ref2","serviceId","input","error","saveSubscription","_objectSpread","console","_x3","_x4","_x5","requestUnSubscribe","_ref3","_x6","_x7","_x8"],"sources":["../src/notification/api.ts"],"sourcesContent":["import { fetcher } from \"matsuri-hooks\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\nimport { Subscription } from \"./domain\";\n\nexport const requestUpdateNotificationStatusToRead = async (\n token: string,\n id: string\n) => {\n await fetcher(\n m2mNotifications_v1.updateNotificationStatus({\n id,\n }),\n {\n method: \"PUT\",\n token,\n body: JSON.stringify({ status: \"read\" }),\n }\n );\n};\n\nexport const requestSubscribe = async (\n token: string,\n serviceId: string,\n input: Pick<Subscription, \"notificationType\" | \"resourceSubscription\">\n) => {\n const { error } = await fetcher(m2mNotifications_v1.saveSubscription(), {\n method: \"POST\",\n token,\n body: JSON.stringify({\n ...input,\n serviceId,\n status: \"subscribed\",\n }),\n });\n if (error) {\n console.error(error);\n }\n};\n\nexport const requestUnSubscribe = async (\n token: string,\n serviceId: string,\n input: Pick<Subscription, \"notificationType\" | \"resourceSubscription\">\n) => {\n const { error } = await fetcher(m2mNotifications_v1.saveSubscription(), {\n method: \"POST\",\n token,\n body: JSON.stringify({\n ...input,\n serviceId,\n status: \"denied\",\n }),\n });\n if (error) {\n console.error(error);\n }\n};\n"],"mappings":";;;;;;;AAAA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,mBAAmB,QAAQ,mCAAmC;AAGvE,OAAO,IAAMC,qCAAqC;EAAA,IAAAC,IAAA,GAAAC,iBAAA,CAAG,WACnDC,KAAa,EACbC,EAAU,EACP;IACH,MAAMN,OAAO,CACXC,mBAAmB,CAACM,wBAAwB,CAAC;MAC3CD;IACF,CAAC,CAAC,EACF;MACEE,MAAM,EAAE,KAAK;MACbH,KAAK;MACLI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QAAEC,MAAM,EAAE;MAAO,CAAC;IACzC,CACF,CAAC;EACH,CAAC;EAAA,gBAdYV,qCAAqCA,CAAAW,EAAA,EAAAC,GAAA;IAAA,OAAAX,IAAA,CAAAY,KAAA,OAAAC,SAAA;EAAA;AAAA,GAcjD;AAED,OAAO,IAAMC,gBAAgB;EAAA,IAAAC,KAAA,GAAAd,iBAAA,CAAG,WAC9BC,KAAa,EACbc,SAAiB,EACjBC,KAAsE,EACnE;IACH,IAAM;MAAEC;IAAM,CAAC,SAASrB,OAAO,CAACC,mBAAmB,CAACqB,gBAAgB,CAAC,CAAC,EAAE;MACtEd,MAAM,EAAE,MAAM;MACdH,KAAK;MACLI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAAY,aAAA,CAAAA,aAAA,KACfH,KAAK;QACRD,SAAS;QACTP,MAAM,EAAE;MAAY,EACrB;IACH,CAAC,CAAC;IACF,IAAIS,KAAK,EAAE;MACTG,OAAO,CAACH,KAAK,CAACA,KAAK,CAAC;IACtB;EACF,CAAC;EAAA,gBAjBYJ,gBAAgBA,CAAAQ,GAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAAT,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAiB5B;AAED,OAAO,IAAMY,kBAAkB;EAAA,IAAAC,KAAA,GAAAzB,iBAAA,CAAG,WAChCC,KAAa,EACbc,SAAiB,EACjBC,KAAsE,EACnE;IACH,IAAM;MAAEC;IAAM,CAAC,SAASrB,OAAO,CAACC,mBAAmB,CAACqB,gBAAgB,CAAC,CAAC,EAAE;MACtEd,MAAM,EAAE,MAAM;MACdH,KAAK;MACLI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAAY,aAAA,CAAAA,aAAA,KACfH,KAAK;QACRD,SAAS;QACTP,MAAM,EAAE;MAAQ,EACjB;IACH,CAAC,CAAC;IACF,IAAIS,KAAK,EAAE;MACTG,OAAO,CAACH,KAAK,CAACA,KAAK,CAAC;IACtB;EACF,CAAC;EAAA,gBAjBYO,kBAAkBA,CAAAE,GAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAAH,KAAA,CAAAd,KAAA,OAAAC,SAAA;EAAA;AAAA,GAiB9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "m2m-components",
3
- "version": "3.1.1",
3
+ "version": "3.1.2",
4
4
  "main": "cjs/index.js",
5
5
  "module": "index.js",
6
6
  "typings": "index.d.ts",
@@ -83,25 +83,25 @@
83
83
  "test": "jest"
84
84
  },
85
85
  "dependencies": {
86
- "lit": "^2.0.2",
87
- "matsuri-forms-sdk": "^0.0.1-alpha-349a38f.0"
86
+ "lit": "^2.7.4",
87
+ "matsuri-forms-sdk": "^0.0.1"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "matsuri-hooks": "^0.1.0",
91
- "matsuri-ui": "^13.0.0",
92
- "react": "^18.0.0"
91
+ "matsuri-ui": "^13.6.0",
92
+ "react": "^18.2.0"
93
93
  },
94
94
  "devDependencies": {
95
- "@babel/cli": "^7.21.0",
96
- "@babel/core": "^7.21.4",
95
+ "@babel/cli": "^7.21.5",
96
+ "@babel/core": "^7.21.8",
97
97
  "@babel/plugin-proposal-class-properties": "^7.18.6",
98
98
  "@babel/plugin-proposal-decorators": "^7.21.0",
99
- "@babel/preset-env": "^7.21.4",
99
+ "@babel/preset-env": "^7.21.5",
100
100
  "@babel/preset-react": "^7.18.6",
101
- "@babel/preset-typescript": "^7.21.4",
102
- "@datadog/browser-logs": "^4.39.0",
101
+ "@babel/preset-typescript": "^7.21.5",
102
+ "@datadog/browser-logs": "^4.42.1",
103
103
  "@mui/icons-material": "^5.11.16",
104
- "@mui/material": "^5.12.0",
104
+ "@mui/material": "^5.12.3",
105
105
  "@rollup/plugin-babel": "^5.3.1",
106
106
  "@rollup/plugin-node-resolve": "^13.3.0",
107
107
  "@rollup/plugin-typescript": "^8.5.0",
@@ -110,20 +110,20 @@
110
110
  "@testing-library/react-hooks": "^8.0.1",
111
111
  "@types/jest": "^27.5.2",
112
112
  "@types/node": "^17.0.5",
113
- "@types/react": "^18.0.35",
114
- "@types/react-dom": "^18.0.11",
115
- "@typescript-eslint/eslint-plugin": "^5.9.1",
116
- "@typescript-eslint/parser": "^5.9.1",
113
+ "@types/react": "^18.2.6",
114
+ "@types/react-dom": "^18.2.4",
115
+ "@typescript-eslint/eslint-plugin": "^5.59.5",
116
+ "@typescript-eslint/parser": "^5.59.5",
117
117
  "concurrently": "^6.5.1",
118
118
  "endpoints-sdk-cli": "^2.4.1",
119
- "eslint": "^8.7.0",
120
- "eslint-config-prettier": "^8.3.0",
121
- "eslint-plugin-react": "^7.29.4",
119
+ "eslint": "^8.40.0",
120
+ "eslint-config-prettier": "^8.8.0",
121
+ "eslint-plugin-react": "^7.32.2",
122
122
  "eslint-plugin-react-hooks": "^4.6.0",
123
123
  "jest": "^27.5.1",
124
124
  "matsuri-hooks": "^0.1.0",
125
- "matsuri-ui": "^13.5.4",
126
- "prettier": "^2.5.1",
125
+ "matsuri-ui": "^13.6.0",
126
+ "prettier": "^2.8.8",
127
127
  "react": "^18.2.0",
128
128
  "react-dom": "^18.2.0",
129
129
  "rollup": "^2.79.1",
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["StorageClient","M2mStorageClient","context","getStorage","_ref","_asyncToGenerator","timeout","arguments","length","undefined","storage","Promise","resolve","reject","rejectTimer","window","setTimeout","Error","clearTimeout","timer","setInterval","clearInterval","onConnect","apply","M2M_STORAGE_HUB_URL","M2M_STORAGE_HUB_URL_DEV","initStorageClient","options","env","m2mStorageClient","init","M2M_AUTH_TOKEN_KEY","getAuthTokenCache","localStorage","getItem","getAuthToken","_ref2","autuToken","get","error","console","warn","setAuthToken","_ref3","token","setItem","set","_x","clearAuthToken","_ref4","removeItem","del","m2mAuthTokenApi","getCache","clear"],"sources":["../src/storage/client.ts"],"sourcesContent":["import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\nconst context: {\n storage?: M2mStorageClient;\n} = {};\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = window.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\"\n )\n );\n }, timeout);\n\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = window.setInterval(() => {\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n window.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (context.storage) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\"\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV\n );\n context.storage = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return window.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n window.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n window.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["StorageClient","M2mStorageClient","context","getStorage","_ref","_asyncToGenerator","timeout","arguments","length","undefined","storage","Promise","resolve","reject","rejectTimer","window","setTimeout","Error","clearTimeout","timer","setInterval","clearInterval","onConnect","apply","M2M_STORAGE_HUB_URL","M2M_STORAGE_HUB_URL_DEV","initStorageClient","options","env","m2mStorageClient","init","M2M_AUTH_TOKEN_KEY","getAuthTokenCache","localStorage","getItem","getAuthToken","_ref2","autuToken","get","error","console","warn","setAuthToken","_ref3","token","setItem","set","_x","clearAuthToken","_ref4","removeItem","del","m2mAuthTokenApi","getCache","clear"],"sources":["../src/storage/client.ts"],"sourcesContent":["import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\nconst context: {\n storage?: M2mStorageClient;\n} = {};\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = window.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\"\n )\n );\n }, timeout);\n\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = window.setInterval(() => {\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n window.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (context.storage) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\"\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV\n );\n context.storage = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return window.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n window.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n window.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
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","_len","arguments","length","keys","Array","_key","del","_len2","_key2","clear","getKeys","close","document","getElementById","parentNode","removeChild","removeEventListener","message","i","error","response","data","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
+ {"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","_len","arguments","length","keys","Array","_key","del","_len2","_key2","clear","getKeys","close","document","getElementById","parentNode","removeChild","removeEventListener","message","i","error","response","data","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,"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
+ {"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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"}
@@ -17,7 +17,7 @@ type AuthenticationState = {
17
17
  };
18
18
  export declare const M2mAuthenticationProvider: ({ children, }: {
19
19
  children: React.ReactNode;
20
- }) => JSX.Element;
20
+ }) => import("react/jsx-runtime").JSX.Element;
21
21
  export declare const useAuth: () => AuthenticationState;
22
22
  export {};
23
23
  //# sourceMappingURL=useM2mAuth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useM2mAuth.d.ts","sourceRoot":"","sources":["../src/storage/useM2mAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAKf,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IACzE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CAC5D,CAAC;AAeF,eAAO,MAAM,yBAAyB;cAG1B,MAAM,SAAS;iBAsE1B,CAAC;AAEF,eAAO,MAAM,OAAO,2BAMnB,CAAC"}
1
+ {"version":3,"file":"useM2mAuth.d.ts","sourceRoot":"","sources":["../src/storage/useM2mAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAKf,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IACzE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CAC5D,CAAC;AAeF,eAAO,MAAM,yBAAyB;cAG1B,MAAM,SAAS;6CAsE1B,CAAC;AAEF,eAAO,MAAM,OAAO,2BAMnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useM2mAuth.js","names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","jsx","_jsx","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","_ref","children","token","setToken","getCache","authenticated","tryCheckAuth","_asyncToGenerator","authToken","get","clear","set","_ref3","input","data","error","method","body","stringify","accessToken","_x","apply","arguments","logout","window","location","reload","updateToken","_ref4","Error","_x2","state","Provider","value","useAuth","ctx"],"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<{ token?: string; error?: Error }>;\n logout: () => void;\n updateToken: (token: string) => Promise<{ error?: Error }>;\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, error } = 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 {\n error,\n token: data ? data.accessToken : undefined,\n };\n }, []);\n\n const logout = useCallback(() => {\n m2mAuthTokenApi.clear();\n window.location.reload();\n }, []);\n\n const updateToken = useCallback(async (token: string) => {\n if (checkJwtExpiration(token)) {\n return {\n error: new Error(\"M2MAuthToken is expired\"),\n };\n }\n await m2mAuthTokenApi.set(token);\n setToken(token);\n return { error: undefined };\n }, []);\n\n const state = useMemo(() => {\n return {\n login,\n logout,\n token,\n authenticated,\n updateToken,\n };\n }, [authenticated, login, logout, token, updateToken]);\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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"}
1
+ {"version":3,"file":"useM2mAuth.js","names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","jsx","_jsx","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","_ref","children","token","setToken","getCache","authenticated","tryCheckAuth","_asyncToGenerator","authToken","get","clear","set","_ref3","input","data","error","method","body","stringify","accessToken","_x","apply","arguments","logout","window","location","reload","updateToken","_ref4","Error","_x2","state","Provider","value","useAuth","ctx"],"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<{ token?: string; error?: Error }>;\n logout: () => void;\n updateToken: (token: string) => Promise<{ error?: Error }>;\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, error } = 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 {\n error,\n token: data ? data.accessToken : undefined,\n };\n }, []);\n\n const logout = useCallback(() => {\n m2mAuthTokenApi.clear();\n window.location.reload();\n }, []);\n\n const updateToken = useCallback(async (token: string) => {\n if (checkJwtExpiration(token)) {\n return {\n error: new Error(\"M2MAuthToken is expired\"),\n };\n }\n await m2mAuthTokenApi.set(token);\n setToken(token);\n return { error: undefined };\n }, []);\n\n const state = useMemo(() => {\n return {\n login,\n logout,\n token,\n authenticated,\n updateToken,\n };\n }, [authenticated, login, logout, token, updateToken]);\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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"}