@n1xyz/wallet-widget 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +29 -0
- package/dist/Common/NIcon.d.ts +1 -0
- package/dist/Common/NIcon.js +7 -0
- package/dist/Logic/getPseudoName.d.ts +1 -0
- package/dist/Logic/getPseudoName.js +5825 -0
- package/dist/Logic/utils.d.ts +20 -0
- package/dist/Logic/utils.js +199 -0
- package/dist/Logic/words.d.ts +9 -0
- package/dist/Logic/words.js +93571 -0
- package/dist/Modal/BackButton.d.ts +3 -0
- package/dist/Modal/BackButton.js +13 -0
- package/dist/Modal/ConnectView.d.ts +1 -0
- package/dist/Modal/ConnectView.js +71 -0
- package/dist/Modal/CreateSessionView.d.ts +1 -0
- package/dist/Modal/CreateSessionView.js +236 -0
- package/dist/Modal/CreateUserView.d.ts +1 -0
- package/dist/Modal/CreateUserView.js +160 -0
- package/dist/Modal/ModalHeader.d.ts +1 -0
- package/dist/Modal/ModalHeader.js +9 -0
- package/dist/Modal/N1WalletModal.d.ts +1 -0
- package/dist/Modal/N1WalletModal.js +232 -0
- package/dist/Modal/NoWhitelistView.d.ts +1 -0
- package/dist/Modal/NoWhitelistView.js +29 -0
- package/dist/Modal/Sidebar/N1Sidebar.d.ts +1 -0
- package/dist/Modal/Sidebar/N1Sidebar.js +38 -0
- package/dist/Modal/SigningView.d.ts +1 -0
- package/dist/Modal/SigningView.js +5 -0
- package/dist/Modal/SuccessView.d.ts +1 -0
- package/dist/Modal/SuccessView.js +10 -0
- package/dist/Provider/LazyWalletProvider.d.ts +1 -0
- package/dist/Provider/LazyWalletProvider.js +160 -0
- package/dist/Provider/N1WalletProvider.d.ts +2 -0
- package/dist/Provider/N1WalletProvider.js +219 -0
- package/dist/Provider/context.d.ts +5 -0
- package/dist/Provider/context.js +4 -0
- package/dist/Provider/hooks.d.ts +2 -0
- package/dist/Provider/hooks.js +16 -0
- package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +1 -0
- package/dist/Provider/icons/CoinbaseWalletIcon.js +4 -0
- package/dist/Provider/icons/ConnectionDotsSVG.d.ts +1 -0
- package/dist/Provider/icons/ConnectionDotsSVG.js +4 -0
- package/dist/Provider/icons/MetamaskIcon.d.ts +1 -0
- package/dist/Provider/icons/MetamaskIcon.js +4 -0
- package/dist/Provider/icons/PhantomIcon.d.ts +1 -0
- package/dist/Provider/icons/PhantomIcon.js +4 -0
- package/dist/Provider/icons/UserIcon.d.ts +1 -0
- package/dist/Provider/icons/UserIcon.js +4 -0
- package/dist/Provider/icons/WalletConnectIcon.d.ts +1 -0
- package/dist/Provider/icons/WalletConnectIcon.js +4 -0
- package/dist/Provider/index.d.ts +3 -0
- package/dist/Provider/index.js +3 -0
- package/dist/Provider/types.d.ts +68 -0
- package/dist/Provider/types.js +14 -0
- package/dist/WidgetButton/N1ConnectButton.d.ts +5 -0
- package/dist/WidgetButton/N1ConnectButton.js +24 -0
- package/dist/components/AnimatedButton.d.ts +9 -0
- package/dist/components/AnimatedButton.js +5 -0
- package/dist/components/LazyLoadWrapper.d.ts +8 -0
- package/dist/components/LazyLoadWrapper.js +17 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +2 -0
- package/dist/errors/types.d.ts +21 -0
- package/dist/errors/types.js +64 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/main.css +1 -0
- package/dist/utils/lazyLoad.d.ts +3 -0
- package/dist/utils/lazyLoad.js +9 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.js +106 -0
- package/dist/utils/react-shim.d.ts +2 -0
- package/dist/utils/react-shim.js +6 -0
- package/package.json +46 -0
- package/postcss.config.js +6 -0
- package/src/Logic/getPseudoName.ts +5832 -0
- package/src/Logic/utils.ts +162 -0
- package/src/Logic/words.ts +93571 -0
- package/src/Modal/BackButton.tsx +23 -0
- package/src/Modal/ConnectView.tsx +88 -0
- package/src/Modal/CreateSessionView.tsx +242 -0
- package/src/Modal/CreateUserView.tsx +195 -0
- package/src/Modal/ModalHeader.tsx +64 -0
- package/src/Modal/N1WalletModal.tsx +275 -0
- package/src/Modal/NoWhitelistView.tsx +61 -0
- package/src/Modal/Sidebar/N1Sidebar.tsx +172 -0
- package/src/Modal/SigningView.tsx +18 -0
- package/src/Modal/SuccessView.tsx +36 -0
- package/src/Provider/LazyWalletProvider.tsx +136 -0
- package/src/Provider/N1WalletProvider.tsx +208 -0
- package/src/Provider/context.ts +11 -0
- package/src/Provider/hooks.ts +22 -0
- package/src/Provider/icons/CoinbaseWalletIcon.tsx +27 -0
- package/src/Provider/icons/ConnectionDotsSVG.tsx +19 -0
- package/src/Provider/icons/MetamaskIcon.tsx +58 -0
- package/src/Provider/icons/PhantomIcon.tsx +26 -0
- package/src/Provider/icons/UserIcon.tsx +15 -0
- package/src/Provider/icons/WalletConnectIcon.tsx +15 -0
- package/src/Provider/index.ts +3 -0
- package/src/Provider/types.ts +77 -0
- package/src/WidgetButton/N1ConnectButton.tsx +72 -0
- package/src/components/LazyLoadWrapper.tsx +19 -0
- package/src/config.ts +2 -0
- package/src/errors/types.ts +49 -0
- package/src/index.ts +5 -0
- package/src/main.css +3 -0
- package/src/styles/main.css +3 -0
- package/src/utils/lazyLoad.ts +12 -0
- package/src/utils/logger.ts +98 -0
- package/src/utils/react-shim.js +8 -0
- package/tailwind.config.js +44 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { generateSessionKeyPair, generateRandomUint8Array } from '@n1xyz/nts-sdk';
|
|
2
|
+
export { generateSessionKeyPair, generateRandomUint8Array };
|
|
3
|
+
export declare function arrayBufferToBase64(buffer: Uint8Array): string;
|
|
4
|
+
export declare function base64ToUint8Array(base64String: string): Uint8Array<ArrayBuffer>;
|
|
5
|
+
export declare function storeSessionKeysInLocalStorage({ privKey, walletPublicKey, chainName, }: {
|
|
6
|
+
privKey: Uint8Array;
|
|
7
|
+
walletPublicKey: string;
|
|
8
|
+
chainName: string;
|
|
9
|
+
}): void;
|
|
10
|
+
export declare function getSessionKeysFromLocalStorage(walletPublicKey: string): {
|
|
11
|
+
ed25519PrivateKey: Uint8Array;
|
|
12
|
+
walletPublicKey: string;
|
|
13
|
+
chainName: string;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
} | null;
|
|
16
|
+
export declare function removeKeysFromLocalStorage(walletPublicKey: string): void;
|
|
17
|
+
export declare function hexToUint8Array(hex: string): Uint8Array<ArrayBuffer>;
|
|
18
|
+
export declare function createWebSession(signMessageWithSessionKey: any, sessionPubKey: any, walletPubKey: any): Promise<void>;
|
|
19
|
+
export declare function createUser(username: any): Promise<void>;
|
|
20
|
+
export declare function getUser(): Promise<any>;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { generateSessionKeyPair, generateRandomUint8Array, } from '@n1xyz/nts-sdk';
|
|
38
|
+
import { logger } from '../utils/logger';
|
|
39
|
+
export { generateSessionKeyPair, generateRandomUint8Array };
|
|
40
|
+
export function arrayBufferToBase64(buffer) {
|
|
41
|
+
var binary = '';
|
|
42
|
+
var bytes = new Uint8Array(buffer);
|
|
43
|
+
for (var i = 0; i < bytes.length; i++) {
|
|
44
|
+
binary += String.fromCharCode(bytes[i]);
|
|
45
|
+
}
|
|
46
|
+
return btoa(binary);
|
|
47
|
+
}
|
|
48
|
+
// Convert Base64 string back to Uint8Array
|
|
49
|
+
export function base64ToUint8Array(base64String) {
|
|
50
|
+
var binaryString = atob(base64String);
|
|
51
|
+
var length = binaryString.length;
|
|
52
|
+
var bytes = new Uint8Array(length);
|
|
53
|
+
for (var i = 0; i < length; i++) {
|
|
54
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
55
|
+
}
|
|
56
|
+
return bytes;
|
|
57
|
+
}
|
|
58
|
+
// Function to store keys with a custom ID format in local storage, including private key
|
|
59
|
+
export function storeSessionKeysInLocalStorage(_a) {
|
|
60
|
+
var privKey = _a.privKey, walletPublicKey = _a.walletPublicKey, chainName = _a.chainName;
|
|
61
|
+
var storageKey = "n1_sessionKey_".concat(walletPublicKey);
|
|
62
|
+
var data = {
|
|
63
|
+
ed25519PrivateKey: arrayBufferToBase64(privKey),
|
|
64
|
+
walletPublicKey: walletPublicKey,
|
|
65
|
+
chainName: chainName,
|
|
66
|
+
createdAt: new Date().toISOString(),
|
|
67
|
+
};
|
|
68
|
+
localStorage.setItem(storageKey, JSON.stringify(data));
|
|
69
|
+
}
|
|
70
|
+
// Retrieve data from local storage by wallet key and convert the private key back to Uint8Array
|
|
71
|
+
export function getSessionKeysFromLocalStorage(walletPublicKey) {
|
|
72
|
+
var storageKey = "n1_sessionKey_".concat(walletPublicKey);
|
|
73
|
+
var data = localStorage.getItem(storageKey);
|
|
74
|
+
if (data) {
|
|
75
|
+
var parsedData = JSON.parse(data);
|
|
76
|
+
if (parsedData.ed25519PrivateKey) {
|
|
77
|
+
parsedData.ed25519PrivateKey = base64ToUint8Array(parsedData.ed25519PrivateKey);
|
|
78
|
+
}
|
|
79
|
+
return parsedData;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
// Function to remove data from local storage by wallet key
|
|
84
|
+
export function removeKeysFromLocalStorage(walletPublicKey) {
|
|
85
|
+
var storageKey = "n1_sessionKey_".concat(walletPublicKey);
|
|
86
|
+
localStorage.removeItem(storageKey);
|
|
87
|
+
}
|
|
88
|
+
export function hexToUint8Array(hex) {
|
|
89
|
+
if (hex.length % 2 !== 0) {
|
|
90
|
+
throw new Error('Invalid hex string');
|
|
91
|
+
}
|
|
92
|
+
var array = new Uint8Array(hex.length / 2);
|
|
93
|
+
for (var i = 0; i < hex.length; i += 2) {
|
|
94
|
+
array[i / 2] = parseInt(hex.substr(i, 2), 16);
|
|
95
|
+
}
|
|
96
|
+
return array;
|
|
97
|
+
}
|
|
98
|
+
function getMsgBytes(timestamp) {
|
|
99
|
+
var hex = 'LoginSigning : ' + timestamp;
|
|
100
|
+
var array = new Uint8Array(hex.length / 2);
|
|
101
|
+
for (var i = 0; i < hex.length; i += 2) {
|
|
102
|
+
array[i / 2] = parseInt(hex.substr(i, 2), 16);
|
|
103
|
+
}
|
|
104
|
+
return array;
|
|
105
|
+
}
|
|
106
|
+
export function createWebSession(signMessageWithSessionKey, sessionPubKey, walletPubKey) {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
108
|
+
var timestamp, msg, signature, response, _a, _b;
|
|
109
|
+
return __generator(this, function (_c) {
|
|
110
|
+
switch (_c.label) {
|
|
111
|
+
case 0:
|
|
112
|
+
logger.debug('Creating web session...');
|
|
113
|
+
timestamp = new Date().getTime();
|
|
114
|
+
msg = getMsgBytes(timestamp);
|
|
115
|
+
return [4 /*yield*/, signMessageWithSessionKey(msg)];
|
|
116
|
+
case 1:
|
|
117
|
+
signature = _c.sent();
|
|
118
|
+
return [4 /*yield*/, fetch("".concat(process.env.ARGUS_URL, "/api/auth/login"), {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
headers: {
|
|
121
|
+
'Content-Type': 'application/json',
|
|
122
|
+
},
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
sessionKey: Array.from(sessionPubKey),
|
|
125
|
+
timestamp: timestamp,
|
|
126
|
+
msg: Array.from(msg),
|
|
127
|
+
signature: Array.from(signature),
|
|
128
|
+
publicKey: Array.from(walletPubKey),
|
|
129
|
+
}),
|
|
130
|
+
credentials: 'include', // Include cookies in requests
|
|
131
|
+
})];
|
|
132
|
+
case 2:
|
|
133
|
+
response = _c.sent();
|
|
134
|
+
if (!(response.status != 200)) return [3 /*break*/, 4];
|
|
135
|
+
_b = (_a = console).log;
|
|
136
|
+
return [4 /*yield*/, response.json()];
|
|
137
|
+
case 3:
|
|
138
|
+
_b.apply(_a, [_c.sent()]);
|
|
139
|
+
throw new Error('failed to create a session!');
|
|
140
|
+
case 4: return [2 /*return*/];
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
export function createUser(username) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
147
|
+
var response;
|
|
148
|
+
return __generator(this, function (_a) {
|
|
149
|
+
switch (_a.label) {
|
|
150
|
+
case 0: return [4 /*yield*/, fetch("".concat(process.env.ARGUS_URL, "/api/db/createUser?name=").concat(username), {
|
|
151
|
+
method: 'GET',
|
|
152
|
+
headers: {
|
|
153
|
+
'Content-Type': 'application/json',
|
|
154
|
+
},
|
|
155
|
+
credentials: 'include',
|
|
156
|
+
})];
|
|
157
|
+
case 1:
|
|
158
|
+
response = _a.sent();
|
|
159
|
+
if (response.status != 200) {
|
|
160
|
+
throw new Error('failed to create a user!');
|
|
161
|
+
}
|
|
162
|
+
return [2 /*return*/];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
export function getUser() {
|
|
168
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
169
|
+
var response, error_1;
|
|
170
|
+
return __generator(this, function (_a) {
|
|
171
|
+
switch (_a.label) {
|
|
172
|
+
case 0:
|
|
173
|
+
_a.trys.push([0, 5, , 6]);
|
|
174
|
+
return [4 /*yield*/, fetch("".concat(process.env.ARGUS_URL, "/api/db/getUser"), {
|
|
175
|
+
method: 'GET',
|
|
176
|
+
headers: {
|
|
177
|
+
'Content-Type': 'application/json',
|
|
178
|
+
},
|
|
179
|
+
credentials: 'include', // Include cookies in requests
|
|
180
|
+
})];
|
|
181
|
+
case 1:
|
|
182
|
+
response = _a.sent();
|
|
183
|
+
if (!(response.status === 200)) return [3 /*break*/, 3];
|
|
184
|
+
return [4 /*yield*/, response.json()];
|
|
185
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
186
|
+
case 3:
|
|
187
|
+
if (response.status === 404) {
|
|
188
|
+
return [2 /*return*/, null];
|
|
189
|
+
}
|
|
190
|
+
_a.label = 4;
|
|
191
|
+
case 4: return [3 /*break*/, 6];
|
|
192
|
+
case 5:
|
|
193
|
+
error_1 = _a.sent();
|
|
194
|
+
throw new Error('failed to get user!');
|
|
195
|
+
case 6: return [2 /*return*/];
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|