@onekeyfe/hd-web-sdk 0.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.
- package/README.md +11 -0
- package/build/data/coins/bitcoin.json +42 -0
- package/build/data/messages/messages.json +8658 -0
- package/build/data/version.ts +3 -0
- package/build/iframe.html +32 -0
- package/build/js/iframe.7159b9163429b4e3d942.js +3 -0
- package/build/js/iframe.7159b9163429b4e3d942.js.LICENSE.txt +29 -0
- package/build/js/iframe.7159b9163429b4e3d942.js.map +1 -0
- package/build/onekey-js-sdk.js +43002 -0
- package/build/onekey-js-sdk.js.map +1 -0
- package/build/onekey-js-sdk.min.js +1 -0
- package/build/onekey-js-sdk.min.js.map +1 -0
- package/dist/iframe/bridge-config.d.ts +8 -0
- package/dist/iframe/bridge-config.d.ts.map +1 -0
- package/dist/iframe/bridge-config.js +10 -0
- package/dist/iframe/bridge-config.js.map +1 -0
- package/dist/iframe/builder.d.ts +8 -0
- package/dist/iframe/builder.d.ts.map +1 -0
- package/dist/iframe/builder.js +95 -0
- package/dist/iframe/builder.js.map +1 -0
- package/dist/iframe/index.d.ts +3 -0
- package/dist/iframe/index.d.ts.map +1 -0
- package/dist/iframe/index.js +64 -0
- package/dist/iframe/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +121 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/bridgeUtils.d.ts +10 -0
- package/dist/utils/bridgeUtils.d.ts.map +1 -0
- package/dist/utils/bridgeUtils.js +48 -0
- package/dist/utils/bridgeUtils.js.map +1 -0
- package/dist/utils/urlUtils.d.ts +2 -0
- package/dist/utils/urlUtils.d.ts.map +1 -0
- package/dist/utils/urlUtils.js +13 -0
- package/dist/utils/urlUtils.js.map +1 -0
- package/package.json +46 -0
- package/src/iframe/bridge-config.ts +13 -0
- package/src/iframe/builder.ts +97 -0
- package/src/iframe/index.ts +73 -0
- package/src/index.ts +144 -0
- package/src/utils/bridgeUtils.ts +38 -0
- package/src/utils/urlUtils.ts +7 -0
- package/static/iframe.html +32 -0
- package/tsconfig.json +8 -0
- package/webpack/dev.webpack.config.ts +32 -0
- package/webpack/https_dev.crt +31 -0
- package/webpack/https_dev.key +51 -0
- package/webpack/iframe.webpack.config.ts +66 -0
- package/webpack/prod.webpack.config.ts +61 -0
- package/webpack/webpack.config.ts +17 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-config.d.ts","sourceRoot":"","sources":["../../src/iframe/bridge-config.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM,EAAE;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;CAMxB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const config = {
|
|
4
|
+
iframeName: 'onekey-iframe',
|
|
5
|
+
hostName: 'onekey-host',
|
|
6
|
+
channel: 'onekey-js-sdk',
|
|
7
|
+
scope: '$hardware_sdk',
|
|
8
|
+
};
|
|
9
|
+
exports.default = config;
|
|
10
|
+
//# sourceMappingURL=bridge-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-config.js","sourceRoot":"","sources":["../../src/iframe/bridge-config.ts"],"names":[],"mappings":";;AAAA,MAAM,MAAM,GAKR;IACF,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Deferred } from '@onekeyfe/hd-core';
|
|
2
|
+
export declare let instance: HTMLIFrameElement | null;
|
|
3
|
+
export declare let origin: string;
|
|
4
|
+
export declare let initPromise: Deferred<void>;
|
|
5
|
+
export declare let timeout: number;
|
|
6
|
+
export declare const init: (settings: any) => Promise<void>;
|
|
7
|
+
export declare const dispose: () => void;
|
|
8
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/iframe/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAA4B,MAAM,mBAAmB,CAAC;AAI/E,eAAO,IAAI,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAC9C,eAAO,IAAI,MAAM,EAAE,MAAM,CAAC;AAC1B,eAAO,IAAI,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAoB,CAAC;AAC1D,eAAO,IAAI,OAAO,QAAI,CAAC;AAGvB,eAAO,MAAM,IAAI,aAAoB,GAAG,kBA0EvC,CAAC;AAEF,eAAO,MAAM,OAAO,YAUnB,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.dispose = exports.init = exports.timeout = exports.initPromise = exports.origin = exports.instance = void 0;
|
|
13
|
+
const hd_core_1 = require("@onekeyfe/hd-core");
|
|
14
|
+
const urlUtils_1 = require("../utils/urlUtils");
|
|
15
|
+
exports.initPromise = (0, hd_core_1.create)();
|
|
16
|
+
exports.timeout = 0;
|
|
17
|
+
const init = (settings) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
exports.initPromise = (0, hd_core_1.create)();
|
|
19
|
+
const existedFrame = document.getElementById('onekey-connect');
|
|
20
|
+
if (existedFrame) {
|
|
21
|
+
exports.instance = existedFrame;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
exports.instance = document.createElement('iframe');
|
|
25
|
+
exports.instance.frameBorder = '0';
|
|
26
|
+
exports.instance.width = '0px';
|
|
27
|
+
exports.instance.height = '0px';
|
|
28
|
+
exports.instance.style.position = 'absolute';
|
|
29
|
+
exports.instance.style.display = 'none';
|
|
30
|
+
exports.instance.style.border = '0px';
|
|
31
|
+
exports.instance.style.width = '0px';
|
|
32
|
+
exports.instance.style.height = '0px';
|
|
33
|
+
exports.instance.id = 'onekey-connect';
|
|
34
|
+
}
|
|
35
|
+
const manifest = `version=${settings.version}`;
|
|
36
|
+
const src = `${settings.iframeSrc}?${manifest}`;
|
|
37
|
+
exports.instance.setAttribute('src', src);
|
|
38
|
+
exports.origin = (0, urlUtils_1.getOrigin)(exports.instance.src);
|
|
39
|
+
exports.timeout = window.setTimeout(() => {
|
|
40
|
+
exports.initPromise.reject(hd_core_1.ERRORS.TypedError('Init_IframeTimeout'));
|
|
41
|
+
}, 10000);
|
|
42
|
+
const onLoad = () => {
|
|
43
|
+
var _a;
|
|
44
|
+
if (!exports.instance) {
|
|
45
|
+
exports.initPromise.reject(hd_core_1.ERRORS.TypedError('Init_IframeBlocked'));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
(_a = exports.instance.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
49
|
+
type: 'iframe-init',
|
|
50
|
+
payload: {
|
|
51
|
+
settings: Object.assign({}, settings),
|
|
52
|
+
},
|
|
53
|
+
}, exports.origin);
|
|
54
|
+
exports.instance.onload = null;
|
|
55
|
+
};
|
|
56
|
+
if (exports.instance.attachEvent) {
|
|
57
|
+
exports.instance.attachEvent('onload', onLoad);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
exports.instance.onload = onLoad;
|
|
61
|
+
}
|
|
62
|
+
if (document.body) {
|
|
63
|
+
document.body.appendChild(exports.instance);
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
yield exports.initPromise.promise;
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
if (exports.instance) {
|
|
70
|
+
if (exports.instance.parentNode) {
|
|
71
|
+
exports.instance.parentNode.removeChild(exports.instance);
|
|
72
|
+
}
|
|
73
|
+
exports.instance = null;
|
|
74
|
+
}
|
|
75
|
+
throw e;
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
window.clearTimeout(exports.timeout);
|
|
79
|
+
exports.timeout = 0;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
exports.init = init;
|
|
83
|
+
const dispose = () => {
|
|
84
|
+
if (exports.instance && exports.instance.parentNode) {
|
|
85
|
+
try {
|
|
86
|
+
exports.instance.parentNode.removeChild(exports.instance);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.instance = null;
|
|
92
|
+
exports.timeout = 0;
|
|
93
|
+
};
|
|
94
|
+
exports.dispose = dispose;
|
|
95
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/iframe/builder.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA+E;AAC/E,gDAA8C;AAKnC,QAAA,WAAW,GAAmB,IAAA,gBAAc,GAAE,CAAC;AAC/C,QAAA,OAAO,GAAG,CAAC,CAAC;AAGhB,MAAM,IAAI,GAAG,CAAO,QAAa,EAAE,EAAE;IAC1C,mBAAW,GAAG,IAAA,gBAAc,GAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAsB,CAAC;IACpF,IAAI,YAAY,EAAE;QAChB,gBAAQ,GAAG,YAAY,CAAC;KACzB;SAAM;QACL,gBAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,gBAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;QAC3B,gBAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,gBAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,gBAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACrC,gBAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAChC,gBAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,gBAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7B,gBAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,gBAAQ,CAAC,EAAE,GAAG,gBAAgB,CAAC;KAChC;IAED,MAAM,QAAQ,GAAG,WAAW,QAAQ,CAAC,OAAiB,EAAE,CAAC;IACzD,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAmB,IAAI,QAAQ,EAAE,CAAC;IAE1D,gBAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAElC,cAAM,GAAG,IAAA,oBAAS,EAAC,gBAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,eAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;QAC/B,mBAAW,CAAC,MAAM,CAAC,gBAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9D,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,MAAM,MAAM,GAAG,GAAG,EAAE;;QAClB,IAAI,CAAC,gBAAQ,EAAE;YACb,mBAAW,CAAC,MAAM,CAAC,gBAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,MAAA,gBAAQ,CAAC,aAAa,0CAAE,WAAW,CACjC;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE;gBACP,QAAQ,oBAAO,QAAQ,CAAE;aAC1B;SACF,EACD,cAAM,CACP,CAAC;QAEF,gBAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC,CAAC;IAIF,IAAI,gBAAQ,CAAC,WAAW,EAAE;QAExB,gBAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KACxC;SAAM;QACL,gBAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;KAC1B;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE;QACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAQ,CAAC,CAAC;KACrC;IAED,IAAI;QACF,MAAM,mBAAW,CAAC,OAAO,CAAC;KAC3B;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,gBAAQ,EAAE;YACZ,IAAI,gBAAQ,CAAC,UAAU,EAAE;gBACvB,gBAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAQ,CAAC,CAAC;aAC3C;YACD,gBAAQ,GAAG,IAAI,CAAC;SACjB;QACD,MAAM,CAAC,CAAC;KACT;YAAS;QACR,MAAM,CAAC,YAAY,CAAC,eAAO,CAAC,CAAC;QAC7B,eAAO,GAAG,CAAC,CAAC;KACb;AACH,CAAC,CAAA,CAAC;AA1EW,QAAA,IAAI,QA0Ef;AAEK,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,IAAI,gBAAQ,IAAI,gBAAQ,CAAC,UAAU,EAAE;QACnC,IAAI;YACF,gBAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAQ,CAAC,CAAC;SAC3C;QAAC,OAAO,CAAC,EAAE;SAEX;KACF;IACD,gBAAQ,GAAG,IAAI,CAAC;IAChB,eAAO,GAAG,CAAC,CAAC;AACd,CAAC,CAAC;AAVW,QAAA,OAAO,WAUlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,UAAU,EAMX,MAAM,mBAAmB,CAAC;AAmB3B,wBAAsB,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,iEAqCxD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.init = void 0;
|
|
13
|
+
const hd_transport_http_1 = require("@onekeyfe/hd-transport-http");
|
|
14
|
+
const hd_core_1 = require("@onekeyfe/hd-core");
|
|
15
|
+
const urlUtils_1 = require("../utils/urlUtils");
|
|
16
|
+
const bridgeUtils_1 = require("../utils/bridgeUtils");
|
|
17
|
+
const bridge_config_1 = require("./bridge-config");
|
|
18
|
+
let _core;
|
|
19
|
+
const Log = (0, hd_core_1.initLog)('IFrame');
|
|
20
|
+
const handleMessage = (event) => {
|
|
21
|
+
var _a;
|
|
22
|
+
if (event.source === window || !event.data)
|
|
23
|
+
return;
|
|
24
|
+
const message = (0, hd_core_1.parseMessage)(event);
|
|
25
|
+
if (message.type === hd_core_1.IFRAME.INIT) {
|
|
26
|
+
init((_a = message.payload) !== null && _a !== void 0 ? _a : {});
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
function init(payload) {
|
|
30
|
+
var _a;
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
if (hd_core_1.DataManager.getSettings('origin'))
|
|
33
|
+
return;
|
|
34
|
+
const settings = (0, hd_core_1.parseConnectSettings)(Object.assign(Object.assign({}, ((_a = payload.settings) !== null && _a !== void 0 ? _a : {})), { isFrame: true }));
|
|
35
|
+
settings.origin = !origin || origin === 'null' ? payload.settings.origin : origin;
|
|
36
|
+
Log.enabled = !!settings.debug;
|
|
37
|
+
try {
|
|
38
|
+
_core = yield (0, hd_core_1.initCore)(settings, hd_transport_http_1.default);
|
|
39
|
+
_core === null || _core === void 0 ? void 0 : _core.on(hd_core_1.CORE_EVENT, messages => (0, bridgeUtils_1.sendMessage)(messages, false));
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return (0, hd_core_1.createErrorMessage)(error);
|
|
43
|
+
}
|
|
44
|
+
(0, bridgeUtils_1.createJsBridge)({
|
|
45
|
+
isHost: false,
|
|
46
|
+
remoteFrame: window.parent,
|
|
47
|
+
remoteFrameName: bridge_config_1.default.hostName,
|
|
48
|
+
selfFrameName: bridge_config_1.default.iframeName,
|
|
49
|
+
channel: bridge_config_1.default.channel,
|
|
50
|
+
targetOrigin: (0, urlUtils_1.getOrigin)(settings.parentOrigin),
|
|
51
|
+
receiveHandler: (messageEvent) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const message = (0, hd_core_1.parseMessage)(messageEvent);
|
|
53
|
+
Log.debug('Frame Bridge Receive message: ', message);
|
|
54
|
+
const response = yield (_core === null || _core === void 0 ? void 0 : _core.handleMessage(message));
|
|
55
|
+
Log.debug('Frame Bridge response data: ', response);
|
|
56
|
+
return response;
|
|
57
|
+
}),
|
|
58
|
+
});
|
|
59
|
+
yield (0, bridgeUtils_1.sendMessage)((0, hd_core_1.createIFrameMessage)(hd_core_1.IFRAME.INIT_BRIDGE, {}), false);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
exports.init = init;
|
|
63
|
+
window.addEventListener('message', handleMessage, false);
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAAwD;AACxD,+CAa2B;AAC3B,gDAA8C;AAC9C,sDAAmE;AAEnE,mDAA6C;AAE7C,IAAI,KAAuB,CAAC;AAC5B,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,QAAQ,CAAC,CAAC;AAE9B,MAAM,aAAa,GAAG,CAAC,KAAuB,EAAE,EAAE;;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO;IAEnD,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAM,CAAC,IAAI,EAAE;QAChC,IAAI,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;KAC7B;AACH,CAAC,CAAC;AAEF,SAAsB,IAAI,CAAC,OAA8B;;;QACvD,IAAI,qBAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;YAAE,OAAO;QAE9C,MAAM,QAAQ,GAAG,IAAA,8BAAoB,kCAChC,CAAC,MAAA,OAAO,CAAC,QAAQ,mCAAI,EAAE,CAAC,KAC3B,OAAO,EAAE,IAAI,IACb,CAAC;QAEH,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAElF,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAE/B,IAAI;YACF,KAAK,GAAG,MAAM,IAAA,kBAAQ,EAAC,QAAQ,EAAE,2BAAa,CAAC,CAAC;YAChD,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAC,oBAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAA,yBAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;SACjE;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAA,4BAAkB,EAAC,KAAK,CAAC,CAAC;SAClC;QAED,IAAA,4BAAc,EAAC;YACb,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,eAAe,EAAE,uBAAc,CAAC,QAAQ;YACxC,aAAa,EAAE,uBAAc,CAAC,UAAU;YACxC,OAAO,EAAE,uBAAc,CAAC,OAAO;YAC/B,YAAY,EAAE,IAAA,oBAAS,EAAC,QAAQ,CAAC,YAAsB,CAAC;YACxD,cAAc,EAAE,CAAM,YAAY,EAAC,EAAE;gBACnC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,YAAY,CAAC,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;gBAErD,MAAM,QAAQ,GAAG,MAAM,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CAAC,OAAO,CAAC,CAAA,CAAC;gBACrD,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;gBACpD,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAA;SACF,CAAC,CAAC;QAEH,MAAM,IAAA,yBAAW,EAAC,IAAA,6BAAmB,EAAC,gBAAM,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;CACvE;AArCD,oBAqCC;AAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsIA,QAAA,MAAM,cAAc,qCAOlB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const events_1 = require("events");
|
|
13
|
+
const hd_core_1 = require("@onekeyfe/hd-core");
|
|
14
|
+
const iframe = require("./iframe/builder");
|
|
15
|
+
const bridge_config_1 = require("./iframe/bridge-config");
|
|
16
|
+
const bridgeUtils_1 = require("./utils/bridgeUtils");
|
|
17
|
+
const eventEmitter = new events_1.default();
|
|
18
|
+
const Log = (0, hd_core_1.initLog)('@onekey/connect');
|
|
19
|
+
let _settings = (0, hd_core_1.parseConnectSettings)();
|
|
20
|
+
const handleMessage = (message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
switch (message.event) {
|
|
22
|
+
case hd_core_1.UI_EVENT:
|
|
23
|
+
if (message.type === hd_core_1.IFRAME.INIT_BRIDGE) {
|
|
24
|
+
iframe.initPromise.resolve();
|
|
25
|
+
return Promise.resolve({ success: true, payload: 'JSBridge Handshake Success' });
|
|
26
|
+
}
|
|
27
|
+
eventEmitter.emit(message.event, message);
|
|
28
|
+
eventEmitter.emit(message.type, message.payload);
|
|
29
|
+
break;
|
|
30
|
+
default:
|
|
31
|
+
Log.log('No need to be captured message', message.event);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const dispose = () => {
|
|
35
|
+
eventEmitter.removeAllListeners();
|
|
36
|
+
iframe.dispose();
|
|
37
|
+
_settings = (0, hd_core_1.parseConnectSettings)();
|
|
38
|
+
window.removeEventListener('message', createJSBridge);
|
|
39
|
+
};
|
|
40
|
+
const uiResponse = (response) => {
|
|
41
|
+
if (!iframe.instance) {
|
|
42
|
+
throw hd_core_1.ERRORS.TypedError('Init_NotInitialized');
|
|
43
|
+
}
|
|
44
|
+
const { type, payload } = response;
|
|
45
|
+
(0, bridgeUtils_1.sendMessage)({ event: hd_core_1.UI_EVENT, type, payload });
|
|
46
|
+
};
|
|
47
|
+
const cancel = () => { };
|
|
48
|
+
const createJSBridge = (messageEvent) => {
|
|
49
|
+
var _a;
|
|
50
|
+
if (messageEvent.origin !== iframe.origin) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!bridgeUtils_1.hostBridge) {
|
|
54
|
+
(0, bridgeUtils_1.createJsBridge)({
|
|
55
|
+
isHost: true,
|
|
56
|
+
remoteFrame: (_a = iframe.instance) === null || _a === void 0 ? void 0 : _a.contentWindow,
|
|
57
|
+
remoteFrameName: bridge_config_1.default.iframeName,
|
|
58
|
+
selfFrameName: bridge_config_1.default.hostName,
|
|
59
|
+
channel: bridge_config_1.default.channel,
|
|
60
|
+
targetOrigin: iframe.origin,
|
|
61
|
+
receiveHandler: (messageEvent) => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
const message = (0, hd_core_1.parseMessage)(messageEvent);
|
|
63
|
+
console.log('Host Bridge Receive message: ', message);
|
|
64
|
+
const response = yield handleMessage(message);
|
|
65
|
+
Log.debug('Host Bridge response: ', response);
|
|
66
|
+
return response;
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const init = (settings) => {
|
|
72
|
+
if (iframe.instance) {
|
|
73
|
+
throw hd_core_1.ERRORS.TypedError('Init_AlreadyInitialized');
|
|
74
|
+
}
|
|
75
|
+
_settings = (0, hd_core_1.parseConnectSettings)(Object.assign(Object.assign({}, _settings), settings));
|
|
76
|
+
if (_settings.lazyLoad) {
|
|
77
|
+
_settings.lazyLoad = false;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
(0, hd_core_1.enableLog)(!!settings.debug);
|
|
81
|
+
Log.debug('init');
|
|
82
|
+
window.addEventListener('message', createJSBridge);
|
|
83
|
+
window.addEventListener('unload', dispose);
|
|
84
|
+
iframe.init(_settings);
|
|
85
|
+
};
|
|
86
|
+
const call = (params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
87
|
+
Log.debug('call : ', params);
|
|
88
|
+
if (!iframe.instance && !iframe.timeout) {
|
|
89
|
+
_settings = (0, hd_core_1.parseConnectSettings)(_settings);
|
|
90
|
+
try {
|
|
91
|
+
init(_settings);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return (0, hd_core_1.createErrorMessage)(error);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (iframe.timeout) {
|
|
98
|
+
return (0, hd_core_1.createErrorMessage)(hd_core_1.ERRORS.TypedError('Init_IframeLoadFail'));
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const response = yield (0, bridgeUtils_1.sendMessage)({ event: hd_core_1.IFRAME.CALL, type: hd_core_1.IFRAME.CALL, payload: params });
|
|
102
|
+
if (response) {
|
|
103
|
+
return response;
|
|
104
|
+
}
|
|
105
|
+
return (0, hd_core_1.createErrorMessage)(hd_core_1.ERRORS.TypedError('Call_NotResponse'));
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
Log.error('__call error: ', error);
|
|
109
|
+
return (0, hd_core_1.createErrorMessage)(error);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
const HardwareWebSdk = (0, hd_core_1.default)({
|
|
113
|
+
eventEmitter,
|
|
114
|
+
init,
|
|
115
|
+
call,
|
|
116
|
+
cancel,
|
|
117
|
+
dispose,
|
|
118
|
+
uiResponse,
|
|
119
|
+
});
|
|
120
|
+
exports.default = HardwareWebSdk;
|
|
121
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IJsBridgeIframeConfig, JsBridgeIframe } from '@onekeyfe/cross-inpage-provider-core';
|
|
2
|
+
import { CoreMessage } from '@onekeyfe/hd-core';
|
|
3
|
+
declare let frameBridge: JsBridgeIframe;
|
|
4
|
+
declare let hostBridge: JsBridgeIframe;
|
|
5
|
+
export declare const createJsBridge: (params: IJsBridgeIframeConfig & {
|
|
6
|
+
isHost: boolean;
|
|
7
|
+
}) => void;
|
|
8
|
+
export declare const sendMessage: (messages: CoreMessage, isHost?: boolean) => Promise<any>;
|
|
9
|
+
export { frameBridge, hostBridge };
|
|
10
|
+
//# sourceMappingURL=bridgeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAW,MAAM,mBAAmB,CAAC;AAIzD,QAAA,IAAI,WAAW,EAAE,cAAc,CAAC;AAEhC,QAAA,IAAI,UAAU,EAAE,cAAc,CAAC;AAI/B,eAAO,MAAM,cAAc,WAAY,qBAAqB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,SAOjF,CAAC;AAEF,eAAO,MAAM,WAAW,aAAoB,WAAW,uBAAkB,QAAQ,GAAG,CAenF,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.hostBridge = exports.frameBridge = exports.sendMessage = exports.createJsBridge = void 0;
|
|
13
|
+
const cross_inpage_provider_core_1 = require("@onekeyfe/cross-inpage-provider-core");
|
|
14
|
+
const hd_core_1 = require("@onekeyfe/hd-core");
|
|
15
|
+
const bridge_config_1 = require("../iframe/bridge-config");
|
|
16
|
+
let frameBridge;
|
|
17
|
+
exports.frameBridge = frameBridge;
|
|
18
|
+
let hostBridge;
|
|
19
|
+
exports.hostBridge = hostBridge;
|
|
20
|
+
const Log = (0, hd_core_1.initLog)('[SendMessage]');
|
|
21
|
+
const createJsBridge = (params) => {
|
|
22
|
+
const bridge = new cross_inpage_provider_core_1.JsBridgeIframe(params);
|
|
23
|
+
if (params.isHost) {
|
|
24
|
+
exports.hostBridge = hostBridge = bridge;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
exports.frameBridge = frameBridge = bridge;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.createJsBridge = createJsBridge;
|
|
31
|
+
const sendMessage = (messages, isHost = true) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
const bridge = isHost ? hostBridge : frameBridge;
|
|
33
|
+
try {
|
|
34
|
+
Log.debug('request: ', messages);
|
|
35
|
+
const result = yield (bridge === null || bridge === void 0 ? void 0 : bridge.request({
|
|
36
|
+
scope: bridge_config_1.default.scope,
|
|
37
|
+
data: Object.assign({}, messages),
|
|
38
|
+
}));
|
|
39
|
+
Log.debug('response: ', result);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
Log.error(error);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
exports.sendMessage = sendMessage;
|
|
48
|
+
//# sourceMappingURL=bridgeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qFAA6F;AAC7F,+CAAyD;AACzD,2DAAqD;AAGrD,IAAI,WAA2B,CAAC;AAgCvB,kCAAW;AA9BpB,IAAI,UAA0B,CAAC;AA8BT,gCAAU;AA5BhC,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,cAAc,GAAG,CAAC,MAAmD,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,IAAI,2CAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,qBAAA,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM;QACL,sBAAA,WAAW,GAAG,MAAM,CAAC;KACtB;AACH,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB;AAEK,MAAM,WAAW,GAAG,CAAO,QAAqB,EAAE,MAAM,GAAG,IAAI,EAAgB,EAAE;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAEjD,IAAI;QACF,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;YACnC,KAAK,EAAE,uBAAc,CAAC,KAAK;YAC3B,IAAI,oBAAO,QAAQ,CAAE;SACtB,CAAC,CAAA,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;KACf;IAAC,OAAO,KAAK,EAAE;QACd,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAA,CAAC;AAfW,QAAA,WAAW,eAetB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/urlUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAS,MAAM,WAMpC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrigin = void 0;
|
|
4
|
+
const getOrigin = (url) => {
|
|
5
|
+
if (typeof url !== 'string')
|
|
6
|
+
return 'unknown';
|
|
7
|
+
if (url.indexOf('file://') === 0)
|
|
8
|
+
return 'file://';
|
|
9
|
+
const parts = url.match(/^.+\:\/\/[^\/]+/);
|
|
10
|
+
return Array.isArray(parts) && parts.length > 0 ? parts[0] : 'unknown';
|
|
11
|
+
};
|
|
12
|
+
exports.getOrigin = getOrigin;
|
|
13
|
+
//# sourceMappingURL=urlUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlUtils.js","sourceRoot":"","sources":["../../src/utils/urlUtils.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@onekeyfe/hd-web-sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"author": "OneKey",
|
|
5
|
+
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"type": "commonjs",
|
|
8
|
+
"main": "build/onekey-js-sdk.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"dev": "rimraf build && TS_NODE_PROJECT=\"../../tsconfig.webpack.json\" webpack --config ./webpack/dev.webpack.config.ts",
|
|
15
|
+
"build:lib": "rimraf ./dist && tsc --build tsconfig.json",
|
|
16
|
+
"build:iframe": "TS_NODE_PROJECT=\"../../tsconfig.webpack.json\" webpack --config ./webpack/iframe.webpack.config.ts",
|
|
17
|
+
"build:sdk": "rimraf build && TS_NODE_PROJECT=\"../../tsconfig.webpack.json\" webpack --config ./webpack/prod.webpack.config.ts",
|
|
18
|
+
"build": "yarn build:sdk && yarn build:iframe && yarn build:lib",
|
|
19
|
+
"lint": "eslint .",
|
|
20
|
+
"lint:fix": "eslint . --fix",
|
|
21
|
+
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@onekeyfe/cross-inpage-provider-core": "^0.0.14",
|
|
25
|
+
"@onekeyfe/hd-core": "^0.0.1",
|
|
26
|
+
"@onekeyfe/hd-transport-http": "^0.0.1"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@babel/plugin-proposal-optional-chaining": "^7.17.12",
|
|
30
|
+
"@types/node": "^17.0.35",
|
|
31
|
+
"@types/webpack": "^5.28.0",
|
|
32
|
+
"@types/webpack-plugin-serve": "^1.4.2",
|
|
33
|
+
"assert": "^2.0.0",
|
|
34
|
+
"copy-webpack-plugin": "^11.0.0",
|
|
35
|
+
"es6-promise": "^4.2.8",
|
|
36
|
+
"events": "^3.3.0",
|
|
37
|
+
"html-webpack-plugin": "^5.5.0",
|
|
38
|
+
"process": "^0.11.10",
|
|
39
|
+
"terser-webpack-plugin": "^5.3.1",
|
|
40
|
+
"util": "^0.12.4",
|
|
41
|
+
"webpack": "^5.72.1",
|
|
42
|
+
"webpack-cli": "^4.9.2",
|
|
43
|
+
"webpack-plugin-serve": "^1.6.0"
|
|
44
|
+
},
|
|
45
|
+
"gitHead": "af17c6b173176bd015b5c9dad3b1d20a734dd49b"
|
|
46
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const config: {
|
|
2
|
+
iframeName: string;
|
|
3
|
+
hostName: string;
|
|
4
|
+
channel: string;
|
|
5
|
+
scope: '$hardware_sdk';
|
|
6
|
+
} = {
|
|
7
|
+
iframeName: 'onekey-iframe',
|
|
8
|
+
hostName: 'onekey-host',
|
|
9
|
+
channel: 'onekey-js-sdk',
|
|
10
|
+
scope: '$hardware_sdk',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default config;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ERRORS, Deferred, create as createDeferred } from '@onekeyfe/hd-core';
|
|
2
|
+
import { getOrigin } from '../utils/urlUtils';
|
|
3
|
+
|
|
4
|
+
/* eslint-disable import/no-mutable-exports */
|
|
5
|
+
export let instance: HTMLIFrameElement | null;
|
|
6
|
+
export let origin: string;
|
|
7
|
+
export let initPromise: Deferred<void> = createDeferred();
|
|
8
|
+
export let timeout = 0;
|
|
9
|
+
/* eslint-disable import/no-mutable-exports */
|
|
10
|
+
|
|
11
|
+
export const init = async (settings: any) => {
|
|
12
|
+
initPromise = createDeferred();
|
|
13
|
+
const existedFrame = document.getElementById('onekey-connect') as HTMLIFrameElement;
|
|
14
|
+
if (existedFrame) {
|
|
15
|
+
instance = existedFrame;
|
|
16
|
+
} else {
|
|
17
|
+
instance = document.createElement('iframe');
|
|
18
|
+
instance.frameBorder = '0';
|
|
19
|
+
instance.width = '0px';
|
|
20
|
+
instance.height = '0px';
|
|
21
|
+
instance.style.position = 'absolute';
|
|
22
|
+
instance.style.display = 'none';
|
|
23
|
+
instance.style.border = '0px';
|
|
24
|
+
instance.style.width = '0px';
|
|
25
|
+
instance.style.height = '0px';
|
|
26
|
+
instance.id = 'onekey-connect';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const manifest = `version=${settings.version as string}`;
|
|
30
|
+
const src = `${settings.iframeSrc as string}?${manifest}`;
|
|
31
|
+
|
|
32
|
+
instance.setAttribute('src', src);
|
|
33
|
+
|
|
34
|
+
origin = getOrigin(instance.src);
|
|
35
|
+
timeout = window.setTimeout(() => {
|
|
36
|
+
initPromise.reject(ERRORS.TypedError('Init_IframeTimeout'));
|
|
37
|
+
}, 10000);
|
|
38
|
+
|
|
39
|
+
const onLoad = () => {
|
|
40
|
+
if (!instance) {
|
|
41
|
+
initPromise.reject(ERRORS.TypedError('Init_IframeBlocked'));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
instance.contentWindow?.postMessage(
|
|
46
|
+
{
|
|
47
|
+
type: 'iframe-init',
|
|
48
|
+
payload: {
|
|
49
|
+
settings: { ...settings },
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
origin
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
instance.onload = null;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// IE hack
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
if (instance.attachEvent) {
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
instance.attachEvent('onload', onLoad);
|
|
63
|
+
} else {
|
|
64
|
+
instance.onload = onLoad;
|
|
65
|
+
}
|
|
66
|
+
// inject iframe into host document body
|
|
67
|
+
if (document.body) {
|
|
68
|
+
document.body.appendChild(instance);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
try {
|
|
72
|
+
await initPromise.promise;
|
|
73
|
+
} catch (e) {
|
|
74
|
+
if (instance) {
|
|
75
|
+
if (instance.parentNode) {
|
|
76
|
+
instance.parentNode.removeChild(instance);
|
|
77
|
+
}
|
|
78
|
+
instance = null;
|
|
79
|
+
}
|
|
80
|
+
throw e;
|
|
81
|
+
} finally {
|
|
82
|
+
window.clearTimeout(timeout);
|
|
83
|
+
timeout = 0;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const dispose = () => {
|
|
88
|
+
if (instance && instance.parentNode) {
|
|
89
|
+
try {
|
|
90
|
+
instance.parentNode.removeChild(instance);
|
|
91
|
+
} catch (e) {
|
|
92
|
+
// do nothing
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
instance = null;
|
|
96
|
+
timeout = 0;
|
|
97
|
+
};
|