m2m-components 3.0.0 → 3.0.1

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 (81) hide show
  1. package/MenuBaseElement.d.ts +1 -1
  2. package/MenuBaseElement.js +1 -40
  3. package/MenuBaseElement.js.map +1 -1
  4. package/cjs/MenuBaseElement.js +0 -42
  5. package/cjs/MenuBaseElement.js.map +1 -1
  6. package/cjs/domains.js.map +1 -1
  7. package/cjs/endpoints/m2m-notifications.js +1 -4
  8. package/cjs/endpoints/m2m-notifications.js.map +1 -1
  9. package/cjs/endpoints/m2m-notifications.v1.js +5 -38
  10. package/cjs/endpoints/m2m-notifications.v1.js.map +1 -1
  11. package/cjs/endpoints/m2m-users.js +1 -4
  12. package/cjs/endpoints/m2m-users.js.map +1 -1
  13. package/cjs/endpoints/m2m-users.v1.js +28 -153
  14. package/cjs/endpoints/m2m-users.v1.js.map +1 -1
  15. package/cjs/index.js +0 -6
  16. package/cjs/index.js.map +1 -1
  17. package/cjs/initM2mComponents.js +0 -4
  18. package/cjs/initM2mComponents.js.map +1 -1
  19. package/cjs/m2m-apps-menu.js +0 -26
  20. package/cjs/m2m-apps-menu.js.map +1 -1
  21. package/cjs/m2m-user-menu.js +0 -30
  22. package/cjs/m2m-user-menu.js.map +1 -1
  23. package/cjs/notification/NotificationProvider.js +2 -18
  24. package/cjs/notification/NotificationProvider.js.map +1 -1
  25. package/cjs/notification/ServiceIdProvider.js +0 -11
  26. package/cjs/notification/ServiceIdProvider.js.map +1 -1
  27. package/cjs/notification/api.js +4 -12
  28. package/cjs/notification/api.js.map +1 -1
  29. package/cjs/notification/index.js +0 -8
  30. package/cjs/notification/index.js.map +1 -1
  31. package/cjs/storage/client.js +1 -18
  32. package/cjs/storage/client.js.map +1 -1
  33. package/cjs/storage/hub.js +0 -3
  34. package/cjs/storage/hub.js.map +1 -1
  35. package/cjs/storage/lib/client.js +3 -35
  36. package/cjs/storage/lib/client.js.map +1 -1
  37. package/cjs/storage/lib/hub.js +12 -25
  38. package/cjs/storage/lib/hub.js.map +1 -1
  39. package/cjs/storage/useM2mAuth.js +0 -24
  40. package/cjs/storage/useM2mAuth.js.map +1 -1
  41. package/domains.js.map +1 -1
  42. package/endpoints/m2m-notifications.js.map +1 -1
  43. package/endpoints/m2m-notifications.v1.js +5 -32
  44. package/endpoints/m2m-notifications.v1.js.map +1 -1
  45. package/endpoints/m2m-users.js.map +1 -1
  46. package/endpoints/m2m-users.v1.js +28 -132
  47. package/endpoints/m2m-users.v1.js.map +1 -1
  48. package/index.js.map +1 -1
  49. package/initM2mComponents.d.ts +1 -1
  50. package/initM2mComponents.js +0 -1
  51. package/initM2mComponents.js.map +1 -1
  52. package/m2m-apps-menu.d.ts +1 -1
  53. package/m2m-apps-menu.js +1 -23
  54. package/m2m-apps-menu.js.map +1 -1
  55. package/m2m-user-menu.d.ts +1 -1
  56. package/m2m-user-menu.js +1 -25
  57. package/m2m-user-menu.js.map +1 -1
  58. package/notification/NotificationProvider.js +2 -8
  59. package/notification/NotificationProvider.js.map +1 -1
  60. package/notification/ServiceIdProvider.js +0 -2
  61. package/notification/ServiceIdProvider.js.map +1 -1
  62. package/notification/api.js +3 -11
  63. package/notification/api.js.map +1 -1
  64. package/notification/domain.d.ts +1 -1
  65. package/notification/domain.d.ts.map +1 -1
  66. package/notification/index.js.map +1 -1
  67. package/package.json +20 -20
  68. package/storage/client.js +1 -23
  69. package/storage/client.js.map +1 -1
  70. package/storage/hub.js +0 -2
  71. package/storage/hub.js.map +1 -1
  72. package/storage/lib/client.js +3 -35
  73. package/storage/lib/client.js.map +1 -1
  74. package/storage/lib/hub.d.ts +1 -1
  75. package/storage/lib/hub.d.ts.map +1 -1
  76. package/storage/lib/hub.js +12 -23
  77. package/storage/lib/hub.js.map +1 -1
  78. package/storage/useM2mAuth.d.ts +1 -1
  79. package/storage/useM2mAuth.d.ts.map +1 -1
  80. package/storage/useM2mAuth.js +0 -12
  81. package/storage/useM2mAuth.js.map +1 -1
