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