@megaeth-labs/wallet-sdk 0.1.17 → 0.1.18-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -182,6 +182,23 @@ if (result.status === 'approved') {
182
182
  }
183
183
  ```
184
184
 
185
+ ### Call Contract Method (Large Payload)
186
+ If you are calling a contract method with a large payload (e.g. deploying a contract via a factory), you can override the default max gas spending limit.
187
+
188
+ ```typescript
189
+ const result = await mega.callContract({
190
+ address: '0xContractAddress',
191
+ abi: contractABI,
192
+ functionName: 'deplosy',
193
+ args: [],
194
+ maxGasAllowance: parseEther('0.0005')
195
+ });
196
+
197
+ if (result.status === 'approved') {
198
+ console.log('Transaction hash:', result.receipt.hash);
199
+ }
200
+ ```
201
+
185
202
  ### Silent Contract Call (Session Keys)
186
203
  Execute a contract method silently using session key permissions (no user approval required).
187
204
 
package/dist/index.cjs CHANGED
@@ -1 +1,345 @@
1
- "use strict";var j=Object.create;var g=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var X=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},y=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of J(e))!V.call(t,i)&&i!==r&&g(t,i,{get:()=>e[i],enumerable:!(n=z(e,i))||n.enumerable});return t};var Y=(t,e,r)=>(r=t!=null?j(Q(t)):{},y(e||!t||!t.__esModule?g(r,"default",{value:t,enumerable:!0}):r,t)),Z=t=>y(g({},"__esModule",{value:!0}),t);var rt={};X(rt,{mega:()=>N});module.exports=Z(rt);var l=Y(require("penpal"),1);var _,c={onStatusChange:_};var tt=t=>{c.onStatusChange=t},S={onStatusChange:tt};var b="https://account.megaeth.com",C="http://localhost:4000";var u=(t,e)=>e!==void 0&&e!==""?`${t}=${encodeURIComponent(String(e))}`:void 0,P=t=>{let e=t.devMode?C:b,r=[u("network",t.network),u("sponsorUrl",t.sponsorUrl),u("sponsorMode",t.sponsorMode),u("sponsorToken",t.sponsorToken),u("debug",t.debug),u("logging",t.logging)];t.devMode;let n=r.filter(i=>!!i);return{origin:e,uiUrl:`${e}?${n.join("&")}`}};var d=class{constructor(){this.initialised=!1}},o=new d;var R=()=>{o.iframe.style.display="none"};var w=t=>{c.onStatusChange?.(t)};var L=()=>{o.iframe.style.display="block"};var x={show:L,hide:R,setStatus:w};var a=class a{static setLogLevel(e){a.logLevel=e}static debug(e,r,n){a.log("debug",e,r,n)}static info(e,r,n){a.log("info",e,r,n)}static warn(e,r,n){a.log("warn",e,r,n)}static error(e,r,n){a.log("error",e,r,n)}static shouldLog(e){switch(a.logLevel){case"debug":return!0;case"info":return["info","warn","error"].includes(e);case"warn":return["warn","error"].includes(e);case"error":return e==="error"}}static getMessage(e,r){return`[${e}] ${r}`}static log(e,r,n,i){if(!a.shouldLog(e))return;let m=[a.getMessage(r,n)];switch(i&&m.push(i),e){case"debug":console.debug(...m);break;case"info":console.info(...m);break;case"warn":console.warn(...m);break;case"error":console.error(...m);break}}};a.logLevel="error";var s=a;var h=async()=>o.remote.authenticate();var v=async t=>o.remote.balances(t);var k=t=>o.remote.callContract(t);var T=async()=>{s.debug("connect","Connect wallet triggered...");let t=await o.remote.connect();return s.debug("connect","Connect resolved",t),t};var M=()=>o.remote.deposit();var A=async()=>{s.debug("disconnect","Disconnect wallet triggered...");let t=await o.remote.disconnect();return s.debug("disconnect","Disconnect resolved"),t};var q=async t=>await o.remote.getFromContract(t);var D=t=>o.remote.getPermissions(t);var I=t=>o.remote.grantPermissions(t);var U=async t=>o.remote.manageAccount(t);var W=async()=>o.remote.open();var F=()=>o.remote.revokePermissions();var $=async t=>o.remote.send(t);var E=t=>o.remote.signData(t);var G=t=>o.remote.signMessage(t);var O=()=>o.remote.status();var K=async t=>o.remote.swap(t);var B=t=>o.remote.transfer(t);var H={status:O,callContract:k,connect:T,disconnect:A,transfer:B,signMessage:G,grantPermissions:I,revokePermissions:F,getPermissions:D,deposit:M,balances:v,open:W,signData:E,getFromContract:q,authenticate:h,manageAccount:U,send:$,swap:K};var et=t=>{let e=document.createElement("iframe");return e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.height="100vh",e.style.width="100vw",e.style.border="none",e.style.zIndex="9999",e.style.display="none",e.setAttribute("allow","clipboard-write; publickey-credentials-get *; publickey-credentials-create *"),e.src=t,document.body.appendChild(e),e},ot=async t=>{if(o.initialised)return;o.initialised=!0,o.network=t?.network||"mainnet",s.setLogLevel(t?.logging||"error"),s.debug("SDK","Initialising...");let{origin:e,uiUrl:r}=P(t);o.iframe=et(r);let n=new l.WindowMessenger({remoteWindow:o.iframe.contentWindow,allowedOrigins:[e]});return new Promise((i,f)=>{try{l.connect({messenger:n,log:t?.debug?l.debug("SDK"):void 0,methods:{ready:async()=>{s.debug("SDK","Initialised");let p=await o.remote.status();s.debug("SDK",`Status: ${p.status}, Address: ${p.address}`),c.onStatusChange?.(p),i(p)},...x}}).promise.then(p=>{o.remote=p})}catch(m){f(m)}})},N={initialise:ot,events:S,...H};0&&(module.exports={mega});
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
+ mega: () => mega
34
+ });
35
+ module.exports = __toCommonJS(index_exports);
36
+
37
+ // src/wallet.ts
38
+ var Penpal = __toESM(require("penpal"), 1);
39
+
40
+ // src/callbacks.ts
41
+ var onStatusChange;
42
+ var callbacks_default = {
43
+ onStatusChange
44
+ };
45
+
46
+ // src/events.ts
47
+ var onStatusChange2 = (callback) => {
48
+ callbacks_default.onStatusChange = callback;
49
+ };
50
+ var events = {
51
+ onStatusChange: onStatusChange2
52
+ };
53
+
54
+ // src/consts.ts
55
+ var WALLET_URL = "https://account.megaeth.com";
56
+ var LOCAL_WALLET_URL = "http://localhost:4000";
57
+
58
+ // src/helpers.ts
59
+ var getWalletUrl = (config) => {
60
+ const origin = config.devMode ? LOCAL_WALLET_URL : WALLET_URL;
61
+ const params = [
62
+ `network=${config.network}`,
63
+ ...config.sponsorUrl ? [`sponsorUrl=${config.sponsorUrl}`] : [],
64
+ ...config.sponsorMode ? [`sponsorMode=${config.sponsorMode}`] : [],
65
+ ...config.sponsorToken ? [`sponsorToken=${config.sponsorToken}`] : [],
66
+ ...config.debug ? [`debug=${config.debug}`] : [],
67
+ ...config.logging ? [`logging=${config.logging}`] : []
68
+ ];
69
+ return {
70
+ origin,
71
+ uiUrl: `${origin}?${params.join("&")}`
72
+ };
73
+ };
74
+
75
+ // src/state.ts
76
+ var State = class {
77
+ constructor() {
78
+ this.initialised = false;
79
+ }
80
+ };
81
+ var state_default = new State();
82
+
83
+ // src/inbound-methods/hide.ts
84
+ var hide = () => {
85
+ state_default.iframe.style.display = "none";
86
+ };
87
+
88
+ // src/inbound-methods/setStatus.ts
89
+ var setStatus = (status2) => {
90
+ callbacks_default.onStatusChange?.(status2);
91
+ };
92
+
93
+ // src/inbound-methods/show.ts
94
+ var show = () => {
95
+ state_default.iframe.style.display = "block";
96
+ };
97
+
98
+ // src/inbound-methods/index.ts
99
+ var inboundMethods = {
100
+ show,
101
+ hide,
102
+ setStatus
103
+ };
104
+
105
+ // src/logger.ts
106
+ var _Logger = class _Logger {
107
+ static setLogLevel(level) {
108
+ _Logger.logLevel = level;
109
+ }
110
+ static debug(module2, message, data) {
111
+ _Logger.log("debug", module2, message, data);
112
+ }
113
+ static info(module2, message, data) {
114
+ _Logger.log("info", module2, message, data);
115
+ }
116
+ static warn(module2, message, data) {
117
+ _Logger.log("warn", module2, message, data);
118
+ }
119
+ static error(module2, message, data) {
120
+ _Logger.log("error", module2, message, data);
121
+ }
122
+ static shouldLog(level) {
123
+ switch (_Logger.logLevel) {
124
+ case "debug":
125
+ return true;
126
+ case "info":
127
+ return ["info", "warn", "error"].includes(level);
128
+ case "warn":
129
+ return ["warn", "error"].includes(level);
130
+ case "error":
131
+ return level === "error";
132
+ }
133
+ }
134
+ static getMessage(module2, message) {
135
+ return `[${module2}] ${message}`;
136
+ }
137
+ static log(level, module2, message, data) {
138
+ if (!_Logger.shouldLog(level)) return;
139
+ const formattedMessage = _Logger.getMessage(module2, message);
140
+ const params = [formattedMessage];
141
+ if (data) {
142
+ params.push(data);
143
+ }
144
+ switch (level) {
145
+ case "debug":
146
+ console.debug(...params);
147
+ break;
148
+ case "info":
149
+ console.info(...params);
150
+ break;
151
+ case "warn":
152
+ console.warn(...params);
153
+ break;
154
+ case "error":
155
+ console.error(...params);
156
+ break;
157
+ }
158
+ }
159
+ };
160
+ _Logger.logLevel = "error";
161
+ var Logger = _Logger;
162
+
163
+ // src/outbound-methods/authenticate.ts
164
+ var authenticate = async () => {
165
+ return state_default.remote.authenticate();
166
+ };
167
+
168
+ // src/outbound-methods/balances.ts
169
+ var balances = async (request) => {
170
+ return state_default.remote.balances(request);
171
+ };
172
+
173
+ // src/outbound-methods/callContract.ts
174
+ var callContract = (request) => {
175
+ return state_default.remote.callContract(request);
176
+ };
177
+
178
+ // src/outbound-methods/connect.ts
179
+ var connect = async () => {
180
+ Logger.debug("connect", "Connect wallet triggered...");
181
+ const result = await state_default.remote.connect();
182
+ Logger.debug("connect", "Connect resolved", result);
183
+ return result;
184
+ };
185
+
186
+ // src/outbound-methods/deposit.ts
187
+ var deposit = () => {
188
+ return state_default.remote.deposit();
189
+ };
190
+
191
+ // src/outbound-methods/disconnect.ts
192
+ var disconnect = async () => {
193
+ Logger.debug("disconnect", "Disconnect wallet triggered...");
194
+ const result = await state_default.remote.disconnect();
195
+ Logger.debug("disconnect", "Disconnect resolved");
196
+ return result;
197
+ };
198
+
199
+ // src/outbound-methods/getFromContract.ts
200
+ var getFromContract = async (request) => {
201
+ const result = await state_default.remote.getFromContract(request);
202
+ return result;
203
+ };
204
+
205
+ // src/outbound-methods/getPermissions.ts
206
+ var getPermissions = (address) => {
207
+ return state_default.remote.getPermissions(address);
208
+ };
209
+
210
+ // src/outbound-methods/grantPermissions.ts
211
+ var grantPermissions = (request) => {
212
+ return state_default.remote.grantPermissions(request);
213
+ };
214
+
215
+ // src/outbound-methods/manageAccount.ts
216
+ var manageAccount = async (request) => {
217
+ return state_default.remote.manageAccount(request);
218
+ };
219
+
220
+ // src/outbound-methods/open.ts
221
+ var open = async () => {
222
+ return state_default.remote.open();
223
+ };
224
+
225
+ // src/outbound-methods/revokePermissions.ts
226
+ var revokePermissions = () => {
227
+ return state_default.remote.revokePermissions();
228
+ };
229
+
230
+ // src/outbound-methods/send.ts
231
+ var send = async (request) => {
232
+ return state_default.remote.send(request);
233
+ };
234
+
235
+ // src/outbound-methods/signData.ts
236
+ var signData = (request) => {
237
+ return state_default.remote.signData(request);
238
+ };
239
+
240
+ // src/outbound-methods/signMessage.ts
241
+ var signMessage = (message) => {
242
+ return state_default.remote.signMessage(message);
243
+ };
244
+
245
+ // src/outbound-methods/status.ts
246
+ var status = () => {
247
+ return state_default.remote.status();
248
+ };
249
+
250
+ // src/outbound-methods/swap.ts
251
+ var swap = async (request) => {
252
+ return state_default.remote.swap(request);
253
+ };
254
+
255
+ // src/outbound-methods/transfer.ts
256
+ var transfer = (request) => {
257
+ return state_default.remote.transfer(request);
258
+ };
259
+
260
+ // src/outbound-methods/index.ts
261
+ var outboundMethods = {
262
+ status,
263
+ callContract,
264
+ connect,
265
+ disconnect,
266
+ transfer,
267
+ signMessage,
268
+ grantPermissions,
269
+ revokePermissions,
270
+ getPermissions,
271
+ deposit,
272
+ balances,
273
+ open,
274
+ signData,
275
+ getFromContract,
276
+ authenticate,
277
+ manageAccount,
278
+ send,
279
+ swap
280
+ };
281
+
282
+ // src/wallet.ts
283
+ var createIFrame = (url) => {
284
+ const iframe = document.createElement("iframe");
285
+ iframe.style.position = "fixed";
286
+ iframe.style.top = "0";
287
+ iframe.style.left = "0";
288
+ iframe.style.height = "100vh";
289
+ iframe.style.width = "100vw";
290
+ iframe.style.border = "none";
291
+ iframe.style.zIndex = "9999";
292
+ iframe.style.display = "none";
293
+ iframe.setAttribute(
294
+ "allow",
295
+ "clipboard-write; publickey-credentials-get *; publickey-credentials-create *"
296
+ );
297
+ iframe.src = url;
298
+ document.body.appendChild(iframe);
299
+ return iframe;
300
+ };
301
+ var initialise = async (config) => {
302
+ if (state_default.initialised) return;
303
+ state_default.initialised = true;
304
+ state_default.network = config?.network || "mainnet";
305
+ Logger.setLogLevel(config?.logging || "error");
306
+ Logger.debug("SDK", "Initialising...");
307
+ const { origin, uiUrl } = getWalletUrl(config);
308
+ state_default.iframe = createIFrame(uiUrl);
309
+ const messenger = new Penpal.WindowMessenger({
310
+ remoteWindow: state_default.iframe.contentWindow,
311
+ allowedOrigins: [origin]
312
+ });
313
+ return new Promise((resolve, reject) => {
314
+ try {
315
+ const connection = Penpal.connect({
316
+ messenger,
317
+ log: config?.debug ? Penpal.debug("SDK") : void 0,
318
+ methods: {
319
+ ready: async () => {
320
+ Logger.debug("SDK", "Initialised");
321
+ const status2 = await state_default.remote.status();
322
+ Logger.debug("SDK", `Status: ${status2.status}, Address: ${status2.address}`);
323
+ callbacks_default.onStatusChange?.(status2);
324
+ resolve(status2);
325
+ },
326
+ ...inboundMethods
327
+ }
328
+ });
329
+ connection.promise.then((_remote) => {
330
+ state_default.remote = _remote;
331
+ });
332
+ } catch (e) {
333
+ reject(e);
334
+ }
335
+ });
336
+ };
337
+ var mega = {
338
+ initialise,
339
+ events,
340
+ ...outboundMethods
341
+ };
342
+ // Annotate the CommonJS export names for ESM import in node:
343
+ 0 && (module.exports = {
344
+ mega
345
+ });
package/dist/index.d.cts CHANGED
@@ -7,9 +7,6 @@ interface Config {
7
7
  logging?: LogLevel;
8
8
  devMode?: boolean;
9
9
  debug?: boolean;
10
- walletOriginUrl?: string;
11
- apiUrl?: string;
12
- relayerUrl?: string;
13
10
  sponsorUrl?: string;
14
11
  sponsorMode?: SponsorMode;
15
12
  sponsorToken?: SponsorToken;
@@ -37,6 +34,7 @@ interface CallContractRequest {
37
34
  silentUIApproveFallback?: boolean;
38
35
  value?: bigint | string;
39
36
  sponsor?: boolean;
37
+ maxGasAllowance?: bigint;
40
38
  }
41
39
  interface GetFromContractRequest {
42
40
  address: `0x${string}`;
package/dist/index.d.ts CHANGED
@@ -7,9 +7,6 @@ interface Config {
7
7
  logging?: LogLevel;
8
8
  devMode?: boolean;
9
9
  debug?: boolean;
10
- walletOriginUrl?: string;
11
- apiUrl?: string;
12
- relayerUrl?: string;
13
10
  sponsorUrl?: string;
14
11
  sponsorMode?: SponsorMode;
15
12
  sponsorToken?: SponsorToken;
@@ -37,6 +34,7 @@ interface CallContractRequest {
37
34
  silentUIApproveFallback?: boolean;
38
35
  value?: bigint | string;
39
36
  sponsor?: boolean;
37
+ maxGasAllowance?: bigint;
40
38
  }
41
39
  interface GetFromContractRequest {
42
40
  address: `0x${string}`;
package/dist/index.js CHANGED
@@ -1 +1,308 @@
1
- import*as l from"penpal";var B,c={onStatusChange:B};var H=t=>{c.onStatusChange=t},f={onStatusChange:H};var y="https://account.megaeth.com",S="http://localhost:4000";var u=(t,o)=>o!==void 0&&o!==""?`${t}=${encodeURIComponent(String(o))}`:void 0,b=t=>{let o=t.devMode?S:y,r=[u("network",t.network),u("sponsorUrl",t.sponsorUrl),u("sponsorMode",t.sponsorMode),u("sponsorToken",t.sponsorToken),u("debug",t.debug),u("logging",t.logging)];t.devMode;let n=r.filter(m=>!!m);return{origin:o,uiUrl:`${o}?${n.join("&")}`}};var g=class{constructor(){this.initialised=!1}},e=new g;var C=()=>{e.iframe.style.display="none"};var P=t=>{c.onStatusChange?.(t)};var R=()=>{e.iframe.style.display="block"};var w={show:R,hide:C,setStatus:P};var i=class i{static setLogLevel(o){i.logLevel=o}static debug(o,r,n){i.log("debug",o,r,n)}static info(o,r,n){i.log("info",o,r,n)}static warn(o,r,n){i.log("warn",o,r,n)}static error(o,r,n){i.log("error",o,r,n)}static shouldLog(o){switch(i.logLevel){case"debug":return!0;case"info":return["info","warn","error"].includes(o);case"warn":return["warn","error"].includes(o);case"error":return o==="error"}}static getMessage(o,r){return`[${o}] ${r}`}static log(o,r,n,m){if(!i.shouldLog(o))return;let a=[i.getMessage(r,n)];switch(m&&a.push(m),o){case"debug":console.debug(...a);break;case"info":console.info(...a);break;case"warn":console.warn(...a);break;case"error":console.error(...a);break}}};i.logLevel="error";var s=i;var L=async()=>e.remote.authenticate();var x=async t=>e.remote.balances(t);var h=t=>e.remote.callContract(t);var v=async()=>{s.debug("connect","Connect wallet triggered...");let t=await e.remote.connect();return s.debug("connect","Connect resolved",t),t};var k=()=>e.remote.deposit();var T=async()=>{s.debug("disconnect","Disconnect wallet triggered...");let t=await e.remote.disconnect();return s.debug("disconnect","Disconnect resolved"),t};var M=async t=>await e.remote.getFromContract(t);var A=t=>e.remote.getPermissions(t);var q=t=>e.remote.grantPermissions(t);var D=async t=>e.remote.manageAccount(t);var I=async()=>e.remote.open();var U=()=>e.remote.revokePermissions();var W=async t=>e.remote.send(t);var F=t=>e.remote.signData(t);var $=t=>e.remote.signMessage(t);var E=()=>e.remote.status();var G=async t=>e.remote.swap(t);var O=t=>e.remote.transfer(t);var K={status:E,callContract:h,connect:v,disconnect:T,transfer:O,signMessage:$,grantPermissions:q,revokePermissions:U,getPermissions:A,deposit:k,balances:x,open:I,signData:F,getFromContract:M,authenticate:L,manageAccount:D,send:W,swap:G};var N=t=>{let o=document.createElement("iframe");return o.style.position="fixed",o.style.top="0",o.style.left="0",o.style.height="100vh",o.style.width="100vw",o.style.border="none",o.style.zIndex="9999",o.style.display="none",o.setAttribute("allow","clipboard-write; publickey-credentials-get *; publickey-credentials-create *"),o.src=t,document.body.appendChild(o),o},j=async t=>{if(e.initialised)return;e.initialised=!0,e.network=t?.network||"mainnet",s.setLogLevel(t?.logging||"error"),s.debug("SDK","Initialising...");let{origin:o,uiUrl:r}=b(t);e.iframe=N(r);let n=new l.WindowMessenger({remoteWindow:e.iframe.contentWindow,allowedOrigins:[o]});return new Promise((m,d)=>{try{l.connect({messenger:n,log:t?.debug?l.debug("SDK"):void 0,methods:{ready:async()=>{s.debug("SDK","Initialised");let p=await e.remote.status();s.debug("SDK",`Status: ${p.status}, Address: ${p.address}`),c.onStatusChange?.(p),m(p)},...w}}).promise.then(p=>{e.remote=p})}catch(a){d(a)}})},z={initialise:j,events:f,...K};export{z as mega};
1
+ // src/wallet.ts
2
+ import * as Penpal from "penpal";
3
+
4
+ // src/callbacks.ts
5
+ var onStatusChange;
6
+ var callbacks_default = {
7
+ onStatusChange
8
+ };
9
+
10
+ // src/events.ts
11
+ var onStatusChange2 = (callback) => {
12
+ callbacks_default.onStatusChange = callback;
13
+ };
14
+ var events = {
15
+ onStatusChange: onStatusChange2
16
+ };
17
+
18
+ // src/consts.ts
19
+ var WALLET_URL = "https://account.megaeth.com";
20
+ var LOCAL_WALLET_URL = "http://localhost:4000";
21
+
22
+ // src/helpers.ts
23
+ var getWalletUrl = (config) => {
24
+ const origin = config.devMode ? LOCAL_WALLET_URL : WALLET_URL;
25
+ const params = [
26
+ `network=${config.network}`,
27
+ ...config.sponsorUrl ? [`sponsorUrl=${config.sponsorUrl}`] : [],
28
+ ...config.sponsorMode ? [`sponsorMode=${config.sponsorMode}`] : [],
29
+ ...config.sponsorToken ? [`sponsorToken=${config.sponsorToken}`] : [],
30
+ ...config.debug ? [`debug=${config.debug}`] : [],
31
+ ...config.logging ? [`logging=${config.logging}`] : []
32
+ ];
33
+ return {
34
+ origin,
35
+ uiUrl: `${origin}?${params.join("&")}`
36
+ };
37
+ };
38
+
39
+ // src/state.ts
40
+ var State = class {
41
+ constructor() {
42
+ this.initialised = false;
43
+ }
44
+ };
45
+ var state_default = new State();
46
+
47
+ // src/inbound-methods/hide.ts
48
+ var hide = () => {
49
+ state_default.iframe.style.display = "none";
50
+ };
51
+
52
+ // src/inbound-methods/setStatus.ts
53
+ var setStatus = (status2) => {
54
+ callbacks_default.onStatusChange?.(status2);
55
+ };
56
+
57
+ // src/inbound-methods/show.ts
58
+ var show = () => {
59
+ state_default.iframe.style.display = "block";
60
+ };
61
+
62
+ // src/inbound-methods/index.ts
63
+ var inboundMethods = {
64
+ show,
65
+ hide,
66
+ setStatus
67
+ };
68
+
69
+ // src/logger.ts
70
+ var _Logger = class _Logger {
71
+ static setLogLevel(level) {
72
+ _Logger.logLevel = level;
73
+ }
74
+ static debug(module, message, data) {
75
+ _Logger.log("debug", module, message, data);
76
+ }
77
+ static info(module, message, data) {
78
+ _Logger.log("info", module, message, data);
79
+ }
80
+ static warn(module, message, data) {
81
+ _Logger.log("warn", module, message, data);
82
+ }
83
+ static error(module, message, data) {
84
+ _Logger.log("error", module, message, data);
85
+ }
86
+ static shouldLog(level) {
87
+ switch (_Logger.logLevel) {
88
+ case "debug":
89
+ return true;
90
+ case "info":
91
+ return ["info", "warn", "error"].includes(level);
92
+ case "warn":
93
+ return ["warn", "error"].includes(level);
94
+ case "error":
95
+ return level === "error";
96
+ }
97
+ }
98
+ static getMessage(module, message) {
99
+ return `[${module}] ${message}`;
100
+ }
101
+ static log(level, module, message, data) {
102
+ if (!_Logger.shouldLog(level)) return;
103
+ const formattedMessage = _Logger.getMessage(module, message);
104
+ const params = [formattedMessage];
105
+ if (data) {
106
+ params.push(data);
107
+ }
108
+ switch (level) {
109
+ case "debug":
110
+ console.debug(...params);
111
+ break;
112
+ case "info":
113
+ console.info(...params);
114
+ break;
115
+ case "warn":
116
+ console.warn(...params);
117
+ break;
118
+ case "error":
119
+ console.error(...params);
120
+ break;
121
+ }
122
+ }
123
+ };
124
+ _Logger.logLevel = "error";
125
+ var Logger = _Logger;
126
+
127
+ // src/outbound-methods/authenticate.ts
128
+ var authenticate = async () => {
129
+ return state_default.remote.authenticate();
130
+ };
131
+
132
+ // src/outbound-methods/balances.ts
133
+ var balances = async (request) => {
134
+ return state_default.remote.balances(request);
135
+ };
136
+
137
+ // src/outbound-methods/callContract.ts
138
+ var callContract = (request) => {
139
+ return state_default.remote.callContract(request);
140
+ };
141
+
142
+ // src/outbound-methods/connect.ts
143
+ var connect = async () => {
144
+ Logger.debug("connect", "Connect wallet triggered...");
145
+ const result = await state_default.remote.connect();
146
+ Logger.debug("connect", "Connect resolved", result);
147
+ return result;
148
+ };
149
+
150
+ // src/outbound-methods/deposit.ts
151
+ var deposit = () => {
152
+ return state_default.remote.deposit();
153
+ };
154
+
155
+ // src/outbound-methods/disconnect.ts
156
+ var disconnect = async () => {
157
+ Logger.debug("disconnect", "Disconnect wallet triggered...");
158
+ const result = await state_default.remote.disconnect();
159
+ Logger.debug("disconnect", "Disconnect resolved");
160
+ return result;
161
+ };
162
+
163
+ // src/outbound-methods/getFromContract.ts
164
+ var getFromContract = async (request) => {
165
+ const result = await state_default.remote.getFromContract(request);
166
+ return result;
167
+ };
168
+
169
+ // src/outbound-methods/getPermissions.ts
170
+ var getPermissions = (address) => {
171
+ return state_default.remote.getPermissions(address);
172
+ };
173
+
174
+ // src/outbound-methods/grantPermissions.ts
175
+ var grantPermissions = (request) => {
176
+ return state_default.remote.grantPermissions(request);
177
+ };
178
+
179
+ // src/outbound-methods/manageAccount.ts
180
+ var manageAccount = async (request) => {
181
+ return state_default.remote.manageAccount(request);
182
+ };
183
+
184
+ // src/outbound-methods/open.ts
185
+ var open = async () => {
186
+ return state_default.remote.open();
187
+ };
188
+
189
+ // src/outbound-methods/revokePermissions.ts
190
+ var revokePermissions = () => {
191
+ return state_default.remote.revokePermissions();
192
+ };
193
+
194
+ // src/outbound-methods/send.ts
195
+ var send = async (request) => {
196
+ return state_default.remote.send(request);
197
+ };
198
+
199
+ // src/outbound-methods/signData.ts
200
+ var signData = (request) => {
201
+ return state_default.remote.signData(request);
202
+ };
203
+
204
+ // src/outbound-methods/signMessage.ts
205
+ var signMessage = (message) => {
206
+ return state_default.remote.signMessage(message);
207
+ };
208
+
209
+ // src/outbound-methods/status.ts
210
+ var status = () => {
211
+ return state_default.remote.status();
212
+ };
213
+
214
+ // src/outbound-methods/swap.ts
215
+ var swap = async (request) => {
216
+ return state_default.remote.swap(request);
217
+ };
218
+
219
+ // src/outbound-methods/transfer.ts
220
+ var transfer = (request) => {
221
+ return state_default.remote.transfer(request);
222
+ };
223
+
224
+ // src/outbound-methods/index.ts
225
+ var outboundMethods = {
226
+ status,
227
+ callContract,
228
+ connect,
229
+ disconnect,
230
+ transfer,
231
+ signMessage,
232
+ grantPermissions,
233
+ revokePermissions,
234
+ getPermissions,
235
+ deposit,
236
+ balances,
237
+ open,
238
+ signData,
239
+ getFromContract,
240
+ authenticate,
241
+ manageAccount,
242
+ send,
243
+ swap
244
+ };
245
+
246
+ // src/wallet.ts
247
+ var createIFrame = (url) => {
248
+ const iframe = document.createElement("iframe");
249
+ iframe.style.position = "fixed";
250
+ iframe.style.top = "0";
251
+ iframe.style.left = "0";
252
+ iframe.style.height = "100vh";
253
+ iframe.style.width = "100vw";
254
+ iframe.style.border = "none";
255
+ iframe.style.zIndex = "9999";
256
+ iframe.style.display = "none";
257
+ iframe.setAttribute(
258
+ "allow",
259
+ "clipboard-write; publickey-credentials-get *; publickey-credentials-create *"
260
+ );
261
+ iframe.src = url;
262
+ document.body.appendChild(iframe);
263
+ return iframe;
264
+ };
265
+ var initialise = async (config) => {
266
+ if (state_default.initialised) return;
267
+ state_default.initialised = true;
268
+ state_default.network = config?.network || "mainnet";
269
+ Logger.setLogLevel(config?.logging || "error");
270
+ Logger.debug("SDK", "Initialising...");
271
+ const { origin, uiUrl } = getWalletUrl(config);
272
+ state_default.iframe = createIFrame(uiUrl);
273
+ const messenger = new Penpal.WindowMessenger({
274
+ remoteWindow: state_default.iframe.contentWindow,
275
+ allowedOrigins: [origin]
276
+ });
277
+ return new Promise((resolve, reject) => {
278
+ try {
279
+ const connection = Penpal.connect({
280
+ messenger,
281
+ log: config?.debug ? Penpal.debug("SDK") : void 0,
282
+ methods: {
283
+ ready: async () => {
284
+ Logger.debug("SDK", "Initialised");
285
+ const status2 = await state_default.remote.status();
286
+ Logger.debug("SDK", `Status: ${status2.status}, Address: ${status2.address}`);
287
+ callbacks_default.onStatusChange?.(status2);
288
+ resolve(status2);
289
+ },
290
+ ...inboundMethods
291
+ }
292
+ });
293
+ connection.promise.then((_remote) => {
294
+ state_default.remote = _remote;
295
+ });
296
+ } catch (e) {
297
+ reject(e);
298
+ }
299
+ });
300
+ };
301
+ var mega = {
302
+ initialise,
303
+ events,
304
+ ...outboundMethods
305
+ };
306
+ export {
307
+ mega
308
+ };
package/package.json CHANGED
@@ -1,70 +1,68 @@
1
1
  {
2
- "name": "@megaeth-labs/wallet-sdk",
3
- "version": "0.1.17",
4
- "description": "MegaETH Wallet SDK for web applications",
5
- "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.cjs"
14
- }
15
- },
16
- "files": [
17
- "dist"
18
- ],
19
- "scripts": {
20
- "build": "tsup src/index.ts --format cjs,esm --dts --clean --minify",
21
- "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
22
- "dev:link": "pnpm build && pnpm link --global",
23
- "test": "vitest",
24
- "test:ui": "vitest --ui",
25
- "test:coverage": "vitest --coverage",
26
- "lint": "biome lint ./src",
27
- "format": "biome format --write ./src",
28
- "check": "biome check ./src",
29
- "typecheck": "tsc --noEmit",
30
- "prepare": "husky"
31
- },
32
- "keywords": [
33
- "megaeth",
34
- "wallet",
35
- "sdk",
36
- "web3"
37
- ],
38
- "author": "",
39
- "license": "MIT",
40
- "repository": {
41
- "type": "git",
42
- "url": "git+https://github.com/megaeth-labs/wallet-sdk.git"
43
- },
44
- "sideEffects": false,
45
- "publishConfig": {
46
- "registry": "https://registry.npmjs.org/",
47
- "access": "restricted"
48
- },
49
- "packageManager": "pnpm@10.29.2",
50
- "dependencies": {
51
- "penpal": "7.0.6"
52
- },
53
- "devDependencies": {
54
- "@biomejs/biome": "2.4.6",
55
- "@types/node": "25.3.5",
56
- "@vitest/coverage-v8": "4.0.18",
57
- "@vitest/ui": "4.0.18",
58
- "husky": "^9.1.7",
59
- "jsdom": "28.1.0",
60
- "lint-staged": "^16.4.0",
61
- "tsup": "8.5.1",
62
- "typescript": "5.9.3",
63
- "vitest": "4.0.18"
64
- },
65
- "lint-staged": {
66
- "src/**/*.{ts,js,json}": [
67
- "pnpm format"
68
- ]
2
+ "name": "@megaeth-labs/wallet-sdk",
3
+ "version": "0.1.18-beta.1",
4
+ "description": "MegaETH Wallet SDK for web applications",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
69
14
  }
70
- }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "keywords": [
20
+ "megaeth",
21
+ "wallet",
22
+ "sdk",
23
+ "web3"
24
+ ],
25
+ "author": "",
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/megaeth-labs/wallet-sdk.git"
30
+ },
31
+ "sideEffects": false,
32
+ "publishConfig": {
33
+ "registry": "https://registry.npmjs.org/",
34
+ "access": "restricted"
35
+ },
36
+ "dependencies": {
37
+ "penpal": "7.0.6"
38
+ },
39
+ "devDependencies": {
40
+ "@biomejs/biome": "2.4.6",
41
+ "@types/node": "25.3.5",
42
+ "@vitest/coverage-v8": "4.0.18",
43
+ "@vitest/ui": "4.0.18",
44
+ "husky": "^9.1.7",
45
+ "jsdom": "28.1.0",
46
+ "lint-staged": "^16.4.0",
47
+ "tsup": "8.5.1",
48
+ "typescript": "5.9.3",
49
+ "vitest": "4.0.18"
50
+ },
51
+ "lint-staged": {
52
+ "src/**/*.{ts,js,json}": [
53
+ "pnpm format"
54
+ ]
55
+ },
56
+ "scripts": {
57
+ "build": "tsup src/index.ts --format cjs,esm --dts --clean",
58
+ "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
59
+ "dev:link": "pnpm build && pnpm link --global",
60
+ "test": "vitest",
61
+ "test:ui": "vitest --ui",
62
+ "test:coverage": "vitest --coverage",
63
+ "lint": "biome lint ./src",
64
+ "format": "biome format --write ./src",
65
+ "check": "biome check ./src",
66
+ "typecheck": "tsc --noEmit"
67
+ }
68
+ }