@@ -1,52 +1,44 @@
1
1
  /**
2
2
  * この実装はcross-storageほぼそのままです。
3
3
  */
4
+
4
5
  var context = {};
6
+
5
7
  /**
6
8
  * Do not use this directly. This specifications are subject to significant change.
7
9
  * @internal
8
10
  */
9
-
10
11
  export var init = permissions => {
11
12
  context.permissions = permissions;
12
13
  window.addEventListener("message", listener, false);
13
14
  window.parent.postMessage("cross-storage:ready", "*");
14
15
  };
15
-
16
16
  var permitted = (origin, method) => {
17
17
  var available = ["get", "set", "del", "clear", "getKeys"];
18
-
19
18
  if (!available.includes(method)) {
20
19
  return false;
21
20
  }
22
-
23
21
  if (context.permissions === undefined) {
24
22
  return false;
25
23
  }
26
-
27
24
  for (var i = 0; i < context.permissions.length; i++) {
28
25
  var entry = context.permissions[i];
29
26
  var match = entry.origin.test(origin);
30
-
31
27
  if (match && entry.allow.includes(method)) {
32
28
  return true;
33
29
  }
34
30
  }
35
-
36
31
  return false;
37
32
  };
38
-
39
33
  var methods = {
40
34
  get: params => {
41
35
  var storage = window.localStorage;
42
36
  var result = [];
43
-
44
37
  for (var i = 0; i < params.keys.length; i++) {
45
38
  var value = storage.getItem(params.keys[i]) || null;
46
39
  result.push(value);
47
- } // Todo: このパターン好きじゃない
48
-
49
-
40
+ }
41
+ // Todo: このパターン好きじゃない
50
42
  return result.length > 1 ? result : result[0];
51
43
  },
52
44
  set: params => {
@@ -61,38 +53,35 @@ var methods = {
61
53
  getKeys: () => {
62
54
  var keys = [];
63
55
  var length = window.localStorage.length;
64
-
65
56
  for (var i = 0; i < length; i++) {
66
57
  keys.push(window.localStorage.key(i));
67
58
  }
68
-
69
59
  return keys;
70
60
  },
71
61
  clear: () => {
72
62
  window.localStorage.clear();
73
63
  }
74
64
  };
75
-
76
65
  var listener = message => {
77
66
  // postMessage returns the string "null" as the origin for "file://"
78
- var origin = message.origin === "null" ? "file://" : message.origin; // Handle polling for a ready message
67
+ var origin = message.origin === "null" ? "file://" : message.origin;
79
68
 
69
+ // Handle polling for a ready message
80
70
  if (message.data === "cross-storage:poll") {
81
71
  return window.parent.postMessage("cross-storage:ready", message.origin);
82
- } // Ignore the ready message when viewing the hub directly
83
-
72
+ }
84
73
 
74
+ // Ignore the ready message when viewing the hub directly
85
75
  if (message.data === "cross-storage:ready") return;
86
- var request = JSON.parse(message.data); // Check whether request.method is a string
76
+ var request = JSON.parse(message.data);
87
77
 
78
+ // Check whether request.method is a string
88
79
  if (!request || typeof request.method !== "string") {
89
80
  return;
90
81
  }
91
-
92
82
  var method = request.method.split("cross-storage:")[1];
93
83
  var error = "";
94
84
  var result = undefined;
95
-
96
85
  if (!method) {
97
86
  return;
98
87
  } else if (!permitted(origin, method)) {
@@ -104,13 +93,13 @@ var listener = message => {
104
93
  error = err.message;
105
94
  }
106
95
  }
107
-
108
96
  var response = JSON.stringify({
109
97
  id: request.id,
110
98
  error: error,
111
99
  result: result
112
- }); // postMessage requires that the target origin be set to "*" for "file://"
100
+ });
113
101
 
