Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ce56670d1 | ||
|
|
414392e69b | ||
|
|
ae5b64a75f | ||
|
|
f2077dcab2 | ||
|
|
75d03bb15a | ||
|
|
269ec7adb7 | ||
|
|
03e6974c25 | ||
|
|
a31c524878 | ||
|
|
a057f0c279 | ||
|
|
06dcc3bc5b | ||
|
|
fc3df455ef | ||
|
|
121715231d | ||
|
|
a35c1f98e8 | ||
|
|
fbaf440766 | ||
|
|
813c589752 | ||
|
|
806ae4fe42 | ||
|
|
75507c5fa7 | ||
|
|
d1c265130e | ||
|
|
0eb4663442 | ||
|
|
9e134ff95e | ||
|
|
c09d58bba1 | ||
|
|
fdc2b5011b | ||
|
|
420ad06a7e | ||
|
|
28988479c5 | ||
|
|
700b04e2ec | ||
|
|
b092fe8c6d | ||
|
|
b25f6e46d8 | ||
|
|
62e934dba7 | ||
|
|
cb073d755d | ||
|
|
c9cd6898fe | ||
|
|
106f2aac72 | ||
|
|
16dbecf0d2 | ||
|
|
dc023fe2c6 | ||
|
|
6c2d03a6c5 | ||
|
|
e4787f1b25 | ||
|
|
779fedd4ae | ||
|
|
08d71f0675 | ||
|
|
e598c7bb42 | ||
|
|
fb360420e5 | ||
|
|
2184bb5adc | ||
|
|
854e812ef3 | ||
|
|
cc17aa3fc3 | ||
|
|
d57a700d40 | ||
|
|
37c398b1a7 | ||
|
|
2f27f2bac9 | ||
|
|
090218d0b9 | ||
|
|
4799a69823 | ||
|
|
6548982bb5 | ||
|
|
d1fe833d0f | ||
|
|
60c6168307 | ||
|
|
d0b418f4c8 | ||
|
|
bce751eea1 | ||
|
|
0029165ce2 | ||
|
|
c4be7219ae | ||
|
|
4755cd9f64 | ||
|
|
2f7fd73daf | ||
|
|
99337bebd4 | ||
|
|
2331d7c92b | ||
|
|
ece28e79b4 | ||
|
|
00538595c1 | ||
|
|
b36d8ca632 | ||
|
|
f4f815434f | ||
|
|
a1f64b8ac6 | ||
|
|
2cd4e2d45e | ||
|
|
f622b77400 | ||
|
|
5616acf038 | ||
|
|
ca64769cd1 | ||
|
|
edbb65f1a5 | ||
|
|
7b7cd6a32a | ||
|
|
278fb511f0 | ||
|
|
8604939a2f | ||
|
|
e6f5b3f161 | ||
|
|
e9fec39840 | ||
|
|
3d925abc02 | ||
|
|
84baf9e8cc | ||
|
|
f8e4de56d2 | ||
|
|
1205cebcf9 | ||
|
|
6e20fbf5ac | ||
|
|
3ee4e229c4 | ||
|
|
35d14ce9ed | ||
|
|
d4947f0408 | ||
|
|
a85419a50f | ||
|
|
44b7a41948 | ||
|
|
cd936ed89c | ||
|
|
184a6293cc | ||
|
|
6a279beff3 | ||
|
|
35c8535be1 | ||
|
|
7a04464686 | ||
|
|
ebac0cda56 | ||
|
|
6cef850c7b | ||
|
|
4ab2b3fea6 | ||
|
|
c03cfde36b | ||
|
|
be0c446248 | ||
|
|
8951958a18 | ||
|
|
0d8151f34c | ||
|
|
05fb9e5a74 | ||
|
|
6505e28bed | ||
|
|
c3f102304e | ||
|
|
c2eab17f1e | ||
|
|
ac6322ba9d | ||
|
|
dcd3d3ece3 | ||
|
|
f78632ee47 | ||
|
|
ba5348857d | ||
|
|
d933007065 | ||
|
|
8429133ad1 | ||
|
|
3d4aed84ae | ||
|
|
2db0a2156c | ||
|
|
785582716c | ||
|
|
a08209f745 | ||
|
|
910ea2be7f | ||
|
|
1c9b7d7f36 | ||
|
|
b5c6468f17 | ||
|
|
8e2ae1f5d9 | ||
|
|
cc35de0536 | ||
|
|
3951fa7499 | ||
|
|
5caa168bf7 | ||
|
|
89de8d44d3 | ||
|
|
aa38aadec7 | ||
|
|
2ca72741a5 | ||
|
|
34ec0a54f7 | ||
|
|
61600fcf26 | ||
|
|
c29242a872 | ||
|
|
3208f02cf5 | ||
|
|
85b41503fe | ||
|
|
ff9d8680c3 | ||
|
|
6467ab8791 | ||
|
|
dcd9b1b691 | ||
|
|
81b8116742 | ||
|
|
cbbe125da9 | ||
|
|
ea29793d8d | ||
|
|
6f423bb250 | ||
|
|
c814d719a1 | ||
|
|
a5e321f78f | ||
|
|
4c3b99c9c6 | ||
|
|
b06e35bd03 | ||
|
|
bbc5916770 | ||
|
|
2275440f87 | ||
|
|
f48ba44a88 | ||
|
|
0467c16bee | ||
|
|
757b138977 | ||
|
|
cfc85f7aa4 | ||
|
|
8d18f1d131 | ||
|
|
0570a776b9 | ||
|
|
597b9ae61f | ||
|
|
aff8ae42ad | ||
|
|
0729402ef6 | ||
|
|
2904beb171 | ||
|
|
1905a165c4 | ||
|
|
c354a09c1a | ||
|
|
9392460ac2 | ||
|
|
bcbd9f74f8 | ||
|
|
0c1e7be88c | ||
|
|
bbc509507d | ||
|
|
a5bfbd9c27 | ||
|
|
081b482d41 | ||
|
|
205fbbda2c | ||
|
|
1bbda07e2a | ||
|
|
c89601d72b | ||
|
|
2af291057a | ||
|
|
eec754cd66 | ||
|
|
a77ef34b54 | ||
|
|
f6cfacdd91 | ||
|
|
e0862e715c | ||
|
|
d974650abe | ||
|
|
cab6086826 | ||
|
|
1cc9fb245f | ||
|
|
fd86a2136f | ||
|
|
0961a69b34 | ||
|
|
6a515a1c53 | ||
|
|
8fbea71039 | ||
|
|
16210ebde2 | ||
|
|
67779821d1 | ||
|
|
22e1fa2bed | ||
|
|
4f0388a413 | ||
|
|
2e08877383 | ||
|
|
285b9ba97a | ||
|
|
e03f41f43b | ||
|
|
a066b6af74 | ||
|
|
7fe6171240 | ||
|
|
b900371690 | ||
|
|
5637875344 | ||
|
|
e0ad510e97 | ||
|
|
266307fbc2 | ||
|
|
3f131a58c8 | ||
|
|
7d195211c1 | ||
|
|
5d402a56da | ||
|
|
f6a46f2d33 | ||
|
|
2b71f0164c | ||
|
|
6381e571cf | ||
|
|
d5bbee2bad | ||
|
|
e8df066f50 | ||
|
|
b3bef159dd | ||
|
|
2f28f04b22 | ||
|
|
0a96372186 | ||
|
|
41edf711ec | ||
|
|
d38a8dfd96 | ||
|
|
465152698d | ||
|
|
84a18f3c0b | ||
|
|
f222cbb6c0 | ||
|
|
6ceb397c87 | ||
|
|
bd7fa3db34 | ||
|
|
f6e6c83950 | ||
|
|
2910128399 | ||
|
|
58ad6efadb | ||
|
|
5c0f70a4a2 | ||
|
|
921bb0a4a0 | ||
|
|
10450a350b | ||
|
|
60bce7c0fa | ||
|
|
aa36e56ff6 | ||
|
|
653a4a8f39 | ||
|
|
9b9fa77bc8 | ||
|
|
0427f8e2af | ||
|
|
7b45a86daa | ||
|
|
c94427d150 | ||
|
|
b9179a391e | ||
|
|
ade03fcc7e | ||
|
|
dc2c83d21c | ||
|
|
9c012e02d2 | ||
|
|
47576d50e0 | ||
|
|
782f87fc17 | ||
|
|
bc4b5090b4 | ||
|
|
24dc52741b | ||
|
|
725feb2528 | ||
|
|
196e851fa3 | ||
|
|
633ca5fd2e | ||
|
|
5f0c9889c5 | ||
|
|
1e95898bd5 | ||
|
|
f069f4997a | ||
|
|
4451c5e984 | ||
|
|
1830a32e77 | ||
|
|
b910a2e335 | ||
|
|
4ae5d9495f | ||
|
|
2aa64b62a9 | ||
|
|
c8f2f119f0 | ||
|
|
eeca1f8f50 | ||
|
|
b74034a809 | ||
|
|
b356f26e08 | ||
|
|
c9c3011441 | ||
|
|
d2fcebd84a | ||
|
|
9c47628233 | ||
|
|
28956664cc | ||
|
|
994f303064 | ||
|
|
52a09f4364 | ||
|
|
6abb0f79b6 | ||
|
|
2afd941483 | ||
|
|
fd43c16853 | ||
|
|
c27f971878 | ||
|
|
e48115c557 | ||
|
|
3f0c2d82e8 | ||
|
|
544fbb5e6d | ||
|
|
dfde4d7989 | ||
|
|
d80f0ce906 | ||
|
|
6a6a247b1f | ||
|
|
b7c5a9a509 | ||
|
|
8694cb45e3 | ||
|
|
c075950e93 | ||
|
|
3e555546cd | ||
|
|
63440d051f | ||
|
|
0cd16ee2d7 | ||
|
|
3803286251 | ||
|
|
2d801b535e | ||
|
|
f2189f3780 | ||
|
|
be251919d6 | ||
|
|
bdec479885 | ||
|
|
ed56f21bcb | ||
|
|
76e1248c5f | ||
|
|
b6f12ba822 | ||
|
|
0892532f5c | ||
|
|
99ea536891 | ||
|
|
ad59098b70 | ||
|
|
8f4e839d21 | ||
|
|
994e0f1ee4 | ||
|
|
d0016d6672 | ||
|
|
3c3cd43bf6 | ||
|
|
4cb7e0e239 | ||
|
|
5f00d9f310 | ||
|
|
9393bb9b3f | ||
|
|
120fe69329 | ||
|
|
fd9fdf37d9 | ||
|
|
b857ce4614 | ||
|
|
78450918dc | ||
|
|
3b0b86c4b7 | ||
|
|
335296bc56 | ||
|
|
beca59750a | ||
|
|
a5dc09f7e7 | ||
|
|
2e892c00cd | ||
|
|
d168127e23 | ||
|
|
6ae99fa573 | ||
|
|
d7a30db878 | ||
|
|
8acd7d49a8 | ||
|
|
c65e7a28c7 | ||
|
|
106784d5b4 | ||
|
|
bcbfa193f5 | ||
|
|
0fb6b0a21a | ||
|
|
26e0ecbbd1 | ||
|
|
4c097c5001 | ||
|
|
851c452782 | ||
|
|
f345a70b9f | ||
|
|
8866703ad2 | ||
|
|
0adac5f9fa | ||
|
|
b19e20c82a | ||
|
|
eef76f5734 | ||
|
|
6e3243cde7 | ||
|
|
48292b06d8 | ||
|
|
da1203125e | ||
|
|
e0fcfd2d1d | ||
|
|
b02a3ba421 | ||
|
|
f41c1516ed | ||
|
|
f7d9737950 | ||
|
|
6ab36a36c5 | ||
|
|
640065171b | ||
|
|
b9ac67f6a8 | ||
|
|
def168928c | ||
|
|
db67cf32b1 | ||
|
|
e134e707c9 | ||
|
|
f174bb188e | ||
|
|
c487a0acf4 | ||
|
|
d152a182f3 | ||
|
|
660f65dab6 | ||
|
|
841d44180f | ||
|
|
7c64e75648 | ||
|
|
b6ac318e95 | ||
|
|
b99c316fe0 | ||
|
|
b069b69bcf | ||
|
|
805c2088aa | ||
|
|
baf6c58280 | ||
|
|
dd21ee2eb4 | ||
|
|
d3e5ba557d | ||
|
|
8d10679cac | ||
|
|
8eab5c731e | ||
|
|
93107eb800 | ||
|
|
7c17d9a304 | ||
|
|
3cb7b9ec17 | ||
|
|
9fed78b350 | ||
|
|
c01135f515 | ||
|
|
6bf0c428d5 | ||
|
|
0dbcd23747 | ||
|
|
fdc1834491 | ||
|
|
b684af3f50 | ||
|
|
24b76e63f8 | ||
|
|
d7fd57c431 | ||
|
|
7da91dba9b | ||
|
|
b8e78ccb99 | ||
|
|
8b7494699a | ||
|
|
3b221f7a5a | ||
|
|
ab5ae15257 | ||
|
|
9f2921791d | ||
|
|
200f12803a | ||
|
|
a8e6f90fbf | ||
|
|
8f6ad2fc5e | ||
|
|
4c24f08e73 | ||
|
|
c1c185fc25 | ||
|
|
325217736e | ||
|
|
71b16b5036 | ||
|
|
abc50b3e30 | ||
|
|
44690ffe3b | ||
|
|
153852c87b | ||
|
|
cfc219702c | ||
|
|
623a264cbe | ||
|
|
a616ee7146 | ||
|
|
e3719881e7 | ||
|
|
1cbad7a0df | ||
|
|
a3beb29c82 | ||
|
|
d4882d8add | ||
|
|
56969e32cb | ||
|
|
1015b30a22 | ||
|
|
99ee4afaf8 | ||
|
|
db2647aada | ||
|
|
3543bd1d24 | ||
|
|
da7e070261 | ||
|
|
b107e72459 | ||
|
|
95bfbfcab9 | ||
|
|
887fb80d83 | ||
|
|
efa068c189 | ||
|
|
f368fa077e | ||
|
|
4b6e7678ad | ||
|
|
e1b31afafd | ||
|
|
f875934459 | ||
|
|
e9ab4e1186 | ||
|
|
7278364873 | ||
|
|
291a478290 | ||
|
|
4768817661 | ||
|
|
ebf561f48c | ||
|
|
8bdfd18e1f | ||
|
|
5e48c1036f | ||
|
|
4370e87fea | ||
|
|
0864aef698 | ||
|
|
b898dff53f | ||
|
|
15056a5a6c | ||
|
|
2f5df3e46f | ||
|
|
fd3176c36e | ||
|
|
942bd2baf5 | ||
|
|
db67b97b7a | ||
|
|
c45d42f606 | ||
|
|
401e55a7bd | ||
|
|
5a0158c372 | ||
|
|
2509347330 | ||
|
|
a5bc4bc902 | ||
|
|
7588f21b8f | ||
|
|
78ca8b86a8 | ||
|
|
fc9cb7da9e | ||
|
|
70dacc878c | ||
|
|
0eebd52577 | ||
|
|
100f22bcfe | ||
|
|
36d479380f | ||
|
|
aff728dd5e | ||
|
|
a0c8fa1a84 | ||
|
|
a88990cc73 | ||
|
|
15c03c0aff | ||
|
|
aa3d6803f7 | ||
|
|
0bf8b0a35b | ||
|
|
3fd29ee299 | ||
|
|
1fb62d2964 | ||
|
|
756af81132 | ||
|
|
0ebce80650 | ||
|
|
743311ec19 | ||
|
|
d8237f0687 | ||
|
|
68f3d13d09 | ||
|
|
b9194310a9 | ||
|
|
670078158c | ||
|
|
0f0bea2624 | ||
|
|
82bd15b09c | ||
|
|
9e3b69931f | ||
|
|
b8ed514ca8 | ||
|
|
079ebdb39b | ||
|
|
230a35faf0 | ||
|
|
943e60b47b | ||
|
|
cc67d386b8 | ||
|
|
54384279b2 | ||
|
|
83fcb1fa7b | ||
|
|
a83e2802ed | ||
|
|
27d524c758 | ||
|
|
262e010a08 | ||
|
|
c3a8f0c3d7 | ||
|
|
b045104c3e | ||
|
|
12bc342cc6 | ||
|
|
1a1f351207 | ||
|
|
510d33fd89 | ||
|
|
19c68dada7 | ||
|
|
089b24f505 | ||
|
|
3f6a37a535 | ||
|
|
596331daf3 | ||
|
|
f665d0a590 | ||
|
|
0c6c6c9a91 | ||
|
|
9abdd88a3d | ||
|
|
cdb927da2a | ||
|
|
214fa1538a | ||
|
|
97d74944cb | ||
|
|
f003063b94 | ||
|
|
08132ef566 | ||
|
|
1fbbc0500d | ||
|
|
708ee3b7bd | ||
|
|
3d0afd017a | ||
|
|
bf67852b59 | ||
|
|
105fb61f71 | ||
|
|
d4f81a92e0 | ||
|
|
353a15827b | ||
|
|
6a3bf8c0b3 | ||
|
|
9a20feb417 | ||
|
|
a25ae21074 | ||
|
|
f9428ee6d2 | ||
|
|
3746b608b2 | ||
|
|
769995549d | ||
|
|
98c497b0aa | ||
|
|
96a1c981bc | ||
|
|
82fc187983 | ||
|
|
fc22cc0456 | ||
|
|
b40167c1e2 | ||
|
|
8dd942d070 | ||
|
|
0e810ba308 | ||
|
|
4288680bce | ||
|
|
5d82af6912 | ||
|
|
7607dc9e9d | ||
|
|
0795451801 | ||
|
|
e061c22ab1 | ||
|
|
9562762403 | ||
|
|
c1e961a938 | ||
|
|
c48f44830e | ||
|
|
558f5b0286 | ||
|
|
b1a9cbdabb | ||
|
|
7e494673e0 | ||
|
|
a5434d4428 | ||
|
|
582f1ca294 | ||
|
|
fcebfeae60 | ||
|
|
bb308f87e7 | ||
|
|
5445177055 | ||
|
|
b705f2bed1 | ||
|
|
4a79ef073c | ||
|
|
ce79a80a18 | ||
|
|
9c72628a39 | ||
|
|
61416c3f23 | ||
|
|
27d7dfda02 | ||
|
|
487c638185 | ||
|
|
57eece03d8 | ||
|
|
f62f214e88 | ||
|
|
d33504ff72 | ||
|
|
fc68b5ae0e | ||
|
|
55c52ed5ad | ||
|
|
923a08f7fc | ||
|
|
284d36dd6d | ||
|
|
f648e6db08 | ||
|
|
c771560a7c | ||
|
|
9b89ac19ba | ||
|
|
1d369c13d8 | ||
|
|
ad2c3bb12a | ||
|
|
b951a67b3f | ||
|
|
17f37f0c05 | ||
|
|
c71da72328 | ||
|
|
3c743bd668 | ||
|
|
1e2fdfba58 | ||
|
|
03db260ed6 | ||
|
|
d47cdf8a7b | ||
|
|
8d41ea5eba | ||
|
|
573fd7ba6a | ||
|
|
6425131822 | ||
|
|
d81e91af7b | ||
|
|
f1576f280d | ||
|
|
2692c90106 | ||
|
|
0da5471b3e | ||
|
|
e5a8d695bb | ||
|
|
24b91a73c7 | ||
|
|
1ad3b6ab98 | ||
|
|
7fa869d33c | ||
|
|
4b95eeae06 | ||
|
|
c7e79d9816 | ||
|
|
4d6d9abbc0 | ||
|
|
bc5973bdaf | ||
|
|
f6c7f638a1 | ||
|
|
0c9412c55f | ||
|
|
a3ece8770c | ||
|
|
77a9377503 | ||
|
|
e63b08f053 | ||
|
|
6356f9d0b7 | ||
|
|
01d753ff99 | ||
|
|
8e151b721a | ||
|
|
ff1a31a336 | ||
|
|
2b0dac8097 | ||
|
|
7b640d4503 | ||
|
|
f4659fb67c | ||
|
|
c0393bcc7c | ||
|
|
0f5108ca90 | ||
|
|
fffbbdcb55 | ||
|
|
16d29df52a | ||
|
|
4ba9e97386 | ||
|
|
3a8d9c3fcb | ||
|
|
15c73e6e07 | ||
|
|
122e2c40ce | ||
|
|
14ac686780 | ||
|
|
8e4ecac74b | ||
|
|
a1808f590e | ||
|
|
72127121ca | ||
|
|
d77dddfda0 | ||
|
|
42877edd0b | ||
|
|
c077dfe24e | ||
|
|
7f4e90a2cf | ||
|
|
4d7b19e64b | ||
|
|
127c937e5d | ||
|
|
a0fc946ee7 | ||
|
|
35dd0b2561 | ||
|
|
33ef29361f | ||
|
|
7953d92bfc | ||
|
|
4089bca9d5 | ||
|
|
fea7424a7d | ||
|
|
d4923b80fc | ||
|
|
678d4dc524 | ||
|
|
4e92aab586 | ||
|
|
1833b1a28f | ||
|
|
3ca640fd3c | ||
|
|
0017139d69 | ||
|
|
87fd12c002 | ||
|
|
723641ac57 | ||
|
|
4155547c0b | ||
|
|
262b8ad7c3 | ||
|
|
64f630d904 | ||
|
|
8525c59b9a | ||
|
|
0288421cef | ||
|
|
8f1ae11d9c | ||
|
|
8f61882bf7 | ||
|
|
12cba3f23d | ||
|
|
05d8d95991 | ||
|
|
adbaa6caf4 | ||
|
|
db6948d658 | ||
|
|
6ca5ac62eb | ||
|
|
0b63b9eaf9 | ||
|
|
b62cfcaf94 | ||
|
|
e24cf09608 | ||
|
|
815bbd647c | ||
|
|
54a325f306 | ||
|
|
d5b9362c85 | ||
|
|
55f3ca652d | ||
|
|
1cce48ef53 | ||
|
|
44bf1f4260 | ||
|
|
a26ef77df2 | ||
|
|
0bffc7af3c | ||
|
|
496dc7fe2e | ||
|
|
3610d1b921 | ||
|
|
abdfa588a6 | ||
|
|
ccfa730713 | ||
|
|
3eb8799f67 | ||
|
|
42e57ee0ca | ||
|
|
e37751672b | ||
|
|
9768383b40 | ||
|
|
b87479f618 | ||
|
|
fdc310b32e | ||
|
|
8766481109 | ||
|
|
d4575f7e65 | ||
|
|
59952cbb3a | ||
|
|
492e1739bc | ||
|
|
a6065f7154 | ||
|
|
11c44643aa | ||
|
|
04b61d6b7a | ||
|
|
bc15f44780 | ||
|
|
735b18d59f | ||
|
|
5001dea3c1 | ||
|
|
1be84c778b | ||
|
|
ddb1b8169b | ||
|
|
e077259037 | ||
|
|
c88bccb560 | ||
|
|
5bd2b3c85e | ||
|
|
078d6800a6 | ||
|
|
4126dffc96 | ||
|
|
61400d4c03 | ||
|
|
a3ab735c4e | ||
|
|
0138ac3e4a | ||
|
|
0dcbdcac3a | ||
|
|
cc86e71837 | ||
|
|
00d24f587b | ||
|
|
c2683d10c6 | ||
|
|
11f5607272 | ||
|
|
259326cb5b | ||
|
|
dad6590660 | ||
|
|
b68b4cc374 | ||
|
|
7ffa17e372 | ||
|
|
c02a4d381c | ||
|
|
ab6e20a0dc | ||
|
|
51dece8b0f | ||
|
|
2452470163 | ||
|
|
edbdb4f239 | ||
|
|
43da3b50de | ||
|
|
a3658de7c2 | ||
|
|
74315ec825 | ||
|
|
4c58f48645 | ||
|
|
c8f4983946 | ||
|
|
ea7fad63a6 | ||
|
|
65352f4253 | ||
|
|
11922b1b02 | ||
|
|
47752593b0 | ||
|
|
8dfaea2bfc | ||
|
|
b288773d15 | ||
|
|
25d9da3144 | ||
|
|
841819d249 | ||
|
|
47fa7f9f0e | ||
|
|
ed2c9e5c41 | ||
|
|
985177dd96 | ||
|
|
95a1a4f9a2 | ||
|
|
e142284713 | ||
|
|
be246413fa | ||
|
|
c7bf1d2ec9 | ||
|
|
48327feb34 | ||
|
|
afa6950f0c | ||
|
|
2adedba064 | ||
|
|
2309998889 | ||
|
|
a8f906a15e | ||
|
|
990d4394af | ||
|
|
66f65052f6 | ||
|
|
9252de79d4 | ||
|
|
a31ef816bd | ||
|
|
2df46e88ce | ||
|
|
050d1966c6 | ||
|
|
b38301efae | ||
|
|
90aa4bad13 | ||
|
|
b6909b132a | ||
|
|
47dede29c3 | ||
|
|
be5ee1a71b | ||
|
|
2b1d612528 | ||
|
|
82315bd349 | ||
|
|
0fa2fe3b32 | ||
|
|
a60d8fa005 | ||
|
|
e5b53991f2 | ||
|
|
8d39fabad7 | ||
|
|
ee6efc5bf8 | ||
|
|
435a9b3cd4 | ||
|
|
e84758440f | ||
|
|
e320d943a6 | ||
|
|
9b0de9f9fb | ||
|
|
dd55faec48 | ||
|
|
c32343671a | ||
|
|
e88351e994 | ||
|
|
2e323be1c3 | ||
|
|
8111ce1ce6 | ||
|
|
f946b7d8fe | ||
|
|
7251b1f763 | ||
|
|
a1aa280cb9 | ||
|
|
a268160ffd | ||
|
|
87187649d1 | ||
|
|
b2ba6aa7ae | ||
|
|
e95dc3932b | ||
|
|
68579a0b86 | ||
|
|
ae447e52c9 | ||
|
|
1d66e071e9 | ||
|
|
e26f9aedb6 | ||
|
|
d83c45cb2f | ||
|
|
b695647acf | ||
|
|
0d179f9d0b | ||
|
|
6e60311ba7 | ||
|
|
a6a7ef040f | ||
|
|
e2637b06a0 | ||
|
|
ec5caf8fe1 | ||
|
|
7428ef8eb7 | ||
|
|
d29edf679e | ||
|
|
175f876101 | ||
|
|
cc4fa53339 | ||
|
|
371262d056 | ||
|
|
cd5a881f32 | ||
|
|
95882ea875 | ||
|
|
3edeae30a0 | ||
|
|
44f7e6a436 | ||
|
|
03033b8d7c | ||
|
|
a25f813f6b | ||
|
|
873ac2a3ee | ||
|
|
ee613b1578 | ||
|
|
6f5adca0cc | ||
|
|
49c4c592f1 | ||
|
|
b5882bf3a4 | ||
|
|
5ad56a9520 | ||
|
|
0afc9908ed | ||
|
|
6c55f6ea53 | ||
|
|
1eef52e286 | ||
|
|
c1644287e1 | ||
|
|
1ceee77b27 | ||
|
|
faea66eed8 | ||
|
|
f211a19eab | ||
|
|
ad9abfb0d8 | ||
|
|
204b0b46ef | ||
|
|
5ddcec777f | ||
|
|
0055d7573b | ||
|
|
92998eb817 | ||
|
|
a11dc52cfe | ||
|
|
b2175a60cd | ||
|
|
9bba6b0c28 | ||
|
|
8865d2a2c5 | ||
|
|
067f1a4fa7 | ||
|
|
15c6b1cef6 | ||
|
|
f49b5a0389 | ||
|
|
5e86263fe3 | ||
|
|
9fce0e2d51 | ||
|
|
6cbabfbe80 | ||
|
|
32c1ca8abf | ||
|
|
31e8904f7a | ||
|
|
1229bedffb | ||
|
|
e69e98182b | ||
|
|
3b71f10d1e | ||
|
|
992eed1bfc | ||
|
|
873b1c40e8 | ||
|
|
7e0171bb9f | ||
|
|
309f652ce6 | ||
|
|
2ba4444ca4 | ||
|
|
826de3ddf0 | ||
|
|
1e4148f2cf | ||
|
|
5827a9702c | ||
|
|
fd11071566 | ||
|
|
7b7d467143 | ||
|
|
170b778dcf | ||
|
|
bc5be9e382 | ||
|
|
6fb91e2e56 | ||
|
|
c29613faed | ||
|
|
7b6ff51186 | ||
|
|
44043a9374 | ||
|
|
e4159028ae | ||
|
|
b6424bdb15 | ||
|
|
9e5a2ac7c5 | ||
|
|
924e69bc7b | ||
|
|
4f025cb9ec | ||
|
|
9902c9351d | ||
|
|
536a6dd877 | ||
|
|
00e702e24f | ||
|
|
7c39f68a1a | ||
|
|
ba9f571c83 | ||
|
|
d12387f4ae | ||
|
|
4bed02e395 | ||
|
|
ee23a50c06 | ||
|
|
7f383fffc9 | ||
|
|
42b421be44 | ||
|
|
121fe3008a | ||
|
|
55fd797707 |
@@ -0,0 +1 @@
|
||||
2.6.2
|
||||
@@ -0,0 +1,28 @@
|
||||
2
|
||||
0.57.20.57.3
|
||||
0.66.2
|
||||
0.66.3
|
||||
0.71.2
|
||||
0.71.3
|
||||
|
||||
0.84.2
|
||||
0.84.3
|
||||
0.85.2
|
||||
0.85.3
|
||||
0.85.4
|
||||
0.85.5
|
||||
0.86.2
|
||||
0.86.3
|
||||
0.86.4
|
||||
0.86.5
|
||||
0.86.6
|
||||
0.86.7
|
||||
0.87.2
|
||||
0.87.3
|
||||
0.87.4
|
||||
0.87.5
|
||||
0.87.6
|
||||
0.87.7
|
||||
0.89.2
|
||||
0.89.3
|
||||
2.6.2
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('./babel.config.js');
|
||||
@@ -1,3 +1,17 @@
|
||||
checks:
|
||||
argument-count:
|
||||
config:
|
||||
threshold: 5
|
||||
method-complexity:
|
||||
config:
|
||||
threshold: 7
|
||||
method-count:
|
||||
config:
|
||||
threshold: 25
|
||||
method-lines:
|
||||
config:
|
||||
threshold: 30
|
||||
|
||||
exclude_patterns:
|
||||
- "**/*.spec.js"
|
||||
- "**/*.spec.ts"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
**/build/*
|
||||
**/coverage/*
|
||||
**/node_modules/*
|
||||
**/*.d.ts
|
||||
@@ -1,11 +1,19 @@
|
||||
const base = require('@polkadot/dev-react/config/eslint');
|
||||
// Copyright 2017-2022 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const base = require('@polkadot/dev/config/eslint.cjs');
|
||||
|
||||
module.exports = {
|
||||
...base,
|
||||
ignorePatterns: [
|
||||
...base.ignorePatterns,
|
||||
'jest/**/*',
|
||||
'**/*.d.ts'
|
||||
],
|
||||
parserOptions: {
|
||||
...base.parserOptions,
|
||||
project: [
|
||||
'./tsconfig.json'
|
||||
'./tsconfig.eslint.json'
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<!--
|
||||
|
||||
For general support, howto, coding and bundling questions, please use the Substrate & Polkadot StackExchange at https://substrate.stackexchange.com/ and get other ecosystem developers involved. This issues in this repository are meant for the tracking of feature requests and bug reports.
|
||||
|
||||
While all issues are looked at non-bug and non-features would take quite a bit longer to get to and may yield less than satisfactory responses in this format.
|
||||
|
||||
Additionally, please ensure you have done a search on the existing and closed issues before logging a new request. This saves time on all sides.
|
||||
|
||||
-->
|
||||
|
||||
|
||||
* **I'm submitting a ...**
|
||||
|
||||
<!--- Try and classify your actual report -->
|
||||
|
||||
- [ ] Bug report
|
||||
- [ ] Feature request
|
||||
- [ ] Support request (please bear the comments above in mind)
|
||||
- [ ] Other
|
||||
|
||||
|
||||
* **What is the current behavior and expected behavior?**
|
||||
|
||||
<!--- If you're describing a bug, tell us what should happen -->
|
||||
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||
|
||||
|
||||
* **What is the motivation for changing the behavior?**
|
||||
|
||||
<!--- Not obligatory, but suggest a motivation for the request -->
|
||||
<!--- or ideas how to implement the addition or change -->
|
||||
|
||||
|
||||
* **Please tell us about your environment:**
|
||||
|
||||
<!--- Include as many relevant details about the environment you experienced the issue in -->
|
||||
<!--- Also snsure that you have tested against the latest stable releases if a bug -->
|
||||
|
||||
- Version:
|
||||
- Environment:
|
||||
|
||||
- [ ] Node.js
|
||||
- [ ] Browser
|
||||
- [ ] Other (limited support for other environments available)
|
||||
|
||||
- Language:
|
||||
|
||||
- [ ] JavaScript
|
||||
- [ ] TypeScript
|
||||
- [ ] Other
|
||||
@@ -0,0 +1,16 @@
|
||||
name: bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
approve:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: jacogr/action-approve@master
|
||||
with:
|
||||
authors: jacogr
|
||||
labels: -auto
|
||||
token: ${{ secrets.GH_PAT_BOT }}
|
||||
@@ -0,0 +1,16 @@
|
||||
name: bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: jacogr/action-merge@master
|
||||
with:
|
||||
checks: build,lint,test
|
||||
labels: -auto
|
||||
strategy: squash
|
||||
token: ${{ secrets.GH_PAT_BOT }}
|
||||
@@ -0,0 +1,25 @@
|
||||
name: 'Lock Threads'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '25 2/3 * * *'
|
||||
|
||||
jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v2
|
||||
with:
|
||||
github-token: ${{ secrets.GH_PAT_BOT }}
|
||||
issue-lock-inactive-days: '7'
|
||||
issue-lock-comment: >
|
||||
This thread has been automatically locked since there has not been
|
||||
any recent activity after it was closed. Please open a new issue
|
||||
if you think you have a related problem or query.
|
||||
pr-lock-inactive-days: '2'
|
||||
pr-lock-comment: >
|
||||
This pull request has been automatically locked since there
|
||||
has not been any recent activity after it was closed.
|
||||
Please open a new issue for related bugs.
|
||||
@@ -2,70 +2,17 @@ name: PR
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Linting
|
||||
runs-on: ubuntu-latest
|
||||
pr:
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: lint
|
||||
run: |
|
||||
yarn install --frozen-lockfile
|
||||
yarn lint
|
||||
|
||||
test:
|
||||
name: Testing
|
||||
step: ['lint', 'test', 'build']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: test
|
||||
- uses: actions/checkout@v2
|
||||
- name: ${{ matrix.step }}
|
||||
run: |
|
||||
yarn install --frozen-lockfile
|
||||
yarn test
|
||||
|
||||
build_code:
|
||||
name: Build Code
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: build
|
||||
run: |
|
||||
yarn install --frozen-lockfile
|
||||
yarn build
|
||||
|
||||
build_docs:
|
||||
name: Build Docs
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: build
|
||||
run: |
|
||||
yarn install --frozen-lockfile
|
||||
yarn docs
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
@@ -5,63 +5,25 @@ on:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build_code:
|
||||
name: Build Code
|
||||
if: "! contains(github.event.head_commit.message, '[CI Skip]')"
|
||||
runs-on: ubuntu-latest
|
||||
master:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]')"
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
step: ['build:release']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GH_PAT }}
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: build
|
||||
env:
|
||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_TOKEN: ${{ secrets.GH_PAT }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
- name: ${{ matrix.step }}
|
||||
run: |
|
||||
yarn install --frozen-lockfile
|
||||
yarn polkadot-dev-ghact-build
|
||||
|
||||
build_docs:
|
||||
name: Build Docs
|
||||
if: "! contains(github.event.head_commit.message, '[CI Skip]')"
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: build
|
||||
env:
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_TOKEN: ${{ secrets.GH_PAT }}
|
||||
GH_PAGES_SRC: build-docs
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
yarn install --frozen-lockfile
|
||||
yarn polkadot-dev-ghact-docs
|
||||
|
||||
dummy:
|
||||
name: Dummy
|
||||
if: "contains(github.event.head_commit.message, '[CI Skip]')"
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
steps:
|
||||
- name: dummy
|
||||
run: |
|
||||
echo "Dummy skip step"
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
name: Semgrep
|
||||
on:
|
||||
pull_request: {}
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
check:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: returntocorp/semgrep-action@v1
|
||||
with:
|
||||
auditOn: push
|
||||
publishToken: ${{ secrets.SEMGREP_APP_TOKEN }}
|
||||
publishDeployment: 1395
|
||||
@@ -0,0 +1,19 @@
|
||||
name: 'Close stale issues and PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '40 2/3 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/stale@v3
|
||||
with:
|
||||
repo-token: ${{ secrets.GH_PAT_BOT }}
|
||||
stale-issue-message: 'This issue has been open for 21 days with no activity and is not labelled as an enhancement. It will be closed in 7 days.'
|
||||
stale-issue-label: 'stale'
|
||||
exempt-issue-labels: '-size-l,-size-m,-size-s,-size-xl,-size-xs,[bug]'
|
||||
days-before-stale: 21
|
||||
days-before-close: 7
|
||||
@@ -1,16 +1,24 @@
|
||||
build/
|
||||
build-cjs/
|
||||
build-esm/
|
||||
build-docs/
|
||||
coverage/
|
||||
node_modules/
|
||||
tmp/
|
||||
.idea
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.npmrc
|
||||
.yarn/*
|
||||
!.yarn/releases
|
||||
!.yarn/plugins
|
||||
.pnp.*
|
||||
cc-test-reporter
|
||||
package-lock.json
|
||||
npm-debug.log*
|
||||
tsconfig.*buildinfo
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
Jaco <jacogr@gmail.com>
|
||||
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> <action@github.com>
|
||||
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Github Actions <action@github.com>
|
||||
@@ -0,0 +1,3 @@
|
||||
build
|
||||
coverage
|
||||
packages
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright 2017-2022 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
module.exports = require('@polkadot/dev/config/prettier.cjs');
|
||||
@@ -0,0 +1,13 @@
|
||||
enableImmutableInstalls: false
|
||||
|
||||
enableProgressBars: false
|
||||
|
||||
nodeLinker: node-modules
|
||||
|
||||
plugins:
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
||||
spec: "@yarnpkg/plugin-interactive-tools"
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
|
||||
spec: "@yarnpkg/plugin-version"
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.2.0.cjs
|
||||
@@ -1,32 +1,745 @@
|
||||
# 0.47.1
|
||||
# CHANGELOG
|
||||
|
||||
## 2.6.2 Jun 25, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.6.2
|
||||
|
||||
|
||||
## 2.6.1 Jun 23, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.6.1
|
||||
- Upgrade libs to latest stable versions
|
||||
|
||||
|
||||
## 2.5.1 Jun 19, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.5.1
|
||||
- Upgrade libs to latest stable versions
|
||||
|
||||
|
||||
## 2.4.1 Jun 4, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.4.1
|
||||
|
||||
|
||||
## 2.3.1 May 30, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.3.1
|
||||
|
||||
|
||||
## 2.2.1 May 14, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.2.1
|
||||
|
||||
|
||||
## 2.1.1 Apr 30, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.1.1
|
||||
- Adjust Jest test init for latest `@polkadot/dev`
|
||||
|
||||
|
||||
## 2.0.1 Apr 9, 2022
|
||||
|
||||
- **Breaking change** In this major version the commonjs outputs are moved to a sub-folder. Since the export map and main field in package.json does reflect this change, there should be no usage changes. However the packages here will all need to be on the same version for internal linkage.
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust Polkadot icon generation with lazy init
|
||||
- Output commonjs files under the `cjs/**` root
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.0.1
|
||||
|
||||
|
||||
## 1.4.1 Mar 27, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.7.1
|
||||
|
||||
|
||||
## 1.3.1 Mar 19, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.6.1
|
||||
- Additional workaround for Vite bundling
|
||||
|
||||
|
||||
## 1.2.1 Mar 12, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust for bundlers where `import.meta.url` is undefined
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.5.1
|
||||
|
||||
|
||||
## 1.1.1 Feb 14, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust ordering in state & timeouts for QR display
|
||||
- Add `timerDelay` property to QR display to control frame timeouts
|
||||
- Adjust webpack example config (cleanups, remove unneeded plugins)
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.4.1
|
||||
|
||||
|
||||
## 1.0.1 Jan 29, 2022
|
||||
|
||||
**Breaking change** The `Ledger` export from `@polkadot/ui-keyring` has been removed. For users of this class, import it directly from `@polkadot/hw-ledger`
|
||||
|
||||
**Important** This is the first release in the long-outstanding `1.x` range. Apart from the notable breaking changes, it has no functional differences to the previous versions.
|
||||
|
||||
Changes:
|
||||
|
||||
- Remove `Ledger` export in `ui-keyring`
|
||||
|
||||
|
||||
## 0.89.3 Jan 23, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.3.3
|
||||
|
||||
|
||||
## 0.89.2 Jan 15, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.3.2
|
||||
|
||||
|
||||
## 0.89.1 Jan 9, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.3.1
|
||||
|
||||
|
||||
## 0.88.1 Jan 2, 2022
|
||||
|
||||
- Allow for loading of accounts on additional genesisHashes
|
||||
- Ensure package path is availble under ESM & CJS
|
||||
|
||||
|
||||
## 0.87.7 Dec 27, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Internal dev packages bumps, publish changes
|
||||
|
||||
|
||||
## 0.87.6 Dec 19, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.2.2
|
||||
|
||||
|
||||
## 0.87.5 Dec 5, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.1.2
|
||||
|
||||
|
||||
## 0.87.4 Dec 5, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.1.1
|
||||
|
||||
|
||||
## 0.87.3 Dec 1, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Use `hasProcess` check from `@polkadot/util`
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.0.5
|
||||
|
||||
|
||||
## 0.87.2 Nov 30, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Correct check for `process` variable (Thanks to https://github.com/AndreiEres)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.0.4
|
||||
|
||||
|
||||
## 0.87.1 Nov 28, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.0.2
|
||||
|
||||
|
||||
## 0.86.7 Nov 22, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.9.2
|
||||
|
||||
|
||||
## 0.86.6 Nov 21, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.9.1
|
||||
|
||||
|
||||
## 0.86.5 Nov 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.8.2
|
||||
|
||||
|
||||
## 0.86.4 Nov 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.8.1
|
||||
|
||||
|
||||
## 0.86.3 Nov 1, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Add publish skip to all examples
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.7.1
|
||||
|
||||
|
||||
## 0.86.2 Oct 24, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.6.1
|
||||
|
||||
|
||||
## 0.86.1 Oct 16, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Check for existence of `process` before using (Thanks to https://github.com/wirednkod)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.5.1
|
||||
|
||||
|
||||
## 0.85.5 Oct 10, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Update rxjs to 7.4 (aligning with use in API)
|
||||
|
||||
|
||||
## 0.85.4 Sep 17, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.4.1
|
||||
|
||||
|
||||
## 0.85.3 Aug 29, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Revert color bump to 4.0.1, keep at 3.2.1 (numeric separators on Vue & react-native)
|
||||
|
||||
|
||||
## 0.85.2 Aug 28, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.3.1
|
||||
|
||||
|
||||
## 0.85.1 Aug 15, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Always use `bigint` type to indicate instance (Thanks to https://github.com/ntduan)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.2.1
|
||||
|
||||
|
||||
## 0.84.3 Aug 2, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.1.1
|
||||
|
||||
|
||||
## 0.84.2 Jul 26, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.0.3
|
||||
|
||||
|
||||
## 0.84.1 Jul 11, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Internal RxJs usage has been bumped to the 7.2 version
|
||||
- Allow building as a completely stand-alone browser bundle (experimental)
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 7.0.1
|
||||
|
||||
|
||||
## 0.83.1 Jul 5, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add support for notifications setting (Thanks to https://github.com/shawntabrizi)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.11.1
|
||||
|
||||
|
||||
## 0.82.1 Jun 26, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Adjust Qr address imports (Thanks to https://github.com/joelamouche)
|
||||
- Bubble errors on Qr scanning (Thanks to https://github.com/joelamouche)
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix `keyring.setSS58Format` to correctly set for prefix 0
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.10.1
|
||||
|
||||
|
||||
## 0.81.1 Jun 20, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Import `ethereum` addresses via QR (Thanks to https://github.com/joelamouche)
|
||||
- Support settings for non-RPC connectors (Thanks to https://github.com/wirednkod)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.9.1
|
||||
- Fix webpack demo import locations
|
||||
|
||||
|
||||
## 0.80.1 Jun 14, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.8.1
|
||||
|
||||
|
||||
## 0.79.1 Jun 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Add support for WebHID selection (as exposed by ledger packages)
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.7.1
|
||||
|
||||
|
||||
## 0.78.1 May 29, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.6.1
|
||||
|
||||
|
||||
## 0.77.1 May 25, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.5.1
|
||||
|
||||
|
||||
## 0.76.1 May 16, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Pass through injected account types (Thanks to https://github.com/joelamouche)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.4.1
|
||||
|
||||
|
||||
## 0.75.1 Apr 25, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.3.1
|
||||
|
||||
|
||||
## 0.74.1 Apr 18, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.2.1
|
||||
|
||||
|
||||
## 0.73.1 Apr 12, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.1.1
|
||||
|
||||
|
||||
## 0.72.1 Mar 15, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Added support for batch import/export functionality (Thanks to https://github.com/BubbleBear)
|
||||
|
||||
|
||||
## 0.71.3 Mar 8, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.0.5
|
||||
|
||||
|
||||
## 0.71.2 Mar 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.0.4
|
||||
|
||||
|
||||
## 0.71.1 Mar 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Build to ESM by default (with cjs versions via export map)
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.0.3
|
||||
|
||||
|
||||
## 0.70.1 Feb 28, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Use `detectPackage` with `packageInfo` & check for monorepo dependencies
|
||||
- Remove `mkdirp` resolution to ensure local views work with Webpack
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.9.2
|
||||
|
||||
|
||||
## 0.69.1 Feb 7, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.6.1
|
||||
|
||||
|
||||
## 0.68.1 Feb 1, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.5.1
|
||||
- Added `ed25519-ledger` option for `hdLedger` from `@polkadot/util-crypto`
|
||||
|
||||
|
||||
## 0.67.1 Jan 24, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Store hardware accounts (Thanks to https://github.com/Tbaut)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.4.4
|
||||
- Cleanup dependencies to only have common (no api repo)
|
||||
|
||||
|
||||
## 0.66.1 Jan 17, 2021
|
||||
|
||||
- **Important** Users of the `@polkadot/ledger` package should now import `@polkadot/hw-wallet`
|
||||
|
||||
Contributed:
|
||||
|
||||
- Dock Ledger integration (Thanks to https://github.com/lovesh, moved to common)
|
||||
- Polymesh Ledger integration (https://github.com/adamdossa, moved to common)
|
||||
|
||||
Changes:
|
||||
|
||||
- Remove `@polkadot/ledger` package (Moved to common as `@polkadot/hw-ledger`)
|
||||
- Keyring options genesis allows a `string` | `Hash` (e.g. `api.genesisHash`) input
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.3.1
|
||||
- Removed `@polkadot/types` dependencies (only interface needed, supplied)
|
||||
|
||||
|
||||
## 0.65.1 Dec 28, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 5.2.2
|
||||
- Updated to `@polkadot/api` 3.2.2
|
||||
|
||||
|
||||
## 0.64.1 Dec 21, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Don't re-export types from index (esm build compat)
|
||||
- Correctly mark `detectPackage` as a side-effect
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 5.1.1
|
||||
- Updated to `@polkadot/api` 3.1.1
|
||||
|
||||
|
||||
## 0.63.1 Dec 14, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Export types for icons (Thanks to https://github.com/Tbaut)
|
||||
|
||||
Changes:
|
||||
|
||||
- Bump to latest WebUSB from Ledger
|
||||
- Swap Ledger functionality to dedicated packages
|
||||
- Build esm packages alongside cjs
|
||||
- Convert all imports/exports to named
|
||||
- Pass pair type through to all creation actions
|
||||
- Allow for transparent failures on account injection
|
||||
- Swap to using `import type { ... }`
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 5.0.1
|
||||
- Updated to `@polkadot/api` 3.0.1
|
||||
|
||||
|
||||
## 0.62.1 Nov 9, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Update address checks to allow for Ethereum-compatible chains
|
||||
- Add Ethereum icon type (uses blockies underneath)
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 4.0.1
|
||||
- Updated to `@polkadot/api` 2.6.1
|
||||
|
||||
|
||||
## 0.61.1 Oct 19, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add Darwinia ss58 (Thanks to https://github.com/WoeOm)
|
||||
- Swap network identifiers to `@polkadot/networks` (Thanks to https://github.com/Tbaut)
|
||||
|
||||
Changes:
|
||||
|
||||
- Explicit deps versions (with peerDependencies as provided)
|
||||
- Bump to `@polkadot/api` 2.3.1
|
||||
- Bump to `@polkadot/util` 3.6.1
|
||||
|
||||
|
||||
## 0.60.1 Oct 7, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Allow for custom IdentityIcon overrides
|
||||
- Move docs to docs repo
|
||||
- Bump to `@polkadot/api` 2.1.1
|
||||
|
||||
|
||||
## 0.59.1 Sep 28, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Expose createFromJson on keyring to compliment createFromUri
|
||||
- Support Account/address indexes for Ledger
|
||||
- Bump to `@polkadot/api` 2.0.1
|
||||
- Bump to `@polkadot/util` 3.5.1
|
||||
|
||||
|
||||
## 0.58.1 Aug 31, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add Subsocial to ss58 defaults (Thanks to https://github.com/F3Joule)
|
||||
|
||||
Changes:
|
||||
|
||||
- Support QR scanning where name contains ":"
|
||||
- Support for Moonbeam ETH-compatible crypto types
|
||||
|
||||
|
||||
## 0.57.3 Jul 27, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Support for JSON v3 kdf-enabled format
|
||||
- Adjust password validity checks (alongside v3)
|
||||
- Bump to `@polkadot/api` 1.26.1
|
||||
- Bump to `@polkadot/util` 3.0.1
|
||||
|
||||
|
||||
## 0.56.1 Jul 20, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add Kulupu to ss58 options (https://github.com/carumusan)
|
||||
|
||||
Changes:
|
||||
|
||||
- Remove CC1 naming for Polkadot (as applicable)
|
||||
- Flatten React IdentityIcon (no extra wrapping)
|
||||
- Bump to `@polkadot/api` 1.25.1
|
||||
- Bump to `@polkadot/util` 2.18.1
|
||||
|
||||
|
||||
## 0.55.1 Jul 2, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Better error-handling for invalid FileStore accounts (Thanks to https://github.com/yuhui1208)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust react-qr `Scan*` making `onScan` callbacks required
|
||||
- Rework the react-qr display to use functional components
|
||||
- Bump to `@polkadot/api` 1.21.1
|
||||
- Bump to `@polkadot/util` 2.15.1
|
||||
|
||||
|
||||
## 0.54.1 Jun 16, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add genesisHash to signer payload (Thanks to https://github.com/hanwencheng)
|
||||
- Allow QR scanning to parse mini keys (Thanks to https://github.com/hanwencheng)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust ordering of available crypto types (native first)
|
||||
- Rename Substrate prefix entry (42) to "generic"
|
||||
- Bump to `@polkadot/api` 1.19.1
|
||||
- Bump to `@polkadot/util` 2.14.1
|
||||
|
||||
|
||||
## 0.53.1 May 14, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add Ecdsa to the supported crypto types options (Thanks to https://github.com/akru)
|
||||
- Add Egedware to network prefix settings (Thanks to https://github.com/jnaviask)
|
||||
|
||||
Changes:
|
||||
|
||||
- Add `addMultisig` into keyring (with all options to re-create address)
|
||||
- Bump to `@polkadot/api` 1.14.1
|
||||
- Bump to `@polkadot/util` 2.10.1
|
||||
|
||||
|
||||
## 0.52.1 Apr 15, 2020
|
||||
|
||||
- **Breaking change** (TypeScript only) The `*.d.ts` files now contain TypeScript 3.8 features, `#private`, which is not usable in older versions
|
||||
|
||||
Contributed:
|
||||
|
||||
- Allow for the encoding of chain-settings via QR (Thanks to https://github.com/hanwencheng)
|
||||
- Enhance checks for ws url in settings (Thanks to https://github.com/kwingram25)
|
||||
|
||||
Changes:
|
||||
|
||||
- Start of `isAlternative` implementations for identicons to react, react-native & vue (currently only Polkadot sixPoint)
|
||||
- Bump to `@polkadot/api` 1.10 & `@polkadot/util` 2.8
|
||||
- Convert `private <field>` to `#<field>`
|
||||
- Remove internal/duplicated ui-keyring ss58Format mapping, rather set it directly on wrapped keyring
|
||||
|
||||
|
||||
## 0.51.1 Feb 18, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Support formatting of addresses via createPair base on latest upstream keyring
|
||||
- Bump to `@polkadot/api` 1.3.1
|
||||
- Bump to `@polkadot/util` 2.4.1
|
||||
|
||||
|
||||
## 0.50.1 Feb 16, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- ui-settings does not expose pre-configured endpoints by default (only local dev node)
|
||||
- Bump to `@polkadot/api` 1.2.1
|
||||
- Bump to `@polkadot/util` 2.3.1
|
||||
|
||||
|
||||
## 0.49.1 Feb 06, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Add resolver for jest requires (tests from src)
|
||||
|
||||
|
||||
## 0.48.1 Jan 30, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Add Westend & Kulupulu, remove Alexander
|
||||
- Update Edgeware wss uri
|
||||
- Change display name for Kusama
|
||||
- Mirror QR scanning display
|
||||
|
||||
|
||||
## 0.47.1 Nov 29, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Support for Kusama CC3 (network endpoints)
|
||||
- Genesis hashes for accounts can now lookup against a range (so CC2-locked accounts will show on CC3)
|
||||
- Language options have been removed from settings (these will be app-specific)
|
||||
- QR display loops now have a timeout decay (slower as it loops)
|
||||
|
||||
# 0.46.1
|
||||
|
||||
## 0.46.1 Oct 25, 2019
|
||||
|
||||
- Add an example for using React Native (thanks to https://github.com/cameronfr)
|
||||
|
||||
Changes:
|
||||
|
||||
- Add base documentation for getting started
|
||||
- Add camera access to the setting structure
|
||||
|
||||
# 0.45.1
|
||||
|
||||
## 0.45.1 Sep 26, 2019
|
||||
|
||||
- **Breaking change** The subscription subject for `ui-keyring` does not return a pre-formatted React object anymore. This is SUI-specific, so had limited use and therefore should not even be split into a `react-keyring` component. Rather users of this functionality should construct their own options for their framework.
|
||||
|
||||
Changes:
|
||||
|
||||
- Support for Kusama CC2
|
||||
- **Breaking change** The subscription subject for `ui-keyring` does not return a pre-formatted React object anymore. This is SUI-specific, so had limited use and therefore should not even be split into a `react-keyring` component. Rather users of this functionality should construct their own options for their framework.
|
||||
- Experimental support for signing via Ledger HW
|
||||
- Add specific settings for the icon type to `ui-settings`
|
||||
- Add Edgeware live RPC endpoints to `ui-settings`
|
||||
- Adjust `react-identicon` highlights (validators)
|
||||
- Add `example-{react, vue}` highlighting simple use with `ui-keyring`, `ui-settings` & `*-identicon` components
|
||||
|
||||
# 0.44.1
|
||||
|
||||
## 0.44.1 Sep 12, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Update `@polkadot/util` to 1.4.1
|
||||
- Upddate to Babel 7.6
|
||||
|
||||
# 0.43.1
|
||||
|
||||
## 0.43.1 Sep 10, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Add W3F Node for Kusama
|
||||
- Add extended info to ui-settings, i.e. info on each option
|
||||
@@ -34,17 +747,24 @@
|
||||
- ui-keyring now check the genesisHash on all load operations (if supplied)
|
||||
- react-qr is now operational and integrated in the polkadot-js/extension and apps repos
|
||||
|
||||
# 0.42.1
|
||||
|
||||
## 0.42.1 Aug 24, 2019
|
||||
|
||||
- **Breaking Change** The `@polkadot/ui-identicon` package has been renamed to `@polkadot/react-identicon`
|
||||
- **Breaking change** For `@polkadot/ui-keyring` the stores are now not exported from the index, imports should be changed to either `ui-keyring/stores` or explicitly to `ui-keyring/stores/Extension`
|
||||
|
||||
Changes:
|
||||
|
||||
- Support for Kusama with endpoints and settings
|
||||
- The `@polkadot/reactnative-identicon` package has been added (only Polkadot support atm)
|
||||
- The `@polkadot/react-qr` package has been added to display/scan QR codes
|
||||
- `@polkadot/ui-settings` has UNfrastructure added as an RPC provider for Alex
|
||||
- `@polkadot/ui-settings` exposes a dropdown with address prefix options
|
||||
|
||||
# 0.41.1
|
||||
|
||||
## 0.41.1 Jun 14, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Adapt interface to cater for new `@polkadot/keyring`, where pairs -
|
||||
- expose `address` getter instead of `address()`
|
||||
@@ -56,16 +776,25 @@
|
||||
- Remove previously deprecated kering functions, `createAccount`, `createAccountExternal` & `createAccountMnemonic`
|
||||
- Remove (previously deprecated), `@polkadot/ui-util`, all these functions have been incorporated in `@polkadot/util`
|
||||
|
||||
# 0.40.1
|
||||
|
||||
## 0.40.1 Jun 04, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Address encoding changes, use encoded address instead of supplied
|
||||
|
||||
# 0.39.1
|
||||
|
||||
## 0.39.1 May 22, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Allow for externally injected accounts
|
||||
- @polkadot/util 0.91.1 & @polkadot/api 0.79.1
|
||||
|
||||
# 0.38.1
|
||||
|
||||
## 0.38.1 May 08, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Sorting of keyring addresses
|
||||
- Fix JSON import defaults (previously detection was not working for old accounts)
|
||||
@@ -73,62 +802,112 @@
|
||||
- Ensure only a single instance of ui-keyring is loaded
|
||||
- Adjust short address option display (keyring options)
|
||||
|
||||
# 0.37.1
|
||||
|
||||
## 0.37.1 Apr 03, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Add Emberic Elm (Dried Danta discontinued)
|
||||
- @polkadot/util & @polkadot/api 0.75.1
|
||||
|
||||
# 0.36.1
|
||||
|
||||
## 0.36.1 Mar 29, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Small fixes, latest @polkadot/wasm-* packages
|
||||
|
||||
# 0.35.1
|
||||
|
||||
## 0.35.1 Mar 29, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- @polkadot/util & @polkadot/api 0.75.1
|
||||
|
||||
# 0.34.1
|
||||
|
||||
## 0.34.1 Mar 28, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix for blake2 in Polkadot identicon generation
|
||||
|
||||
# 0.33.1
|
||||
|
||||
## 0.33.1 Mar 23, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Rename createUri and createExternal to addExternal and addUri
|
||||
- Rename addAccountPair to addPair
|
||||
- Add additional createFromUri function to create pair, but not add it
|
||||
- Latest api, util & util-crypto (this with WASM and JS fallbacks)
|
||||
|
||||
# 0.32.1
|
||||
|
||||
## 0.32.1 Mar 20, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Add createUri to create an account from a path uri
|
||||
- Add createExternal as an alias for createAccountExternal
|
||||
- Deprecate createAccount, createAccountExternal and createAccountMnemonic
|
||||
- Fix styled-component dependencies when used in a non-@polkadot project
|
||||
|
||||
# 0.31.1
|
||||
|
||||
## 0.31.1 Mar 18, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Allow for latest keyring with sr25519 derived support
|
||||
- When using dev mode, it assumes the substrate node has sr25519 derived keys
|
||||
|
||||
# 0.30.1
|
||||
|
||||
## 0.30.1 Mar 14, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
- Swap to publishing -beta.x on merge (non-breaking testing)
|
||||
|
||||
# 0.29.1
|
||||
|
||||
## 0.29.1 Mar 13, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
Swap to using a dev HDKD keyring (only available on latest substrate master, only affects nodes running with --dev, normal operation unaffected)
|
||||
|
||||
# 0.28.1
|
||||
|
||||
## 0.28.1 Feb 21, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
Default Substrate icon is Jdenticon
|
||||
|
||||
# 0.27.1
|
||||
|
||||
## 0.27.1 Feb 20, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
Replace Charred Cherry with Dried Danta, remove old decimals and token name configs
|
||||
|
||||
# 0.26.1
|
||||
|
||||
## 0.26.1 Feb 14, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
Add keyring support for sd25519 (schnorrkel)
|
||||
|
||||
# 0.25.1
|
||||
|
||||
## 0.25.1 Jan 09, 2019
|
||||
|
||||
Changes:
|
||||
|
||||
Add `@polkadot/{keyring,util,util-crypto,types}` as peerDependencies for the various packages as used. Thie should allow less churn on this repo with version bumps, although it does add some extra effort onto the users of these libraries. (But the assumption is that they use these anyway)
|
||||
|
||||
|
||||
## 0.24.1 Dec 19, 2018
|
||||
|
||||
## 0.23.1 Dec 14, 2018
|
||||
|
||||
## 0.22.1 Dec 05, 2018
|
||||
|
||||
Changes:
|
||||
|
||||
- Split from apps
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
623 Jaco 2.6.2 (#657)
|
||||
7 YJ fix #224: decrease frame size to 1024, set multipart bool (#225)
|
||||
4 Antoine Estienne Refactor logic to better use prefix (#491)
|
||||
4 kwingram25 fix ff api url issue (#289)
|
||||
4 Thibaut Sardan store hardware wallets (#431)
|
||||
3 Luke Sugiura remove language options (#244)
|
||||
3 Stefanie Doll Replace isUndefined util with explicit typeof check (#107)
|
||||
2 Drew Stone Add Edgeware testnet and mainnet updated endpoints (#274)
|
||||
2 Hanwen Cheng allow qr to scan seed qr (#330)
|
||||
2 Nikos Kontakis Fix undefined process error that may appear when using ui (#524)
|
||||
2 Vlad Proshchavaiev Add Subsocial to ss58 defaults (#358)
|
||||
2 Xiliang Chen Update UNfrastructure node label (#160)
|
||||
2 雪霁 Batch export patch up (#455)
|
||||
1 Adam Dossa Add Polymesh Ledger Integration (#427)
|
||||
1 Alex Siman Fix typo in README: stiorage -> storage (#69)
|
||||
1 Alexander Krupenkin Added ECDSA crypto type (#313)
|
||||
1 Andrei Eres Fix raising error if process has not defined yet (#548)
|
||||
1 Axel Chalon Simplify KeyringAddress interface (#144)
|
||||
1 Cameron Franz react-native example app port (#223)
|
||||
1 carumusan Add kulupu (#342)
|
||||
1 Harry Liu Update README.md (#166)
|
||||
1 Jake Naviasky Add Edgeware chain prefix to settings. (#317)
|
||||
1 Logan Saether Propose W3F node (#188)
|
||||
1 Lovesh Harchandani Allow Ledger support for Dock (#425)
|
||||
1 Luke Schoen Fix typo in heading (#114)
|
||||
1 Nantian fix bigint type (#510)
|
||||
1 Nikhil Ranjan Updated to valid javascript (#271)
|
||||
1 Shawn Tabrizi Add a new `notification` setting (#498)
|
||||
1 Wei Tang Add Kulupu to the network selection list (#254)
|
||||
1 WoeOm add darwinia ss58 (#379)
|
||||
1 yuhui1208 [Stores] make FileStroe read key safely (#338)
|
||||
1 Yuri Add webpack 5 support (#557)
|
||||
1 菩提 fix some bugs (#260)
|
||||
@@ -30,5 +30,4 @@ Additionally some shared libraries, that is not dependent on any framework -
|
||||
In addition to the above packages, there are examples available for intergation of `ui-keyring`, `ui-settings` & the relevant `*-identicon` package. These are
|
||||
|
||||
- [example-react](packages/example-react) - start with `yarn example:react` and view on `http://localhost:8080`
|
||||
- [example-reactnative](packages/exampleReactNative) - start with `yarn example:rn:packager` to start the packager service and then either `yarn example:rn:android` or `yarn example:rn:ios` in another terminal
|
||||
- [example-vue](packages/example-vue) - start with `yarn example:vue` and view on `http://localhost:8080`
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
const base = require('@polkadot/dev-react/config/babel');
|
||||
// Copyright 2017-2022 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const base = require('@polkadot/dev/config/babel-config-cjs.cjs');
|
||||
|
||||
module.exports = Object.keys(base).reduce((config, key) => {
|
||||
config[key] = base[key];
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function copy_folder () {
|
||||
SRC="packages/$1/build"
|
||||
DST="../apps/node_modules/@polkadot/$1"
|
||||
|
||||
echo "** Copying $SRC to $DST"
|
||||
|
||||
rm -rf $DST
|
||||
cp -r $SRC $DST
|
||||
}
|
||||
|
||||
yarn polkadot-dev-build-ts
|
||||
|
||||
copy_folder "react-identicon"
|
||||
copy_folder "react-qr"
|
||||
copy_folder "ui-assets"
|
||||
copy_folder "ui-keyring"
|
||||
copy_folder "ui-settings"
|
||||
copy_folder "ui-shared"
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function copy_folder () {
|
||||
SRC="packages/$1/build"
|
||||
DST="../extension/node_modules/@polkadot/$1"
|
||||
|
||||
echo "** Copying $SRC to $DST"
|
||||
|
||||
rm -rf $DST
|
||||
cp -r $SRC $DST
|
||||
}
|
||||
|
||||
yarn polkadot-dev-build-ts
|
||||
|
||||
copy_folder "react-identicon"
|
||||
copy_folder "react-qr"
|
||||
copy_folder "ui-assets"
|
||||
copy_folder "ui-keyring"
|
||||
copy_folder "ui-settings"
|
||||
copy_folder "ui-shared"
|
||||
@@ -1,50 +0,0 @@
|
||||
module.exports = {
|
||||
base: '/ui/',
|
||||
title: 'polkadot-js/ui',
|
||||
description: 'UI utilities, libraries and React components in use across @polkadot projects',
|
||||
markdown: {
|
||||
lineNumbers: true
|
||||
},
|
||||
themeConfig: {
|
||||
displayAllHeaders: true,
|
||||
nav: [
|
||||
{ text: 'Polkadot/Substrate Apps', link: 'https://polkadot.js.org/apps/' },
|
||||
{ text: 'Project family', link: 'https://polkadot.js.org/' },
|
||||
{
|
||||
text: 'Documentation',
|
||||
items: [
|
||||
{ text: 'API Reference', link: 'https://polkadot.js.org/api/' },
|
||||
{ text: 'Utility Reference', link: 'https://polkadot.js.org/common/' },
|
||||
{ text: 'UI Libs Reference (this)', link: 'https://polkadot.js.org/ui/' },
|
||||
]
|
||||
},
|
||||
{ text: 'GitHub', link: 'https://github.com/polkadot-js/ui' }
|
||||
],
|
||||
search: false,
|
||||
sidebar: [
|
||||
{
|
||||
title: 'Getting started',
|
||||
path: '/start/',
|
||||
collapsable: false,
|
||||
sidebarDepth: 0,
|
||||
children: [
|
||||
['start/packages.md', 'Available packages'],
|
||||
['start/keyring.md', 'Keyring'],
|
||||
['start/keyring.accounts.md', 'Keyring accounts'],
|
||||
['start/keyring.derivation.md', 'Account derivation'],
|
||||
['start/keyring.retrieve.md', 'Account retrieval'],
|
||||
['start/keyring.other.md', 'Other addresses'],
|
||||
['start/FAQ.md', 'FAQ']
|
||||
]
|
||||
},
|
||||
['/react-identicon/', '@polkadot/react-identicon'],
|
||||
['/react-qr/', '@polkadot/react-qr'],
|
||||
['/reactnative-identicon/', '@polkadot/reactnative-identicon'],
|
||||
['/ui-keyring/', '@polkadot/ui-keyring'],
|
||||
['/ui-settings/', '@polkadot/ui-settings'],
|
||||
['/ui-shared/', '@polkadot/ui-shared'],
|
||||
['/vue-identicon/', '@polkadot/vue-identicon'],
|
||||
'/CONTRIBUTING.md'
|
||||
]
|
||||
}
|
||||
};
|
||||
@@ -1,9 +0,0 @@
|
||||
$accentColor = #fd8824
|
||||
$textColor = #2c3e50
|
||||
|
||||
.home .hero .description,
|
||||
.home .feature h2,
|
||||
.home .feature p {
|
||||
color: $textColor
|
||||
opacity: 0.75
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="initial-scale=0.5, maximum-scale=1">
|
||||
<meta http-equiv="refresh" content="0;URL='https://polkadot.js.org/docs/'" />
|
||||
<title>Redirecting to https://polkadot.js.org/docs/</title>
|
||||
</head>
|
||||
<body>
|
||||
Redirecting to <a href="https://polkadot.js.org/docs/">https://polkadot.js.org/docs/</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,52 +0,0 @@
|
||||
---
|
||||
home: true
|
||||
heroText:
|
||||
tagline:
|
||||
# Bringing JavaScript to the Polkadot world.
|
||||
# actionText: Repository Overview
|
||||
# actionLink: /REPOS.md
|
||||
features:
|
||||
- title: Frameworks
|
||||
details: We support multiple UI frameworks, including React, React Native and Vue.
|
||||
- title: Identicon
|
||||
details: A flexible identity icon generator supporting a number of display styles based on theme.
|
||||
- title: Keyring
|
||||
details: An extension to the base keyring that allows for additions such as browser storage.
|
||||
|
||||
footer: Apache-2 Licensed | Copyright © 2017-2019 polkadot-js authors and contributors
|
||||
---
|
||||
|
||||
## Welcome
|
||||
|
||||
This is a collection of UI libraries, utilities and classes that allows for easier use of the Polkadot JS infrastructure inside your apps.
|
||||
|
||||
::: tip Getting started
|
||||
For those new to these repose, we provide a [getting started](start/README.md) guide to take you from the tame to the insane.
|
||||
:::
|
||||
|
||||
## Available packages
|
||||
|
||||
This repository split up into a number of internal packages, namely -
|
||||
|
||||
- Examples take a short dive into some functionality, either for [React](example-react/README.md), [React Native](exampleReactNative) and [Vue](example-vue/README.md).
|
||||
- Identicons display identity icons based on theme, available for [React](react-identicon/README.md) also availble for [React Native](reactnative-identicon/README.md) and [Vue](vue-identicon/README.md)
|
||||
- [keyring](ui-keyring/README.md) A keyring with browser-specific extensions
|
||||
- [settings](ui-settings/README.md) Setting management and defaults
|
||||
|
||||
## The Polkadot Project
|
||||
|
||||
You can read more about the Polkadot Network at [https://polkadot.network/](https://polkadot.network/) and more about the polkadot-js projects at [https://polkadot.js.org](https://polkadot.js.org)
|
||||
|
||||
## Github repositories
|
||||
|
||||
You can find the Polkadot repositories at:
|
||||
|
||||
- [https://github.com/polkadot-js](https://github.com/polkadot-js)
|
||||
- [https://github.com/paritytech/polkadot](https://github.com/paritytech/polkadot)
|
||||
- [https://github.com/paritytech/substrate](https://github.com/paritytech/substrate)
|
||||
|
||||
This documentation is generated from [https://github.com/polkadot-js/ui](https://github.com/polkadot-js/ui)
|
||||
|
||||
## Contributing
|
||||
|
||||
Contribution to the Polkadot JS projects are more than welcome. You can [report issues](https://github.com/polkadot-js/ui/issues/new) and [log feature requests](https://github.com/polkadot-js/ui/issues/new).
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="initial-scale=0.5, maximum-scale=1">
|
||||
<meta http-equiv="refresh" content="0;URL='https://polkadot.js.org/docs/'" />
|
||||
<title>Redirecting to https://polkadot.js.org/docs/</title>
|
||||
</head>
|
||||
<body>
|
||||
Redirecting to <a href="https://polkadot.js.org/docs/">https://polkadot.js.org/docs/</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,11 +0,0 @@
|
||||
# FAQ
|
||||
|
||||
The list will be updated/expanded as questions come up, dealing with some common issues that users find.
|
||||
|
||||
## I have a crypto has not been initialized error
|
||||
|
||||
When using the keyring, make sure that you are [initializing the keyring](keyring.md#initialization) before attempting to use it. Generally you would hook this into the async API creation (which transparently caters for the WASM load).
|
||||
|
||||
## My React Native build runs out of memory
|
||||
|
||||
When using the keyring packages with RN, due to a lack of support, an [asm.js fallback](https://github.com/polkadot-js/wasm/issues/19) is provided. This does however all some memory load to the application build process (and is by no means fast), ensure that you adjust your build flags to include `NODE_OPTIONS=--max_old_space_size=8192`, for instance doing `NODE_OPTIONS=--max_old_space_size=8192 yarn run ios`
|
||||
@@ -1,15 +0,0 @@
|
||||
# Getting started
|
||||
|
||||
These sections should provide you with all the information needed to install any packages in this repo, understand the structure of the interfaces and allow you to start using it. It really focusses on the general packages with any framework-specific packages such as icons as detailed in their own section.
|
||||
|
||||
## What this is not
|
||||
|
||||
This is not line-by-line documentation of all the existing function calls available, nor it is tied to a specific framework that you may end up using. We have users using frameworks such as Angular, Electron, React, React Native, Next.js and Vue and even support direct environments such as browser extensions, Electron apps in addition to the normal web applications you may be used to. There will be some things in the libraries that are probably not covered, which brings us to the next point...
|
||||
|
||||
## Help us help others
|
||||
|
||||
If you spot gaps in the information provided, or are uncertain about any specific area, please do [log an issue](https://github.com/polkadot-js/ui/issues) or if you are that way inclined, make a pull-request. We really want to have good documentation in these areas and allow people to be productive right from the start.
|
||||
|
||||
## Ready? Steady? Go!
|
||||
|
||||
If you already have a good grasp on the API and are just looking for a specific answer, you may want to take a look at the [Frequently Asked Questions](FAQ.md). With all that said, let's get started... [What are all these things and what can I do with it](packages.md)
|
||||
@@ -1,49 +0,0 @@
|
||||
# Keyring accounts
|
||||
|
||||
With our keyring setup completed in the previous section, and all available accounts loaded, we are ready to proceed. However we have not actually loaded any accounts yet, since well, we have not created or stored any previously. So let's change that.
|
||||
|
||||
## Adding accounts
|
||||
|
||||
The keyring has a number of ways to add accounts, but in 99% of the cases, you should need only a single method to add an account to the keyring - `addUri(suri: string, password?: string, meta: KeyringPair$Meta = {}, type?: KeypairType)`. Let's jump in with some explicit examples -
|
||||
|
||||
```js
|
||||
import { mnemonicGenerate } from '@polkadot/util-crypto';
|
||||
|
||||
...
|
||||
// generate a random mnemonic, 12 words in length
|
||||
const mnemonic = mnemonicGenerate(12);
|
||||
|
||||
// add the account, encrypt the stored JSON with an account-specific password
|
||||
const { pair, json } = keyring.addUri(mnemonic, 'myStr0ngP@ssworD', { name: 'mnemonic acc' });
|
||||
```
|
||||
|
||||
The above example is relatively straight-forward. Create an account with the specified mnemonic, encrypt the account (as stored) with the password and attach some metadata to the account. It returns a pair instance (we will work with these later) as well as the encrypted json as is saved to the store.
|
||||
|
||||
Metadata is free form, with any indicators that you would find useful in your application. Some fields that are known to be used in (and also exists other keyring entries such as contacts & contracts) includes -
|
||||
|
||||
- `genesisHash` - a hex value of the genesis this accounts belong to. If specified, the account will only be loaded when the same genesisHash is available in the keyring options
|
||||
|
||||
- `name` - a human-readable description for the account
|
||||
|
||||
## Non-mnemonic accounts
|
||||
|
||||
Generally, we would encourage all wallets and users to only support mnemonic phrases - these are portable between crypto implementations, has built-in checksums and is a standard across the blockchain environment.
|
||||
|
||||
In some cases however, either due to the need to provide backwards compatibility or for closed environments, other seed types may be used. The `addUri` will detect the type of input, i.e. if a hex-encoded value is provided, it will treat it as a raw seed. With this in mind, we can rewrite our example above to generate a random raw seed -
|
||||
|
||||
```js
|
||||
import { randomAsHex } from '@polkadot/util-crypto';
|
||||
|
||||
...
|
||||
// generate a random hex raw seed, this needs to be 32 bytes in length
|
||||
const seed = randomAsHex(32);
|
||||
|
||||
// add the account, encrypting it, override to ed25519
|
||||
const { pair, json } = keyring.addUri(seed, 'weakpass', { name: 'hex seed acc' }, 'ed25519');
|
||||
```
|
||||
|
||||
In addition to creating the account in the same fashion as in the preceding section, we are overriding the type of the account created here. Assuming we created the keyring with the `type: 'sr25519'` option, the first mnemonic account was created with an `sr25519` type. Here we specify the type of crypto explicitly, and therefore create a non-default (for this keyring instance) `ed25519` type.
|
||||
|
||||
## Deriving accounts
|
||||
|
||||
In the next section, we will expand our account creation capabilities and take a look at [account derivation and passing suri options](keyring.derivation.md).
|
||||
@@ -1,29 +0,0 @@
|
||||
# Account derivation
|
||||
|
||||
[Secret URIs](https://github.com/paritytech/substrate/wiki/Secret-URI-Test-Vectors) are a way of describing the phrase/seed along with derivation paths. This explains the naming of the default add as `addUri(...)`, it can handle mnemonics, seeds and apply suri derivations on these.
|
||||
|
||||
## Diving in
|
||||
|
||||
As a follow-up on what we have done in the preceding section, we take a dive into expanding our account addition with derivation, in this case we are applying two hard paths, `hard` followed by `derivation` -
|
||||
|
||||
```js
|
||||
...
|
||||
// add the account with hard derivation paths
|
||||
keyring.addUri(`${mnemonic}//hard//derivation`, 'donotcare', { name: 'testing derive' });
|
||||
```
|
||||
|
||||
This format is standard across the `@polkadot/keyring`, `@polkadot/ui-keyring` as well as [Substrate subkey](https://github.com/paritytech/substrate/tree/master/subkey), so it is a Polkadot/Substrate specific way of defining derivation paths.
|
||||
|
||||
## Understanding paths
|
||||
|
||||
To build a suri, you paths, the format is always `<mnemonic or seed>[//hard][/soft][///password]` and it is passed as-is to the `addUri(...)` function. the derivation types are -
|
||||
|
||||
- Soft derivation, i.e `/<soft path>` - Here a single slash, `/`, denotes a soft derivation. Please note that any pair with an `ed25519` type does not support soft derivations, these are only applicable to `sr25519` types.
|
||||
|
||||
- Hard derivation, i.e. `//<hard path>` - Here two slashes, `//`, denoted a hard derivation. This is available to both `sr25519` and `ed25519` pairs. Underlying it will apply a hashing function on the secret, generating a new secret for the remainder of the derivations.
|
||||
|
||||
- Password, i.e. `///<password>` - Here three slashed, `///`, denoted the (optional) password. Unlike hard and soft derivations that can be mixed, only a single password should be specified. The password here applies to the actual uri, not be be confused by the JSON encryption password. It is an additional security layer - if your full mnemonic and all paths do leak without the password, a bad actor would still not be able to generate a compatible secret to access funds without the password.
|
||||
|
||||
## Retrieving accounts
|
||||
|
||||
With a fim grasp on adding accounts, next we will take a look at [retrieving account and account subscriptions](keyring.retrieve.md).
|
||||
@@ -1,104 +0,0 @@
|
||||
# Keyring
|
||||
|
||||
The [@polkadot/ui-keyring](https://www.npmjs.com/package/@polkadot/ui-keyring) package provides a wrapper around the [@polkadot/keyring](https://www.npmjs.com/package/@polkadot/keyring) package, specifically for use in browser environments. The `ui-keyring` only extends the `keyring`, but does not replace it. All underlying account management functions are provided by the base keyring, the browser-specific extensions allows for transparent management of account state in storage.
|
||||
|
||||
Additionally where the base keyring is focussed on accounts, the `ui-keyring` extends this to cater for an address-book, contracts and allows for accounts to be tied to a specific chain. Since UIs are typically split into different parts, it also allows for subscriptions on accounts, so notifications are available when accounts are added or removed.
|
||||
|
||||
## Installation
|
||||
|
||||
If you already use the [@polkadot/api](https://www.npmjs.com/package/@polkadot/api) in your project (which is true in most cases), you don't need anything more than `yarn add @polkadot/ui-keyring`.
|
||||
|
||||
If however you use the `ui-keyring` independently (i.e. in an address generator, like the examples) you would need the `keyring` dependency as well, `yarn add @polkadot/keyring @polkadot/ui-keyring`. (In the first case the `@polkadot/api` already comes bundled with the base keyring, so no additional dependencies are needed).
|
||||
|
||||
## Initialization
|
||||
|
||||
To understand the initialization process, some background on the underlying libraries are required. For the [Schnorrkel sr25519](https://github.com/w3f/schnorrkel) a WASM library is used. This means that before `sr25519` can be used, the WASM libraries needs to be loaded and initialized. This is not an issue when the keyring only uses `ed25519`.
|
||||
|
||||
With this in mind, we take care of the initialization as before we load our keyring, yielding -
|
||||
|
||||
```js
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import { cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
|
||||
cryptoWaitReady().then(() => {
|
||||
// load all available addresses and accounts
|
||||
keyring.loadAll({ ss58Format: 42, type: 'sr25519' });
|
||||
|
||||
// additional initialization here, including rendering
|
||||
});
|
||||
```
|
||||
|
||||
The `cryptoWaitReady()` promise resolves as soon as the underlying WASM libraries have been made available. This is followed by `keyring.loadAll(...)` which is the main initialization for the keyring, which
|
||||
|
||||
- initializes the underlying `@polkadot/keyring`
|
||||
- loads all available accounts, addresses band contracts previously stored
|
||||
- sets up the default address format with `42` (This is the substrate development default. When not specified, this defaults to `42`)
|
||||
- defaults to `sr25519` accounts (We can still add `ed25519` accounts, more on this later. When not specified this defaults to `ed25519`)
|
||||
|
||||
Since you would generally want the keyring available before rendering the UI (although it can be done elsewhere, showing some info while loading), the following pattern is used in our examples, both React and Vue shown here -
|
||||
|
||||
```js
|
||||
...
|
||||
cryptoWaitReady().then(() => {
|
||||
keyring.loadAll({ ... });
|
||||
|
||||
// mount React and render
|
||||
ReactDOM.render(<App />, document.getElementById('app'));
|
||||
});
|
||||
```
|
||||
|
||||
```js
|
||||
...
|
||||
cryptoWaitReady().then(() => {
|
||||
keyring.loadAll({ ... });
|
||||
|
||||
// mount Vue and render
|
||||
new Vue({ render: (h) => h(App) }).$mount('#app');
|
||||
});
|
||||
```
|
||||
|
||||
When using the keyring together with the Polkadot-js API, the above would be adapted since the API itself already has a check for the WASM availability. In this case, we can adapt the interface to follow the following pattern -
|
||||
|
||||
```js
|
||||
import { ApiPromise } from '@polkadot/api';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
|
||||
...
|
||||
ApiPromise.create({ ... }).then(() => {
|
||||
keyring.loadAll({ ... });
|
||||
|
||||
// additional initialization here, including rendering
|
||||
});
|
||||
```
|
||||
|
||||
The above pattern is how initialization is done in some applications such as the [polkadot-js apps UI](https://polkadot.js.org/apps/).
|
||||
|
||||
## Additional create options
|
||||
|
||||
In addition to the `ss58Format` and `type` options (both optional), the following additional configuration options are available to the `loadAll(...)` call -
|
||||
|
||||
- `filter?: (json: KeyringJson) => boolean` - An optional filter that is executed on account loading. This allows us to check the loaded account and apply rules on it before including it in the keyring. Generally this would be used for advanced cases, any account that is filtered with `false` won't appear.
|
||||
|
||||
- `genesisHash?: Hash` - The `genesisHash` of accounts to should be loaded. The meta property of the account _may_ contain a `genesisHash`, when both are available and non-matching, the account will not be included. To populate this option, the easiest way is to pass the `api.genesisHash` property.
|
||||
|
||||
- `isDevelopment?: boolean` - This flag, when set to `true` loads the keyring in development mode. This means that the default development accounts such as "Alice", "Bob", ..., "Ferdie" are included in the keyring. Generally you would only specify this when actually connected to a development chain.
|
||||
|
||||
- `store?: KeyringStore` - An optional store to be used. By default the `ui-keyring` will user browser localStorage, but with a specific store this behavior can be adjusted. For instance, for an extension we would default to the extension store (although localStorage is available) and for Electron apps, we may want to default to file storage.
|
||||
|
||||
```js
|
||||
import { ExtensionStore } from '@polkadot/ui-keyring/stores';
|
||||
|
||||
// For file storage where available, e.g. in Electron environments.
|
||||
// This takes an path in the constructor, new FileStore('~./keyring-data')
|
||||
// import { FileStore } from '@polkadot/ui-keyring/stores';
|
||||
|
||||
// When the store is not specified, it defaults to new BrowserStore()
|
||||
// import { BrowserStore } from '@polkadot/ui-keyring/stores';
|
||||
|
||||
...
|
||||
keyring.loadAll({ store: new ExtensionStore(), ... });
|
||||
```
|
||||
|
||||
## Managing accounts
|
||||
|
||||
With the keyring installed and ready for use, [next we will dive into adding and managing accounts](keyring.accounts.md).
|
||||
@@ -1,41 +0,0 @@
|
||||
# Other addresses
|
||||
|
||||
As mentioned in previous sections, the keyring not only has the ability to manage accounts (i.e. keypairs), but also allows you to add addresses/contacts as well as contracts to the keyring. This is very useful in the case where you are developing a wallet and want to save external addresses to interact with.
|
||||
|
||||
Here we will give an overview of working with addresses, the same concepts can be expanded to work with contracts.
|
||||
|
||||
## Adding an address
|
||||
|
||||
For accounts, we have the `addUri(...)` endpoint that allows us to create and save an account. For addresses, we the keyring exposes `saveAddress (address: string, meta: KeyringPair$Meta)`, which we can use to save any address -
|
||||
|
||||
```js
|
||||
...
|
||||
// add the address
|
||||
const FAUCET_ADDR = 'FvnazYM5KAetYpXoVDfqt9WFcJogKbekXVJ3Fz5oW2Dv82P';
|
||||
const json = keyring.saveAddress(FAUCET_ADDR, { name: 'Alex faucet' });
|
||||
|
||||
// the faucet will now be in the list of available addresses
|
||||
keyring.getAddresses().forEach(...)
|
||||
```
|
||||
|
||||
From this point forward, the address is in your keyring and can be retrieved via the `getAddresses()` interface. The same call can be used to update the meta for the address, for instance if we wish to change the name above, we can do -
|
||||
|
||||
```js
|
||||
...
|
||||
const json = keyring.saveAddress(FAUCET_ADDR, { name: 'Alexander Faucet' });
|
||||
```
|
||||
|
||||
And the already-saved address will be updated with the new metadata.
|
||||
|
||||
## Removing an address
|
||||
|
||||
To clear and address and remove it from the keyring, we can use the `forgetAddress(address: string)` call, this mirrors the `forgetAccount(address: string)` and `forgetContract(address: string)` calls. For instance -
|
||||
|
||||
```js
|
||||
...
|
||||
// remove the specific address
|
||||
keyring.forgetAddress(FAUCET_ADDR);
|
||||
|
||||
/// the faucet will not be in the list of addresses anymore
|
||||
keyring.getAddresses().forEach(...)
|
||||
```
|
||||
@@ -1,57 +0,0 @@
|
||||
# Account retrieval
|
||||
|
||||
Adding accounts is good. Having access to these accounts when added via `const { pair } = keyring.addUr(...)` is better, but being able to access these to iterate over at a later point (even after reload), is magic. Here we will try to add some magic to your experience, allowing you to retrieve accounts as well as subscribe to changes as they happen.
|
||||
|
||||
## Loading all available
|
||||
|
||||
As we've seen in the keyring init section, when we can `loadAll`, it loads all added added - this includes those added via `addUri(...)` which transparently saves to the provided storage. Loading means it is available in the keyring, to get a list of the accounts, we can then do -
|
||||
|
||||
```js
|
||||
import { u8aToHex } from '@polkadot/util';
|
||||
|
||||
...
|
||||
const accounts = keyring.getAccounts();
|
||||
|
||||
accounts.forEach(({ address, meta, publicKey }) =>
|
||||
console.log(address, JSON.stringify(meta), u8aToHex(publicKey));
|
||||
);
|
||||
```
|
||||
|
||||
The above interface was probably not quite what you have been expecting, rather you would have expected to get back a list of the pairs, but rather you received a list of the account descriptors. Some rationale for this approach - since we have `getAccounts()`, `getAddresses()` (for contacts) and `getContracts()` the consistent interface here is applicable. Instead based on an address, you can then retrieve a specific pair -
|
||||
|
||||
```js
|
||||
accounts.forEach(({ address }) => {
|
||||
// retrieve via address or publicKey
|
||||
const pair = getPair(address);
|
||||
|
||||
// display the locked account status
|
||||
console.log(address, pair.isLocked);
|
||||
});
|
||||
```
|
||||
|
||||
Similarly we have a `getPairs()` that mirrors `getAccounts()`, but retrieves the list of available pairs - which is the output you probably expected from the initial `getAccounts()` call.
|
||||
|
||||
## Subscriptions (Optional)
|
||||
|
||||
In addition to the retrieving of accounts on demand, we can actually subscribe to accounts for the keyring. This subscription returns a list of all accounts as they are updated, i.e. when a new account is added it will callback with a list of all the account, including the new one, when an account is removed, it will callback with a list of accounts, excluding the removed member.
|
||||
|
||||
```js
|
||||
...
|
||||
// create a subscription to all available accounts, updated real-time
|
||||
const sub = keyring.accounts.subject.subscribe((accounts) => {
|
||||
accounts.forEach(({ json, option }) =>
|
||||
// json is the stored data, including address
|
||||
// option is a { name: meta.name, value: address }
|
||||
);
|
||||
});
|
||||
|
||||
...
|
||||
// at some point when we are not interested anymore, we can unsubscribe
|
||||
sub.unsubscribe();
|
||||
```
|
||||
|
||||
As with the `get{Accounts|Addresses|Contracts}()` functions, similarly we have in addition to `keyring.accounts.subject` the `keyring.addresses.subject` and `keyring.contracts.subject` subscriptions available, with the same generic result set.
|
||||
|
||||
## Other address types
|
||||
|
||||
We have been referencing contacts and contracts and number of times up till now, up next we will take a look at [how to store other addresses, be if for an address book or contract](keyring.other.md).
|
||||
@@ -1,35 +0,0 @@
|
||||
# Available Packages
|
||||
|
||||
Let's take a slightly deeper diver into the available packages that we provide. While we won't (yet) cover the specifics of Frameworks-specifics (such as React, React Native or Vue), we will also take a slight detour from the rest of the getting started sections, just allowing a comprehensive overview of everything provided... including the framework-specifics.
|
||||
|
||||
## Organization
|
||||
|
||||
Before we get to the available packages, just a note on the organization of the available items. We have a number of types of packages, with the following prefixes -
|
||||
|
||||
- `@polkadot/example-*` - These are very basic examples that shows how to actually use the libraries in your own applications. for instance the `@polkadot/example-vue` shows step-by-step how to build a simple key generator with the keyring and the Vue-specific icons. (The `@polkadot/example-react` is equivalent... and we would love to see the same for React Native...)
|
||||
|
||||
- `@polkadot/ui-*` - These packages are all framework agnostic. It doesn't matter if you use Angular, React or Vue - these packages are designed to be framework independent and should work in any environment that has the intent of being displayed in a browser window, yes, including Electron.
|
||||
|
||||
- `@polkadot/react-*` - As the name suggests, these packages are meant for use with React. In some cases (e.g. UOS support), these may be slightly ahead of other frameworks. However where an equivalent package exists, we always aim for feature parity.
|
||||
|
||||
- `@polkadot/reactnative-*` - Specifically for React Native applications.
|
||||
|
||||
- `@polkadot/vue-*` - Specifically for Vue applications.
|
||||
|
||||
With the above in mind, let's take an initial tour through the various generic implementations.
|
||||
|
||||
## Generic UI libraries
|
||||
|
||||
As indicated, all of the `@polkadot/ui-*` packages are meant to be framework independent. The only common thread between these are that they are designed for use inside a browser, with no requirement for using a development framework.
|
||||
|
||||
The first package we will look at is the [@polkadot/ui-assets package](https://www.npmjs.com/package/@polkadot/ui-assets). It really is just a collection of images that are available for various chains & nodes and makes no assumption about how you are including it in your app, or rather which packager you use.
|
||||
|
||||
Up next is a critical component of any non-trivial app that also manages accounts, [@polkadot/ui-keyring](https://www.npmjs.com/package/@polkadot/ui-keyring). It is a browser-specific wrapper around the [@polkadot/keyring pcakge](https://www.npmjs.com/package/@polkadot/keyring) that transparently handles access to accounts, addresses, contracts and storage (saving accounts between use) all while allowing for swapable storage depending on your environment, be it browser, extension or Electron.
|
||||
|
||||
[@polkadot/ui-settings](https://www.npmjs.com/package/@polkadot/ui-settings) provides a set of default settings, UI end network related, that could be useful to application developers in certain circumstances. The relates to settings such are ss58 formats, network endpoints and other.
|
||||
|
||||
Last-up is the [@polkadot/ui-shared](https://www.npmjs.com/package/@polkadot/ui-shared) package. It is not deemed as generally useful to building apps, but rather contains shared code that is used within other packages, for instance in the generation of icons.
|
||||
|
||||
## Diving in
|
||||
|
||||
Now that we have some bearing of where we are, it is time to take a dive in, [let's start with the keyring and see what we can do](keyring.md).
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright 2017-2022 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const config = require('@polkadot/dev/config/jest.cjs');
|
||||
|
||||
module.exports = {
|
||||
...config,
|
||||
moduleNameMapper: {
|
||||
'@polkadot/react-(identicon|qr)(.*)$': '<rootDir>/packages/react-$1/src/$2',
|
||||
'@polkadot/reactnative-(identicon)(.*)$': '<rootDir>/packages/reactnative-$1/src/$2',
|
||||
'@polkadot/ui-(assets|keyring|settings|shared)(.*)$': '<rootDir>/packages/ui-$1/src/$2',
|
||||
'\\.(css|less)$': 'empty/object',
|
||||
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'empty/object'
|
||||
},
|
||||
setupFilesAfterEnv: ['<rootDir>/jest/setupEnv.js'],
|
||||
testEnvironment: 'jsdom'
|
||||
};
|
||||
@@ -1,12 +0,0 @@
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const config = require('@polkadot/dev-react/config/jest');
|
||||
|
||||
module.exports = Object.assign({}, config, {
|
||||
moduleNameMapper: {
|
||||
'@polkadot/react-(identicon|qr)(.*)$': '<rootDir>/packages/react-$1/src/$2',
|
||||
'@polkadot/reactnative-(identicon)(.*)$': '<rootDir>/packages/reactnative-$1/src/$2',
|
||||
'@polkadot/ui-(assets|keyring|settings|shared)(.*)$': '<rootDir>/packages/ui-$1/src/$2',
|
||||
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'empty/object',
|
||||
'\\.(css|less)$': 'empty/object'
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
// Copyright 2017-2022 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const nodeCrypto = require('crypto');
|
||||
|
||||
window.crypto = {
|
||||
getRandomValues: function (buffer) {
|
||||
return nodeCrypto.randomFillSync(buffer);
|
||||
}
|
||||
};
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"lerna": "2.11.0",
|
||||
"npmClient": "yarn",
|
||||
"useWorkspaces": true,
|
||||
"command": {
|
||||
"publish": {
|
||||
"allowBranch": "master"
|
||||
}
|
||||
},
|
||||
"packages": [
|
||||
"packages/*"
|
||||
],
|
||||
"version": "0.48.1"
|
||||
}
|
||||
@@ -1,40 +1,52 @@
|
||||
{
|
||||
"version": "0.48.1",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"bugs": "https://github.com/polkadot-js/ui/issues",
|
||||
"homepage": "https://github.com/polkadot-js/ui#readme",
|
||||
"license": "Apache-2.0",
|
||||
"packageManager": "yarn@3.2.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"yarn": "^1.10.1"
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"homepage": ".",
|
||||
"sideEffects": false,
|
||||
"version": "2.6.2",
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"resolutions": {
|
||||
"babel-core": "^7.0.0-bridge.0",
|
||||
"typescript": "^3.7.5"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "polkadot-dev-build-ts",
|
||||
"docs": "polkadot-dev-build-docs",
|
||||
"lint": "eslint --ext .js,.jsx,.ts,.tsx . && tsc --noEmit --pretty",
|
||||
"build:release": "polkadot-ci-ghact-build",
|
||||
"build:rollup": "polkadot-exec-rollup --config",
|
||||
"clean": "polkadot-dev-clean-build",
|
||||
"demo:identicon:react": "yarn build:ts && webpack-serve --config packages/react-identicon/webpack.config.js --content packages/react-identicon --port 8080",
|
||||
"demo:identicon:vue": "yarn build:ts && webpack-serve --config packages/vue-identicon/webpack.config.js --content packages/vue-identicon --port 8080",
|
||||
"example:rn:packager": "yarn build:split:code && cd packages/exampleReactNative && yarn copy-workspace-packages && yarn start",
|
||||
"example:rn:ios": "cd packages/exampleReactNative && cd ios && pod install && cd .. && yarn ios",
|
||||
"example:rn:android": "cd packages/exampleReactNative && yarn android",
|
||||
"example:react": "yarn build:ts && cd packages/example-react && webpack --config webpack.config.js",
|
||||
"example:vue": "yarn build:ts && cd packages/example-vue && webpack --config webpack.config.js",
|
||||
"example:react": "yarn build && cd packages/example-react && webpack --config webpack.config.cjs",
|
||||
"example:vue": "yarn build && cd packages/example-vue && webpack --config webpack.config.cjs",
|
||||
"lint": "polkadot-dev-run-lint",
|
||||
"postinstall": "polkadot-dev-yarn-only",
|
||||
"test": "jest --coverage --runInBand",
|
||||
"test:one": "jest"
|
||||
"test": "polkadot-dev-run-test --coverage --runInBand",
|
||||
"test:one": "polkadot-dev-run-test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.8.3",
|
||||
"@babel/runtime": "^7.8.3",
|
||||
"@polkadot/dev-react": "^0.33.3",
|
||||
"@polkadot/ts": "^0.2.1",
|
||||
"@babel/core": "^7.18.5",
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/dev": "^0.67.42",
|
||||
"@polkadot/x-bundle": "^9.6.2",
|
||||
"@types/jest": "^28.1.3",
|
||||
"babel-loader": "^8.2.5",
|
||||
"babel-plugin-transform-vue-template": "^0.4.2",
|
||||
"empty": "^0.10.1",
|
||||
"react-native": "^0.61.4"
|
||||
"process": "^0.11.10",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-is": "^18.2.0",
|
||||
"react-native": "^0.69.0",
|
||||
"stream-browserify": "^3.0.0",
|
||||
"vue-template-compiler": "^2.6.14",
|
||||
"webpack": "^5.73.0",
|
||||
"webpack-cli": "^4.10.0",
|
||||
"webpack-serve": "^4.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"typescript": "^4.7.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
{
|
||||
"name": "@polkadot/example-react",
|
||||
"version": "0.48.1",
|
||||
"description": "A very basic example with ui-* & react-* packages",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"bugs": "https://github.com/polkadot-js/ui/issues",
|
||||
"contributors": [],
|
||||
"description": "A very basic example with ui-* & react-* packages",
|
||||
"homepage": "https://github.com/polkadot-js/ui/tree/master/packages/example-react#readme",
|
||||
"license": "Apache-2.0",
|
||||
"maintainers": [],
|
||||
"name": "@polkadot/example-react",
|
||||
"private": true,
|
||||
"repository": {
|
||||
"directory": "packages/example-react",
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "2.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.8.3"
|
||||
"@babel/runtime": "^7.18.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Empty template, auto-generated by @polkadot/dev
|
||||
|
||||
export default [];
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright 2017-2022 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import others from './detectOther';
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, null, others);
|
||||
@@ -1,13 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
// Copyright 2017-2022 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import Identicon from '@polkadot/react-identicon';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import settings from '@polkadot/ui-settings';
|
||||
import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
|
||||
import { Identicon } from '@polkadot/react-identicon';
|
||||
import { keyring } from '@polkadot/ui-keyring';
|
||||
import { settings } from '@polkadot/ui-settings';
|
||||
import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto';
|
||||
|
||||
interface Props {
|
||||
className?: string;
|
||||
@@ -24,19 +24,27 @@ function App ({ className }: Props): React.ReactElement<Props> | null {
|
||||
const [phrase, setPhrase] = useState<string | null>(null);
|
||||
const [ss58Format, setSS58Format] = useState(42);
|
||||
|
||||
const _onClickNew = (): void => {
|
||||
const phrase = mnemonicGenerate(12);
|
||||
const { address } = keyring.createFromUri(phrase);
|
||||
const _onClickNew = useCallback(
|
||||
(): void => {
|
||||
const phrase = mnemonicGenerate(12);
|
||||
const { address } = keyring.createFromUri(phrase);
|
||||
|
||||
setAddress(keyring.encodeAddress(address, ss58Format));
|
||||
setPhrase(phrase);
|
||||
};
|
||||
const _onChangeSS58Format = ({ currentTarget: { value } }: React.SyntheticEvent<HTMLSelectElement>): void => {
|
||||
setSS58Format(parseInt(value, 10));
|
||||
};
|
||||
setAddress(keyring.encodeAddress(address, ss58Format));
|
||||
setPhrase(phrase);
|
||||
},
|
||||
[ss58Format]
|
||||
);
|
||||
|
||||
const _onChangeSS58Format = useCallback(
|
||||
({ currentTarget: { value } }: React.SyntheticEvent<HTMLSelectElement>): void => {
|
||||
setSS58Format(parseInt(value, 10));
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
useEffect((): void => {
|
||||
_onClickNew();
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
useEffect((): void => {
|
||||
@@ -54,13 +62,29 @@ function App ({ className }: Props): React.ReactElement<Props> | null {
|
||||
</section>
|
||||
<section>
|
||||
<label>phrase</label>
|
||||
<textarea cols={40} rows={4} readOnly value={phrase} />
|
||||
<textarea
|
||||
cols={40}
|
||||
readOnly
|
||||
rows={4}
|
||||
value={phrase}
|
||||
/>
|
||||
</section>
|
||||
<section>
|
||||
<label>icons</label>
|
||||
<Identicon className='icon' value={address} />
|
||||
<Identicon className='icon' value={address} theme='polkadot' />
|
||||
<Identicon className='icon' value={address} theme='beachball' />
|
||||
<Identicon
|
||||
className='icon'
|
||||
value={address}
|
||||
/>
|
||||
<Identicon
|
||||
className='icon'
|
||||
theme='polkadot'
|
||||
value={address}
|
||||
/>
|
||||
<Identicon
|
||||
className='icon'
|
||||
theme='beachball'
|
||||
value={address}
|
||||
/>
|
||||
</section>
|
||||
<section>
|
||||
<label>address</label>
|
||||
@@ -68,11 +92,19 @@ function App ({ className }: Props): React.ReactElement<Props> | null {
|
||||
</section>
|
||||
<section>
|
||||
<label>ss58 format</label>
|
||||
<select onChange={_onChangeSS58Format} value={ss58Format}>
|
||||
<select
|
||||
onChange={_onChangeSS58Format}
|
||||
value={ss58Format}
|
||||
>
|
||||
{settings.availablePrefixes
|
||||
.filter((_, index): boolean => index !== 0)
|
||||
.map(({ text, value }): React.ReactNode => (
|
||||
<option key={value} value={value}>{text}</option>
|
||||
<option
|
||||
key={value}
|
||||
value={value}
|
||||
>
|
||||
{text}
|
||||
</option>
|
||||
))
|
||||
}
|
||||
</select>
|
||||
@@ -81,7 +113,9 @@ function App ({ className }: Props): React.ReactElement<Props> | null {
|
||||
);
|
||||
}
|
||||
|
||||
cryptoWaitReady().then((): void => {
|
||||
keyring.loadAll({ ss58Format: 42, type: 'sr25519' });
|
||||
ReactDOM.render(<App />, rootElement);
|
||||
});
|
||||
cryptoWaitReady()
|
||||
.then((): void => {
|
||||
keyring.loadAll({ ss58Format: 42, type: 'sr25519' });
|
||||
ReactDOM.render(<App />, rootElement);
|
||||
})
|
||||
.catch(console.error);
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/example-react', path: 'auto', type: 'auto', version: '2.6.2' };
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"references": [
|
||||
{ "path": "../react-identicon/tsconfig.build.json" },
|
||||
{ "path": "../ui-keyring/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -1,22 +1,43 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
// Copyright 2017-2022 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
const { WebpackPluginServe } = require('webpack-plugin-serve');
|
||||
|
||||
module.exports = {
|
||||
context: __dirname,
|
||||
devtool: 'cheap-eval-source-map',
|
||||
devtool: 'eval-cheap-source-map',
|
||||
entry: './src/index.tsx',
|
||||
mode: 'development',
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
exclude: /(node_modules)/,
|
||||
test: /\.(ts|tsx)$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'babel-loader',
|
||||
options: require('../../babel.config.cjs')
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
output: {
|
||||
chunkFilename: '[name].[chunkhash:8].js',
|
||||
globalObject: '(typeof self !== \'undefined\' ? self : this)',
|
||||
filename: '[name].js',
|
||||
globalObject: '(typeof self !== \'undefined\' ? self : this)',
|
||||
path: path.join(__dirname, 'build')
|
||||
},
|
||||
plugins: [
|
||||
new WebpackPluginServe({
|
||||
hmr: false, // switch off, Chrome WASM memory leak
|
||||
liveReload: false, // explict off, overrides hmr
|
||||
port: 8080,
|
||||
progress: false, // since we have hmr off, disable
|
||||
static: __dirname
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@polkadot/react-identicon': path.resolve(__dirname, '../react-identicon/build'),
|
||||
@@ -24,30 +45,9 @@ module.exports = {
|
||||
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
|
||||
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build')
|
||||
},
|
||||
extensions: ['.js', '.ts', '.tsx']
|
||||
extensions: ['.js', '.ts', '.tsx'],
|
||||
fallback: {}
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.(ts|tsx)$/,
|
||||
exclude: /(node_modules)/,
|
||||
use: [
|
||||
{
|
||||
loader: 'babel-loader',
|
||||
options: require('../../babel.config.js')
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
plugins: [
|
||||
new WebpackPluginServe({
|
||||
hmr: false, // switch off, Chrome WASM memory leak
|
||||
liveReload: false, // explict off, overrides hmr
|
||||
progress: false, // since we have hmr off, disable
|
||||
port: 8080,
|
||||
static: __dirname
|
||||
})
|
||||
],
|
||||
target: 'web',
|
||||
watch: true
|
||||
};
|
||||
@@ -1,14 +1,22 @@
|
||||
{
|
||||
"name": "@polkadot/example-vue",
|
||||
"version": "0.48.1",
|
||||
"description": "A very basic example with ui-* & vue-* packages",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"bugs": "https://github.com/polkadot-js/ui/issues",
|
||||
"contributors": [],
|
||||
"description": "A very basic example with ui-* & vue-* packages",
|
||||
"homepage": "https://github.com/polkadot-js/ui/tree/master/packages/example-vue#readme",
|
||||
"license": "Apache-2.0",
|
||||
"maintainers": [],
|
||||
"name": "@polkadot/example-vue",
|
||||
"private": true,
|
||||
"repository": {
|
||||
"directory": "packages/example-vue",
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "2.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.8.3"
|
||||
"@babel/runtime": "^7.18.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Empty template, auto-generated by @polkadot/dev
|
||||
|
||||
export default [];
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright 2017-2022 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import others from './detectOther';
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, null, others);
|
||||
@@ -1,13 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/example-vue authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
// Copyright 2017-2022 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
|
||||
import Vue, { VNode } from 'vue';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import settings from '@polkadot/ui-settings';
|
||||
import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
|
||||
import { keyring } from '@polkadot/ui-keyring';
|
||||
import { settings } from '@polkadot/ui-settings';
|
||||
import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto';
|
||||
import Identicon from '@polkadot/vue-identicon';
|
||||
|
||||
interface Account {
|
||||
@@ -33,6 +33,25 @@ function generateAccount (ss58Format: Prefix = 42): Account {
|
||||
}
|
||||
|
||||
const Example = Vue.extend({
|
||||
components: {
|
||||
Identicon
|
||||
},
|
||||
data: function (): Data {
|
||||
return {
|
||||
...generateAccount(),
|
||||
ss58Format: 42,
|
||||
ss58Options
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onClickNew: function (): void {
|
||||
const { address, phrase } = generateAccount(this.ss58Format);
|
||||
|
||||
this.address = address;
|
||||
this.phrase = phrase;
|
||||
}
|
||||
},
|
||||
name: 'Example',
|
||||
template: `
|
||||
<div id="example">
|
||||
<section>
|
||||
@@ -62,25 +81,6 @@ const Example = Vue.extend({
|
||||
</section>
|
||||
</div>
|
||||
`,
|
||||
name: 'Example',
|
||||
components: {
|
||||
Identicon
|
||||
},
|
||||
data: function (): Data {
|
||||
return {
|
||||
...generateAccount(),
|
||||
ss58Format: 42,
|
||||
ss58Options
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onClickNew: function (): void {
|
||||
const { address, phrase } = generateAccount(this.ss58Format);
|
||||
|
||||
this.address = address;
|
||||
this.phrase = phrase;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
ss58Format: function (): void {
|
||||
this.address = keyring.encodeAddress(this.address, this.ss58Format);
|
||||
@@ -88,10 +88,12 @@ const Example = Vue.extend({
|
||||
}
|
||||
});
|
||||
|
||||
cryptoWaitReady().then((): void => {
|
||||
keyring.loadAll({ ss58Format: 42, type: 'sr25519' });
|
||||
cryptoWaitReady()
|
||||
.then((): void => {
|
||||
keyring.loadAll({ ss58Format: 42, type: 'sr25519' });
|
||||
|
||||
new Vue({
|
||||
render: (h): VNode => h(Example)
|
||||
}).$mount('#example');
|
||||
});
|
||||
new Vue({
|
||||
render: (h): VNode => h(Example)
|
||||
}).$mount('#example');
|
||||
})
|
||||
.catch(console.error);
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/example-vue', path: 'auto', type: 'auto', version: '2.6.2' };
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"references": [
|
||||
{ "path": "../ui-keyring/tsconfig.build.json" },
|
||||
{ "path": "../vue-identicon/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -1,24 +1,43 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
// Copyright 2017-2020 @polkadot/example-vue authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
// Copyright 2017-2022 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const path = require('path');
|
||||
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
||||
const { WebpackPluginServe } = require('webpack-plugin-serve');
|
||||
|
||||
module.exports = {
|
||||
context: __dirname,
|
||||
devtool: 'cheap-eval-source-map',
|
||||
devtool: 'eval-cheap-source-map',
|
||||
entry: './src/index.ts',
|
||||
mode: 'development',
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
exclude: /(node_modules)/,
|
||||
test: /\.(ts|tsx)$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'babel-loader',
|
||||
options: require('../../babel.config.cjs')
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
output: {
|
||||
chunkFilename: '[name].[chunkhash:8].js',
|
||||
globalObject: '(typeof self !== \'undefined\' ? self : this)',
|
||||
filename: '[name].js',
|
||||
globalObject: '(typeof self !== \'undefined\' ? self : this)',
|
||||
path: path.join(__dirname, 'build')
|
||||
},
|
||||
plugins: [
|
||||
new WebpackPluginServe({
|
||||
hmr: false, // switch off, Chrome WASM memory leak
|
||||
liveReload: false, // explict off, overrides hmr
|
||||
port: 8080,
|
||||
progress: false, // since we have hmr off, disable
|
||||
static: __dirname
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@polkadot/ui-keyring': path.resolve(__dirname, '../ui-keyring/build'),
|
||||
@@ -28,33 +47,6 @@ module.exports = {
|
||||
},
|
||||
extensions: ['.js', '.ts', '.tsx']
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.(ts|tsx)$/,
|
||||
exclude: /(node_modules)/,
|
||||
use: [
|
||||
{
|
||||
loader: 'babel-loader',
|
||||
options: require('../../babel.config.js')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.vue$/,
|
||||
loader: 'vue-loader'
|
||||
}
|
||||
]
|
||||
},
|
||||
plugins: [
|
||||
new WebpackPluginServe({
|
||||
hmr: false, // switch off, Chrome WASM memory leak
|
||||
liveReload: false, // explict off, overrides hmr
|
||||
progress: false, // since we have hmr off, disable
|
||||
port: 8080,
|
||||
static: __dirname
|
||||
}),
|
||||
new VueLoaderPlugin()
|
||||
],
|
||||
target: 'web',
|
||||
watch: true
|
||||
};
|
||||
@@ -1,64 +0,0 @@
|
||||
# OSX
|
||||
#
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
#
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
project.xcworkspace
|
||||
|
||||
# Android/IntelliJ
|
||||
#
|
||||
build/
|
||||
.idea
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
|
||||
# Visual Studio Code
|
||||
#
|
||||
.vscode/
|
||||
|
||||
# node.js
|
||||
#
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# BUCK
|
||||
buck-out/
|
||||
\.buckd/
|
||||
*.keystore
|
||||
!debug.keystore
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
# screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/
|
||||
|
||||
*/fastlane/report.xml
|
||||
*/fastlane/Preview.html
|
||||
*/fastlane/screenshots
|
||||
|
||||
# Bundle artifact
|
||||
*.jsbundle
|
||||
|
||||
# CocoaPods
|
||||
/ios/Pods/
|
||||
@@ -1,143 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Button, SafeAreaView, ScrollView, StatusBar, StyleSheet, Text, View } from 'react-native';
|
||||
import { Colors } from 'react-native/Libraries/NewAppScreen';
|
||||
import Identicon from '@polkadot/reactnative-identicon';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import settings from '@polkadot/ui-settings';
|
||||
import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
scrollView: {
|
||||
backgroundColor: Colors.lighter
|
||||
},
|
||||
body: {
|
||||
backgroundColor: Colors.white
|
||||
},
|
||||
sectionContainer: {
|
||||
marginTop: 32,
|
||||
paddingHorizontal: 24
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 24,
|
||||
fontWeight: '600',
|
||||
color: Colors.black
|
||||
},
|
||||
mainTitle: {
|
||||
fontSize: 28,
|
||||
fontWeight: '600',
|
||||
color: Colors.black
|
||||
},
|
||||
sectionDescription: {
|
||||
marginTop: 8,
|
||||
fontSize: 18,
|
||||
fontWeight: '400',
|
||||
color: Colors.dark
|
||||
},
|
||||
buttonContainer: {
|
||||
flex: 1,
|
||||
flexDirection: 'column',
|
||||
alignItems: 'flex-start'
|
||||
}
|
||||
});
|
||||
|
||||
const globalAny = global as unknown as Window;
|
||||
|
||||
export default function App (): React.ReactElement<{}> | null {
|
||||
const [ready, setReady] = useState(false);
|
||||
const [address, setAddress] = useState<string | null>(null);
|
||||
const [phrase, setPhrase] = useState<string | null>(null);
|
||||
const [ss58Format, setSS58Format] = useState(42);
|
||||
|
||||
const _onClickNew = (): void => {
|
||||
const phrase = mnemonicGenerate(12);
|
||||
const { address } = keyring.createFromUri(phrase);
|
||||
|
||||
setAddress(keyring.encodeAddress(address, ss58Format));
|
||||
setPhrase(phrase);
|
||||
};
|
||||
|
||||
const _onChangeSS58Format = (value: string): void => {
|
||||
setSS58Format(parseInt(value, 10));
|
||||
};
|
||||
|
||||
useEffect((): void => {
|
||||
ready && _onClickNew();
|
||||
}, []);
|
||||
|
||||
useEffect((): void => {
|
||||
ready && address && setAddress(keyring.encodeAddress(address, ss58Format));
|
||||
}, [address, ss58Format]);
|
||||
|
||||
const initialize = async (): Promise<void> => {
|
||||
try {
|
||||
keyring.loadAll({ ss58Format: 42, type: 'sr25519' });
|
||||
} catch (e) {
|
||||
console.log('Error loading keyring ', e);
|
||||
}
|
||||
await globalAny.localStorage.init();
|
||||
await cryptoWaitReady();
|
||||
setReady(true);
|
||||
_onClickNew();
|
||||
};
|
||||
|
||||
if (!ready) {
|
||||
initialize();
|
||||
}
|
||||
|
||||
if (!ready || !address || !phrase) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<StatusBar barStyle='dark-content' />
|
||||
<SafeAreaView>
|
||||
<ScrollView
|
||||
contentInsetAdjustmentBehavior='automatic'
|
||||
style={styles.scrollView}>
|
||||
<View style={styles.body}>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.mainTitle}>React-Native Example</Text>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Button title='Generate Address' onPress={_onClickNew}></Button>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>Phrase</Text>
|
||||
<Text selectable={true} style={styles.sectionDescription}>
|
||||
{phrase}
|
||||
</Text>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>Icons</Text>
|
||||
<Identicon value={address} />
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>Address</Text>
|
||||
<Text style={styles.sectionDescription}>{address}</Text>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>SS58 Format</Text>
|
||||
<View style={styles.buttonContainer}>
|
||||
{settings.availablePrefixes
|
||||
.filter((_, index): boolean => index !== 0)
|
||||
.map(({ text, value }): React.ReactNode => (
|
||||
<Button
|
||||
key={value}
|
||||
title={text}
|
||||
onPress={(): void => _onChangeSS58Format(value.toString())}
|
||||
/>
|
||||
))
|
||||
}
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</ScrollView>
|
||||
</SafeAreaView>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
# Running
|
||||
|
||||
For iOS, make sure that Xcode and [CocoaPods](https://cocoapods.org/) are installed.
|
||||
|
||||
For Android, make sure that Android Studio and a JDK are installed.
|
||||
|
||||
At the repo root, run the bundler `yarn example:rn:packager` and, in a new terminal, `yarn example:rn:ios` or `yarn example:rn:android`.
|
||||
|
||||
If the iOS run complains about a missing simulator, use `yarn ios --simulator="iPhone 11"`, where `iPhone 11` is replaced with an installed simulator (see `xcrun simctl list devices`)
|
||||
|
||||
The first time metro bundles the package, it will hang at 98% and take about 10 minutes to finish. Just refresh the simulator when it finishes.
|
||||
|
||||
# Packages
|
||||
|
||||
Native packages need to be added to `nohoist` in the `package.json`. There is no need to link them, but `cd ios && pod install` must be run after yarn adds the package.
|
||||
|
||||
Non-native packages can be yarn added as usual.
|
||||
|
||||
Replacements for node builtin packages can be added in the `extraNodeModules` section of `metro.config.js`. Some node packages will expect global variables to be set, these are set in `nodeGlobalsShim.js`
|
||||
|
||||
# Yarn Workspaces
|
||||
|
||||
Metro will watch the build dirs of the packages in `packages/*` for changes, as well as use the `node_modules` of the root folder. However, packages that depend on the `nohoist`ed `react-native` , such as `reactnative-identicon`, must be copied to the local `node_modules` folder. See `metro.config.js` and `package.json`'s scripts for details.
|
||||
|
||||
# Screenshots
|
||||
|
||||
iOs | Android
|
||||
:-------------------------:|:-------------------------:
|
||||
 | 
|
||||
@@ -1,55 +0,0 @@
|
||||
# To learn about Buck see [Docs](https://buckbuild.com/).
|
||||
# To run your application with Buck:
|
||||
# - install Buck
|
||||
# - `npm start` - to start the packager
|
||||
# - `cd android`
|
||||
# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
|
||||
# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
|
||||
# - `buck install -r android/app` - compile, install and run application
|
||||
#
|
||||
|
||||
load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
|
||||
|
||||
lib_deps = []
|
||||
|
||||
create_aar_targets(glob(["libs/*.aar"]))
|
||||
|
||||
create_jar_targets(glob(["libs/*.jar"]))
|
||||
|
||||
android_library(
|
||||
name = "all-libs",
|
||||
exported_deps = lib_deps,
|
||||
)
|
||||
|
||||
android_library(
|
||||
name = "app-code",
|
||||
srcs = glob([
|
||||
"src/main/java/**/*.java",
|
||||
]),
|
||||
deps = [
|
||||
":all-libs",
|
||||
":build_config",
|
||||
":res",
|
||||
],
|
||||
)
|
||||
|
||||
android_build_config(
|
||||
name = "build_config",
|
||||
package = "com.examplereactnative",
|
||||
)
|
||||
|
||||
android_resource(
|
||||
name = "res",
|
||||
package = "com.examplereactnative",
|
||||
res = "src/main/res",
|
||||
)
|
||||
|
||||
android_binary(
|
||||
name = "app",
|
||||
keystore = "//android/keystores:debug",
|
||||
manifest = "src/main/AndroidManifest.xml",
|
||||
package_type = "debug",
|
||||
deps = [
|
||||
":app-code",
|
||||
],
|
||||
)
|
||||
@@ -1,202 +0,0 @@
|
||||
apply plugin: "com.android.application"
|
||||
|
||||
import com.android.build.OutputFile
|
||||
|
||||
/**
|
||||
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
|
||||
* and bundleReleaseJsAndAssets).
|
||||
* These basically call `react-native bundle` with the correct arguments during the Android build
|
||||
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
|
||||
* bundle directly from the development server. Below you can see all the possible configurations
|
||||
* and their defaults. If you decide to add a configuration block, make sure to add it before the
|
||||
* `apply from: "../../node_modules/react-native/react.gradle"` line.
|
||||
*
|
||||
* project.ext.react = [
|
||||
* // the name of the generated asset file containing your JS bundle
|
||||
* bundleAssetName: "index.android.bundle",
|
||||
*
|
||||
* // the entry file for bundle generation
|
||||
* entryFile: "index.android.js",
|
||||
*
|
||||
* // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
|
||||
* bundleCommand: "ram-bundle",
|
||||
*
|
||||
* // whether to bundle JS and assets in debug mode
|
||||
* bundleInDebug: false,
|
||||
*
|
||||
* // whether to bundle JS and assets in release mode
|
||||
* bundleInRelease: true,
|
||||
*
|
||||
* // whether to bundle JS and assets in another build variant (if configured).
|
||||
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
|
||||
* // The configuration property can be in the following formats
|
||||
* // 'bundleIn${productFlavor}${buildType}'
|
||||
* // 'bundleIn${buildType}'
|
||||
* // bundleInFreeDebug: true,
|
||||
* // bundleInPaidRelease: true,
|
||||
* // bundleInBeta: true,
|
||||
*
|
||||
* // whether to disable dev mode in custom build variants (by default only disabled in release)
|
||||
* // for example: to disable dev mode in the staging build type (if configured)
|
||||
* devDisabledInStaging: true,
|
||||
* // The configuration property can be in the following formats
|
||||
* // 'devDisabledIn${productFlavor}${buildType}'
|
||||
* // 'devDisabledIn${buildType}'
|
||||
*
|
||||
* // the root of your project, i.e. where "package.json" lives
|
||||
* root: "../../",
|
||||
*
|
||||
* // where to put the JS bundle asset in debug mode
|
||||
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
|
||||
*
|
||||
* // where to put the JS bundle asset in release mode
|
||||
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
|
||||
*
|
||||
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||
* // require('./image.png')), in debug mode
|
||||
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
|
||||
*
|
||||
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||
* // require('./image.png')), in release mode
|
||||
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
|
||||
*
|
||||
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
|
||||
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
|
||||
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
|
||||
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
|
||||
* // for example, you might want to remove it from here.
|
||||
* inputExcludes: ["android/**", "ios/**"],
|
||||
*
|
||||
* // override which node gets called and with what additional arguments
|
||||
* nodeExecutableAndArgs: ["node"],
|
||||
*
|
||||
* // supply additional arguments to the packager
|
||||
* extraPackagerArgs: []
|
||||
* ]
|
||||
*/
|
||||
|
||||
project.ext.react = [
|
||||
entryFile: "index.js",
|
||||
nodeExecutableAndArgs : ["node","--max_old_space_size=8192"],
|
||||
enableHermes: false, // clean and rebuild if changing
|
||||
]
|
||||
|
||||
apply from: "../../node_modules/react-native/react.gradle"
|
||||
|
||||
/**
|
||||
* Set this to true to create two separate APKs instead of one:
|
||||
* - An APK that only works on ARM devices
|
||||
* - An APK that only works on x86 devices
|
||||
* The advantage is the size of the APK is reduced by about 4MB.
|
||||
* Upload all the APKs to the Play Store and people will download
|
||||
* the correct one based on the CPU architecture of their device.
|
||||
*/
|
||||
def enableSeparateBuildPerCPUArchitecture = false
|
||||
|
||||
/**
|
||||
* Run Proguard to shrink the Java bytecode in release builds.
|
||||
*/
|
||||
def enableProguardInReleaseBuilds = false
|
||||
|
||||
/**
|
||||
* The preferred build flavor of JavaScriptCore.
|
||||
*
|
||||
* For example, to use the international variant, you can use:
|
||||
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
|
||||
*
|
||||
* The international variant includes ICU i18n library and necessary data
|
||||
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
|
||||
* give correct results when using with locales other than en-US. Note that
|
||||
* this variant is about 6MiB larger per architecture than default.
|
||||
*/
|
||||
def jscFlavor = 'org.webkit:android-jsc:+'
|
||||
|
||||
/**
|
||||
* Whether to enable the Hermes VM.
|
||||
*
|
||||
* This should be set on project.ext.react and mirrored here. If it is not set
|
||||
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
||||
* and the benefits of using Hermes will therefore be sharply reduced.
|
||||
*/
|
||||
def enableHermes = project.ext.react.get("enableHermes", false);
|
||||
|
||||
android {
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.examplereactnative"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
}
|
||||
splits {
|
||||
abi {
|
||||
reset()
|
||||
enable enableSeparateBuildPerCPUArchitecture
|
||||
universalApk false // If true, also generate a universal APK
|
||||
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
}
|
||||
}
|
||||
signingConfigs {
|
||||
debug {
|
||||
storeFile file('debug.keystore')
|
||||
storePassword 'android'
|
||||
keyAlias 'androiddebugkey'
|
||||
keyPassword 'android'
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
debug {
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
release {
|
||||
// Caution! In production, you need to generate your own keystore file.
|
||||
// see https://facebook.github.io/react-native/docs/signed-apk-android.
|
||||
signingConfig signingConfigs.debug
|
||||
minifyEnabled enableProguardInReleaseBuilds
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
}
|
||||
}
|
||||
// applicationVariants are e.g. debug, release
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
// For each separate APK per architecture, set a unique version code as described here:
|
||||
// https://developer.android.com/studio/build/configure-apk-splits.html
|
||||
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
||||
def abi = output.getFilter(OutputFile.ABI)
|
||||
if (abi != null) { // null for the universal-debug, universal-release variants
|
||||
output.versionCodeOverride =
|
||||
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||
|
||||
if (enableHermes) {
|
||||
def hermesPath = "../../node_modules/hermes-engine/android/";
|
||||
debugImplementation files(hermesPath + "hermes-debug.aar")
|
||||
releaseImplementation files(hermesPath + "hermes-release.aar")
|
||||
} else {
|
||||
implementation jscFlavor
|
||||
}
|
||||
}
|
||||
|
||||
// Run this once to be able to run the application with BUCK
|
||||
// puts all compile dependencies into folder libs for BUCK to use
|
||||
task copyDownloadableDepsToLibs(type: Copy) {
|
||||
from configurations.compile
|
||||
into 'libs'
|
||||
}
|
||||
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||
@@ -1,19 +0,0 @@
|
||||
"""Helper definitions to glob .aar and .jar targets"""
|
||||
|
||||
def create_aar_targets(aarfiles):
|
||||
for aarfile in aarfiles:
|
||||
name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
|
||||
lib_deps.append(":" + name)
|
||||
android_prebuilt_aar(
|
||||
name = name,
|
||||
aar = aarfile,
|
||||
)
|
||||
|
||||
def create_jar_targets(jarfiles):
|
||||
for jarfile in jarfiles:
|
||||
name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
|
||||
lib_deps.append(":" + name)
|
||||
prebuilt_jar(
|
||||
name = name,
|
||||
binary_jar = jarfile,
|
||||
)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
|
||||
</manifest>
|
||||
@@ -1,26 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.examplereactnative">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<application
|
||||
android:name=".MainApplication"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:allowBackup="false"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.examplereactnative;
|
||||
|
||||
import com.facebook.react.ReactActivity;
|
||||
|
||||
public class MainActivity extends ReactActivity {
|
||||
|
||||
/**
|
||||
* Returns the name of the main component registered from JavaScript. This is used to schedule
|
||||
* rendering of the component.
|
||||
*/
|
||||
@Override
|
||||
protected String getMainComponentName() {
|
||||
return "exampleReactNative";
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
package com.examplereactnative;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import com.facebook.react.PackageList;
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.List;
|
||||
|
||||
public class MainApplication extends Application implements ReactApplication {
|
||||
|
||||
private final ReactNativeHost mReactNativeHost =
|
||||
new ReactNativeHost(this) {
|
||||
@Override
|
||||
public boolean getUseDeveloperSupport() {
|
||||
return BuildConfig.DEBUG;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<ReactPackage> getPackages() {
|
||||
@SuppressWarnings("UnnecessaryLocalVariable")
|
||||
List<ReactPackage> packages = new PackageList(this).getPackages();
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// packages.add(new MyReactNativePackage());
|
||||
return packages;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getJSMainModuleName() {
|
||||
return "index";
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public ReactNativeHost getReactNativeHost() {
|
||||
return mReactNativeHost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
initializeFlipper(this); // Remove this line if you don't want Flipper enabled
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Flipper in React Native templates.
|
||||
*
|
||||
* @param context
|
||||
*/
|
||||
private static void initializeFlipper(Context context) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
try {
|
||||
/*
|
||||
We use reflection here to pick up the class that initializes Flipper,
|
||||
since Flipper library is not available in release mode
|
||||
*/
|
||||
Class<?> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper");
|
||||
aClass.getMethod("initializeFlipper", Context.class).invoke(null, context);
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@@ -1,3 +0,0 @@
|
||||
<resources>
|
||||
<string name="app_name">Hello App Display Name</string>
|
||||
</resources>
|
||||
@@ -1,9 +0,0 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:textColor">#000000</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
@@ -1,38 +0,0 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "28.0.3"
|
||||
minSdkVersion = 16
|
||||
compileSdkVersion = 28
|
||||
targetSdkVersion = 28
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath("com.android.tools.build:gradle:3.4.2")
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven {
|
||||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
||||
url("$rootDir/../node_modules/react-native/android")
|
||||
}
|
||||
maven {
|
||||
// Android JSC is installed from npm
|
||||
url("$rootDir/../node_modules/jsc-android/dist")
|
||||
}
|
||||
|
||||
google()
|
||||
jcenter()
|
||||
maven { url 'https://jitpack.io' }
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
# Project-wide Gradle settings.
|
||||
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx10248m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
@@ -1,5 +0,0 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
@@ -1,188 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
@@ -1,100 +0,0 @@
|
||||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
||||
@@ -1,5 +0,0 @@
|
||||
rootProject.name = 'exampleReactNative'
|
||||
include ':react-native-randombytes'
|
||||
project(':react-native-randombytes').projectDir = new File(rootProject.projectDir, '../../../node_modules/react-native-randombytes/android')
|
||||
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
|
||||
include ':app'
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"name": "exampleReactNative",
|
||||
"displayName": "exampleReactNative"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
module.exports = {
|
||||
presets: ['module:metro-react-native-babel-preset']
|
||||
};
|
||||
@@ -1,11 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import './nodeGlobalsShim.js';
|
||||
|
||||
import { AppRegistry } from 'react-native';
|
||||
import App from './App';
|
||||
import { name as appName } from './app.json';
|
||||
|
||||
AppRegistry.registerComponent(appName, () => App);
|
||||
@@ -1,54 +0,0 @@
|
||||
platform :ios, '9.0'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
|
||||
target 'exampleReactNative' do
|
||||
# Pods for exampleReactNative
|
||||
pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
|
||||
pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
|
||||
pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
|
||||
pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
|
||||
pod 'React', :path => '../node_modules/react-native/'
|
||||
pod 'React-Core', :path => '../node_modules/react-native/'
|
||||
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
|
||||
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
|
||||
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
|
||||
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
|
||||
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
|
||||
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
|
||||
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
|
||||
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
|
||||
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
|
||||
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
|
||||
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
|
||||
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
|
||||
|
||||
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
|
||||
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
|
||||
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
|
||||
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
|
||||
pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
|
||||
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
|
||||
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
||||
|
||||
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
||||
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
|
||||
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
|
||||
|
||||
|
||||
target 'exampleReactNativeTests' do
|
||||
inherit! :search_paths
|
||||
# Pods for testing
|
||||
end
|
||||
|
||||
use_native_modules!
|
||||
end
|
||||
|
||||
target 'exampleReactNative-tvOS' do
|
||||
# Pods for exampleReactNative-tvOS
|
||||
|
||||
target 'exampleReactNative-tvOSTests' do
|
||||
inherit! :search_paths
|
||||
# Pods for testing
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>localhost</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string></string>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||