m2m-components 0.2.0 → 0.3.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 +19 -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 +105 -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.js +1 -1
- 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 +24 -21
- 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 +32 -14
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/notification/ServiceIdProvider.tsx"],"names":["React","createContext","useMemo","ServiceIdContext","undefined","ServiceIdProvider","serviceId","children","state","useServiceId","context","useContext","Error"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,EAA+BC,OAA/B,QAA8C,OAA9C;AAMA,
|
|
1
|
+
{"version":3,"sources":["../src/notification/ServiceIdProvider.tsx"],"names":["React","createContext","useMemo","ServiceIdContext","undefined","ServiceIdProvider","serviceId","children","state","useServiceId","context","useContext","Error"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,EAA+BC,OAA/B,QAA8C,OAA9C;AAMA,IAAMC,gBAAgB,gBAAGF,aAAa,CACpCG,SADoC,CAAtC;AAIA,OAAO,IAAMC,iBAAiB,GAAG,QAM3B;AAAA,MAN4B;AAChCC,IAAAA,SADgC;AAEhCC,IAAAA;AAFgC,GAM5B;AACJ,MAAMC,KAAK,GAAGN,OAAO,CAAC,OAAO;AAAEI,IAAAA;AAAF,GAAP,CAAD,EAAwB,EAAxB,CAArB;AAEA,sBACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,IAAA,KAAK,EAAEE;AAAlC,KACGD,QADH,CADF;AAKD,CAdM;AAgBP,OAAO,IAAME,YAAY,GAAG,MAAM;AAChC,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAN,CAAiBR,gBAAjB,CAAhB;;AACA,MAAIO,OAAO,KAAKN,SAAhB,EAA2B;AACzB,UAAM,IAAIQ,KAAJ,CAAU,sDAAV,CAAN;AACD;;AACD,SAAOF,OAAO,CAACJ,SAAf;AACD,CANM","sourcesContent":["import React, { createContext, useMemo } from \"react\";\n\ninterface ServiceIdContextState {\n serviceId: string;\n}\n\nconst ServiceIdContext = createContext<ServiceIdContextState | undefined>(\n undefined\n);\n\nexport const ServiceIdProvider = ({\n serviceId,\n children,\n}: {\n serviceId: string;\n children: React.ReactNode;\n}) => {\n const state = useMemo(() => ({ serviceId }), []);\n\n return (\n <ServiceIdContext.Provider value={state}>\n {children}\n </ServiceIdContext.Provider>\n );\n};\n\nexport const useServiceId = () => {\n const context = React.useContext(ServiceIdContext);\n if (context === undefined) {\n throw new Error(\"useServiceId must be used within a ServiceIdProvider\");\n }\n return context.serviceId;\n};\n"],"file":"ServiceIdProvider.js"}
|
package/notification/api.js
CHANGED
|
@@ -1,46 +1,74 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
|
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
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 { fetcher } from "matsuri-hooks";
|
|
2
12
|
import { m2mNotifications_v1 } from "../endpoints/m2m-notifications.v1";
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
export var requestUpdateNotificationStatusToRead = /*#__PURE__*/function () {
|
|
14
|
+
var _ref = _asyncToGenerator(function* (token, id) {
|
|
15
|
+
yield fetcher(m2mNotifications_v1.updateNotificationStatus({
|
|
16
|
+
id
|
|
17
|
+
}), {
|
|
18
|
+
method: "PUT",
|
|
19
|
+
token,
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
status: "read"
|
|
22
|
+
})
|
|
23
|
+
});
|
|
12
24
|
});
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
|
|
26
|
+
return function requestUpdateNotificationStatusToRead(_x, _x2) {
|
|
27
|
+
return _ref.apply(this, arguments);
|
|
28
|
+
};
|
|
29
|
+
}();
|
|
30
|
+
export var requestSubscribe = /*#__PURE__*/function () {
|
|
31
|
+
var _ref2 = _asyncToGenerator(function* (token, serviceId, input) {
|
|
32
|
+
var {
|
|
33
|
+
error
|
|
34
|
+
} = yield fetcher(m2mNotifications_v1.saveSubscription(), {
|
|
35
|
+
method: "POST",
|
|
36
|
+
token,
|
|
37
|
+
body: JSON.stringify(_objectSpread(_objectSpread({}, input), {}, {
|
|
38
|
+
serviceId,
|
|
39
|
+
status: "subscribed"
|
|
40
|
+
}))
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
if (error) {
|
|
44
|
+
console.error(error);
|
|
45
|
+
}
|
|
24
46
|
});
|
|
25
47
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
return function requestSubscribe(_x3, _x4, _x5) {
|
|
49
|
+
return _ref2.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
52
|
+
export var requestUnSubscribe = /*#__PURE__*/function () {
|
|
53
|
+
var _ref3 = _asyncToGenerator(function* (token, serviceId, input) {
|
|
54
|
+
var {
|
|
55
|
+
error
|
|
56
|
+
} = yield fetcher(m2mNotifications_v1.saveSubscription(), {
|
|
57
|
+
method: "POST",
|
|
58
|
+
token,
|
|
59
|
+
body: JSON.stringify(_objectSpread(_objectSpread({}, input), {}, {
|
|
60
|
+
serviceId,
|
|
61
|
+
status: "denied"
|
|
62
|
+
}))
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
if (error) {
|
|
66
|
+
console.error(error);
|
|
67
|
+
}
|
|
40
68
|
});
|
|
41
69
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
};
|
|
70
|
+
return function requestUnSubscribe(_x6, _x7, _x8) {
|
|
71
|
+
return _ref3.apply(this, arguments);
|
|
72
|
+
};
|
|
73
|
+
}();
|
|
46
74
|
//# sourceMappingURL=api.js.map
|
package/notification/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/notification/api.ts"],"names":["fetcher","m2mNotifications_v1","requestUpdateNotificationStatusToRead","token","id","updateNotificationStatus","method","body","JSON","stringify","status","requestSubscribe","serviceId","input","error","saveSubscription","console","requestUnSubscribe"],"mappings":"AAAA,SAASA,OAAT,QAAwB,eAAxB;AACA,SAASC,mBAAT,QAAoC,mCAApC;AAGA,OAAO,
|
|
1
|
+
{"version":3,"sources":["../src/notification/api.ts"],"names":["fetcher","m2mNotifications_v1","requestUpdateNotificationStatusToRead","token","id","updateNotificationStatus","method","body","JSON","stringify","status","requestSubscribe","serviceId","input","error","saveSubscription","console","requestUnSubscribe"],"mappings":";;;;;;;;;;AAAA,SAASA,OAAT,QAAwB,eAAxB;AACA,SAASC,mBAAT,QAAoC,mCAApC;AAGA,OAAO,IAAMC,qCAAqC;AAAA,+BAAG,WACnDC,KADmD,EAEnDC,EAFmD,EAGhD;AACH,UAAMJ,OAAO,CACXC,mBAAmB,CAACI,wBAApB,CAA6C;AAC3CD,MAAAA;AAD2C,KAA7C,CADW,EAIX;AACEE,MAAAA,MAAM,EAAE,KADV;AAEEH,MAAAA,KAFF;AAGEI,MAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAe;AAAEC,QAAAA,MAAM,EAAE;AAAV,OAAf;AAHR,KAJW,CAAb;AAUD,GAdiD;;AAAA,kBAArCR,qCAAqC;AAAA;AAAA;AAAA,GAA3C;AAgBP,OAAO,IAAMS,gBAAgB;AAAA,gCAAG,WAC9BR,KAD8B,EAE9BS,SAF8B,EAG9BC,KAH8B,EAI3B;AACH,QAAM;AAAEC,MAAAA;AAAF,cAAkBd,OAAO,CAACC,mBAAmB,CAACc,gBAApB,EAAD,EAAyC;AACtET,MAAAA,MAAM,EAAE,MAD8D;AAEtEH,MAAAA,KAFsE;AAGtEI,MAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,iCACDI,KADC;AAEJD,QAAAA,SAFI;AAGJF,QAAAA,MAAM,EAAE;AAHJ;AAHgE,KAAzC,CAA/B;;AASA,QAAII,KAAJ,EAAW;AACTE,MAAAA,OAAO,CAACF,KAAR,CAAcA,KAAd;AACD;AACF,GAjB4B;;AAAA,kBAAhBH,gBAAgB;AAAA;AAAA;AAAA,GAAtB;AAmBP,OAAO,IAAMM,kBAAkB;AAAA,gCAAG,WAChCd,KADgC,EAEhCS,SAFgC,EAGhCC,KAHgC,EAI7B;AACH,QAAM;AAAEC,MAAAA;AAAF,cAAkBd,OAAO,CAACC,mBAAmB,CAACc,gBAApB,EAAD,EAAyC;AACtET,MAAAA,MAAM,EAAE,MAD8D;AAEtEH,MAAAA,KAFsE;AAGtEI,MAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,iCACDI,KADC;AAEJD,QAAAA,SAFI;AAGJF,QAAAA,MAAM,EAAE;AAHJ;AAHgE,KAAzC,CAA/B;;AASA,QAAII,KAAJ,EAAW;AACTE,MAAAA,OAAO,CAACF,KAAR,CAAcA,KAAd;AACD;AACF,GAjB8B;;AAAA,kBAAlBG,kBAAkB;AAAA;AAAA;AAAA,GAAxB","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"],"file":"api.js"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "m2m-components",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"main": "index.js",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"main": "cjs/index.js",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"default": "./index.js"
|
|
9
|
+
"default": "./index.js",
|
|
10
|
+
"require": "./cjs/index.js"
|
|
10
11
|
},
|
|
11
12
|
"./m2m-apps-menu": {
|
|
12
|
-
"default": "./m2m-apps-menu.js"
|
|
13
|
+
"default": "./m2m-apps-menu.js",
|
|
14
|
+
"require": "./cjs/m2m-apps-menu.js"
|
|
13
15
|
},
|
|
14
16
|
"./m2m-user-menu": {
|
|
15
|
-
"default": "./m2m-user-menu.js"
|
|
17
|
+
"default": "./m2m-user-menu.js",
|
|
18
|
+
"require": "./cjs/m2m-user-menu.js"
|
|
16
19
|
},
|
|
17
20
|
"./domains": {
|
|
18
|
-
"default": "./domains.js"
|
|
21
|
+
"default": "./domains.js",
|
|
22
|
+
"require": "./cjs/domains.js"
|
|
19
23
|
},
|
|
20
24
|
"./storage/client": {
|
|
21
|
-
"default": "./storage/client.js"
|
|
25
|
+
"default": "./storage/client.js",
|
|
26
|
+
"require": "./cjs/storage/client.js"
|
|
22
27
|
},
|
|
23
28
|
"./storage/hub": {
|
|
24
|
-
"default": "./storage/hub.js"
|
|
29
|
+
"default": "./storage/hub.js",
|
|
30
|
+
"require": "./cjs/storage/hub.js"
|
|
25
31
|
},
|
|
26
32
|
"./storage/useM2mAuth": {
|
|
27
|
-
"default": "./storage/useM2mAuth.js"
|
|
33
|
+
"default": "./storage/useM2mAuth.js",
|
|
34
|
+
"require": "./cjs/storage/useM2mAuth.js"
|
|
28
35
|
},
|
|
29
36
|
"./notification": {
|
|
30
|
-
"default": "./notification/index.js"
|
|
37
|
+
"default": "./notification/index.js",
|
|
38
|
+
"require": "./cjs/notification/index.js"
|
|
31
39
|
}
|
|
32
40
|
},
|
|
33
41
|
"files": [
|
|
@@ -39,7 +47,8 @@
|
|
|
39
47
|
"/notification/",
|
|
40
48
|
"/storage/",
|
|
41
49
|
"/endpoints/",
|
|
42
|
-
"/jsx.d.ts"
|
|
50
|
+
"/jsx.d.ts",
|
|
51
|
+
"/cjs/"
|
|
43
52
|
],
|
|
44
53
|
"targets": {
|
|
45
54
|
"module": false,
|
|
@@ -51,15 +60,17 @@
|
|
|
51
60
|
"build-app:clients": "vite build website/clients/ --out-dir ../../build -c vite.config.clients.ts -m development",
|
|
52
61
|
"build-app:hub": "vite build website/hub/ --out-dir ../../build",
|
|
53
62
|
"build-app:hub:dev": "vite build website/hub/ --out-dir ../../build -m development",
|
|
54
|
-
"clean": "rm -rf {m2m-apps-menu,m2m-user-menu,LitMenuBaseElement,domains,index}.{d.ts.map,d.ts,js.map,js} storage/ notification/ endpoints/",
|
|
63
|
+
"clean": "rm -rf {m2m-apps-menu,m2m-user-menu,LitMenuBaseElement,domains,index}.{d.ts.map,d.ts,js.map,js} storage/ notification/ endpoints/ cjs/",
|
|
55
64
|
"build": "concurrently yarn:build:*",
|
|
56
65
|
"build:esm": "NODE_ENV=production BABEL_ENV=esm babel src --extensions .ts,.tsx -d ./ --source-maps",
|
|
57
|
-
"build:
|
|
66
|
+
"build:cjs": "NODE_ENV=production BABEL_ENV=cjs babel src --extensions .ts,.tsx -d ./cjs --source-maps",
|
|
67
|
+
"build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationDir ./",
|
|
58
68
|
"lint": "eslint .",
|
|
59
69
|
"postlint": "prettier --check .",
|
|
60
70
|
"format": "eslint . --fix",
|
|
61
71
|
"postformat": "prettier --write .",
|
|
62
|
-
"typecheck": "tsc -p . --noEmit"
|
|
72
|
+
"typecheck": "tsc -p . --noEmit",
|
|
73
|
+
"test": "jest"
|
|
63
74
|
},
|
|
64
75
|
"dependencies": {
|
|
65
76
|
"lit": "^2.0.2",
|
|
@@ -78,6 +89,10 @@
|
|
|
78
89
|
"@rollup/plugin-babel": "^5.3.0",
|
|
79
90
|
"@rollup/plugin-node-resolve": "^13.1.3",
|
|
80
91
|
"@rollup/plugin-typescript": "^8.3.0",
|
|
92
|
+
"@testing-library/jest-dom": "^5.16.4",
|
|
93
|
+
"@testing-library/react": "^12.1.2",
|
|
94
|
+
"@testing-library/react-hooks": "^8.0.0",
|
|
95
|
+
"@types/jest": "^27.4.1",
|
|
81
96
|
"@types/node": "^17.0.5",
|
|
82
97
|
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
|
83
98
|
"@typescript-eslint/parser": "^5.9.1",
|
|
@@ -87,8 +102,11 @@
|
|
|
87
102
|
"eslint-config-prettier": "^8.3.0",
|
|
88
103
|
"eslint-plugin-react": "^7.29.4",
|
|
89
104
|
"eslint-plugin-react-hooks": "^4.3.0",
|
|
105
|
+
"jest": "^27.5.1",
|
|
90
106
|
"prettier": "^2.5.1",
|
|
107
|
+
"react-dom": "^17.0.2",
|
|
91
108
|
"rollup": "^2.67.1",
|
|
109
|
+
"ts-jest": "^27.1.4",
|
|
92
110
|
"typescript": "^4.5.4",
|
|
93
111
|
"vite": "^2.7.9"
|
|
94
112
|
}
|
package/storage/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/storage/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,cAAM,gBAAiB,SAAQ,aAAa;CAAG;AAE/C,YAAY,EAAE,gBAAgB,EAAE,CAAC;AA8DjC,eAAO,MAAM,gBAAgB;;;;;CAG5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/storage/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,cAAM,gBAAiB,SAAQ,aAAa;CAAG;AAE/C,YAAY,EAAE,gBAAgB,EAAE,CAAC;AA8DjC,eAAO,MAAM,gBAAgB;;;;;CAG5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAqCvD,eAAO,MAAM,eAAe;;;iBApBO,MAAM;;CAyBxC,CAAC"}
|
package/storage/client.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
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
|
+
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
|
+
|
|
1
5
|
import { StorageClient } from "./lib/client";
|
|
2
6
|
|
|
3
7
|
class M2mStorageClient extends StorageClient {}
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
var context = {};
|
|
6
10
|
/**
|
|
7
11
|
* Get the connected storage client.
|
|
8
12
|
* @param timeout
|
|
9
13
|
* @default 5000
|
|
10
14
|
*/
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
var getStorage = function getStorage() {
|
|
17
|
+
var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5000;
|
|
13
18
|
return new Promise((resolve, reject) => {
|
|
14
|
-
|
|
19
|
+
var rejectTimer = window.setTimeout(function () {
|
|
15
20
|
reject(new Error("Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient."));
|
|
16
21
|
}, timeout);
|
|
17
|
-
|
|
22
|
+
var storage = context.storage;
|
|
18
23
|
|
|
19
24
|
if (storage) {
|
|
20
25
|
window.clearTimeout(rejectTimer);
|
|
@@ -23,60 +28,93 @@ const getStorage = (timeout = 5000) => {
|
|
|
23
28
|
});
|
|
24
29
|
}
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
var timer = window.setInterval( /*#__PURE__*/_asyncToGenerator(function* () {
|
|
32
|
+
var storage = context.storage;
|
|
28
33
|
|
|
29
34
|
if (storage) {
|
|
30
35
|
window.clearTimeout(rejectTimer);
|
|
31
|
-
|
|
36
|
+
yield storage.onConnect();
|
|
32
37
|
window.clearInterval(timer);
|
|
33
38
|
resolve(storage);
|
|
34
39
|
}
|
|
35
|
-
}, 200);
|
|
40
|
+
}), 200);
|
|
36
41
|
});
|
|
37
42
|
};
|
|
38
43
|
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
var M2M_STORAGE_HUB_URL = "https://hub.m2msystems.cloud/";
|
|
45
|
+
var M2M_STORAGE_HUB_URL_DEV = "https://m2m-components-storage-hub-dev.netlify.app/";
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
var initStorageClient = options => {
|
|
43
48
|
if (context.storage) {
|
|
44
49
|
throw new Error("M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.");
|
|
45
50
|
}
|
|
46
51
|
|
|
47
|
-
|
|
52
|
+
var storage = new M2mStorageClient((options === null || options === void 0 ? void 0 : options.env) === "production" ? M2M_STORAGE_HUB_URL : M2M_STORAGE_HUB_URL_DEV);
|
|
48
53
|
context.storage = storage;
|
|
49
54
|
};
|
|
50
55
|
|
|
51
|
-
export
|
|
56
|
+
export var m2mStorageClient = {
|
|
52
57
|
init: initStorageClient,
|
|
53
58
|
getStorage: getStorage
|
|
54
59
|
};
|
|
55
|
-
export
|
|
60
|
+
export var M2M_AUTH_TOKEN_KEY = "M2M_APP_AUTH_TOKEN";
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
var getAuthTokenCache = () => {
|
|
58
63
|
return window.localStorage.getItem(M2M_AUTH_TOKEN_KEY);
|
|
59
64
|
};
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
var getAuthToken = /*#__PURE__*/function () {
|
|
67
|
+
var _ref2 = _asyncToGenerator(function* () {
|
|
68
|
+
try {
|
|
69
|
+
var storage = yield getStorage();
|
|
70
|
+
var autuToken = yield storage.get(M2M_AUTH_TOKEN_KEY);
|
|
71
|
+
return autuToken || getAuthTokenCache();
|
|
72
|
+
} catch (error) {
|
|
73
|
+
console.warn(error);
|
|
74
|
+
return getAuthTokenCache();
|
|
75
|
+
}
|
|
76
|
+
});
|
|
66
77
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
};
|
|
78
|
+
return function getAuthToken() {
|
|
79
|
+
return _ref2.apply(this, arguments);
|
|
80
|
+
};
|
|
81
|
+
}();
|
|
72
82
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
var setAuthToken = /*#__PURE__*/function () {
|
|
84
|
+
var _ref3 = _asyncToGenerator(function* (token) {
|
|
85
|
+
window.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
var storage = yield getStorage();
|
|
89
|
+
yield storage.set(M2M_AUTH_TOKEN_KEY, token);
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.warn(error);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
return function setAuthToken(_x) {
|
|
96
|
+
return _ref3.apply(this, arguments);
|
|
97
|
+
};
|
|
98
|
+
}();
|
|
99
|
+
|
|
100
|
+
var clearAuthToken = /*#__PURE__*/function () {
|
|
101
|
+
var _ref4 = _asyncToGenerator(function* () {
|
|
102
|
+
window.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
var storage = yield getStorage();
|
|
106
|
+
yield storage.del(M2M_AUTH_TOKEN_KEY);
|
|
107
|
+
} catch (error) {
|
|
108
|
+
console.warn(error);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
return function clearAuthToken() {
|
|
113
|
+
return _ref4.apply(this, arguments);
|
|
114
|
+
};
|
|
115
|
+
}();
|
|
78
116
|
|
|
79
|
-
export
|
|
117
|
+
export var m2mAuthTokenApi = {
|
|
80
118
|
get: getAuthToken,
|
|
81
119
|
getCache: getAuthTokenCache,
|
|
82
120
|
set: setAuthToken,
|
package/storage/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/client.ts"],"names":["StorageClient","M2mStorageClient","context","getStorage","timeout","Promise","resolve","reject","rejectTimer","window","setTimeout","Error","storage","clearTimeout","onConnect","then","timer","setInterval","clearInterval","M2M_STORAGE_HUB_URL","M2M_STORAGE_HUB_URL_DEV","initStorageClient","options","env","m2mStorageClient","init","M2M_AUTH_TOKEN_KEY","getAuthTokenCache","localStorage","getItem","getAuthToken","autuToken","get","setAuthToken","token","setItem","set","clearAuthToken","removeItem","del","m2mAuthTokenApi","getCache","clear"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;;AAEA,MAAMC,gBAAN,SAA+BD,aAA/B,CAA6C;;AAI7C,
|
|
1
|
+
{"version":3,"sources":["../src/storage/client.ts"],"names":["StorageClient","M2mStorageClient","context","getStorage","timeout","Promise","resolve","reject","rejectTimer","window","setTimeout","Error","storage","clearTimeout","onConnect","then","timer","setInterval","clearInterval","M2M_STORAGE_HUB_URL","M2M_STORAGE_HUB_URL_DEV","initStorageClient","options","env","m2mStorageClient","init","M2M_AUTH_TOKEN_KEY","getAuthTokenCache","localStorage","getItem","getAuthToken","autuToken","get","error","console","warn","setAuthToken","token","setItem","set","clearAuthToken","removeItem","del","m2mAuthTokenApi","getCache","clear"],"mappings":"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","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 = (timeout = 5000) => {\n return 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 storage.onConnect().then(() => {\n resolve(storage);\n });\n }\n\n const timer = window.setInterval(async () => {\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n await storage.onConnect();\n window.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\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"],"file":"client.js"}
|
package/storage/hub.js
CHANGED
|
@@ -3,11 +3,11 @@ import { init } from "./lib/hub";
|
|
|
3
3
|
/**
|
|
4
4
|
* Init the hub.
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
var initM2mStorageHub = permissions => {
|
|
7
7
|
init(permissions);
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
export
|
|
10
|
+
export var m2mStorageHub = {
|
|
11
11
|
init: initM2mStorageHub
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=hub.js.map
|
package/storage/hub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/hub.ts"],"names":["init","initM2mStorageHub","permissions","m2mStorageHub"],"mappings":"AAAA,SAASA,IAAT,QAAqB,WAArB;;AAMA;AACA;AACA;AACA,
|
|
1
|
+
{"version":3,"sources":["../src/storage/hub.ts"],"names":["init","initM2mStorageHub","permissions","m2mStorageHub"],"mappings":"AAAA,SAASA,IAAT,QAAqB,WAArB;;AAMA;AACA;AACA;AACA,IAAMC,iBAAiB,GAAIC,WAAD,IAAyC;AACjEF,EAAAA,IAAI,CAACE,WAAD,CAAJ;AACD,CAFD;;AAIA,OAAO,IAAMC,aAAa,GAAG;AAC3BH,EAAAA,IAAI,EAAEC;AADqB,CAAtB","sourcesContent":["import { init } from \"./lib/hub\";\nimport type { Permission } from \"./lib/hub\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface M2mStoragePermission extends Permission {}\n\n/**\n * Init the hub.\n */\nconst initM2mStorageHub = (permissions: M2mStoragePermission[]) => {\n init(permissions);\n};\n\nexport const m2mStorageHub = {\n init: initM2mStorageHub,\n};\n"],"file":"hub.js"}
|
package/storage/lib/client.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* この実装はcross-storageほぼそのままです。
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
var generateUUID = () => {
|
|
5
5
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
var r = Math.random() * 16 | 0,
|
|
7
|
+
v = c == "x" ? r : r & 0x3 | 0x8;
|
|
8
8
|
return v.toString(16);
|
|
9
9
|
});
|
|
10
10
|
};
|
|
@@ -30,7 +30,7 @@ export class StorageClient {
|
|
|
30
30
|
this.count = 0;
|
|
31
31
|
this.timeout = opts.timeout || 5000;
|
|
32
32
|
window.addEventListener("message", this.listener.bind(this), false);
|
|
33
|
-
|
|
33
|
+
var frame = this.createFrame(url);
|
|
34
34
|
this.hub = frame.contentWindow;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -46,7 +46,7 @@ export class StorageClient {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
return new Promise((resolve, reject) => {
|
|
49
|
-
|
|
49
|
+
var timeout = setTimeout(function () {
|
|
50
50
|
reject(new Error("StorageClient could not connect."));
|
|
51
51
|
}, this.timeout);
|
|
52
52
|
this.requests.connect.push(err => {
|
|
@@ -64,13 +64,21 @@ export class StorageClient {
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
get(
|
|
67
|
+
get() {
|
|
68
|
+
for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
69
|
+
keys[_key] = arguments[_key];
|
|
70
|
+
}
|
|
71
|
+
|
|
68
72
|
return this.request("get", {
|
|
69
73
|
keys
|
|
70
74
|
});
|
|
71
75
|
}
|
|
72
76
|
|
|
73
|
-
del(
|
|
77
|
+
del() {
|
|
78
|
+
for (var _len2 = arguments.length, keys = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
79
|
+
keys[_key2] = arguments[_key2];
|
|
80
|
+
}
|
|
81
|
+
|
|
74
82
|
return this.request("del", {
|
|
75
83
|
keys
|
|
76
84
|
});
|
|
@@ -85,7 +93,7 @@ export class StorageClient {
|
|
|
85
93
|
}
|
|
86
94
|
|
|
87
95
|
close() {
|
|
88
|
-
|
|
96
|
+
var frame = document.getElementById(this.frameId);
|
|
89
97
|
|
|
90
98
|
if (frame && frame.parentNode) {
|
|
91
99
|
frame.parentNode.removeChild(frame);
|
|
@@ -97,13 +105,13 @@ export class StorageClient {
|
|
|
97
105
|
}
|
|
98
106
|
|
|
99
107
|
listener(message) {
|
|
100
|
-
|
|
108
|
+
var i, error, response;
|
|
101
109
|
|
|
102
110
|
if (this.closed || !message.data || typeof message.data !== "string") {
|
|
103
111
|
return;
|
|
104
112
|
}
|
|
105
113
|
|
|
106
|
-
|
|
114
|
+
var origin = message.origin;
|
|
107
115
|
if (origin !== this.origin) return;
|
|
108
116
|
|
|
109
117
|
if (message.data === "cross-storage:unavailable") {
|
|
@@ -145,7 +153,7 @@ export class StorageClient {
|
|
|
145
153
|
}
|
|
146
154
|
|
|
147
155
|
createFrame(url) {
|
|
148
|
-
|
|
156
|
+
var frame = window.document.createElement("iframe");
|
|
149
157
|
frame.id = this.frameId;
|
|
150
158
|
frame.style.display = "none";
|
|
151
159
|
frame.style.position = "absolute";
|
|
@@ -163,13 +171,13 @@ export class StorageClient {
|
|
|
163
171
|
}
|
|
164
172
|
|
|
165
173
|
this.count++;
|
|
166
|
-
|
|
174
|
+
var req = {
|
|
167
175
|
id: this.id + ":" + this.count,
|
|
168
176
|
method: "cross-storage:" + method,
|
|
169
177
|
params: params
|
|
170
178
|
};
|
|
171
179
|
return new Promise((resolve, reject) => {
|
|
172
|
-
|
|
180
|
+
var timeout = window.setTimeout(() => {
|
|
173
181
|
if (!this.requests[req.id]) return;
|
|
174
182
|
delete this.requests[req.id];
|
|
175
183
|
reject(new Error("Timeout: StorageClient could not perform " + req.method));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/storage/lib/client.ts"],"names":["generateUUID","replace","c","r","Math","random","v","toString","StorageClient","constructor","url","opts","id","frameId","origin","requests","connected","closed","count","timeout","hub","URL","window","addEventListener","listener","bind","frame","createFrame","contentWindow","onConnect","Promise","resolve","reject","Error","connect","setTimeout","push","err","clearTimeout","undefined","set","key","value","request","get","keys","del","clear","getKeys","close","document","getElementById","parentNode","removeChild","removeEventListener","message","i","error","response","data","length","indexOf","JSON","parse","e","result","createElement","style","display","position","top","left","body","appendChild","src","method","params","req","postMessage","stringify"],"mappings":"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","sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\nconst generateUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n};\nexport class StorageClient {\n id: string;\n frameId: string;\n origin: string;\n requests: {\n [key: string]: any;\n };\n connected: boolean;\n closed: boolean;\n count: number;\n timeout: number;\n hub: null | Window;\n\n constructor(url: string, opts?: { frameId?: string; timeout?: number }) {\n opts = opts || {};\n\n this.id = generateUUID();\n this.frameId = opts.frameId || \"CrossStorageClient-\" + this.id;\n this.origin = new URL(url).origin;\n this.requests = {};\n this.connected = false;\n this.closed = false;\n this.count = 0;\n this.timeout = opts.timeout || 5000;\n\n window.addEventListener(\"message\", this.listener.bind(this), false);\n\n const frame = this.createFrame(url);\n this.hub = frame.contentWindow;\n }\n\n onConnect() {\n if (this.connected) {\n return Promise.resolve();\n } else if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n if (!this.requests.connect) {\n this.requests.connect = [];\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(function () {\n reject(new Error(\"StorageClient could not connect.\"));\n }, this.timeout);\n\n this.requests.connect.push((err: string) => {\n clearTimeout(timeout);\n if (err) return reject(err);\n\n resolve(undefined);\n });\n });\n }\n\n set(key: string, value: string) {\n return this.request(\"set\", {\n key: key,\n value: value,\n });\n }\n\n get(...keys: string[]) {\n return this.request(\"get\", { keys });\n }\n\n del(...keys: string[]) {\n return this.request(\"del\", { keys });\n }\n\n clear() {\n return this.request(\"clear\");\n }\n\n getKeys() {\n this.request(\"getKeys\");\n }\n\n close() {\n const frame = document.getElementById(this.frameId);\n if (frame && frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n\n window.removeEventListener(\"message\", this.listener, false);\n\n this.connected = false;\n this.closed = true;\n }\n\n private listener(message: MessageEvent) {\n let i, error, response;\n\n if (this.closed || !message.data || typeof message.data !== \"string\") {\n return;\n }\n\n const origin = message.origin;\n\n if (origin !== this.origin) return;\n\n if (message.data === \"cross-storage:unavailable\") {\n if (!this.closed) this.close();\n if (!this.requests.connect) return;\n\n error = new Error(\n \"Closing StorageClient. Could not access localStorage in StorageHub.\"\n );\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n\n return;\n }\n\n if (message.data.indexOf(\"cross-storage:\") !== -1 && !this.connected) {\n this.connected = true;\n if (!this.requests.connect) return;\n\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n delete this.requests.connect;\n }\n\n if (message.data === \"cross-storage:ready\") return;\n\n try {\n response = JSON.parse(message.data);\n } catch (e) {\n return;\n }\n\n if (!response.id) return;\n\n if (this.requests[response.id]) {\n this.requests[response.id](response.error, response.result);\n }\n }\n\n private createFrame(url: string) {\n const frame = window.document.createElement(\"iframe\");\n frame.id = this.frameId;\n\n frame.style.display = \"none\";\n frame.style.position = \"absolute\";\n frame.style.top = \"-999px\";\n frame.style.left = \"-999px\";\n\n window.document.body.appendChild(frame);\n frame.src = url;\n\n return frame;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private request(method: string, params?: {}) {\n if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n this.count++;\n\n const req = {\n id: this.id + \":\" + this.count,\n method: \"cross-storage:\" + method,\n params: params,\n };\n\n return new Promise((resolve, reject) => {\n const timeout = window.setTimeout(() => {\n if (!this.requests[req.id]) return;\n\n delete this.requests[req.id];\n reject(\n new Error(\"Timeout: StorageClient could not perform \" + req.method)\n );\n }, this.timeout);\n\n this.requests[req.id] = (err: string, result: string) => {\n clearTimeout(timeout);\n delete this.requests[req.id];\n if (err) return reject(new Error(err));\n resolve(result);\n };\n\n if (this.hub) {\n this.hub.postMessage(JSON.stringify(req), this.origin);\n } else {\n reject(new Error(\"Not found StorageHub.\"));\n }\n });\n }\n}\n"],"file":"client.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/storage/lib/client.ts"],"names":["generateUUID","replace","c","r","Math","random","v","toString","StorageClient","constructor","url","opts","id","frameId","origin","requests","connected","closed","count","timeout","hub","URL","window","addEventListener","listener","bind","frame","createFrame","contentWindow","onConnect","Promise","resolve","reject","Error","connect","setTimeout","push","err","clearTimeout","undefined","set","key","value","request","get","keys","del","clear","getKeys","close","document","getElementById","parentNode","removeChild","removeEventListener","message","i","error","response","data","length","indexOf","JSON","parse","e","result","createElement","style","display","position","top","left","body","appendChild","src","method","params","req","postMessage","stringify"],"mappings":"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","sourcesContent":["/**\n * この実装はcross-storageほぼそのままです。\n */\nconst generateUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n};\nexport class StorageClient {\n id: string;\n frameId: string;\n origin: string;\n requests: {\n [key: string]: any;\n };\n connected: boolean;\n closed: boolean;\n count: number;\n timeout: number;\n hub: null | Window;\n\n constructor(url: string, opts?: { frameId?: string; timeout?: number }) {\n opts = opts || {};\n\n this.id = generateUUID();\n this.frameId = opts.frameId || \"CrossStorageClient-\" + this.id;\n this.origin = new URL(url).origin;\n this.requests = {};\n this.connected = false;\n this.closed = false;\n this.count = 0;\n this.timeout = opts.timeout || 5000;\n\n window.addEventListener(\"message\", this.listener.bind(this), false);\n\n const frame = this.createFrame(url);\n this.hub = frame.contentWindow;\n }\n\n onConnect() {\n if (this.connected) {\n return Promise.resolve();\n } else if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n if (!this.requests.connect) {\n this.requests.connect = [];\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(function () {\n reject(new Error(\"StorageClient could not connect.\"));\n }, this.timeout);\n\n this.requests.connect.push((err: string) => {\n clearTimeout(timeout);\n if (err) return reject(err);\n\n resolve(undefined);\n });\n });\n }\n\n set(key: string, value: string) {\n return this.request(\"set\", {\n key: key,\n value: value,\n });\n }\n\n get(...keys: string[]) {\n return this.request(\"get\", { keys });\n }\n\n del(...keys: string[]) {\n return this.request(\"del\", { keys });\n }\n\n clear() {\n return this.request(\"clear\");\n }\n\n getKeys() {\n this.request(\"getKeys\");\n }\n\n close() {\n const frame = document.getElementById(this.frameId);\n if (frame && frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n\n window.removeEventListener(\"message\", this.listener, false);\n\n this.connected = false;\n this.closed = true;\n }\n\n private listener(message: MessageEvent) {\n let i, error, response;\n\n if (this.closed || !message.data || typeof message.data !== \"string\") {\n return;\n }\n\n const origin = message.origin;\n\n if (origin !== this.origin) return;\n\n if (message.data === \"cross-storage:unavailable\") {\n if (!this.closed) this.close();\n if (!this.requests.connect) return;\n\n error = new Error(\n \"Closing StorageClient. Could not access localStorage in StorageHub.\"\n );\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n\n return;\n }\n\n if (message.data.indexOf(\"cross-storage:\") !== -1 && !this.connected) {\n this.connected = true;\n if (!this.requests.connect) return;\n\n for (i = 0; i < this.requests.connect.length; i++) {\n this.requests.connect[i](error);\n }\n delete this.requests.connect;\n }\n\n if (message.data === \"cross-storage:ready\") return;\n\n try {\n response = JSON.parse(message.data);\n } catch (e) {\n return;\n }\n\n if (!response.id) return;\n\n if (this.requests[response.id]) {\n this.requests[response.id](response.error, response.result);\n }\n }\n\n private createFrame(url: string) {\n const frame = window.document.createElement(\"iframe\");\n frame.id = this.frameId;\n\n frame.style.display = \"none\";\n frame.style.position = \"absolute\";\n frame.style.top = \"-999px\";\n frame.style.left = \"-999px\";\n\n window.document.body.appendChild(frame);\n frame.src = url;\n\n return frame;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private request(method: string, params?: {}) {\n if (this.closed) {\n return Promise.reject(new Error(\"StorageClient has closed.\"));\n }\n\n this.count++;\n\n const req = {\n id: this.id + \":\" + this.count,\n method: \"cross-storage:\" + method,\n params: params,\n };\n\n return new Promise((resolve, reject) => {\n const timeout = window.setTimeout(() => {\n if (!this.requests[req.id]) return;\n\n delete this.requests[req.id];\n reject(\n new Error(\"Timeout: StorageClient could not perform \" + req.method)\n );\n }, this.timeout);\n\n this.requests[req.id] = (err: string, result: string) => {\n clearTimeout(timeout);\n delete this.requests[req.id];\n if (err) return reject(new Error(err));\n resolve(result);\n };\n\n if (this.hub) {\n this.hub.postMessage(JSON.stringify(req), this.origin);\n } else {\n reject(new Error(\"Not found StorageHub.\"));\n }\n });\n }\n}\n"],"file":"client.js"}
|