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.
- package/MenuBaseElement.js.map +1 -1
- package/cjs/MenuBaseElement.js.map +1 -1
- package/cjs/endpoints/m2m-notifications.v1.js.map +1 -1
- package/cjs/endpoints/m2m-users.v1.js.map +1 -1
- package/cjs/endpoints/matsuri-forms.v1.js.map +1 -1
- package/cjs/feedback/MultipleTextQuestion.js.map +1 -1
- package/cjs/feedback/SelectQuestion.js.map +1 -1
- package/cjs/feedback/getRandomId.js.map +1 -1
- package/cjs/feedback/index.js.map +1 -1
- package/cjs/m2m-apps-menu.js.map +1 -1
- package/cjs/m2m-user-menu.js.map +1 -1
- package/cjs/notification/NotificationProvider.js.map +1 -1
- package/cjs/notification/ServiceIdProvider.js.map +1 -1
- package/cjs/notification/api.js.map +1 -1
- package/cjs/storage/client.js.map +1 -1
- package/cjs/storage/lib/client.js.map +1 -1
- package/cjs/storage/lib/hub.js.map +1 -1
- package/cjs/storage/useM2mAuth.js.map +1 -1
- package/endpoints/m2m-notifications.v1.js.map +1 -1
- package/endpoints/m2m-users.v1.js.map +1 -1
- package/endpoints/matsuri-forms.v1.js.map +1 -1
- package/feedback/MultipleTextQuestion.d.ts +1 -1
- package/feedback/MultipleTextQuestion.d.ts.map +1 -1
- package/feedback/MultipleTextQuestion.js.map +1 -1
- package/feedback/SelectQuestion.d.ts +1 -1
- package/feedback/SelectQuestion.d.ts.map +1 -1
- package/feedback/SelectQuestion.js.map +1 -1
- package/feedback/getRandomId.js.map +1 -1
- package/feedback/index.d.ts +1 -1
- package/feedback/index.d.ts.map +1 -1
- package/feedback/index.js.map +1 -1
- package/m2m-apps-menu.js.map +1 -1
- package/m2m-user-menu.js.map +1 -1
- package/notification/NotificationProvider.d.ts +1 -1
- package/notification/NotificationProvider.d.ts.map +1 -1
- package/notification/NotificationProvider.js.map +1 -1
- package/notification/ServiceIdProvider.d.ts +1 -1
- package/notification/ServiceIdProvider.d.ts.map +1 -1
- package/notification/ServiceIdProvider.js.map +1 -1
- package/notification/api.js.map +1 -1
- package/package.json +20 -20
- package/storage/client.js.map +1 -1
- package/storage/lib/client.js.map +1 -1
- package/storage/lib/hub.js.map +1 -1
- package/storage/useM2mAuth.d.ts +1 -1
- package/storage/useM2mAuth.d.ts.map +1 -1
- package/storage/useM2mAuth.js.map +1 -1
package/notification/api.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
87
|
-
"matsuri-forms-sdk": "^0.0.1
|
|
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.
|
|
92
|
-
"react": "^18.
|
|
91
|
+
"matsuri-ui": "^13.6.0",
|
|
92
|
+
"react": "^18.2.0"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
|
-
"@babel/cli": "^7.21.
|
|
96
|
-
"@babel/core": "^7.21.
|
|
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.
|
|
99
|
+
"@babel/preset-env": "^7.21.5",
|
|
100
100
|
"@babel/preset-react": "^7.18.6",
|
|
101
|
-
"@babel/preset-typescript": "^7.21.
|
|
102
|
-
"@datadog/browser-logs": "^4.
|
|
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.
|
|
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.
|
|
114
|
-
"@types/react-dom": "^18.
|
|
115
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
116
|
-
"@typescript-eslint/parser": "^5.
|
|
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.
|
|
120
|
-
"eslint-config-prettier": "^8.
|
|
121
|
-
"eslint-plugin-react": "^7.
|
|
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.
|
|
126
|
-
"prettier": "^2.
|
|
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",
|
package/storage/client.js.map
CHANGED
|
@@ -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":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAE5C,MAAMC,gBAAgB,SAASD,aAAa,CAAC;AAI7C,IAAME,OAEL,GAAG,CAAC,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAMC,UAAU;EAAA,IAAAC,IAAA,GAAAC,iBAAA,CAAG,aAA0B;IAAA,IAAnBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACtC,IAAMG,OAAO,SAAS,IAAIC,OAAO,CAAmB,CAACC,OAAO,EAAEC,MAAM,KAAK;MACvE,IAAMC,WAAW,GAAGC,MAAM,CAACC,UAAU,CAAC,YAAY;QAChDH,MAAM,CACJ,IAAII,KAAK,CACP,
|
|
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":"AAAA;AACA;AACA;AACA,IAAMA,YAAY,GAAGA,CAAA,KAAM;EACzB,OAAO,sCAAsC,CAACC,OAAO,CAAC,OAAO,EAAE,UAAUC,CAAC,EAAE;IAC1E,IAAMC,CAAC,GAAIC,IAAI,CAACC,MAAM,EAAE,GAAG,EAAE,GAAI,CAAC;MAChCC,CAAC,GAAGJ,CAAC,IAAI,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG;IAEpC,OAAOG,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AACD,OAAO,MAAMC,aAAa,CAAC;EAazBC,WAAWA,CAACC,GAAW,EAAEC,IAA6C,EAAE;IAAA,KAZxEC,EAAE;IAAA,KACFC,OAAO;IAAA,KACPC,MAAM;IAAA,KACNC,QAAQ;IAAA,KAGRC,SAAS;IAAA,KACTC,MAAM;IAAA,KACNC,KAAK;IAAA,KACLC,OAAO;IAAA,KACPC,GAAG;IAGDT,IAAI,GAAGA,IAAI,IAAI,CAAC,CAAC;IAEjB,IAAI,CAACC,EAAE,GAAGZ,YAAY,EAAE;IACxB,IAAI,CAACa,OAAO,GAAGF,IAAI,CAACE,OAAO,IAAI,qBAAqB,GAAG,IAAI,CAACD,EAAE;IAC9D,IAAI,CAACE,MAAM,GAAG,IAAIO,GAAG,CAACX,GAAG,CAAC,CAACI,MAAM;IACjC,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAC;IAClB,IAAI,CAACC,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,MAAM,GAAG,KAAK;IACnB,IAAI,CAACC,KAAK,GAAG,CAAC;IACd,IAAI,CAACC,OAAO,GAAGR,IAAI,CAACQ,OAAO,IAAI,IAAI;IAEnCG,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAEnE,IAAMC,KAAK,GAAG,IAAI,CAACC,WAAW,CAACjB,GAAG,CAAC;IACnC,IAAI,CAACU,GAAG,GAAGM,KAAK,CAACE,aAAa;EAChC;EAEAC,SAASA,CAAA,EAAG;IACV,IAAI,IAAI,CAACb,SAAS,EAAE;MAClB,OAAOc,OAAO,CAACC,OAAO,EAAE;IAC1B,CAAC,MAAM,IAAI,IAAI,CAACd,MAAM,EAAE;MACtB,OAAOa,OAAO,CAACE,MAAM,CAAC,IAAIC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/D;IAEA,IAAI,CAAC,IAAI,CAAClB,QAAQ,CAACmB,OAAO,EAAE;MAC1B,IAAI,CAACnB,QAAQ,CAACmB,OAAO,GAAG,EAAE;IAC5B;IAEA,OAAO,IAAIJ,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,IAAMb,OAAO,GAAGgB,UAAU,CAAC,YAAY;QACrCH,MAAM,CAAC,IAAIC,KAAK,CAAC,kCAAkC,CAAC,CAAC;MACvD,CAAC,EAAE,IAAI,CAACd,OAAO,CAAC;MAEhB,IAAI,CAACJ,QAAQ,CAACmB,OAAO,CAACE,IAAI,CAAEC,GAAW,IAAK;QAC1CC,YAAY,CAACnB,OAAO,CAAC;QACrB,IAAIkB,GAAG,EAAE,OAAOL,MAAM,CAACK,GAAG,CAAC;QAE3BN,OAAO,CAACQ,SAAS,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEAC,GAAGA,CAACC,GAAW,EAAEC,KAAa,EAAE;IAC9B,OAAO,IAAI,CAACC,OAAO,CAAC,KAAK,EAAE;MACzBF,GAAG,EAAEA,GAAG;MACRC,KAAK,EAAEA;IACT,CAAC,CAAC;EACJ;EAEAE,GAAGA,CAAA,EAAoB;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAhBC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IACT,OAAO,IAAI,CAACP,OAAO,CAAC,KAAK,EAAE;MAAEK;IAAK,CAAC,CAAC;EACtC;EAEAG,GAAGA,CAAA,EAAoB;IAAA,SAAAC,KAAA,GAAAN,SAAA,CAAAC,MAAA,EAAhBC,IAAI,OAAAC,KAAA,CAAAG,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJL,IAAI,CAAAK,KAAA,IAAAP,SAAA,CAAAO,KAAA;IAAA;IACT,OAAO,IAAI,CAACV,OAAO,CAAC,KAAK,EAAE;MAAEK;IAAK,CAAC,CAAC;EACtC;EAEAM,KAAKA,CAAA,EAAG;IACN,OAAO,IAAI,CAACX,OAAO,CAAC,OAAO,CAAC;EAC9B;EAEAY,OAAOA,CAAA,EAAG;IACR,IAAI,CAACZ,OAAO,CAAC,SAAS,CAAC;EACzB;EAEAa,KAAKA,CAAA,EAAG;IACN,IAAM9B,KAAK,GAAG+B,QAAQ,CAACC,cAAc,CAAC,IAAI,CAAC7C,OAAO,CAAC;IACnD,IAAIa,KAAK,IAAIA,KAAK,CAACiC,UAAU,EAAE;MAC7BjC,KAAK,CAACiC,UAAU,CAACC,WAAW,CAAClC,KAAK,CAAC;IACrC;IAEAJ,MAAM,CAACuC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACrC,QAAQ,EAAE,KAAK,CAAC;IAE3D,IAAI,CAACR,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,MAAM,GAAG,IAAI;EACpB;EAEQO,QAAQA,CAACsC,OAAqB,EAAE;IACtC,IAAIC,CAAC,EAAEC,KAAK,EAAEC,QAAQ;IAEtB,IAAI,IAAI,CAAChD,MAAM,IAAI,CAAC6C,OAAO,CAACI,IAAI,IAAI,OAAOJ,OAAO,CAACI,IAAI,KAAK,QAAQ,EAAE;MACpE;IACF;IAEA,IAAMpD,MAAM,GAAGgD,OAAO,CAAChD,MAAM;IAE7B,IAAIA,MAAM,KAAK,IAAI,CAACA,MAAM,EAAE;IAE5B,IAAIgD,OAAO,CAACI,IAAI,KAAK,2BAA2B,EAAE;MAChD,IAAI,CAAC,IAAI,CAACjD,MAAM,EAAE,IAAI,CAACuC,KAAK,EAAE;MAC9B,IAAI,CAAC,IAAI,CAACzC,QAAQ,CAACmB,OAAO,EAAE;MAE5B8B,KAAK,GAAG,IAAI/B,KAAK,CACf,qEAAqE,CACtE;MACD,KAAK8B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAChD,QAAQ,CAACmB,OAAO,CAACa,MAAM,EAAEgB,CAAC,EAAE,EAAE;QACjD,IAAI,CAAChD,QAAQ,CAACmB,OAAO,CAAC6B,CAAC,CAAC,CAACC,KAAK,CAAC;MACjC;MAEA;IACF;IAEA,IAAIF,OAAO,CAACI,IAAI,CAACC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAACnD,SAAS,EAAE;MACpE,IAAI,CAACA,SAAS,GAAG,IAAI;MACrB,IAAI,CAAC,IAAI,CAACD,QAAQ,CAACmB,OAAO,EAAE;MAE5B,KAAK6B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAChD,QAAQ,CAACmB,OAAO,CAACa,MAAM,EAAEgB,CAAC,EAAE,EAAE;QACjD,IAAI,CAAChD,QAAQ,CAACmB,OAAO,CAAC6B,CAAC,CAAC,CAACC,KAAK,CAAC;MACjC;MACA,OAAO,IAAI,CAACjD,QAAQ,CAACmB,OAAO;IAC9B;IAEA,IAAI4B,OAAO,CAACI,IAAI,KAAK,qBAAqB,EAAE;IAE5C,IAAI;MACFD,QAAQ,GAAGG,IAAI,CAACC,KAAK,CAACP,OAAO,CAACI,IAAI,CAAC;IACrC,CAAC,CAAC,OAAOI,CAAC,EAAE;MACV;IACF;IAEA,IAAI,CAACL,QAAQ,CAACrD,EAAE,EAAE;IAElB,IAAI,IAAI,CAACG,QAAQ,CAACkD,QAAQ,CAACrD,EAAE,CAAC,EAAE;MAC9B,IAAI,CAACG,QAAQ,CAACkD,QAAQ,CAACrD,EAAE,CAAC,CAACqD,QAAQ,CAACD,KAAK,EAAEC,QAAQ,CAACM,MAAM,CAAC;IAC7D;EACF;EAEQ5C,WAAWA,CAACjB,GAAW,EAAE;IAC/B,IAAMgB,KAAK,GAAGJ,MAAM,CAACmC,QAAQ,CAACe,aAAa,CAAC,QAAQ,CAAC;IACrD9C,KAAK,CAACd,EAAE,GAAG,IAAI,CAACC,OAAO;IAEvBa,KAAK,CAAC+C,KAAK,CAACC,OAAO,GAAG,MAAM;IAC5BhD,KAAK,CAAC+C,KAAK,CAACE,QAAQ,GAAG,UAAU;IACjCjD,KAAK,CAAC+C,KAAK,CAACG,GAAG,GAAG,QAAQ;IAC1BlD,KAAK,CAAC+C,KAAK,CAACI,IAAI,GAAG,QAAQ;IAE3BvD,MAAM,CAACmC,QAAQ,CAACqB,IAAI,CAACC,WAAW,CAACrD,KAAK,CAAC;IACvCA,KAAK,CAACsD,GAAG,GAAGtE,GAAG;IAEf,OAAOgB,KAAK;EACd;;EAEA;EACQiB,OAAOA,CAACsC,MAAc,EAAEC,MAAW,EAAE;IAC3C,IAAI,IAAI,CAACjE,MAAM,EAAE;MACf,OAAOa,OAAO,CAACE,MAAM,CAAC,IAAIC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/D;IAEA,IAAI,CAACf,KAAK,EAAE;IAEZ,IAAMiE,GAAG,GAAG;MACVvE,EAAE,EAAE,IAAI,CAACA,EAAE,GAAG,GAAG,GAAG,IAAI,CAACM,KAAK;MAC9B+D,MAAM,EAAE,gBAAgB,GAAGA,MAAM;MACjCC,MAAM,EAAEA;IACV,CAAC;IAED,OAAO,IAAIpD,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,IAAMb,OAAO,GAAGG,MAAM,CAACa,UAAU,CAAC,MAAM;QACtC,IAAI,CAAC,IAAI,CAACpB,QAAQ,CAACoE,GAAG,CAACvE,EAAE,CAAC,EAAE;QAE5B,OAAO,IAAI,CAACG,QAAQ,CAACoE,GAAG,CAACvE,EAAE,CAAC;QAC5BoB,MAAM,CACJ,IAAIC,KAAK,CAAC,2CAA2C,GAAGkD,GAAG,CAACF,MAAM,CAAC,CACpE;MACH,CAAC,EAAE,IAAI,CAAC9D,OAAO,CAAC;MAEhB,IAAI,CAACJ,QAAQ,CAACoE,GAAG,CAACvE,EAAE,CAAC,GAAG,CAACyB,GAAW,EAAEkC,MAAc,KAAK;QACvDjC,YAAY,CAACnB,OAAO,CAAC;QACrB,OAAO,IAAI,CAACJ,QAAQ,CAACoE,GAAG,CAACvE,EAAE,CAAC;QAC5B,IAAIyB,GAAG,EAAE,OAAOL,MAAM,CAAC,IAAIC,KAAK,CAACI,GAAG,CAAC,CAAC;QACtCN,OAAO,CAACwC,MAAM,CAAC;MACjB,CAAC;MAED,IAAI,IAAI,CAACnD,GAAG,EAAE;QACZ,IAAI,CAACA,GAAG,CAACgE,WAAW,CAAChB,IAAI,CAACiB,SAAS,CAACF,GAAG,CAAC,EAAE,IAAI,CAACrE,MAAM,CAAC;MACxD,CAAC,MAAM;QACLkB,MAAM,CAAC,IAAIC,KAAK,CAAC,uBAAuB,CAAC,CAAC;MAC5C;IACF,CAAC,CAAC;EACJ;AACF"}
|
|
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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"}
|
package/storage/lib/hub.js.map
CHANGED
|
@@ -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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"}
|
package/storage/useM2mAuth.d.ts
CHANGED
|
@@ -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;
|
|
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":";;AAAA,OAAOA,KAAK,IACVC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,QAAQ,QACH,OAAO;AACd,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,eAAe,QAAQ,UAAU;AAC1C,SAASC,KAAK,IAAIC,iBAAiB,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAevE,IAAMC,qBAAqB,gBAAGZ,aAAa,CACzCa,
|
|
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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"}
|