@paywithglide/glide-react 0.0.10 → 0.0.12

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.
@@ -77,8 +77,19 @@ export type GlideDepositWalletProvider = {
77
77
  export type GlideDepositOptions = {
78
78
  app: string;
79
79
  recipient?: Hex;
80
- mode?: "deposit" | "withdraw" | "pay";
80
+ mode?: "deposit" | "withdraw" | "pay" | "call" | "buy";
81
81
  amount?: string;
82
+ evm?: {
83
+ chainId: number;
84
+ to: Hex;
85
+ data?: Hex;
86
+ value?: bigint;
87
+ };
88
+ approval?: {
89
+ token: Hex;
90
+ amount: bigint;
91
+ };
92
+ sessionMetadata?: string;
82
93
  preferGaslessPayment?: boolean;
83
94
  walletProvider?: GlideDepositWalletProvider;
84
95
  onSuccess?: (hash: Hex) => void;
@@ -88,6 +99,7 @@ export declare class GlideDeposit {
88
99
  opts: GlideDepositOptions;
89
100
  constructor(opts: GlideDepositOptions);
90
101
  open: () => void;
102
+ get externalUrl(): string;
91
103
  private initialize;
92
104
  private destroy;
93
105
  private get baseUrl();
@@ -96,6 +108,4 @@ export declare class GlideDeposit {
96
108
  private openUrl;
97
109
  private createIframe;
98
110
  private removeIframe;
99
- private showLoader;
100
- private hideLoader;
101
111
  }
Binary file
package/dist/glide.js CHANGED
@@ -1,34 +1,189 @@
1
- var E = Object.defineProperty;
2
- var I = (i, t, e) => t in i ? E(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
3
- var p = (i, t, e) => I(i, typeof t != "symbol" ? t + "" : t, e);
4
- import { useMemo as P } from "react";
5
- class D {
1
+ var k = Object.defineProperty;
2
+ var C = (s, t, e) => t in s ? k(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
+ var h = (s, t, e) => C(s, typeof t != "symbol" ? t + "" : t, e);
4
+ import { useMemo as m } from "react";
5
+ function G(s, { strict: t = !0 } = {}) {
6
+ return !s || typeof s != "string" ? !1 : t ? /^0x[0-9a-fA-F]*$/.test(s) : s.startsWith("0x");
7
+ }
8
+ function z(s) {
9
+ return G(s, { strict: !1 }) ? Math.ceil((s.length - 2) / 2) : s.length;
10
+ }
11
+ const D = "2.21.51";
12
+ let u = {
13
+ getDocsUrl: ({ docsBaseUrl: s, docsPath: t = "", docsSlug: e }) => t ? `${s ?? "https://viem.sh"}${t}${e ? `#${e}` : ""}` : void 0,
14
+ version: `viem@${D}`
15
+ };
16
+ class l extends Error {
17
+ constructor(t, e = {}) {
18
+ var o;
19
+ const i = (() => {
20
+ var d;
21
+ return e.cause instanceof l ? e.cause.details : (d = e.cause) != null && d.message ? e.cause.message : e.details;
22
+ })(), n = e.cause instanceof l && e.cause.docsPath || e.docsPath, r = (o = u.getDocsUrl) == null ? void 0 : o.call(u, { ...e, docsPath: n }), a = [
23
+ t || "An error occurred.",
24
+ "",
25
+ ...e.metaMessages ? [...e.metaMessages, ""] : [],
26
+ ...r ? [`Docs: ${r}`] : [],
27
+ ...i ? [`Details: ${i}`] : [],
28
+ ...u.version ? [`Version: ${u.version}`] : []
29
+ ].join(`
30
+ `);
31
+ super(a, e.cause ? { cause: e.cause } : void 0), Object.defineProperty(this, "details", {
32
+ enumerable: !0,
33
+ configurable: !0,
34
+ writable: !0,
35
+ value: void 0
36
+ }), Object.defineProperty(this, "docsPath", {
37
+ enumerable: !0,
38
+ configurable: !0,
39
+ writable: !0,
40
+ value: void 0
41
+ }), Object.defineProperty(this, "metaMessages", {
42
+ enumerable: !0,
43
+ configurable: !0,
44
+ writable: !0,
45
+ value: void 0
46
+ }), Object.defineProperty(this, "shortMessage", {
47
+ enumerable: !0,
48
+ configurable: !0,
49
+ writable: !0,
50
+ value: void 0
51
+ }), Object.defineProperty(this, "version", {
52
+ enumerable: !0,
53
+ configurable: !0,
54
+ writable: !0,
55
+ value: void 0
56
+ }), Object.defineProperty(this, "name", {
57
+ enumerable: !0,
58
+ configurable: !0,
59
+ writable: !0,
60
+ value: "BaseError"
61
+ }), this.details = i, this.docsPath = n, this.metaMessages = e.metaMessages, this.name = e.name ?? this.name, this.shortMessage = t, this.version = D;
62
+ }
63
+ walk(t) {
64
+ return S(this, t);
65
+ }
66
+ }
67
+ function S(s, t) {
68
+ return t != null && t(s) ? s : s && typeof s == "object" && "cause" in s && s.cause !== void 0 ? S(s.cause, t) : t ? null : s;
69
+ }
70
+ class T extends l {
71
+ constructor({ size: t, targetSize: e, type: i }) {
72
+ super(`${i.charAt(0).toUpperCase()}${i.slice(1).toLowerCase()} size (${t}) exceeds padding size (${e}).`, { name: "SizeExceedsPaddingSizeError" });
73
+ }
74
+ }
75
+ function g(s, { dir: t, size: e = 32 } = {}) {
76
+ return typeof s == "string" ? H(s, { dir: t, size: e }) : W(s, { dir: t, size: e });
77
+ }
78
+ function H(s, { dir: t, size: e = 32 } = {}) {
79
+ if (e === null)
80
+ return s;
81
+ const i = s.replace("0x", "");
82
+ if (i.length > e * 2)
83
+ throw new T({
84
+ size: Math.ceil(i.length / 2),
85
+ targetSize: e,
86
+ type: "hex"
87
+ });
88
+ return `0x${i[t === "right" ? "padEnd" : "padStart"](e * 2, "0")}`;
89
+ }
90
+ function W(s, { dir: t, size: e = 32 } = {}) {
91
+ if (e === null)
92
+ return s;
93
+ if (s.length > e)
94
+ throw new T({
95
+ size: s.length,
96
+ targetSize: e,
97
+ type: "bytes"
98
+ });
99
+ const i = new Uint8Array(e);
100
+ for (let n = 0; n < e; n++) {
101
+ const r = t === "right";
102
+ i[r ? n : e - n - 1] = s[r ? n : s.length - n - 1];
103
+ }
104
+ return i;
105
+ }
106
+ class B extends l {
107
+ constructor({ max: t, min: e, signed: i, size: n, value: r }) {
108
+ super(`Number "${r}" is not in safe ${n ? `${n * 8}-bit ${i ? "signed" : "unsigned"} ` : ""}integer range ${t ? `(${e} to ${t})` : `(above ${e})`}`, { name: "IntegerOutOfRangeError" });
109
+ }
110
+ }
111
+ class j extends l {
112
+ constructor({ givenSize: t, maxSize: e }) {
113
+ super(`Size cannot exceed ${e} bytes. Given size: ${t} bytes.`, { name: "SizeOverflowError" });
114
+ }
115
+ }
116
+ function A(s, { size: t }) {
117
+ if (z(s) > t)
118
+ throw new j({
119
+ givenSize: z(s),
120
+ maxSize: t
121
+ });
122
+ }
123
+ const O = /* @__PURE__ */ Array.from({ length: 256 }, (s, t) => t.toString(16).padStart(2, "0"));
124
+ function U(s, t = {}) {
125
+ return typeof s == "number" || typeof s == "bigint" ? N(s, t) : typeof s == "string" ? V(s, t) : typeof s == "boolean" ? L(s, t) : M(s, t);
126
+ }
127
+ function L(s, t = {}) {
128
+ const e = `0x${Number(s)}`;
129
+ return typeof t.size == "number" ? (A(e, { size: t.size }), g(e, { size: t.size })) : e;
130
+ }
131
+ function M(s, t = {}) {
132
+ let e = "";
133
+ for (let n = 0; n < s.length; n++)
134
+ e += O[s[n]];
135
+ const i = `0x${e}`;
136
+ return typeof t.size == "number" ? (A(i, { size: t.size }), g(i, { dir: "right", size: t.size })) : i;
137
+ }
138
+ function N(s, t = {}) {
139
+ const { signed: e, size: i } = t, n = BigInt(s);
140
+ let r;
141
+ i ? e ? r = (1n << BigInt(i) * 8n - 1n) - 1n : r = 2n ** (BigInt(i) * 8n) - 1n : typeof s == "number" && (r = BigInt(Number.MAX_SAFE_INTEGER));
142
+ const a = typeof r == "bigint" && e ? -r - 1n : 0;
143
+ if (r && n > r || n < a) {
144
+ const d = typeof s == "bigint" ? "n" : "";
145
+ throw new B({
146
+ max: r ? `${r}${d}` : void 0,
147
+ min: `${a}${d}`,
148
+ signed: e,
149
+ size: i,
150
+ value: `${s}${d}`
151
+ });
152
+ }
153
+ const o = `0x${(e && n < 0 ? (1n << BigInt(i * 8)) + BigInt(n) : n).toString(16)}`;
154
+ return i ? g(o, { size: i }) : o;
155
+ }
156
+ const R = /* @__PURE__ */ new TextEncoder();
157
+ function V(s, t = {}) {
158
+ const e = R.encode(s);
159
+ return M(e, t);
160
+ }
161
+ class f {
6
162
  constructor(t) {
7
- p(this, "opts");
8
- p(this, "open", () => {
9
- var t, e, s, o;
10
- if (!document.body.classList.contains("glide-deposit-open")) {
11
- if (document.body.classList.add("glide-deposit-open"), this.opts.mode === "deposit" && !this.opts.recipient)
12
- throw new Error("recipient is required for deposit mode");
13
- if (this.opts.preferGaslessPayment && this.opts.walletProvider && !this.opts.walletProvider.signTypedDataAsync)
14
- throw new Error(
15
- "walletProvider.signTypedDataAsync is required when preferGaslessPayment=true"
16
- );
17
- const r = this.opts.recipient, a = (t = this.opts.walletProvider) == null ? void 0 : t.address, d = (e = this.opts.walletProvider) == null ? void 0 : e.availableChainIds, l = (s = this.opts.walletProvider) == null ? void 0 : s.currentChainId, c = this.opts.preferGaslessPayment || !!((o = this.opts.walletProvider) != null && o.signTypedDataAsync);
18
- this.openUrl(
19
- `${this.baseUrl}${this.opts.app}?embed=true${r ? `&recipient=${r}` : ""}${a ? `&connectedWalletAddress=${a}` : ""}${l ? `&currentChainId=${l}` : ""}${d ? `&availableChainIds=${d.join(",")}` : ""}${c ? "&preferGaslessPayment=true" : ""}${this.opts.mode ? `&mode=${this.opts.mode}` : ""}${this.opts.amount ? `&amount=${this.opts.amount}` : ""}`
20
- ), this.initialize();
21
- }
163
+ h(this, "opts");
164
+ h(this, "open", () => {
165
+ var a, o, d, p;
166
+ if (document.body.classList.contains("glide-deposit-open")) return;
167
+ if (document.body.classList.add("glide-deposit-open"), (this.opts.mode === "deposit" || this.opts.mode === "buy") && !this.opts.recipient)
168
+ throw new Error("recipient is required for deposit/buy mode");
169
+ if (this.opts.preferGaslessPayment && this.opts.walletProvider && !this.opts.walletProvider.signTypedDataAsync)
170
+ throw new Error(
171
+ "walletProvider.signTypedDataAsync is required when preferGaslessPayment=true"
172
+ );
173
+ const t = this.opts.recipient, e = (a = this.opts.walletProvider) == null ? void 0 : a.address, i = (o = this.opts.walletProvider) == null ? void 0 : o.availableChainIds, n = (d = this.opts.walletProvider) == null ? void 0 : d.currentChainId, r = this.opts.preferGaslessPayment || !!((p = this.opts.walletProvider) != null && p.signTypedDataAsync);
174
+ this.openUrl(
175
+ `${this.baseUrl}${this.opts.app}?embed=true${t ? `&recipient=${t}` : ""}${e ? `&connectedWalletAddress=${e}` : ""}${n ? `&currentChainId=${n}` : ""}${i ? `&availableChainIds=${i.join(",")}` : ""}${r ? "&preferGaslessPayment=true" : ""}${this.opts.mode ? `&mode=${this.opts.mode}` : ""}${this.opts.amount ? `&amount=${this.opts.amount}` : ""}${this.opts.evm ? `&evm.chainId=${this.opts.evm.chainId}&evm.to=${this.opts.evm.to}&evm.data=${this.opts.evm.data || "0x0"}&evm.value=${U(this.opts.evm.value || 0n)}` : ""}${this.opts.approval ? `&approval.token=${this.opts.approval.token}&approval.amount=${this.opts.approval.amount}` : ""}${this.opts.sessionMetadata ? `&metadata=${this.opts.sessionMetadata}` : ""}`
176
+ ), this.initialize();
22
177
  });
23
- p(this, "iframeEventHandler", async (t) => {
24
- var s, o, r, a, d, l, c, h, m, y, w, u, f, g, v, b;
178
+ h(this, "iframeEventHandler", async (t) => {
179
+ var i, n, r, a, o, d, p, y, w, $, v, b, x, P, I, E;
25
180
  const e = t.data;
26
181
  switch (e.type) {
27
182
  case "success":
28
- (o = (s = this.opts) == null ? void 0 : s.onSuccess) == null || o.call(s, e.hash);
183
+ (n = (i = this.opts) == null ? void 0 : i.onSuccess) == null || n.call(i, e.hash);
29
184
  break;
30
185
  case "close":
31
- this.removeIframe(), this.hideLoader(), this.destroy();
186
+ this.removeIframe(), this.destroy();
32
187
  break;
33
188
  case "switchChain":
34
189
  if (!this.opts.walletProvider)
@@ -44,12 +199,12 @@ class D {
44
199
  },
45
200
  this.baseUrl
46
201
  );
47
- } catch (n) {
48
- (l = (d = this.iframe) == null ? void 0 : d.contentWindow) == null || l.postMessage(
202
+ } catch (c) {
203
+ (d = (o = this.iframe) == null ? void 0 : o.contentWindow) == null || d.postMessage(
49
204
  {
50
205
  type: "didSwitchChain",
51
206
  success: !1,
52
- error: n
207
+ error: c
53
208
  },
54
209
  this.baseUrl
55
210
  );
@@ -60,23 +215,23 @@ class D {
60
215
  if (!this.opts.walletProvider)
61
216
  throw new Error("walletProvider is not set");
62
217
  try {
63
- const n = await this.opts.walletProvider.sendTransactionAsync(
218
+ const c = await this.opts.walletProvider.sendTransactionAsync(
64
219
  e.tx
65
220
  );
66
- (h = (c = this.iframe) == null ? void 0 : c.contentWindow) == null || h.postMessage(
221
+ (y = (p = this.iframe) == null ? void 0 : p.contentWindow) == null || y.postMessage(
67
222
  {
68
223
  type: "didSendTransaction",
69
224
  success: !0,
70
- txHash: n
225
+ txHash: c
71
226
  },
72
227
  this.baseUrl
73
228
  );
74
- } catch (n) {
75
- (y = (m = this.iframe) == null ? void 0 : m.contentWindow) == null || y.postMessage(
229
+ } catch (c) {
230
+ ($ = (w = this.iframe) == null ? void 0 : w.contentWindow) == null || $.postMessage(
76
231
  {
77
232
  type: "didSendTransaction",
78
233
  success: !1,
79
- error: n
234
+ error: c
80
235
  },
81
236
  this.baseUrl
82
237
  );
@@ -88,7 +243,7 @@ class D {
88
243
  if (!this.opts.walletProvider)
89
244
  throw new Error("walletProvider is not set");
90
245
  if (!this.opts.walletProvider.signTypedDataAsync) {
91
- (u = (w = this.iframe) == null ? void 0 : w.contentWindow) == null || u.postMessage(
246
+ (b = (v = this.iframe) == null ? void 0 : v.contentWindow) == null || b.postMessage(
92
247
  {
93
248
  type: "didSignTypedData",
94
249
  success: !1,
@@ -99,23 +254,23 @@ class D {
99
254
  return;
100
255
  }
101
256
  try {
102
- const n = await this.opts.walletProvider.signTypedDataAsync(
257
+ const c = await this.opts.walletProvider.signTypedDataAsync(
103
258
  e.data
104
259
  );
105
- (g = (f = this.iframe) == null ? void 0 : f.contentWindow) == null || g.postMessage(
260
+ (P = (x = this.iframe) == null ? void 0 : x.contentWindow) == null || P.postMessage(
106
261
  {
107
262
  type: "didSignTypedData",
108
263
  success: !0,
109
- signature: n
264
+ signature: c
110
265
  },
111
266
  this.baseUrl
112
267
  );
113
- } catch (n) {
114
- (b = (v = this.iframe) == null ? void 0 : v.contentWindow) == null || b.postMessage(
268
+ } catch (c) {
269
+ (E = (I = this.iframe) == null ? void 0 : I.contentWindow) == null || E.postMessage(
115
270
  {
116
271
  type: "didSignTypedData",
117
272
  success: !1,
118
- error: n
273
+ error: c
119
274
  },
120
275
  this.baseUrl
121
276
  );
@@ -126,6 +281,9 @@ class D {
126
281
  });
127
282
  this.opts = t;
128
283
  }
284
+ get externalUrl() {
285
+ return `${this.baseUrl}${this.opts.app}?${this.opts.recipient ? `&recipient=${this.opts.recipient}` : ""}${this.opts.preferGaslessPayment ? "&preferGaslessPayment=true" : ""}${this.opts.mode ? `&mode=${this.opts.mode}` : ""}${this.opts.amount ? `&amount=${this.opts.amount}` : ""}${this.opts.evm ? `&evm.chainId=${this.opts.evm.chainId}&evm.to=${this.opts.evm.to}&evm.data=${this.opts.evm.data || "0x0"}&evm.value=${U(this.opts.evm.value || 0n)}` : ""}${this.opts.approval ? `&approval.token=${this.opts.approval.token}&approval.amount=${this.opts.approval.amount}` : ""}${this.opts.sessionMetadata ? `&metadata=${this.opts.sessionMetadata}` : ""}`;
286
+ }
129
287
  initialize() {
130
288
  window.addEventListener("message", this.iframeEventHandler);
131
289
  }
@@ -139,84 +297,162 @@ class D {
139
297
  return document.getElementById("glide-deposit-iframe");
140
298
  }
141
299
  openUrl(t) {
142
- this.showLoader(), this.createIframe(t);
300
+ this.createIframe(t);
143
301
  }
144
302
  createIframe(t) {
145
303
  this.removeIframe();
146
304
  const e = document.createElement("iframe");
147
305
  e.id = "glide-deposit-iframe", e.setAttribute(
148
306
  "style",
149
- "z-index: 2147483647; display: block; background-color: transparent; border: 0px none transparent; overflow-x: hidden; overflow-y: auto; visibility: visible; margin: 0px; padding: 0px; -webkit-tap-highlight-color: transparent; position: fixed; left: 0px; top: 0px; width: 100%; height: 100%;"
150
- ), e.src = t, e.allow = "payment *; clipboard-write *", document.body.appendChild(e), window.setTimeout(() => {
151
- var s;
152
- (s = e == null ? void 0 : e.contentWindow) == null || s.focus();
153
- }, 100);
307
+ "z-index: 2147483647; display: block; background-color: transparent; border: 0px none transparent; overflow-x: hidden; overflow-y: auto; visibility: visible; margin: 0px; padding: 0px; -webkit-tap-highlight-color: transparent; position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; opacity: 0;"
308
+ ), e.onload = () => {
309
+ var i;
310
+ e.style.opacity = "1", (i = e == null ? void 0 : e.contentWindow) == null || i.focus();
311
+ }, e.src = t, e.allow = "payment *; clipboard-write *", document.body.appendChild(e);
154
312
  }
155
313
  removeIframe() {
156
314
  const t = document.getElementById("glide-deposit-iframe");
157
315
  t && (t.remove(), document.body.classList.remove("glide-deposit-open"));
158
316
  }
159
- showLoader() {
160
- const t = document.createElement("style");
161
- t.innerHTML = "@keyframes pulse { 0% { opacity: 1; transform: scale(0.1); } 100% { opacity: 0; transform: scale(1); } }", document.head.appendChild(t);
162
- const e = document.createElement("div");
163
- e.setAttribute("class", "glide-deposit-loader");
164
- const s = document.createElement("main");
165
- s.setAttribute(
166
- "style",
167
- "display: flex; align-items: center; justify-content: center; flex-direction: column; width: 100%; height: 100%;"
168
- ), e.appendChild(s), document.body.appendChild(e);
169
- }
170
- hideLoader() {
171
- document.querySelectorAll(".glide-deposit-loader").forEach((t) => t.remove());
172
- }
173
317
  }
174
- const x = ({
175
- app: i,
318
+ const X = ({
319
+ app: s,
176
320
  recipient: t,
177
321
  preferGaslessPayment: e,
178
- mode: s,
179
- walletProvider: o,
180
- onSuccess: r,
181
- baseUrl: a
182
- }) => ({
183
- openGlideDeposit: P(() => new D({
184
- app: i,
322
+ mode: i,
323
+ sessionMetadata: n,
324
+ walletProvider: r,
325
+ onSuccess: a,
326
+ baseUrl: o
327
+ }) => {
328
+ const d = m(() => new f({
329
+ app: s,
185
330
  recipient: t,
186
331
  preferGaslessPayment: e,
187
- mode: s,
188
- walletProvider: o,
189
- onSuccess: r,
190
- baseUrl: a
332
+ mode: i,
333
+ sessionMetadata: n,
334
+ walletProvider: r,
335
+ onSuccess: a,
336
+ baseUrl: o
191
337
  }), [
192
- i,
338
+ s,
193
339
  t,
194
340
  e,
195
- s,
196
- o,
341
+ i,
342
+ n,
197
343
  r,
198
- a
199
- ]).open
200
- }), A = ({
201
- app: i,
344
+ a,
345
+ o
346
+ ]);
347
+ return {
348
+ openGlideDeposit: d.open,
349
+ externalUrl: d.externalUrl,
350
+ opts: d.opts
351
+ };
352
+ }, J = ({
353
+ app: s,
202
354
  preferGaslessPayment: t,
203
355
  amount: e,
204
- walletProvider: s,
205
- onSuccess: o,
206
- baseUrl: r
207
- }) => ({
208
- openGlidePay: P(() => new D({
209
- app: i,
356
+ sessionMetadata: i,
357
+ walletProvider: n,
358
+ onSuccess: r,
359
+ baseUrl: a
360
+ }) => {
361
+ const o = m(() => new f({
362
+ app: s,
210
363
  preferGaslessPayment: t,
211
364
  mode: "pay",
212
365
  amount: e,
213
- walletProvider: s,
214
- onSuccess: o,
215
- baseUrl: r
216
- }), [i, t, s, r, e, o]).open
217
- });
366
+ sessionMetadata: i,
367
+ walletProvider: n,
368
+ onSuccess: r,
369
+ baseUrl: a
370
+ }), [
371
+ s,
372
+ t,
373
+ e,
374
+ i,
375
+ n,
376
+ r,
377
+ a
378
+ ]);
379
+ return {
380
+ openGlidePay: o.open,
381
+ externalUrl: o.externalUrl,
382
+ opts: o.opts
383
+ };
384
+ }, K = ({
385
+ app: s,
386
+ evm: t,
387
+ approval: e,
388
+ preferGaslessPayment: i,
389
+ sessionMetadata: n,
390
+ walletProvider: r,
391
+ onSuccess: a,
392
+ baseUrl: o
393
+ }) => {
394
+ const d = m(() => new f({
395
+ app: s,
396
+ evm: t,
397
+ approval: e,
398
+ preferGaslessPayment: i,
399
+ sessionMetadata: n,
400
+ mode: "call",
401
+ walletProvider: r,
402
+ onSuccess: a,
403
+ baseUrl: o
404
+ }), [
405
+ s,
406
+ t,
407
+ e,
408
+ i,
409
+ n,
410
+ r,
411
+ a,
412
+ o
413
+ ]);
414
+ return {
415
+ openGlideCall: d.open,
416
+ externalUrl: d.externalUrl,
417
+ opts: d.opts
418
+ };
419
+ }, Q = ({
420
+ app: s,
421
+ recipient: t,
422
+ preferGaslessPayment: e,
423
+ sessionMetadata: i,
424
+ walletProvider: n,
425
+ onSuccess: r,
426
+ baseUrl: a
427
+ }) => {
428
+ const o = m(() => new f({
429
+ app: s,
430
+ recipient: t,
431
+ preferGaslessPayment: e,
432
+ sessionMetadata: i,
433
+ mode: "buy",
434
+ walletProvider: n,
435
+ onSuccess: r,
436
+ baseUrl: a
437
+ }), [
438
+ s,
439
+ t,
440
+ e,
441
+ i,
442
+ n,
443
+ r,
444
+ a
445
+ ]);
446
+ return {
447
+ openGlideBuy: o.open,
448
+ externalUrl: o.externalUrl,
449
+ opts: o.opts
450
+ };
451
+ };
218
452
  export {
219
- D as GlideDeposit,
220
- x as useGlideDeposit,
221
- A as useGlidePay
453
+ f as GlideDeposit,
454
+ Q as useGlideBuy,
455
+ K as useGlideCall,
456
+ X as useGlideDeposit,
457
+ J as useGlidePay
222
458
  };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './GlideDeposit.ts';
2
2
  export * from './useGlideDeposit.ts';
3
3
  export * from './useGlidePay.ts';
4
+ export * from './useGlideCall.ts';
5
+ export * from './useGlideBuy.ts';
@@ -0,0 +1,16 @@
1
+ import { GlideDepositWalletProvider, Hex } from './GlideDeposit.ts';
2
+ interface UseGlideBuyProps {
3
+ app: string;
4
+ recipient?: Hex;
5
+ preferGaslessPayment?: boolean;
6
+ sessionMetadata?: string;
7
+ walletProvider?: GlideDepositWalletProvider;
8
+ onSuccess?: (hash: Hex) => void;
9
+ baseUrl?: string;
10
+ }
11
+ export declare const useGlideBuy: ({ app, recipient, preferGaslessPayment, sessionMetadata, walletProvider, onSuccess, baseUrl, }: UseGlideBuyProps) => {
12
+ openGlideBuy: () => void;
13
+ externalUrl: string;
14
+ opts: import('./GlideDeposit.ts').GlideDepositOptions;
15
+ };
16
+ export {};
@@ -0,0 +1,25 @@
1
+ import { GlideDepositWalletProvider, Hex } from './GlideDeposit.ts';
2
+ interface UseGlideCallProps {
3
+ app: string;
4
+ evm: {
5
+ chainId: number;
6
+ to: Hex;
7
+ data?: Hex;
8
+ value?: bigint;
9
+ };
10
+ approval?: {
11
+ token: Hex;
12
+ amount: bigint;
13
+ };
14
+ preferGaslessPayment?: boolean;
15
+ sessionMetadata?: string;
16
+ walletProvider?: GlideDepositWalletProvider;
17
+ onSuccess?: (hash: Hex) => void;
18
+ baseUrl?: string;
19
+ }
20
+ export declare const useGlideCall: ({ app, evm, approval, preferGaslessPayment, sessionMetadata, walletProvider, onSuccess, baseUrl, }: UseGlideCallProps) => {
21
+ openGlideCall: () => void;
22
+ externalUrl: string;
23
+ opts: import('./GlideDeposit.ts').GlideDepositOptions;
24
+ };
25
+ export {};
@@ -4,11 +4,14 @@ interface UseGlideDepositProps {
4
4
  recipient?: Hex;
5
5
  preferGaslessPayment?: boolean;
6
6
  mode?: "deposit" | "withdraw";
7
+ sessionMetadata?: string;
7
8
  walletProvider?: GlideDepositWalletProvider;
8
9
  onSuccess?: (hash: Hex) => void;
9
10
  baseUrl?: string;
10
11
  }
11
- export declare const useGlideDeposit: ({ app, recipient, preferGaslessPayment, mode, walletProvider, onSuccess, baseUrl, }: UseGlideDepositProps) => {
12
+ export declare const useGlideDeposit: ({ app, recipient, preferGaslessPayment, mode, sessionMetadata, walletProvider, onSuccess, baseUrl, }: UseGlideDepositProps) => {
12
13
  openGlideDeposit: () => void;
14
+ externalUrl: string;
15
+ opts: import('./GlideDeposit.ts').GlideDepositOptions;
13
16
  };
14
17
  export {};
@@ -4,11 +4,14 @@ interface UseGlidePayProps {
4
4
  app: string;
5
5
  preferGaslessPayment?: boolean;
6
6
  amount: string;
7
+ sessionMetadata?: string;
7
8
  walletProvider?: GlideDepositWalletProvider;
8
9
  onSuccess?: (hash: Hex) => void;
9
10
  baseUrl?: string;
10
11
  }
11
- export declare const useGlidePay: ({ app, preferGaslessPayment, amount, walletProvider, onSuccess, baseUrl, }: UseGlidePayProps) => {
12
+ export declare const useGlidePay: ({ app, preferGaslessPayment, amount, sessionMetadata, walletProvider, onSuccess, baseUrl, }: UseGlidePayProps) => {
12
13
  openGlidePay: () => void;
14
+ externalUrl: string;
15
+ opts: import('./GlideDeposit.ts').GlideDepositOptions;
13
16
  };
14
17
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paywithglide/glide-react",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -18,21 +18,20 @@
18
18
  "scripts": {
19
19
  "dev": "vite",
20
20
  "build": "tsc --p ./tsconfig.build.json && vite build",
21
+ "build-web": "tsc --p ./tsconfig.build.json && vite build --mode web",
22
+ "build-chromeext": "tsc --p ./tsconfig.build.json && vite build --mode chromeext:popup && vite build --mode chromeext:content && vite build --mode chromeext:background",
21
23
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
22
24
  "preview": "vite preview",
23
25
  "prepublishOnly": "npm run build"
24
26
  },
25
27
  "dependencies": {
26
- "@paywithglide/glide-js": "^0.10.0",
27
- "@tanstack/react-query": "^5.61.5",
28
- "react": "^18.3.1",
29
- "react-dom": "^18.3.1",
30
- "viem": "^2.21.51",
31
- "wagmi": "^2.13.0"
28
+ "@paywithglide/glide-js": "^0.10.0"
32
29
  },
33
30
  "devDependencies": {
34
31
  "@antiwork/shortest": "^0.2.1",
35
32
  "@eslint/js": "^9.15.0",
33
+ "@tanstack/react-query": "^5.61.5",
34
+ "@types/chrome": "^0.0.299",
36
35
  "@types/react": "^18.3.12",
37
36
  "@types/react-dom": "^18.3.1",
38
37
  "@vitejs/plugin-react": "^4.3.4",
@@ -40,9 +39,14 @@
40
39
  "eslint-plugin-react-hooks": "^5.0.0",
41
40
  "eslint-plugin-react-refresh": "^0.4.14",
42
41
  "globals": "^15.12.0",
42
+ "react": "^18.3.1",
43
+ "react-dom": "^18.3.1",
43
44
  "typescript": "~5.6.2",
44
45
  "typescript-eslint": "^8.15.0",
46
+ "viem": "^2.21.51",
45
47
  "vite": "^6.0.1",
46
- "vite-plugin-dts": "^4.3.0"
48
+ "vite-plugin-dts": "^4.3.0",
49
+ "vite-plugin-static-copy": "^2.2.0",
50
+ "wagmi": "^2.13.0"
47
51
  }
48
52
  }