@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,73 @@
|
|
|
1
|
+
import HttpTransport from '@onekeyfe/hd-transport-http';
|
|
2
|
+
import {
|
|
3
|
+
PostMessageEvent,
|
|
4
|
+
IFRAME,
|
|
5
|
+
initLog,
|
|
6
|
+
parseMessage,
|
|
7
|
+
DataManager,
|
|
8
|
+
parseConnectSettings,
|
|
9
|
+
IFrameInit,
|
|
10
|
+
createIFrameMessage,
|
|
11
|
+
createErrorMessage,
|
|
12
|
+
initCore,
|
|
13
|
+
Core,
|
|
14
|
+
CORE_EVENT,
|
|
15
|
+
} from '@onekeyfe/hd-core';
|
|
16
|
+
import { getOrigin } from '../utils/urlUtils';
|
|
17
|
+
import { sendMessage, createJsBridge } from '../utils/bridgeUtils';
|
|
18
|
+
|
|
19
|
+
import JSBridgeConfig from './bridge-config';
|
|
20
|
+
|
|
21
|
+
let _core: Core | undefined;
|
|
22
|
+
const Log = initLog('IFrame');
|
|
23
|
+
|
|
24
|
+
const handleMessage = (event: PostMessageEvent) => {
|
|
25
|
+
if (event.source === window || !event.data) return;
|
|
26
|
+
|
|
27
|
+
const message = parseMessage(event);
|
|
28
|
+
|
|
29
|
+
if (message.type === IFRAME.INIT) {
|
|
30
|
+
init(message.payload ?? {});
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export async function init(payload: IFrameInit['payload']) {
|
|
35
|
+
if (DataManager.getSettings('origin')) return;
|
|
36
|
+
|
|
37
|
+
const settings = parseConnectSettings({
|
|
38
|
+
...(payload.settings ?? {}),
|
|
39
|
+
isFrame: true,
|
|
40
|
+
});
|
|
41
|
+
// set origin manually
|
|
42
|
+
settings.origin = !origin || origin === 'null' ? payload.settings.origin : origin;
|
|
43
|
+
|
|
44
|
+
Log.enabled = !!settings.debug;
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
_core = await initCore(settings, HttpTransport);
|
|
48
|
+
_core?.on(CORE_EVENT, messages => sendMessage(messages, false));
|
|
49
|
+
} catch (error) {
|
|
50
|
+
return createErrorMessage(error);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
createJsBridge({
|
|
54
|
+
isHost: false,
|
|
55
|
+
remoteFrame: window.parent,
|
|
56
|
+
remoteFrameName: JSBridgeConfig.hostName,
|
|
57
|
+
selfFrameName: JSBridgeConfig.iframeName,
|
|
58
|
+
channel: JSBridgeConfig.channel,
|
|
59
|
+
targetOrigin: getOrigin(settings.parentOrigin as string),
|
|
60
|
+
receiveHandler: async messageEvent => {
|
|
61
|
+
const message = parseMessage(messageEvent);
|
|
62
|
+
Log.debug('Frame Bridge Receive message: ', message);
|
|
63
|
+
|
|
64
|
+
const response = await _core?.handleMessage(message);
|
|
65
|
+
Log.debug('Frame Bridge response data: ', response);
|
|
66
|
+
return response;
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
await sendMessage(createIFrameMessage(IFRAME.INIT_BRIDGE, {}), false);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
window.addEventListener('message', handleMessage, false);
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import HardwareSdk, {
|
|
3
|
+
ERRORS,
|
|
4
|
+
parseConnectSettings,
|
|
5
|
+
initLog,
|
|
6
|
+
enableLog,
|
|
7
|
+
PostMessageEvent,
|
|
8
|
+
IFRAME,
|
|
9
|
+
createErrorMessage,
|
|
10
|
+
parseMessage,
|
|
11
|
+
UI_EVENT,
|
|
12
|
+
CoreMessage,
|
|
13
|
+
ConnectSettings,
|
|
14
|
+
UiResponseEvent,
|
|
15
|
+
} from '@onekeyfe/hd-core';
|
|
16
|
+
import * as iframe from './iframe/builder';
|
|
17
|
+
import JSBridgeConfig from './iframe/bridge-config';
|
|
18
|
+
import { sendMessage, createJsBridge, hostBridge } from './utils/bridgeUtils';
|
|
19
|
+
|
|
20
|
+
const eventEmitter = new EventEmitter();
|
|
21
|
+
const Log = initLog('@onekey/connect');
|
|
22
|
+
|
|
23
|
+
let _settings = parseConnectSettings();
|
|
24
|
+
|
|
25
|
+
const handleMessage = async (message: CoreMessage) => {
|
|
26
|
+
switch (message.event) {
|
|
27
|
+
case UI_EVENT:
|
|
28
|
+
if (message.type === IFRAME.INIT_BRIDGE) {
|
|
29
|
+
iframe.initPromise.resolve();
|
|
30
|
+
return Promise.resolve({ success: true, payload: 'JSBridge Handshake Success' });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// pass UI event up
|
|
34
|
+
eventEmitter.emit(message.event, message);
|
|
35
|
+
eventEmitter.emit(message.type, message.payload);
|
|
36
|
+
break;
|
|
37
|
+
|
|
38
|
+
default:
|
|
39
|
+
Log.log('No need to be captured message', message.event);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const dispose = () => {
|
|
44
|
+
eventEmitter.removeAllListeners();
|
|
45
|
+
iframe.dispose();
|
|
46
|
+
_settings = parseConnectSettings();
|
|
47
|
+
window.removeEventListener('message', createJSBridge);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const uiResponse = (response: UiResponseEvent) => {
|
|
51
|
+
if (!iframe.instance) {
|
|
52
|
+
throw ERRORS.TypedError('Init_NotInitialized');
|
|
53
|
+
}
|
|
54
|
+
const { type, payload } = response;
|
|
55
|
+
sendMessage({ event: UI_EVENT, type, payload });
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const cancel = () => {};
|
|
59
|
+
|
|
60
|
+
const createJSBridge = (messageEvent: PostMessageEvent) => {
|
|
61
|
+
if (messageEvent.origin !== iframe.origin) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!hostBridge) {
|
|
65
|
+
createJsBridge({
|
|
66
|
+
isHost: true,
|
|
67
|
+
remoteFrame: iframe.instance?.contentWindow as Window,
|
|
68
|
+
remoteFrameName: JSBridgeConfig.iframeName,
|
|
69
|
+
selfFrameName: JSBridgeConfig.hostName,
|
|
70
|
+
channel: JSBridgeConfig.channel,
|
|
71
|
+
targetOrigin: iframe.origin,
|
|
72
|
+
|
|
73
|
+
receiveHandler: async messageEvent => {
|
|
74
|
+
const message = parseMessage(messageEvent);
|
|
75
|
+
console.log('Host Bridge Receive message: ', message);
|
|
76
|
+
const response = await handleMessage(message);
|
|
77
|
+
Log.debug('Host Bridge response: ', response);
|
|
78
|
+
return response;
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const init = (settings: Partial<ConnectSettings>) => {
|
|
85
|
+
if (iframe.instance) {
|
|
86
|
+
throw ERRORS.TypedError('Init_AlreadyInitialized');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
_settings = parseConnectSettings({ ..._settings, ...settings });
|
|
90
|
+
|
|
91
|
+
if (_settings.lazyLoad) {
|
|
92
|
+
_settings.lazyLoad = false;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
enableLog(!!settings.debug);
|
|
97
|
+
|
|
98
|
+
Log.debug('init');
|
|
99
|
+
|
|
100
|
+
window.addEventListener('message', createJSBridge);
|
|
101
|
+
window.addEventListener('unload', dispose);
|
|
102
|
+
|
|
103
|
+
iframe.init(_settings);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const call = async (params: any) => {
|
|
107
|
+
Log.debug('call : ', params);
|
|
108
|
+
// lazy load
|
|
109
|
+
if (!iframe.instance && !iframe.timeout) {
|
|
110
|
+
_settings = parseConnectSettings(_settings);
|
|
111
|
+
try {
|
|
112
|
+
init(_settings);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
return createErrorMessage(error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (iframe.timeout) {
|
|
119
|
+
return createErrorMessage(ERRORS.TypedError('Init_IframeLoadFail'));
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
const response = await sendMessage({ event: IFRAME.CALL, type: IFRAME.CALL, payload: params });
|
|
124
|
+
if (response) {
|
|
125
|
+
return response;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return createErrorMessage(ERRORS.TypedError('Call_NotResponse'));
|
|
129
|
+
} catch (error) {
|
|
130
|
+
Log.error('__call error: ', error);
|
|
131
|
+
return createErrorMessage(error);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
const HardwareWebSdk = HardwareSdk({
|
|
136
|
+
eventEmitter,
|
|
137
|
+
init,
|
|
138
|
+
call,
|
|
139
|
+
cancel,
|
|
140
|
+
dispose,
|
|
141
|
+
uiResponse,
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
export default HardwareWebSdk;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { IJsBridgeIframeConfig, JsBridgeIframe } from '@onekeyfe/cross-inpage-provider-core';
|
|
2
|
+
import { CoreMessage, initLog } from '@onekeyfe/hd-core';
|
|
3
|
+
import JSBridgeConfig from '../iframe/bridge-config';
|
|
4
|
+
|
|
5
|
+
// eslint-disable-next-line import/no-mutable-exports
|
|
6
|
+
let frameBridge: JsBridgeIframe;
|
|
7
|
+
// eslint-disable-next-line import/no-mutable-exports
|
|
8
|
+
let hostBridge: JsBridgeIframe;
|
|
9
|
+
|
|
10
|
+
const Log = initLog('[SendMessage]');
|
|
11
|
+
|
|
12
|
+
export const createJsBridge = (params: IJsBridgeIframeConfig & { isHost: boolean }) => {
|
|
13
|
+
const bridge = new JsBridgeIframe(params);
|
|
14
|
+
if (params.isHost) {
|
|
15
|
+
hostBridge = bridge;
|
|
16
|
+
} else {
|
|
17
|
+
frameBridge = bridge;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const sendMessage = async (messages: CoreMessage, isHost = true): Promise<any> => {
|
|
22
|
+
const bridge = isHost ? hostBridge : frameBridge;
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
Log.debug('request: ', messages);
|
|
26
|
+
const result = await bridge?.request({
|
|
27
|
+
scope: JSBridgeConfig.scope,
|
|
28
|
+
data: { ...messages },
|
|
29
|
+
});
|
|
30
|
+
Log.debug('response: ', result);
|
|
31
|
+
return result;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
Log.error(error);
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { frameBridge, hostBridge };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const getOrigin = (url: string) => {
|
|
2
|
+
if (typeof url !== 'string') return 'unknown';
|
|
3
|
+
if (url.indexOf('file://') === 0) return 'file://';
|
|
4
|
+
// eslint-disable-next-line no-useless-escape
|
|
5
|
+
const parts = url.match(/^.+\:\/\/[^\/]+/);
|
|
6
|
+
return Array.isArray(parts) && parts.length > 0 ? parts[0] : 'unknown';
|
|
7
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
7
|
+
<title>OneKeyConnect | OneKey</title>
|
|
8
|
+
<meta name="description" content="" />
|
|
9
|
+
<meta name="keywords" content="" />
|
|
10
|
+
<meta name="author" content="OneKey hi@onekey.so" />
|
|
11
|
+
<meta name="robots" content="index, follow" />
|
|
12
|
+
<meta name="title" content="OneKeyConnect | OneKey" />
|
|
13
|
+
<meta http-equiv="Cache-control" content="no-cache" />
|
|
14
|
+
<meta http-equiv="pragma" content="no-cache" />
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
|
|
18
|
+
<script type="text/javascript">
|
|
19
|
+
|
|
20
|
+
window.parent.postMessage({
|
|
21
|
+
event: 'UI_EVENT',
|
|
22
|
+
type: 'iframe-bootstrap',
|
|
23
|
+
}, '*');
|
|
24
|
+
|
|
25
|
+
const iframeScript = document.createElement('script');
|
|
26
|
+
iframeScript.setAttribute('type', 'text/javascript');
|
|
27
|
+
iframeScript.setAttribute('src', '<%= htmlWebpackPlugin.files.js[0] %>');
|
|
28
|
+
iframeScript.setAttribute('async', 'false');
|
|
29
|
+
document.body.appendChild(iframeScript);
|
|
30
|
+
</script>
|
|
31
|
+
</body>
|
|
32
|
+
</html>
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { merge } from 'webpack-merge';
|
|
4
|
+
import { WebpackPluginServe } from 'webpack-plugin-serve';
|
|
5
|
+
|
|
6
|
+
import config from './webpack.config';
|
|
7
|
+
import iframe from './iframe.webpack.config';
|
|
8
|
+
import prod from './prod.webpack.config';
|
|
9
|
+
|
|
10
|
+
const dev = {
|
|
11
|
+
mode: 'development',
|
|
12
|
+
watch: true,
|
|
13
|
+
devtool: 'source-map',
|
|
14
|
+
entry: {
|
|
15
|
+
'onekey-js-sdk': path.resolve(__dirname, '../src/index.ts'),
|
|
16
|
+
},
|
|
17
|
+
output: config.output,
|
|
18
|
+
resolve: config.resolve,
|
|
19
|
+
plugins: [
|
|
20
|
+
new WebpackPluginServe({
|
|
21
|
+
port: 8088,
|
|
22
|
+
hmr: true,
|
|
23
|
+
https: {
|
|
24
|
+
key: fs.readFileSync(path.join(__dirname, '../webpack/https_dev.key')),
|
|
25
|
+
cert: fs.readFileSync(path.join(__dirname, '../webpack/https_dev.crt')),
|
|
26
|
+
},
|
|
27
|
+
static: [path.join(__dirname, '../build')],
|
|
28
|
+
}),
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default merge([prod, iframe, dev]);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
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
|
|
30
|
+
ZHskZ7S/V9kQGqp01hu9EwXcbkizXd0C7bL+Ng0=
|
|
31
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import webpack from 'webpack';
|
|
3
|
+
import HtmlWebpackPlugin from 'html-webpack-plugin';
|
|
4
|
+
import CopyWebpackPlugin from 'copy-webpack-plugin';
|
|
5
|
+
import config from './webpack.config';
|
|
6
|
+
|
|
7
|
+
const BUILD = path.resolve(__dirname, '../build');
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
target: 'web',
|
|
11
|
+
mode: 'production',
|
|
12
|
+
devtool: 'source-map',
|
|
13
|
+
entry: {
|
|
14
|
+
iframe: path.resolve(__dirname, '../src/iframe/index.ts'),
|
|
15
|
+
},
|
|
16
|
+
output: {
|
|
17
|
+
filename: 'js/[name].[contenthash].js',
|
|
18
|
+
path: BUILD,
|
|
19
|
+
publicPath: './',
|
|
20
|
+
},
|
|
21
|
+
module: {
|
|
22
|
+
rules: [
|
|
23
|
+
{
|
|
24
|
+
test: /\.m?js/,
|
|
25
|
+
resolve: {
|
|
26
|
+
fullySpecified: false,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
test: /\.(js|ts)$/,
|
|
31
|
+
exclude: /node_modules/,
|
|
32
|
+
use: {
|
|
33
|
+
loader: 'babel-loader',
|
|
34
|
+
options: {
|
|
35
|
+
presets: ['@babel/preset-typescript'],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
resolve: config.resolve,
|
|
42
|
+
|
|
43
|
+
performance: {
|
|
44
|
+
hints: false,
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
plugins: [
|
|
48
|
+
new webpack.ProvidePlugin({
|
|
49
|
+
Buffer: ['buffer', 'Buffer'],
|
|
50
|
+
Promise: ['es6-promise', 'Promise'],
|
|
51
|
+
process: 'process/browser',
|
|
52
|
+
}),
|
|
53
|
+
|
|
54
|
+
new CopyWebpackPlugin({
|
|
55
|
+
patterns: [{ from: '../../packages/core/src/data', to: `${BUILD}/data` }],
|
|
56
|
+
}),
|
|
57
|
+
|
|
58
|
+
new HtmlWebpackPlugin({
|
|
59
|
+
chunks: ['iframe'],
|
|
60
|
+
filename: 'iframe.html',
|
|
61
|
+
template: path.resolve(__dirname, '../static/iframe.html'),
|
|
62
|
+
minify: false,
|
|
63
|
+
inject: false,
|
|
64
|
+
}),
|
|
65
|
+
],
|
|
66
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import TerserPlugin from 'terser-webpack-plugin';
|
|
3
|
+
import config from './webpack.config';
|
|
4
|
+
|
|
5
|
+
const prodConfig = {
|
|
6
|
+
target: 'web',
|
|
7
|
+
mode: 'production',
|
|
8
|
+
devtool: 'hidden-source-map',
|
|
9
|
+
entry: {
|
|
10
|
+
'onekey-js-sdk': path.resolve(__dirname, '../src/index.ts'),
|
|
11
|
+
'onekey-js-sdk.min': path.resolve(__dirname, '../src/index.ts'),
|
|
12
|
+
},
|
|
13
|
+
output: config.output,
|
|
14
|
+
|
|
15
|
+
module: {
|
|
16
|
+
rules: [
|
|
17
|
+
{
|
|
18
|
+
test: /\.m?js/,
|
|
19
|
+
resolve: {
|
|
20
|
+
fullySpecified: false,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
test: /\.js$/,
|
|
25
|
+
exclude: /node_modules/,
|
|
26
|
+
use: ['babel-loader'],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
test: /\.ts$/,
|
|
30
|
+
exclude: /node_modules/,
|
|
31
|
+
use: {
|
|
32
|
+
loader: 'babel-loader',
|
|
33
|
+
options: {
|
|
34
|
+
presets: ['@babel/preset-typescript'],
|
|
35
|
+
plugins: ['@babel/plugin-proposal-optional-chaining'],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
resolve: config.resolve,
|
|
42
|
+
performance: {
|
|
43
|
+
hints: false,
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
optimization: {
|
|
47
|
+
minimizer: [
|
|
48
|
+
new TerserPlugin({
|
|
49
|
+
exclude: /onekey-js-sdk.js/,
|
|
50
|
+
extractComments: false,
|
|
51
|
+
terserOptions: {
|
|
52
|
+
format: {
|
|
53
|
+
comments: false,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
}),
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export default prodConfig;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
output: {
|
|
5
|
+
filename: '[name].js',
|
|
6
|
+
path: path.resolve(__dirname, '../build'),
|
|
7
|
+
publicPath: './',
|
|
8
|
+
library: 'onekey-js-sdk',
|
|
9
|
+
libraryTarget: 'umd',
|
|
10
|
+
libraryExport: 'default',
|
|
11
|
+
},
|
|
12
|
+
resolve: {
|
|
13
|
+
modules: ['node_modules'],
|
|
14
|
+
mainFields: ['browser', 'module', 'main'],
|
|
15
|
+
extensions: ['.ts', '.js'],
|
|
16
|
+
},
|
|
17
|
+
};
|