102
+ // postMessage requires that the target origin be set to "*" for "file://"
114
103
  var targetOrigin = origin === "file://" ? "*" : origin;
115
104
  window.parent.postMessage(response, targetOrigin);
116
105
  };
@@ -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":"AAAA;AACA;AACA;;AAQA,IAAMA,OAEL,GAAG,CAAC,CAAC;;AAEN;AACA;AACA;AACA;AACA,OAAO,IAAMC,IAAI,GAAIC,WAAyB,IAAK;EACjDF,OAAO,CAACE,WAAW,GAAGA,WAAW;EACjCC,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEC,QAAQ,EAAE,KAAK,CAAC;EACnDF,MAAM,CAACG,MAAM,CAACC,WAAW,CAAC,qBAAqB,EAAE,GAAG,CAAC;AACvD,CAAC;AAED,IAAMC,SAAS,GAAGA,CAACC,MAAc,EAAEC,MAAc,KAAK;EACpD,IAAMC,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;EAC3D,IAAI,CAACA,SAAS,CAACC,QAAQ,CAACF,MAAM,CAAC,EAAE;IAC/B,OAAO,KAAK;EACd;EAEA,IAAIV,OAAO,CAACE,WAAW,KAAKW,SAAS,EAAE;IACrC,OAAO,KAAK;EACd;EAEA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,OAAO,CAACE,WAAW,CAACa,MAAM,EAAED,CAAC,EAAE,EAAE;IACnD,IAAME,KAAK,GAAGhB,OAAO,CAACE,WAAW,CAACY,CAAC,CAAC;IACpC,IAAMG,KAAK,GAAGD,KAAK,CAACP,MAAM,CAACS,IAAI,CAACT,MAAM,CAAC;IACvC,IAAIQ,KAAK,IAAID,KAAK,CAACG,KAAK,CAACP,QAAQ,CAACF,MAAM,CAAC,EAAE;MACzC,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC;AAED,IAAMU,OAGL,GAAG;EACFC,GAAG,EAAGC,MAA0B,IAAK;IACnC,IAAMC,OAAO,GAAGpB,MAAM,CAACqB,YAAY;IACnC,IAAMC,MAAM,GAAG,EAAE;IACjB,KAAK,IAAIX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,MAAM,CAACI,IAAI,CAACX,MAAM,EAAED,CAAC,EAAE,EAAE;MAC3C,IAAMa,KAAK,GAAGJ,OAAO,CAACK,OAAO,CAACN,MAAM,CAACI,IAAI,CAACZ,CAAC,CAAC,CAAC,IAAI,IAAI;MACrDW,MAAM,CAACI,IAAI,CAACF,KAAK,CAAC;IACpB;IACA;IACA,OAAOF,MAAM,CAACV,MAAM,GAAG,CAAC,GAAGU,MAAM,GAAGA,MAAM,CAAC,CAAC,CAAC;EAC/C,CAAC;EACDK,GAAG,EAAGR,MAAsC,IAAK;IAC/CnB,MAAM,CAACqB,YAAY,CAACO,OAAO,CAACT,MAAM,CAACU,GAAG,EAAEV,MAAM,CAACK,KAAK,CAAC;EACvD,CAAC;EACDM,GAAG,EAAGX,MAA0B,IAAK;IACnC;IACA,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,MAAM,CAACI,IAAI,CAACX,MAAM,EAAED,CAAC,EAAE,EAAE;MAC3CX,MAAM,CAACqB,YAAY,CAACU,UAAU,CAACZ,MAAM,CAACI,IAAI,CAACZ,CAAC,CAAC,CAAC;IAChD;EACF,CAAC;EACDqB,OAAO,EAAEA,CAAA,KAAM;IACb,IAAMT,IAAI,GAAG,EAAE;IACf,IAAMX,MAAM,GAAGZ,MAAM,CAACqB,YAAY,CAACT,MAAM;IAEzC,KAAK,IAAID,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGC,MAAM,EAAED,CAAC,EAAE,EAAE;MAC/BY,IAAI,CAACG,IAAI,CAAC1B,MAAM,CAACqB,YAAY,CAACQ,GAAG,CAAClB,CAAC,CAAC,CAAC;IACvC;IAEA,OAAOY,IAAI;EACb,CAAC;EACDU,KAAK,EAAEA,CAAA,KAAM;IACXjC,MAAM,CAACqB,YAAY,CAACY,KAAK,EAAE;EAC7B;AACF,CAAC;AAOD,IAAM/B,QAAQ,GAAIgC,OAAgB,IAAK;EACrC;EACA,IAAM5B,MAAM,GAAG4B,OAAO,CAAC5B,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG4B,OAAO,CAAC5B,MAAM;;EAErE;EACA,IAAI4B,OAAO,CAACC,IAAI,KAAK,oBAAoB,EAAE;IACzC,OAAOnC,MAAM,CAACG,MAAM,CAACC,WAAW,CAAC,qBAAqB,EAAE8B,OAAO,CAAC5B,MAAM,CAAC;EACzE;;EAEA;EACA,IAAI4B,OAAO,CAACC,IAAI,KAAK,qBAAqB,EAAE;EAE5C,IAAMC,OAKL,GAAGC,IAAI,CAACC,KAAK,CAACJ,OAAO,CAACC,IAAI,CAAC;;EAE5B;EACA,IAAI,CAACC,OAAO,IAAI,OAAOA,OAAO,CAAC7B,MAAM,KAAK,QAAQ,EAAE;IAClD;EACF;EAEA,IAAMA,MAAM,GAAG6B,OAAO,CAAC7B,MAAM,CAACgC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAW;EAElE,IAAIC,KAAK,GAAG,EAAE;EACd,IAAIlB,MAA0B,GAAGZ,SAAS;EAE1C,IAAI,CAACH,MAAM,EAAE;IACX;EACF,CAAC,MAAM,IAAI,CAACF,SAAS,CAACC,MAAM,EAAEC,MAAM,CAAC,EAAE;IACrCiC,KAAK,GAAG,0BAA0B,GAAGjC,MAAM;EAC7C,CAAC,MAAM;IACL,IAAI;MACFe,MAAM,GAAGL,OAAO,CAACV,MAAM,CAAC,CAAC6B,OAAO,CAACjB,MAAM,CAAC;IAC1C,CAAC,CAAC,OAAOsB,GAAG,EAAE;MACZD,KAAK,GAAIC,GAAG,CAAsBP,OAAO;IAC3C;EACF;EAEA,IAAMQ,QAAQ,GAAGL,IAAI,CAACM,SAAS,CAAC;IAC9BC,EAAE,EAAER,OAAO,CAACQ,EAAE;IACdJ,KAAK,EAAEA,KAAK;IACZlB,MAAM,EAAEA;EACV,CAAC,CAAC;;EAEF;EACA,IAAMuB,YAAY,GAAGvC,MAAM,KAAK,SAAS,GAAG,GAAG,GAAGA,MAAM;EAExDN,MAAM,CAACG,MAAM,CAACC,WAAW,CAACsC,QAAQ,EAAEG,YAAY,CAAC;AACnD,CAAC"}
@@ -3,7 +3,7 @@ interface LoginInput {
3
3
  email: string;
4
4
  password: string;
5
5
  }
