@hot-labs/kit 1.0.51 → 1.0.52
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/build/core/token.js +1 -1
- package/build/core/token.js.map +1 -1
- package/package.json +1 -1
- package/skill.md +127 -0
- package/src/core/token.ts +1 -1
package/build/core/token.js
CHANGED
|
@@ -25,7 +25,7 @@ export class Token {
|
|
|
25
25
|
this.originalAddress = this.address;
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
this.address = info.
|
|
28
|
+
this.address = info.contractAddress || "native";
|
|
29
29
|
this.originalAddress = info.contractAddress || "native";
|
|
30
30
|
}
|
|
31
31
|
if (info.omni) {
|
package/build/core/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/core/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AASpC,MAAM,OAAO,KAAK;IAUK;IATrB,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,eAAe,CAAS;IACxB,mBAAmB,CAAS;IAE5B,YAAqB,IAAqC;QAArC,SAAI,GAAJ,IAAI,CAAiC;QACxD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC;YAClG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1H,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/core/token.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skill.md
CHANGED
|
@@ -117,6 +117,133 @@ const stellarWallet = wibe3.stellar;
|
|
|
117
117
|
const priorityWallet = wibe3.priorityWallet;
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
+
### JWT Authentication
|
|
121
|
+
|
|
122
|
+
The `auth()` method allows you to authenticate a wallet and receive a JWT token. This is useful for backend authentication and verifying wallet ownership.
|
|
123
|
+
|
|
124
|
+
**How it works:**
|
|
125
|
+
|
|
126
|
+
1. Opens a UI popup asking the user to sign a message
|
|
127
|
+
2. Generates a random seed and creates a cryptographic nonce
|
|
128
|
+
3. Signs intents (or empty array) with the nonce
|
|
129
|
+
4. Sends the signed commitment to the API
|
|
130
|
+
5. Returns a JWT token string
|
|
131
|
+
|
|
132
|
+
**Basic Usage:**
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Get JWT token for authentication
|
|
136
|
+
const wallet = wibe3.priorityWallet; // or any connected wallet
|
|
137
|
+
if (wallet) {
|
|
138
|
+
const jwt = await wallet.auth();
|
|
139
|
+
console.log("JWT token:", jwt);
|
|
140
|
+
|
|
141
|
+
// Use JWT for backend authentication
|
|
142
|
+
// Example: send to your backend API
|
|
143
|
+
await fetch("https://your-api.com/authenticate", {
|
|
144
|
+
method: "POST",
|
|
145
|
+
headers: {
|
|
146
|
+
"Authorization": `Bearer ${jwt}`,
|
|
147
|
+
"Content-Type": "application/json",
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Auth with Intents (Optional):**
|
|
154
|
+
|
|
155
|
+
You can optionally pass intents to be signed during authentication:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
const wallet = wibe3.priorityWallet;
|
|
159
|
+
if (wallet) {
|
|
160
|
+
// Auth with intents (optional)
|
|
161
|
+
const intents = [
|
|
162
|
+
{
|
|
163
|
+
intent: "transfer",
|
|
164
|
+
recipient: "petya.near",
|
|
165
|
+
token: OmniToken.USDC,
|
|
166
|
+
amount: 10,
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
|
|
170
|
+
const jwt = await wallet.auth(intents);
|
|
171
|
+
console.log("JWT with signed intents:", jwt);
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Validate JWT Token:**
|
|
176
|
+
|
|
177
|
+
You can validate a JWT token using the API:
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
import { api } from "@hot-labs/kit";
|
|
181
|
+
|
|
182
|
+
// Validate JWT token
|
|
183
|
+
const isValid = await api.validateAuth(jwt);
|
|
184
|
+
console.log("Token is valid:", isValid);
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Complete Example:**
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
import { observer } from "mobx-react-lite";
|
|
191
|
+
import { HotConnector } from "@hot-labs/kit";
|
|
192
|
+
|
|
193
|
+
const wibe3 = new HotConnector({
|
|
194
|
+
// ... configuration
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
const App = observer(() => {
|
|
198
|
+
const handleAuthenticate = async () => {
|
|
199
|
+
const wallet = wibe3.priorityWallet;
|
|
200
|
+
if (!wallet) {
|
|
201
|
+
alert("Please connect a wallet first");
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
// Get JWT token
|
|
207
|
+
const jwt = await wallet.auth();
|
|
208
|
+
|
|
209
|
+
// Store JWT (e.g., in localStorage or send to backend)
|
|
210
|
+
localStorage.setItem("authToken", jwt);
|
|
211
|
+
|
|
212
|
+
// Use JWT for authenticated API calls
|
|
213
|
+
const response = await fetch("https://your-api.com/user/profile", {
|
|
214
|
+
headers: {
|
|
215
|
+
"Authorization": `Bearer ${jwt}`,
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
const userData = await response.json();
|
|
220
|
+
console.log("User data:", userData);
|
|
221
|
+
|
|
222
|
+
alert("Authentication successful!");
|
|
223
|
+
} catch (error) {
|
|
224
|
+
console.error("Authentication failed:", error);
|
|
225
|
+
alert("Authentication failed");
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
return (
|
|
230
|
+
<div>
|
|
231
|
+
<button onClick={handleAuthenticate}>
|
|
232
|
+
Authenticate & Get JWT
|
|
233
|
+
</button>
|
|
234
|
+
</div>
|
|
235
|
+
);
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Important Notes:**
|
|
240
|
+
|
|
241
|
+
- The `auth()` method opens a UI popup that requires user interaction to sign the message
|
|
242
|
+
- The JWT token is generated server-side and returned after successful signature verification
|
|
243
|
+
- The token can be used for backend authentication to verify wallet ownership
|
|
244
|
+
- The authentication process is safe - it only signs a message, not a transaction
|
|
245
|
+
- You can optionally pass intents to be signed during authentication
|
|
246
|
+
|
|
120
247
|
### Working with Tokens
|
|
121
248
|
|
|
122
249
|
```typescript
|
package/src/core/token.ts
CHANGED
|
@@ -33,7 +33,7 @@ export class Token {
|
|
|
33
33
|
this.address = info.contractAddress ? new Asset(info.symbol, info.contractAddress).contractId(Networks.PUBLIC) : "native";
|
|
34
34
|
this.originalAddress = this.address;
|
|
35
35
|
} else {
|
|
36
|
-
this.address = info.
|
|
36
|
+
this.address = info.contractAddress || "native";
|
|
37
37
|
this.originalAddress = info.contractAddress || "native";
|
|
38
38
|
}
|
|
39
39
|
|