@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.
Files changed (51) hide show
  1. package/README.md +11 -0
  2. package/build/data/coins/bitcoin.json +42 -0
  3. package/build/data/messages/messages.json +8658 -0
  4. package/build/data/version.ts +3 -0
  5. package/build/iframe.html +32 -0
  6. package/build/js/iframe.7159b9163429b4e3d942.js +3 -0
  7. package/build/js/iframe.7159b9163429b4e3d942.js.LICENSE.txt +29 -0
  8. package/build/js/iframe.7159b9163429b4e3d942.js.map +1 -0
  9. package/build/onekey-js-sdk.js +43002 -0
  10. package/build/onekey-js-sdk.js.map +1 -0
  11. package/build/onekey-js-sdk.min.js +1 -0
  12. package/build/onekey-js-sdk.min.js.map +1 -0
  13. package/dist/iframe/bridge-config.d.ts +8 -0
  14. package/dist/iframe/bridge-config.d.ts.map +1 -0
  15. package/dist/iframe/bridge-config.js +10 -0
  16. package/dist/iframe/bridge-config.js.map +1 -0
  17. package/dist/iframe/builder.d.ts +8 -0
  18. package/dist/iframe/builder.d.ts.map +1 -0
  19. package/dist/iframe/builder.js +95 -0
  20. package/dist/iframe/builder.js.map +1 -0
  21. package/dist/iframe/index.d.ts +3 -0
  22. package/dist/iframe/index.d.ts.map +1 -0
  23. package/dist/iframe/index.js +64 -0
  24. package/dist/iframe/index.js.map +1 -0
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +121 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/utils/bridgeUtils.d.ts +10 -0
  30. package/dist/utils/bridgeUtils.d.ts.map +1 -0
  31. package/dist/utils/bridgeUtils.js +48 -0
  32. package/dist/utils/bridgeUtils.js.map +1 -0
  33. package/dist/utils/urlUtils.d.ts +2 -0
  34. package/dist/utils/urlUtils.d.ts.map +1 -0
  35. package/dist/utils/urlUtils.js +13 -0
  36. package/dist/utils/urlUtils.js.map +1 -0
  37. package/package.json +46 -0
  38. package/src/iframe/bridge-config.ts +13 -0
  39. package/src/iframe/builder.ts +97 -0
  40. package/src/iframe/index.ts +73 -0
  41. package/src/index.ts +144 -0
  42. package/src/utils/bridgeUtils.ts +38 -0
  43. package/src/utils/urlUtils.ts +7 -0
  44. package/static/iframe.html +32 -0
  45. package/tsconfig.json +8 -0
  46. package/webpack/dev.webpack.config.ts +32 -0
  47. package/webpack/https_dev.crt +31 -0
  48. package/webpack/https_dev.key +51 -0
  49. package/webpack/iframe.webpack.config.ts +66 -0
  50. package/webpack/prod.webpack.config.ts +61 -0
  51. package/webpack/webpack.config.ts +17 -0
@@ -0,0 +1,8 @@
1
+ declare const config: {
2
+ iframeName: string;
3
+ hostName: string;
4
+ channel: string;
5
+ scope: '$hardware_sdk';
6
+ };
7
+ export default config;
8
+ //# sourceMappingURL=bridge-config.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,3 @@
1
+ import { IFrameInit } from '@onekeyfe/hd-core';
2
+ export declare function init(payload: IFrameInit['payload']): Promise<import("@onekeyfe/hd-core").Unsuccessful | undefined>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ declare const HardwareWebSdk: import("@onekeyfe/hd-core").CoreApi;
2
+ export default HardwareWebSdk;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export declare const getOrigin: (url: string) => string;
2
+ //# sourceMappingURL=urlUtils.d.ts.map
@@ -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
+ };