6
- declare type AuthenticationState = {
6
+ type AuthenticationState = {
7
7
  token: string;
8
8
  authenticated: boolean;
9
9
  login: (input: LoginInput) => Promise<{
@@ -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,aAAK,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;iBAsE1B,CAAC;AAEF,eAAO,MAAM,OAAO,2BAMnB,CAAC"}
@@ -1,14 +1,11 @@
1
1
  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); } }
2
-
3
2
  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); }); }; }
4
-
5
3
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
6
4
  import { fetcher } from "matsuri-hooks";
7
5
  import { m2mAuthTokenApi } from "./client";
8
6
  import { login as m2mUsers_v1_login } from "../endpoints/m2m-users.v1";
9
7
  import { jsx as _jsx } from "react/jsx-runtime";
10
8
  var AuthenticationContext = /*#__PURE__*/createContext(undefined);
11
-
12
9
  var checkJwtExpiration = jwt => {
13
10
  var splitted = jwt.split(".");
14
11
  if (splitted.length !== 3) return false;
@@ -16,7 +13,6 @@ var checkJwtExpiration = jwt => {
16
13
  var exp = JSON.parse(atob(payload))["exp"];
17
14
  return new Date() < new Date(exp * 1000);
18
15
  };
19
-
20
16
  export var M2mAuthenticationProvider = _ref => {
21
17
  var {
22
18
  children
@@ -25,7 +21,6 @@ export var M2mAuthenticationProvider = _ref => {
25
21
  var authenticated = useMemo(() => !!token, [token]);
26
22
  var tryCheckAuth = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
27
23
  var authToken = yield m2mAuthTokenApi.get();
28
-
29
24
  if (!(authToken && checkJwtExpiration(authToken))) {
30
25
  m2mAuthTokenApi.clear();
31
26
  setToken("");
@@ -46,19 +41,16 @@ export var M2mAuthenticationProvider = _ref => {
46
41
  method: "POST",
47
42
  body: JSON.stringify(input)
48
43
  });
49
-
50
44
  if (data) {
51
45
  var authToken = data.accessToken;
52
46
  m2mAuthTokenApi.set(authToken);
53
47
  setToken(authToken);
54
48
  }
55
-
56
49
  return {
57
50
  error,
58
51
  token: data ? data.accessToken : undefined
59
52
  };
60
53
  });
61
-
62
54
  return function (_x) {
63
55
  return _ref3.apply(this, arguments);
64
56
  };
@@ -74,14 +66,12 @@ export var M2mAuthenticationProvider = _ref => {
74
66
  error: new Error("M2MAuthToken is expired")
75
67
  };
76
68
  }
77
-
78
69
  yield m2mAuthTokenApi.set(token);
79
70
  setToken(token);
80
71
  return {
81
72
  error: undefined
82
73
  };
83
74
  });
