m2m-components 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LitMenuBaseElement.js +11 -91
- package/LitMenuBaseElement.js.map +1 -1
- package/cjs/LitMenuBaseElement.js +225 -0
- package/cjs/LitMenuBaseElement.js.map +1 -0
- package/cjs/domains.js +25 -0
- package/cjs/domains.js.map +1 -0
- package/cjs/endpoints/m2m-notifications.js +19 -0
- package/cjs/endpoints/m2m-notifications.js.map +1 -0
- package/cjs/endpoints/m2m-notifications.v1.js +169 -0
- package/cjs/endpoints/m2m-notifications.v1.js.map +1 -0
- package/cjs/endpoints/m2m-users.js +19 -0
- package/cjs/endpoints/m2m-users.js.map +1 -0
- package/cjs/endpoints/m2m-users.v1.js +672 -0
- package/cjs/endpoints/m2m-users.v1.js.map +1 -0
- package/cjs/index.js +14 -0
- package/cjs/index.js.map +1 -0
- package/cjs/m2m-apps-menu.js +110 -0
- package/cjs/m2m-apps-menu.js.map +1 -0
- package/cjs/m2m-user-menu.js +113 -0
- package/cjs/m2m-user-menu.js.map +1 -0
- package/cjs/notification/NotificationProvider.js +100 -0
- package/cjs/notification/NotificationProvider.js.map +1 -0
- package/cjs/notification/ServiceIdProvider.js +41 -0
- package/cjs/notification/ServiceIdProvider.js.map +1 -0
- package/cjs/notification/api.js +63 -0
- package/cjs/notification/api.js.map +1 -0
- package/cjs/notification/domain.js +6 -0
- package/cjs/notification/domain.js.map +1 -0
- package/cjs/notification/index.js +58 -0
- package/cjs/notification/index.js.map +1 -0
- package/cjs/storage/client.js +110 -0
- package/cjs/storage/client.js.map +1 -0
- package/cjs/storage/hub.js +21 -0
- package/cjs/storage/hub.js.map +1 -0
- package/cjs/storage/lib/client.js +203 -0
- package/cjs/storage/lib/client.js.map +1 -0
- package/cjs/storage/lib/hub.js +126 -0
- package/cjs/storage/lib/hub.js.map +1 -0
- package/cjs/storage/useM2mAuth.js +101 -0
- package/cjs/storage/useM2mAuth.js.map +1 -0
- package/domains.d.ts +3 -0
- package/domains.js +9 -3
- package/domains.js.map +1 -1
- package/endpoints/m2m-notifications.js +1 -1
- package/endpoints/m2m-notifications.js.map +1 -1
- package/endpoints/m2m-notifications.v1.js +71 -49
- package/endpoints/m2m-notifications.v1.js.map +1 -1
- package/endpoints/m2m-users.js +1 -1
- package/endpoints/m2m-users.js.map +1 -1
- package/endpoints/m2m-users.v1.js +335 -228
- package/endpoints/m2m-users.v1.js.map +1 -1
- package/m2m-apps-menu.js +11 -39
- package/m2m-apps-menu.js.map +1 -1
- package/m2m-user-menu.js +11 -33
- package/m2m-user-menu.js.map +1 -1
- package/notification/NotificationProvider.js +25 -22
- package/notification/NotificationProvider.js.map +1 -1
- package/notification/ServiceIdProvider.js +9 -8
- package/notification/ServiceIdProvider.js.map +1 -1
- package/notification/api.js +66 -38
- package/notification/api.js.map +1 -1
- package/package.json +24 -6
- package/storage/client.d.ts.map +1 -1
- package/storage/client.js +69 -31
- package/storage/client.js.map +1 -1
- package/storage/hub.js +2 -2
- package/storage/hub.js.map +1 -1
- package/storage/lib/client.js +21 -13
- package/storage/lib/client.js.map +1 -1
- package/storage/lib/hub.js +23 -23
- package/storage/lib/hub.js.map +1 -1
- package/storage/useM2mAuth.js +50 -32
- package/storage/useM2mAuth.js.map +1 -1
package/storage/lib/hub.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* この実装はcross-storageほぼそのままです。
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
var context = {};
|
|
5
5
|
/**
|
|
6
6
|
* Do not use this directly. This specifications are subject to significant change.
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
export
|
|
10
|
+
export var init = permissions => {
|
|
11
11
|
context.permissions = permissions;
|
|
12
12
|
window.addEventListener("message", listener, false);
|
|
13
13
|
window.parent.postMessage("cross-storage:ready", "*");
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
var permitted = (origin, method) => {
|
|
17
|
+
var available = ["get", "set", "del", "clear", "getKeys"];
|
|
18
18
|
|
|
19
19
|
if (!available.includes(method)) {
|
|
20
20
|
return false;
|
|
@@ -24,9 +24,9 @@ const permitted = (origin, method) => {
|
|
|
24
24
|
return false;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
for (
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
for (var i = 0; i < context.permissions.length; i++) {
|
|
28
|
+
var entry = context.permissions[i];
|
|
29
|
+
var match = entry.origin.test(origin);
|
|
30
30
|
|
|
31
31
|
if (match && entry.allow.includes(method)) {
|
|
32
32
|
return true;
|
|
@@ -36,13 +36,13 @@ const permitted = (origin, method) => {
|
|
|
36
36
|
return false;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
var methods = {
|
|
40
40
|
get: params => {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
var storage = window.localStorage;
|
|
42
|
+
var result = [];
|
|
43
43
|
|
|
44
|
-
for (
|
|
45
|
-
|
|
44
|
+
for (var i = 0; i < params.keys.length; i++) {
|
|
45
|
+
var value = storage.getItem(params.keys[i]) || null;
|
|
46
46
|
result.push(value);
|
|
47
47
|
} // Todo: このパターン好きじゃない
|
|
48
48
|
|
|
@@ -59,10 +59,10 @@ const methods = {
|
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
getKeys: () => {
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
var keys = [];
|
|
63
|
+
var length = window.localStorage.length;
|
|
64
64
|
|
|
65
|
-
for (
|
|
65
|
+
for (var i = 0; i < length; i++) {
|
|
66
66
|
keys.push(window.localStorage.key(i));
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -73,9 +73,9 @@ const methods = {
|
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
var listener = message => {
|
|
77
77
|
// postMessage returns the string "null" as the origin for "file://"
|
|
78
|
-
|
|
78
|
+
var origin = message.origin === "null" ? "file://" : message.origin; // Handle polling for a ready message
|
|
79
79
|
|
|
80
80
|
if (message.data === "cross-storage:poll") {
|
|
81
81
|
return window.parent.postMessage("cross-storage:ready", message.origin);
|
|
@@ -83,15 +83,15 @@ const listener = message => {
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
if (message.data === "cross-storage:ready") return;
|
|
86
|
-
|
|
86
|
+
var request = JSON.parse(message.data); // Check whether request.method is a string
|
|
87
87
|
|
|
88
88
|
if (!request || typeof request.method !== "string") {
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
var method = request.method.split("cross-storage:")[1];
|
|
93
|
+
var error = "";
|
|
94
|
+
var result = undefined;
|
|
95
95
|
|
|
96
96
|
if (!method) {
|
|
97
97
|
return;
|
|
@@ -105,13 +105,13 @@ const listener = message => {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
var response = JSON.stringify({
|
|
109
109
|
id: request.id,
|
|
110
110
|
error: error,
|
|
111
111
|
result: result
|
|
112
112
|
}); // postMessage requires that the target origin be set to "*" for "file://"
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
var targetOrigin = origin === "file://" ? "*" : origin;
|
|
115
115
|
window.parent.postMessage(response, targetOrigin);
|
|
116
116
|
};
|
|
117
117
|
//# sourceMappingURL=hub.js.map
|
package/storage/lib/hub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/storage/lib/hub.ts"],"names":["context","init","permissions","window","addEventListener","listener","parent","postMessage","permitted","origin","method","available","includes","undefined","i","length","entry","match","test","allow","methods","get","params","storage","localStorage","result","keys","value","getItem","push","set","setItem","key","del","removeItem","getKeys","clear","message","data","request","JSON","parse","split","error","err","response","stringify","id","targetOrigin"],"mappings":"AAAA;AACA;AACA;AAQA,
|
|
1
|
+
{"version":3,"sources":["../../src/storage/lib/hub.ts"],"names":["context","init","permissions","window","addEventListener","listener","parent","postMessage","permitted","origin","method","available","includes","undefined","i","length","entry","match","test","allow","methods","get","params","storage","localStorage","result","keys","value","getItem","push","set","setItem","key","del","removeItem","getKeys","clear","message","data","request","JSON","parse","split","error","err","response","stringify","id","targetOrigin"],"mappings":"AAAA;AACA;AACA;AAQA,IAAMA,OAEL,GAAG,EAFJ;AAIA;AACA;AACA;AACA;;AACA,OAAO,IAAMC,IAAI,GAAIC,WAAD,IAA+B;AACjDF,EAAAA,OAAO,CAACE,WAAR,GAAsBA,WAAtB;AACAC,EAAAA,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmCC,QAAnC,EAA6C,KAA7C;AACAF,EAAAA,MAAM,CAACG,MAAP,CAAcC,WAAd,CAA0B,qBAA1B,EAAiD,GAAjD;AACD,CAJM;;AAMP,IAAMC,SAAS,GAAG,CAACC,MAAD,EAAiBC,MAAjB,KAAoC;AACpD,MAAMC,SAAS,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,OAAtB,EAA+B,SAA/B,CAAlB;;AACA,MAAI,CAACA,SAAS,CAACC,QAAV,CAAmBF,MAAnB,CAAL,EAAiC;AAC/B,WAAO,KAAP;AACD;;AAED,MAAIV,OAAO,CAACE,WAAR,KAAwBW,SAA5B,EAAuC;AACrC,WAAO,KAAP;AACD;;AAED,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGd,OAAO,CAACE,WAAR,CAAoBa,MAAxC,EAAgDD,CAAC,EAAjD,EAAqD;AACnD,QAAME,KAAK,GAAGhB,OAAO,CAACE,WAAR,CAAoBY,CAApB,CAAd;AACA,QAAMG,KAAK,GAAGD,KAAK,CAACP,MAAN,CAAaS,IAAb,CAAkBT,MAAlB,CAAd;;AACA,QAAIQ,KAAK,IAAID,KAAK,CAACG,KAAN,CAAYP,QAAZ,CAAqBF,MAArB,CAAb,EAA2C;AACzC,aAAO,IAAP;AACD;AACF;;AACD,SAAO,KAAP;AACD,CAlBD;;AAoBA,IAAMU,OAGL,GAAG;AACFC,EAAAA,GAAG,EAAGC,MAAD,IAAgC;AACnC,QAAMC,OAAO,GAAGpB,MAAM,CAACqB,YAAvB;AACA,QAAMC,MAAM,GAAG,EAAf;;AACA,SAAK,IAAIX,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGQ,MAAM,CAACI,IAAP,CAAYX,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C,UAAMa,KAAK,GAAGJ,OAAO,CAACK,OAAR,CAAgBN,MAAM,CAACI,IAAP,CAAYZ,CAAZ,CAAhB,KAAmC,IAAjD;AACAW,MAAAA,MAAM,CAACI,IAAP,CAAYF,KAAZ;AACD,KANkC,CAOnC;;;AACA,WAAOF,MAAM,CAACV,MAAP,GAAgB,CAAhB,GAAoBU,MAApB,GAA6BA,MAAM,CAAC,CAAD,CAA1C;AACD,GAVC;AAWFK,EAAAA,GAAG,EAAGR,MAAD,IAA4C;AAC/CnB,IAAAA,MAAM,CAACqB,YAAP,CAAoBO,OAApB,CAA4BT,MAAM,CAACU,GAAnC,EAAwCV,MAAM,CAACK,KAA/C;AACD,GAbC;AAcFM,EAAAA,GAAG,EAAGX,MAAD,IAAgC;AACnC;AACA,SAAK,IAAIR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGQ,MAAM,CAACI,IAAP,CAAYX,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3CX,MAAAA,MAAM,CAACqB,YAAP,CAAoBU,UAApB,CAA+BZ,MAAM,CAACI,IAAP,CAAYZ,CAAZ,CAA/B;AACD;AACF,GAnBC;AAoBFqB,EAAAA,OAAO,EAAE,MAAM;AACb,QAAMT,IAAI,GAAG,EAAb;AACA,QAAMX,MAAM,GAAGZ,MAAM,CAACqB,YAAP,CAAoBT,MAAnC;;AAEA,SAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,MAApB,EAA4BD,CAAC,EAA7B,EAAiC;AAC/BY,MAAAA,IAAI,CAACG,IAAL,CAAU1B,MAAM,CAACqB,YAAP,CAAoBQ,GAApB,CAAwBlB,CAAxB,CAAV;AACD;;AAED,WAAOY,IAAP;AACD,GA7BC;AA8BFU,EAAAA,KAAK,EAAE,MAAM;AACXjC,IAAAA,MAAM,CAACqB,YAAP,CAAoBY,KAApB;AACD;AAhCC,CAHJ;;AA2CA,IAAM/B,QAAQ,GAAIgC,OAAD,IAAsB;AACrC;AACA,MAAM5B,MAAM,GAAG4B,OAAO,CAAC5B,MAAR,KAAmB,MAAnB,GAA4B,SAA5B,GAAwC4B,OAAO,CAAC5B,MAA/D,CAFqC,CAIrC;;AACA,MAAI4B,OAAO,CAACC,IAAR,KAAiB,oBAArB,EAA2C;AACzC,WAAOnC,MAAM,CAACG,MAAP,CAAcC,WAAd,CAA0B,qBAA1B,EAAiD8B,OAAO,CAAC5B,MAAzD,CAAP;AACD,GAPoC,CASrC;;;AACA,MAAI4B,OAAO,CAACC,IAAR,KAAiB,qBAArB,EAA4C;AAE5C,MAAMC,OAKL,GAAGC,IAAI,CAACC,KAAL,CAAWJ,OAAO,CAACC,IAAnB,CALJ,CAZqC,CAmBrC;;AACA,MAAI,CAACC,OAAD,IAAY,OAAOA,OAAO,CAAC7B,MAAf,KAA0B,QAA1C,EAAoD;AAClD;AACD;;AAED,MAAMA,MAAM,GAAG6B,OAAO,CAAC7B,MAAR,CAAegC,KAAf,CAAqB,gBAArB,EAAuC,CAAvC,CAAf;AAEA,MAAIC,KAAK,GAAG,EAAZ;AACA,MAAIlB,MAA0B,GAAGZ,SAAjC;;AAEA,MAAI,CAACH,MAAL,EAAa;AACX;AACD,GAFD,MAEO,IAAI,CAACF,SAAS,CAACC,MAAD,EAASC,MAAT,CAAd,EAAgC;AACrCiC,IAAAA,KAAK,GAAG,6BAA6BjC,MAArC;AACD,GAFM,MAEA;AACL,QAAI;AACFe,MAAAA,MAAM,GAAGL,OAAO,CAACV,MAAD,CAAP,CAAgB6B,OAAO,CAACjB,MAAxB,CAAT;AACD,KAFD,CAEE,OAAOsB,GAAP,EAAY;AACZD,MAAAA,KAAK,GAAIC,GAAD,CAA0BP,OAAlC;AACD;AACF;;AAED,MAAMQ,QAAQ,GAAGL,IAAI,CAACM,SAAL,CAAe;AAC9BC,IAAAA,EAAE,EAAER,OAAO,CAACQ,EADkB;AAE9BJ,IAAAA,KAAK,EAAEA,KAFuB;AAG9BlB,IAAAA,MAAM,EAAEA;AAHsB,GAAf,CAAjB,CAzCqC,CA+CrC;;AACA,MAAMuB,YAAY,GAAGvC,MAAM,KAAK,SAAX,GAAuB,GAAvB,GAA6BA,MAAlD;AAEAN,EAAAA,MAAM,CAACG,MAAP,CAAcC,WAAd,CAA0BsC,QAA1B,EAAoCG,YAApC;AACD,CAnDD","sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\ntype Method = \"get\" | \"set\" | \"del\" | \"getKeys\" | \"clear\";\n\nexport interface Permission {\n origin: RegExp;\n allow: Method[];\n}\n\nconst context: {\n permissions?: Permission[];\n} = {};\n\n/**\n * Do not use this directly. This specifications are subject to significant change.\n * @internal\n */\nexport const init = (permissions: Permission[]) => {\n context.permissions = permissions;\n window.addEventListener(\"message\", listener, false);\n window.parent.postMessage(\"cross-storage:ready\", \"*\");\n};\n\nconst permitted = (origin: string, method: Method) => {\n const available = [\"get\", \"set\", \"del\", \"clear\", \"getKeys\"];\n if (!available.includes(method)) {\n return false;\n }\n\n if (context.permissions === undefined) {\n return false;\n }\n\n for (let i = 0; i < context.permissions.length; i++) {\n const entry = context.permissions[i];\n const match = entry.origin.test(origin);\n if (match && entry.allow.includes(method)) {\n return true;\n }\n }\n return false;\n};\n\nconst methods: {\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key in Method]: Function;\n} = {\n get: (params: { keys: string[] }) => {\n const storage = window.localStorage;\n const result = [];\n for (let i = 0; i < params.keys.length; i++) {\n const value = storage.getItem(params.keys[i]) || null;\n result.push(value);\n }\n // Todo: このパターン好きじゃない\n return result.length > 1 ? result : result[0];\n },\n set: (params: { key: string; value: string }) => {\n window.localStorage.setItem(params.key, params.value);\n },\n del: (params: { keys: string[] }) => {\n // eslint-disable-next-line no-var\n for (var i = 0; i < params.keys.length; i++) {\n window.localStorage.removeItem(params.keys[i]);\n }\n },\n getKeys: () => {\n const keys = [];\n const length = window.localStorage.length;\n\n for (let i = 0; i < length; i++) {\n keys.push(window.localStorage.key(i));\n }\n\n return keys;\n },\n clear: () => {\n window.localStorage.clear();\n },\n};\n\ninterface Message {\n origin: string;\n data: string;\n}\n\nconst listener = (message: Message) => {\n // postMessage returns the string \"null\" as the origin for \"file://\"\n const origin = message.origin === \"null\" ? \"file://\" : message.origin;\n\n // Handle polling for a ready message\n if (message.data === \"cross-storage:poll\") {\n return window.parent.postMessage(\"cross-storage:ready\", message.origin);\n }\n\n // Ignore the ready message when viewing the hub directly\n if (message.data === \"cross-storage:ready\") return;\n\n const request: {\n id: string;\n method?: string;\n // eslint-disable-next-line @typescript-eslint/ban-types\n params: Object;\n } = JSON.parse(message.data);\n\n // Check whether request.method is a string\n if (!request || typeof request.method !== \"string\") {\n return;\n }\n\n const method = request.method.split(\"cross-storage:\")[1] as Method;\n\n let error = \"\";\n let result: string | undefined = undefined;\n\n if (!method) {\n return;\n } else if (!permitted(origin, method)) {\n error = \"Invalid permissions for \" + method;\n } else {\n try {\n result = methods[method](request.params);\n } catch (err) {\n error = (err as unknown as Error).message;\n }\n }\n\n const response = JSON.stringify({\n id: request.id,\n error: error,\n result: result,\n });\n\n // postMessage requires that the target origin be set to \"*\" for \"file://\"\n const targetOrigin = origin === \"file://\" ? \"*\" : origin;\n\n window.parent.postMessage(response, targetOrigin);\n};\n"],"file":"hub.js"}
|
package/storage/useM2mAuth.js
CHANGED
|
@@ -1,24 +1,35 @@
|
|
|
1
|
+
var _excluded = ["data"];
|
|
2
|
+
|
|
3
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
4
|
+
|
|
5
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
6
|
+
|
|
7
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
8
|
+
|
|
9
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
10
|
+
|
|
1
11
|
import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
|
|
2
12
|
import { fetcher } from "matsuri-hooks";
|
|
3
13
|
import { m2mAuthTokenApi } from "./client";
|
|
4
14
|
import { login as m2mUsers_v1_login } from "../endpoints/m2m-users.v1";
|
|
5
|
-
|
|
15
|
+
var AuthenticationContext = /*#__PURE__*/createContext(undefined);
|
|
6
16
|
|
|
7
|
-
|
|
8
|
-
|
|
17
|
+
var checkJwtExpiration = jwt => {
|
|
18
|
+
var splitted = jwt.split(".");
|
|
9
19
|
if (splitted.length !== 3) return false;
|
|
10
|
-
|
|
11
|
-
|
|
20
|
+
var [, payload] = splitted;
|
|
21
|
+
var exp = JSON.parse(atob(payload))["exp"];
|
|
12
22
|
return new Date() < new Date(exp * 1000);
|
|
13
23
|
};
|
|
14
24
|
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
export var M2mAuthenticationProvider = _ref => {
|
|
26
|
+
var {
|
|
27
|
+
children
|
|
28
|
+
} = _ref;
|
|
29
|
+
var [token, setToken] = useState(m2mAuthTokenApi.getCache() || "");
|
|
30
|
+
var authenticated = useMemo(() => !!token, [token]);
|
|
31
|
+
var tryCheckAuth = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
|
|
32
|
+
var authToken = yield m2mAuthTokenApi.get();
|
|
22
33
|
|
|
23
34
|
if (!(authToken && checkJwtExpiration(authToken))) {
|
|
24
35
|
m2mAuthTokenApi.clear();
|
|
@@ -27,32 +38,39 @@ export const M2mAuthenticationProvider = ({
|
|
|
27
38
|
m2mAuthTokenApi.set(authToken);
|
|
28
39
|
setToken(authToken);
|
|
29
40
|
}
|
|
30
|
-
}, []);
|
|
41
|
+
}), []);
|
|
31
42
|
useEffect(() => {
|
|
32
43
|
tryCheckAuth();
|
|
33
44
|
}, [tryCheckAuth]);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
var login = useCallback( /*#__PURE__*/function () {
|
|
46
|
+
var _ref3 = _asyncToGenerator(function* (input) {
|
|
47
|
+
var _yield$fetcher = yield fetcher(m2mUsers_v1_login(), {
|
|
48
|
+
method: "POST",
|
|
49
|
+
body: JSON.stringify(input)
|
|
50
|
+
}),
|
|
51
|
+
{
|
|
52
|
+
data
|
|
53
|
+
} = _yield$fetcher,
|
|
54
|
+
fetcherResult = _objectWithoutProperties(_yield$fetcher, _excluded);
|
|
42
55
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
if (data) {
|
|
57
|
+
var authToken = data.accessToken;
|
|
58
|
+
m2mAuthTokenApi.set(authToken);
|
|
59
|
+
setToken(authToken);
|
|
60
|
+
}
|
|
48
61
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
62
|
+
return fetcherResult;
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return function (_x) {
|
|
66
|
+
return _ref3.apply(this, arguments);
|
|
67
|
+
};
|
|
68
|
+
}(), []);
|
|
69
|
+
var logout = useCallback(() => {
|
|
52
70
|
m2mAuthTokenApi.clear();
|
|
53
71
|
window.location.reload();
|
|
54
72
|
}, []);
|
|
55
|
-
|
|
73
|
+
var state = useMemo(() => {
|
|
56
74
|
return {
|
|
57
75
|
login,
|
|
58
76
|
logout,
|
|
@@ -64,8 +82,8 @@ export const M2mAuthenticationProvider = ({
|
|
|
64
82
|
value: state
|
|
65
83
|
}, children);
|
|
66
84
|
};
|
|
67
|
-
export
|
|
68
|
-
|
|
85
|
+
export var useAuth = () => {
|
|
86
|
+
var ctx = useContext(AuthenticationContext);
|
|
69
87
|
|
|
70
88
|
if (!ctx) {
|
|
71
89
|
throw new Error("AuthenticationProvider is not found");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/useM2mAuth.tsx"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","children","token","setToken","getCache","authenticated","tryCheckAuth","authToken","get","clear","set","input","
|
|
1
|
+
{"version":3,"sources":["../src/storage/useM2mAuth.tsx"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","children","token","setToken","getCache","authenticated","tryCheckAuth","authToken","get","clear","set","input","method","body","stringify","data","fetcherResult","accessToken","logout","window","location","reload","state","useAuth","ctx","Error"],"mappings":"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","sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { fetcher } from \"matsuri-hooks\";\nimport { m2mAuthTokenApi } from \"./client\";\nimport { login as m2mUsers_v1_login } from \"../endpoints/m2m-users.v1\";\n\ninterface LoginInput {\n email: string;\n password: string;\n}\n\ntype AuthenticationState = {\n token: string;\n authenticated: boolean;\n login: (input: LoginInput) => Promise<{ error?: Error }>;\n logout: () => void;\n};\n\nconst AuthenticationContext = createContext<AuthenticationState | undefined>(\n undefined\n);\n\nconst checkJwtExpiration = (jwt: string): boolean => {\n const splitted = jwt.split(\".\");\n if (splitted.length !== 3) return false;\n\n const [, payload] = splitted;\n const exp = JSON.parse(atob(payload))[\"exp\"];\n return new Date() < new Date(exp * 1000);\n};\n\nexport const M2mAuthenticationProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [token, setToken] = useState(m2mAuthTokenApi.getCache() || \"\");\n\n const authenticated = useMemo(() => !!token, [token]);\n\n const tryCheckAuth = useCallback(async () => {\n const authToken = await m2mAuthTokenApi.get();\n if (!(authToken && checkJwtExpiration(authToken))) {\n m2mAuthTokenApi.clear();\n setToken(\"\");\n } else {\n m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n }, []);\n\n useEffect(() => {\n tryCheckAuth();\n }, [tryCheckAuth]);\n\n const login = useCallback(async (input: LoginInput) => {\n const { data, ...fetcherResult } = await fetcher<{\n accessToken: string;\n }>(m2mUsers_v1_login(), {\n method: \"POST\",\n body: JSON.stringify(input),\n });\n if (data) {\n const authToken = data.accessToken;\n\n m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n return fetcherResult;\n }, []);\n\n const logout = useCallback(() => {\n m2mAuthTokenApi.clear();\n window.location.reload();\n }, []);\n\n const state = useMemo(() => {\n return {\n login,\n logout,\n token,\n authenticated,\n };\n }, [authenticated, login, logout, token]);\n return (\n <AuthenticationContext.Provider value={state}>\n {children}\n </AuthenticationContext.Provider>\n );\n};\n\nexport const useAuth = () => {\n const ctx = useContext(AuthenticationContext);\n if (!ctx) {\n throw new Error(\"AuthenticationProvider is not found\");\n }\n return ctx;\n};\n"],"file":"useM2mAuth.js"}
|