@ukeyfe/hardware-web-sdk 1.1.13
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 +34 -0
- package/build/data/coins/bitcoin.json +44 -0
- package/build/data/config.ts +25 -0
- package/build/data/messages/messages.json +13066 -0
- package/build/data/messages/messages_legacy_v1.json +10270 -0
- package/build/iframe.html +32 -0
- package/build/js/iframe.5135b718e3017cf5f9ef.js +3 -0
- package/build/js/iframe.5135b718e3017cf5f9ef.js.LICENSE.txt +51 -0
- package/build/js/iframe.5135b718e3017cf5f9ef.js.map +1 -0
- package/build/ukey-js-sdk.js +89919 -0
- package/build/ukey-js-sdk.js.map +1 -0
- package/build/ukey-js-sdk.min.js +1 -0
- package/build/ukey-js-sdk.min.js.map +1 -0
- package/package.json +48 -0
- package/src/iframe/bridge-config.ts +13 -0
- package/src/iframe/builder.ts +98 -0
- package/src/iframe/index.ts +127 -0
- package/src/index.ts +302 -0
- package/src/utils/bridgeUtils.ts +59 -0
- package/src/utils/urlUtils.ts +20 -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 +71 -0
- package/webpack/prod.webpack.config.ts +69 -0
- package/webpack/webpack.config.ts +27 -0
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
|
+
'ukey-js-sdk': path.resolve(__dirname, '../src/index.ts'),
|
|
16
|
+
},
|
|
17
|
+
output: config.output,
|
|
18
|
+
resolve: config.resolve,
|
|
19
|
+
plugins: [
|
|
20
|
+
new WebpackPluginServe({
|
|
21
|
+
port: 8087,
|
|
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
|
+
MIIJKgIBAAKCAgEAy6gcvfjfdfbApQ8WUWKRlQF8TbOuDK+xG0gy9EZCC09qBYXA
|
|
3
|
+
6n4lM/2zomzntQ4Y3+qGf61vyKh301kX5ziFBPjQLI7Cz3DBlO9vFIND9N8eBMKm
|
|
4
|
+
WbGCRyhhNah9BA5mHSCkmRbn/rm5y1P9du+llAcVqLtdx2LPIQL+GSDid+dx/zKw
|
|
5
|
+
EXM9PSDeCl8ssPgnuLg7SECNu29yLmAwfuoZrEXMvrItEtM121+MVZL9bSuFNeG/
|
|
6
|
+
NvmPxWn6416UEBWW+Am5Tt7qJj9xEY2xlp/cVYscpxaZ/CM9Ny0CPLt48arRhx/z
|
|
7
|
+
9le8bbIJaTgSsCsSrdJHu7428khFoUBPIG52n2DLaQh91i6zzpeFZd+Rw/4lzAkA
|
|
8
|
+
/97iGE7vkgQaqyv7PZV1eEhafVhQtQXBU2xtCW3v6D3ud8XLDOZO/WhxRGkuLoyg
|
|
9
|
+
t6/17XszFgWJd0BpSuVq81G2TCWT7KoTPNreFUKRjAEoJmlALQP5GWAemGJORsfW
|
|
10
|
+
Cyb8A6QR6dzG0LA4k5gK1sv4rmcheEqL6/00ODwCpaNTa0f6nmOyn//C7EI7rwum
|
|
11
|
+
kUb8ESVwbZa+FF8sefRt5jkkv3U4BbsU3I8CPJdUGIGVqT6Gz+uDqSu7KMEkgxUG
|
|
12
|
+
msmh/toXjaVBzDk53EVRJM2/8sNIx78itLTSaQ9LPme5eytIOEdejczhnxUCAwEA
|
|
13
|
+
AQKCAgB0GkkYfHNYmu3Eq887YohAfHJTEeZd0SOUvBpgbFVmgUWeFFyg0n1/IFly
|
|
14
|
+
dce6zmib7uXyj/u0V2bIlHguF2iuJvL3FAQ3or6Zm86l0RfC2BgS+q0/YRU2X+zb
|
|
15
|
+
XEy5LURFwsBTjl2AOH2VTzKmxYSN2WQdp4OVEd2noj8eMEMrvESfClSZ/iqhWMV9
|
|
16
|
+
ADlIQpDSnCUf0b17Z9OeYLQFBozQS5Kn/If5vXNstxIYDw5vWGo/B42tV6UBFKQ1
|
|
17
|
+
T0v1x3kjutdsAWVXnL9nFHJzvnssQXx6PUZYGfbiJ8Sovu/6RjnhYPQCMo53sxHu
|
|
18
|
+
bEsrJ8MkWUcP3ycQBOe9QB5cDN2OhXZquninMu0XNXGRtYwgHfL0LYIz5aA4zmdp
|
|
19
|
+
YpkDrQRBCbE5FJmxJuefurwmqCVLAGbDCOQzi+WreHSEQX3iXK0+fo6bRcW48eN7
|
|
20
|
+
7hO2FuvgAHX4xFT8g6wKQ4f8/WjSmgOTQN75iJF8Q2Ca1v3iMxfszWcpqBFMAXrU
|
|
21
|
+
UjeeLcfPsjVcg+sDUJVxf7tFbfML5c3p3/c3csiX0x37sPcq8qk2ErBtT7TV4uFe
|
|
22
|
+
OsonO9WvYdtm3c9YJzBJiWwzRM+xnCEinBA1doZ4x5u//D5h9Lr2iZDxVvd4TD8C
|
|
23
|
+
sI193QHUv/GobbV26513z1o88R8XRlc7siXt4pnqQDurqhP0mQKCAQEA+ovR1wHW
|
|
24
|
+
OlX4jKfdWkdTPFbZkGhqmBkDm2MgiSzpVkH7cMpgveoDL3desMhNTwAt9oyMWhfB
|
|
25
|
+
y0kVQ88Iby8vZSQuVBKWScb73nz7FZTiqmJ4EFP1iSFGEHRLkI8KiqWmbev2BF0N
|
|
26
|
+
l5nFxMdlyeNaBdzaAxEzxnVIpyS3agmQqfOyXJk4uBEinetqRlbfuv1RqMJJ9ztO
|
|
27
|
+
n/+W3d0ZbmG/bui8DUr7QPiOc83cwhANQT2HkLbF5MFdhhiKsRF+omQPPjEeaUGb
|
|
28
|
+
AOv40tk0nYYAwyRAapCzOxiCE2Arxh7UzV/U49ySvM1eBqLhd5GDus+klDghyVxF
|
|
29
|
+
eipsDZRZVUAq3wKCAQEA0Bb/rawPqXW1BsM6VUKeLz1C9ryPP36HiNwh0fVm6QFe
|
|
30
|
+
ANvNtMPWwHZLuQZVm8K0GPiHPMSF4K50PgKeEHiqSXqOOH4qsA21DtHURSBx7MWP
|
|
31
|
+
VsvN2H5vJQ6mmQq5Cgfy7d/N81mSe+0N4PKKFLZSmElbFOikWXncsaVkBXA+9bAE
|
|
32
|
+
+LMBw4yA5O29SxBo5sQXc2CzgCACYtTDqerbXDsCvg4AItx0ynvKjvE0O75AvcgP
|
|
33
|
+
mGoltPiMW3Y/dQcTbHenKYLNYpjdj1IiACVsBKIPBCzUf2gqyb7XWKqJFMIXfBQ6
|
|
34
|
+
+hXHclrLNzY7Q8HWcLLpt8BeQ41EwypmPcc33hioiwKCAQEA5SgZZ5Qwgu67BLtM
|
|
35
|
+
hBQUl23AVIqMZE0MtYT270B6swBqoAEadtmgzDtcCklKHGXHpGdsv8JW6D4SCxFD
|
|
36
|
+
X55CtTlgflj5yMUM/bRGWrjwkHK76gNA4onicY5Mxw1t0N4t2QAm5lrN4ckt0Auo
|
|
37
|
+
l/0wC4iyhnenaW9AYk/8yimxfSB+FJ+39vMFPHdjnq46t+aWV8pMqKpAAateK9Lc
|
|
38
|
+
Pc99rk2EIoxgPk6YzGaP8ZeI6BEE+2GQougRSGMOB2I+9vyZzIJUlGUDBtbNoNw1
|
|
39
|
+
eZZlABcaK93pcLW700j1AKKWdLmgGEFYnQMhauRzYE9hsu3UVBT7IhcZHOHMLqdv
|
|
40
|
+
BcBI9QKCAQEAi0S5Pi0IFmx3Cd2jruh1IjyoEqbEYMR4RXq/D9xkUdHebkit9iuU
|
|
41
|
+
ER+bMmww45x+GLBNIriMuYFIvy/VRkTcA22IvfqC621hHlgE73b1iHf4pSilzh1g
|
|
42
|
+
mbaifY8VpMcJKXc+SX5LcbGINmNdUttrkAyYbvf89v1+XU7KEHG9UYXK7gAwUAY7
|
|
43
|
+
RfxvUkvbSYc4ArpXqIrDzg2EHrbWtXWxMi4AnVRaviH3wY9hXBLLFblN5r40Gli2
|
|
44
|
+
54fOlK51q4SxVjD68OBKeN+JbfudvcQQtMSkO9klufyF+Au6zy/Ps/V+O15ULA7k
|
|
45
|
+
L0GWjJSwxqCXl6mh7SghO1WnM/WfSH/MXQKCAQEAw58mUbfaV5TjM0G95Y/CP7Vx
|
|
46
|
+
as7e0RKIvgGRSRPXSGd6HZ6P5YD4BuhAeZB2dRBYzkyPas4oTnsACRgTNad85oAM
|
|
47
|
+
YGrdg9gXPnzeKlvRnaMvDG/dylIQWxoSQ+aZg0KREf/2zge87cXbuBXjSKFmYkgF
|
|
48
|
+
iVN4Lyjb1A00QtRoLYaswI0k4U4tSny3qA5khhKdVPs8FXtltdS0npzvmwQYq9fg
|
|
49
|
+
7KbAk6Yk00V7vgKagrG/DJGvUcnX5+Pld7afa30mCDobgpxF5WtwjEoSX503itXk
|
|
50
|
+
0Zab9yGQQLLvjvsL5uvDUwPRqdi2s8QoeAfHwY4s+jE094xLWf2q23wKpW0IHQ==
|
|
51
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
const PUBLIC_PATH = process.env.PUBLIC_PATH || './';
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
target: 'web',
|
|
12
|
+
mode: 'production',
|
|
13
|
+
devtool: 'source-map',
|
|
14
|
+
entry: {
|
|
15
|
+
iframe: path.resolve(__dirname, '../src/iframe/index.ts'),
|
|
16
|
+
},
|
|
17
|
+
output: {
|
|
18
|
+
filename: 'js/[name].[contenthash].js',
|
|
19
|
+
path: BUILD,
|
|
20
|
+
publicPath: PUBLIC_PATH,
|
|
21
|
+
},
|
|
22
|
+
module: {
|
|
23
|
+
rules: [
|
|
24
|
+
{
|
|
25
|
+
test: /\.m?js/,
|
|
26
|
+
resolve: {
|
|
27
|
+
fullySpecified: false,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
test: /\.(js|ts)$/,
|
|
32
|
+
exclude: /node_modules/,
|
|
33
|
+
use: {
|
|
34
|
+
loader: 'babel-loader',
|
|
35
|
+
options: {
|
|
36
|
+
presets: ['@babel/preset-typescript'],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
resolve: config.resolve,
|
|
43
|
+
|
|
44
|
+
performance: {
|
|
45
|
+
hints: false,
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
plugins: [
|
|
49
|
+
new webpack.ProvidePlugin({
|
|
50
|
+
Buffer: ['buffer', 'Buffer'],
|
|
51
|
+
Promise: ['es6-promise', 'Promise'],
|
|
52
|
+
process: 'process/browser',
|
|
53
|
+
}),
|
|
54
|
+
|
|
55
|
+
new CopyWebpackPlugin({
|
|
56
|
+
patterns: [{ from: '../../packages/core/src/data', to: `${BUILD}/data` }],
|
|
57
|
+
}),
|
|
58
|
+
|
|
59
|
+
new HtmlWebpackPlugin({
|
|
60
|
+
chunks: ['iframe'],
|
|
61
|
+
filename: 'iframe.html',
|
|
62
|
+
template: path.resolve(__dirname, '../static/iframe.html'),
|
|
63
|
+
minify: false,
|
|
64
|
+
inject: false,
|
|
65
|
+
}),
|
|
66
|
+
|
|
67
|
+
new webpack.DefinePlugin({
|
|
68
|
+
'process.env.PUBLIC_PATH': JSON.stringify(PUBLIC_PATH),
|
|
69
|
+
}),
|
|
70
|
+
],
|
|
71
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import webpack from 'webpack';
|
|
3
|
+
import TerserPlugin from 'terser-webpack-plugin';
|
|
4
|
+
import config from './webpack.config';
|
|
5
|
+
|
|
6
|
+
const prodConfig = {
|
|
7
|
+
target: 'web',
|
|
8
|
+
mode: 'production',
|
|
9
|
+
devtool: 'hidden-source-map',
|
|
10
|
+
entry: {
|
|
11
|
+
'ukey-js-sdk': path.resolve(__dirname, '../src/index.ts'),
|
|
12
|
+
'ukey-js-sdk.min': path.resolve(__dirname, '../src/index.ts'),
|
|
13
|
+
},
|
|
14
|
+
output: config.output,
|
|
15
|
+
|
|
16
|
+
module: {
|
|
17
|
+
rules: [
|
|
18
|
+
{
|
|
19
|
+
test: /\.m?js/,
|
|
20
|
+
resolve: {
|
|
21
|
+
fullySpecified: false,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
test: /\.js$/,
|
|
26
|
+
exclude: /node_modules/,
|
|
27
|
+
use: ['babel-loader'],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
test: /\.ts$/,
|
|
31
|
+
exclude: /node_modules/,
|
|
32
|
+
use: {
|
|
33
|
+
loader: 'babel-loader',
|
|
34
|
+
options: {
|
|
35
|
+
presets: ['@babel/preset-typescript'],
|
|
36
|
+
plugins: ['@babel/plugin-proposal-optional-chaining'],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
resolve: config.resolve,
|
|
43
|
+
performance: {
|
|
44
|
+
hints: false,
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
plugins: [
|
|
48
|
+
new webpack.DefinePlugin({
|
|
49
|
+
// eslint-disable-next-line global-require, @typescript-eslint/no-var-requires
|
|
50
|
+
'process.env.VERSION': JSON.stringify(require('../package.json').version),
|
|
51
|
+
}),
|
|
52
|
+
],
|
|
53
|
+
|
|
54
|
+
optimization: {
|
|
55
|
+
minimizer: [
|
|
56
|
+
new TerserPlugin({
|
|
57
|
+
exclude: /ukey-js-sdk.js/,
|
|
58
|
+
extractComments: false,
|
|
59
|
+
terserOptions: {
|
|
60
|
+
format: {
|
|
61
|
+
comments: false,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
}),
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default prodConfig;
|
|
@@ -0,0 +1,27 @@
|
|
|
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: 'ukey-js-sdk',
|
|
9
|
+
libraryTarget: 'umd',
|
|
10
|
+
libraryExport: 'default',
|
|
11
|
+
},
|
|
12
|
+
resolve: {
|
|
13
|
+
alias: {
|
|
14
|
+
// fix the issue where webpack 5 does not recognize jszip after keeping the 'require' field.
|
|
15
|
+
jszip: path.resolve(__dirname, '../../../node_modules/jszip/lib/index.js'),
|
|
16
|
+
},
|
|
17
|
+
modules: ['node_modules'],
|
|
18
|
+
mainFields: ['browser', 'module', 'main'],
|
|
19
|
+
extensions: ['.ts', '.js'],
|
|
20
|
+
|
|
21
|
+
fallback: {
|
|
22
|
+
crypto: require.resolve('crypto-browserify'), // required by multiple dependencies
|
|
23
|
+
stream: require.resolve('stream-browserify'),
|
|
24
|
+
buffer: require.resolve('buffer'),
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|