84
-
85
75
  return function (_x2) {
86
76
  return _ref4.apply(this, arguments);
87
77
  };
@@ -102,11 +92,9 @@ export var M2mAuthenticationProvider = _ref => {
102
92
  };
103
93
  export var useAuth = () => {
104
94
  var ctx = useContext(AuthenticationContext);
105
-
106
95
  if (!ctx) {
107
96
  throw new Error("AuthenticationProvider is not found");
108
97
  }
109
-
110
98
  return ctx;
111
99
  };
112
100
  //# sourceMappingURL=useM2mAuth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useM2mAuth.js","names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","fetcher","m2mAuthTokenApi","login","m2mUsers_v1_login","AuthenticationContext","undefined","checkJwtExpiration","jwt","splitted","split","length","payload","exp","JSON","parse","atob","Date","M2mAuthenticationProvider","children","token","setToken","getCache","authenticated","tryCheckAuth","authToken","get","clear","set","input","data","error","method","body","stringify","accessToken","logout","window","location","reload","updateToken","Error","state","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":";;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,SAAS,CACV;AAED,IAAMC,kBAAkB,GAAIC,GAAW,IAAc;EACnD,IAAMC,QAAQ,GAAGD,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC;EAC/B,IAAID,QAAQ,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAEvC,IAAM,GAAGC,OAAO,CAAC,GAAGH,QAAQ;EAC5B,IAAMI,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACC,IAAI,CAACJ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;EAC5C,OAAO,IAAIK,IAAI,EAAE,GAAG,IAAIA,IAAI,CAACJ,GAAG,GAAG,IAAI,CAAC;AAC1C,CAAC;AAED,OAAO,IAAMK,yBAAyB,GAAGC,IAAA,IAInC;EAAA,IAJoC;IACxCC;EAGF,CAAC,GAAAD,IAAA;EACC,IAAM,CAACE,KAAK,EAAEC,QAAQ,CAAC,GAAGxB,QAAQ,CAACE,eAAe,CAACuB,QAAQ,EAAE,IAAI,EAAE,CAAC;EAEpE,IAAMC,aAAa,GAAG3B,OAAO,CAAC,MAAM,CAAC,CAACwB,KAAK,EAAE,CAACA,KAAK,CAAC,CAAC;EAErD,IAAMI,YAAY,GAAG/B,WAAW,eAAAgC,iBAAA,CAAC,aAAY;IAC3C,IAAMC,SAAS,SAAS3B,eAAe,CAAC4B,GAAG,EAAE;IAC7C,IAAI,EAAED,SAAS,IAAIpB,kBAAkB,CAACoB,SAAS,CAAC,CAAC,EAAE;MACjD3B,eAAe,CAAC6B,KAAK,EAAE;MACvBP,QAAQ,CAAC,EAAE,CAAC;IACd,CAAC,MAAM;MACLtB,eAAe,CAAC8B,GAAG,CAACH,SAAS,CAAC;MAC9BL,QAAQ,CAACK,SAAS,CAAC;IACrB;EACF,CAAC,GAAE,EAAE,CAAC;EAEN/B,SAAS,CAAC,MAAM;IACd6B,YAAY,EAAE;EAChB,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,IAAMxB,KAAK,GAAGP,WAAW;IAAA,IAAAqC,KAAA,GAAAL,iBAAA,CAAC,WAAOM,KAAiB,EAAK;MACrD,IAAM;QAAEC,IAAI;QAAEC;MAAM,CAAC,SAASnC,OAAO,CAElCG,iBAAiB,EAAE,EAAE;QACtBiC,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEtB,IAAI,CAACuB,SAAS,CAACL,KAAK;MAC5B,CAAC,CAAC;MACF,IAAIC,IAAI,EAAE;QACR,IAAMN,SAAS,GAAGM,IAAI,CAACK,WAAW;QAElCtC,eAAe,CAAC8B,GAAG,CAACH,SAAS,CAAC;QAC9BL,QAAQ,CAACK,SAAS,CAAC;MACrB;MACA,OAAO;QACLO,KAAK;QACLb,KAAK,EAAEY,IAAI,GAAGA,IAAI,CAACK,WAAW,GAAGhC;MACnC,CAAC;IACH,CAAC;IAAA,iBAAAiC,EAAA;MAAA,OAAAR,KAAA,CAAAS,KAAA,OAAAC,SAAA;IAAA;EAAA,KAAE,EAAE,CAAC;EAEN,IAAMC,MAAM,GAAGhD,WAAW,CAAC,MAAM;IAC/BM,eAAe,CAAC6B,KAAK,EAAE;IACvBc,MAAM,CAACC,QAAQ,CAACC,MAAM,EAAE;EAC1B,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,WAAW,GAAGpD,WAAW;IAAA,IAAAqD,KAAA,GAAArB,iBAAA,CAAC,WAAOL,KAAa,EAAK;MACvD,IAAId,kBAAkB,CAACc,KAAK,CAAC,EAAE;QAC7B,OAAO;UACLa,KAAK,EAAE,IAAIc,KAAK,CAAC,yBAAyB;QAC5C,CAAC;MACH;MACA,MAAMhD,eAAe,CAAC8B,GAAG,CAACT,KAAK,CAAC;MAChCC,QAAQ,CAACD,KAAK,CAAC;MACf,OAAO;QAAEa,KAAK,EAAE5B;MAAU,CAAC;IAC7B,CAAC;IAAA,iBAAA2C,GAAA;MAAA,OAAAF,KAAA,CAAAP,KAAA,OAAAC,SAAA;IAAA;EAAA,KAAE,EAAE,CAAC;EAEN,IAAMS,KAAK,GAAGrD,OAAO,CAAC,MAAM;IAC1B,OAAO;MACLI,KAAK;MACLyC,MAAM;MACNrB,KAAK;MACLG,aAAa;MACbsB;IACF,CAAC;EACH,CAAC,EAAE,CAACtB,aAAa,EAAEvB,KAAK,EAAEyC,MAAM,EAAErB,KAAK,EAAEyB,WAAW,CAAC,CAAC;EACtD,oBACE1C,IAAA,CAACC,qBAAqB,CAAC8C,QAAQ;IAACC,KAAK,EAAEF,KAAM;IAAA9B,QAAA,EAC1CA;EAAQ,EACsB;AAErC,CAAC;AAED,OAAO,IAAMiC,OAAO,GAAGA,CAAA,KAAM;EAC3B,IAAMC,GAAG,GAAG3D,UAAU,CAACU,qBAAqB,CAAC;EAC7C,IAAI,CAACiD,GAAG,EAAE;IACR,MAAM,IAAIN,KAAK,CAAC,qCAAqC,CAAC;EACxD;EACA,OAAOM,GAAG;AACZ,CAAC"}