@cedros/pay-react 0.1.0

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.
Files changed (190) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1731 -0
  3. package/dist/CedrosContext-B3iCqN6e.js +11 -0
  4. package/dist/CedrosContext-vX9uqZKp.mjs +1796 -0
  5. package/dist/ar-LVoQZTFI.js +1 -0
  6. package/dist/ar-w27mU-4x.mjs +19 -0
  7. package/dist/bn-BR5Cv1T4.js +1 -0
  8. package/dist/bn-Ba_k3Kex.mjs +19 -0
  9. package/dist/components/CedrosPay.d.ts +54 -0
  10. package/dist/components/CedrosPay.d.ts.map +1 -0
  11. package/dist/components/CryptoButton.d.ts +26 -0
  12. package/dist/components/CryptoButton.d.ts.map +1 -0
  13. package/dist/components/PaymentModal.d.ts +28 -0
  14. package/dist/components/PaymentModal.d.ts.map +1 -0
  15. package/dist/components/ProductPrice.d.ts +56 -0
  16. package/dist/components/ProductPrice.d.ts.map +1 -0
  17. package/dist/components/PurchaseButton.d.ts +52 -0
  18. package/dist/components/PurchaseButton.d.ts.map +1 -0
  19. package/dist/components/StripeButton.d.ts +27 -0
  20. package/dist/components/StripeButton.d.ts.map +1 -0
  21. package/dist/context/CedrosContext.d.ts +46 -0
  22. package/dist/context/CedrosContext.d.ts.map +1 -0
  23. package/dist/context/ThemeContext.d.ts +30 -0
  24. package/dist/context/ThemeContext.d.ts.map +1 -0
  25. package/dist/context/index.d.ts +3 -0
  26. package/dist/context/index.d.ts.map +1 -0
  27. package/dist/crypto-only.d.ts +33 -0
  28. package/dist/crypto-only.d.ts.map +1 -0
  29. package/dist/crypto-only.js +1 -0
  30. package/dist/crypto-only.mjs +35 -0
  31. package/dist/de-CoZiPFN7.mjs +19 -0
  32. package/dist/de-pQxy-oD1.js +1 -0
  33. package/dist/en-CSsJl3nf.mjs +19 -0
  34. package/dist/en-D-uY3ltT.js +1 -0
  35. package/dist/es-BWGIBp2f.mjs +19 -0
  36. package/dist/es-D24cg8dD.js +1 -0
  37. package/dist/fil-BOBft9G-.js +1 -0
  38. package/dist/fil-Czo27xmj.mjs +19 -0
  39. package/dist/fr-Ct9ub8Fa.js +1 -0
  40. package/dist/fr-DQ-2ThBv.mjs +19 -0
  41. package/dist/he-DpV1WnBQ.mjs +19 -0
  42. package/dist/he-DtQqRKRq.js +1 -0
  43. package/dist/hooks/usePaymentMode.d.ts +39 -0
  44. package/dist/hooks/usePaymentMode.d.ts.map +1 -0
  45. package/dist/hooks/useRefundVerification.d.ts +30 -0
  46. package/dist/hooks/useRefundVerification.d.ts.map +1 -0
  47. package/dist/hooks/useStripeCheckout.d.ts +20 -0
  48. package/dist/hooks/useStripeCheckout.d.ts.map +1 -0
  49. package/dist/hooks/useX402Payment.d.ts +24 -0
  50. package/dist/hooks/useX402Payment.d.ts.map +1 -0
  51. package/dist/i18n/index.d.ts +107 -0
  52. package/dist/i18n/index.d.ts.map +1 -0
  53. package/dist/i18n/useTranslation.d.ts +55 -0
  54. package/dist/i18n/useTranslation.d.ts.map +1 -0
  55. package/dist/id-BJMqsu19.mjs +19 -0
  56. package/dist/id-CiM2mL7C.js +1 -0
  57. package/dist/in-BxgxKLQH.mjs +19 -0
  58. package/dist/in-Bzcjmxcc.js +1 -0
  59. package/dist/index.d.ts +33 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +1 -0
  62. package/dist/index.mjs +626 -0
  63. package/dist/it-Blb_pIJl.js +1 -0
  64. package/dist/it-DZFFPALf.mjs +19 -0
  65. package/dist/jp-9NHyIuwY.js +1 -0
  66. package/dist/jp-ZExTrlHK.mjs +19 -0
  67. package/dist/kr-DHX3i4Ht.mjs +19 -0
  68. package/dist/kr-DvzJ-0yX.js +1 -0
  69. package/dist/managers/ManagerCache.d.ts +49 -0
  70. package/dist/managers/ManagerCache.d.ts.map +1 -0
  71. package/dist/managers/RouteDiscoveryManager.d.ts +72 -0
  72. package/dist/managers/RouteDiscoveryManager.d.ts.map +1 -0
  73. package/dist/managers/StripeManager.d.ts +110 -0
  74. package/dist/managers/StripeManager.d.ts.map +1 -0
  75. package/dist/managers/WalletManager.d.ts +150 -0
  76. package/dist/managers/WalletManager.d.ts.map +1 -0
  77. package/dist/managers/X402Manager.d.ts +176 -0
  78. package/dist/managers/X402Manager.d.ts.map +1 -0
  79. package/dist/ms-BOAu5pUB.js +1 -0
  80. package/dist/ms-Cv1fdIi2.mjs +19 -0
  81. package/dist/nl-BmGonsKb.mjs +19 -0
  82. package/dist/nl-WHh_DfO8.js +1 -0
  83. package/dist/pa-B7kIhZCF.js +1 -0
  84. package/dist/pa-BfwcJIar.mjs +19 -0
  85. package/dist/pay-react.css +1 -0
  86. package/dist/pl-DE5IB9xv.mjs +19 -0
  87. package/dist/pl-H0hBKdvF.js +1 -0
  88. package/dist/pt-CLzkqDzf.mjs +19 -0
  89. package/dist/pt-DwGrViQ3.js +1 -0
  90. package/dist/ru-CB2m0UDT.js +1 -0
  91. package/dist/ru-DM6-oUR0.mjs +19 -0
  92. package/dist/stripe-only.d.ts +31 -0
  93. package/dist/stripe-only.d.ts.map +1 -0
  94. package/dist/stripe-only.js +1 -0
  95. package/dist/stripe-only.mjs +33 -0
  96. package/dist/styles-D3XGpsqb.js +1 -0
  97. package/dist/styles-zgmHs6Hs.mjs +1601 -0
  98. package/dist/ta-A5HnrGb5.mjs +19 -0
  99. package/dist/ta-CAS197uN.js +1 -0
  100. package/dist/telemetry.d.ts +27 -0
  101. package/dist/telemetry.d.ts.map +1 -0
  102. package/dist/telemetry.js +1 -0
  103. package/dist/telemetry.mjs +127 -0
  104. package/dist/testing/__tests__/providers.test.d.ts +10 -0
  105. package/dist/testing/__tests__/providers.test.d.ts.map +1 -0
  106. package/dist/testing/helpers.d.ts +242 -0
  107. package/dist/testing/helpers.d.ts.map +1 -0
  108. package/dist/testing/index.d.ts +12 -0
  109. package/dist/testing/index.d.ts.map +1 -0
  110. package/dist/testing/index.js +1 -0
  111. package/dist/testing/index.mjs +374 -0
  112. package/dist/testing/mocks.d.ts +225 -0
  113. package/dist/testing/mocks.d.ts.map +1 -0
  114. package/dist/testing/providers.d.ts +89 -0
  115. package/dist/testing/providers.d.ts.map +1 -0
  116. package/dist/th-3fbB3Ytp.mjs +19 -0
  117. package/dist/th-Cpz2cFcg.js +1 -0
  118. package/dist/tr-BrgfFFdq.mjs +19 -0
  119. package/dist/tr-hQrEFk86.js +1 -0
  120. package/dist/types/componentOptions.d.ts +138 -0
  121. package/dist/types/componentOptions.d.ts.map +1 -0
  122. package/dist/types/errors.d.ts +213 -0
  123. package/dist/types/errors.d.ts.map +1 -0
  124. package/dist/types/index.d.ts +248 -0
  125. package/dist/types/index.d.ts.map +1 -0
  126. package/dist/uk-0hFun_g_.mjs +19 -0
  127. package/dist/uk-DrK2Sv8C.js +1 -0
  128. package/dist/ur-CaOjJXai.mjs +19 -0
  129. package/dist/ur-D5-7mN9a.js +1 -0
  130. package/dist/utils/__tests__/cspHelper.test.d.ts +9 -0
  131. package/dist/utils/__tests__/cspHelper.test.d.ts.map +1 -0
  132. package/dist/utils/__tests__/fetchWithTimeout.test.d.ts +11 -0
  133. package/dist/utils/__tests__/fetchWithTimeout.test.d.ts.map +1 -0
  134. package/dist/utils/cartHelpers.d.ts +105 -0
  135. package/dist/utils/cartHelpers.d.ts.map +1 -0
  136. package/dist/utils/circuitBreaker.d.ts +112 -0
  137. package/dist/utils/circuitBreaker.d.ts.map +1 -0
  138. package/dist/utils/couponHelpers.d.ts +50 -0
  139. package/dist/utils/couponHelpers.d.ts.map +1 -0
  140. package/dist/utils/cspHelper.d.ts +162 -0
  141. package/dist/utils/cspHelper.d.ts.map +1 -0
  142. package/dist/utils/deprecation.d.ts +128 -0
  143. package/dist/utils/deprecation.d.ts.map +1 -0
  144. package/dist/utils/errorHandling.d.ts +30 -0
  145. package/dist/utils/errorHandling.d.ts.map +1 -0
  146. package/dist/utils/errorMessages.d.ts +47 -0
  147. package/dist/utils/errorMessages.d.ts.map +1 -0
  148. package/dist/utils/errorParser.d.ts +37 -0
  149. package/dist/utils/errorParser.d.ts.map +1 -0
  150. package/dist/utils/eventEmitter.d.ts +119 -0
  151. package/dist/utils/eventEmitter.d.ts.map +1 -0
  152. package/dist/utils/exponentialBackoff.d.ts +104 -0
  153. package/dist/utils/exponentialBackoff.d.ts.map +1 -0
  154. package/dist/utils/fetchWithTimeout.d.ts +13 -0
  155. package/dist/utils/fetchWithTimeout.d.ts.map +1 -0
  156. package/dist/utils/index.d.ts +15 -0
  157. package/dist/utils/index.d.ts.map +1 -0
  158. package/dist/utils/logger.d.ts +76 -0
  159. package/dist/utils/logger.d.ts.map +1 -0
  160. package/dist/utils/modalStyles.d.ts +13 -0
  161. package/dist/utils/modalStyles.d.ts.map +1 -0
  162. package/dist/utils/rateLimiter.d.ts +88 -0
  163. package/dist/utils/rateLimiter.d.ts.map +1 -0
  164. package/dist/utils/requestDeduplication.d.ts +124 -0
  165. package/dist/utils/requestDeduplication.d.ts.map +1 -0
  166. package/dist/utils/securityValidation.d.ts +75 -0
  167. package/dist/utils/securityValidation.d.ts.map +1 -0
  168. package/dist/utils/solanaCheck.d.ts +10 -0
  169. package/dist/utils/solanaCheck.d.ts.map +1 -0
  170. package/dist/utils/telemetry.d.ts +277 -0
  171. package/dist/utils/telemetry.d.ts.map +1 -0
  172. package/dist/utils/tokenMintValidator.d.ts +77 -0
  173. package/dist/utils/tokenMintValidator.d.ts.map +1 -0
  174. package/dist/utils/uuid.d.ts +13 -0
  175. package/dist/utils/uuid.d.ts.map +1 -0
  176. package/dist/utils/validateConfig.d.ts +13 -0
  177. package/dist/utils/validateConfig.d.ts.map +1 -0
  178. package/dist/utils/walletDetection.d.ts +6 -0
  179. package/dist/utils/walletDetection.d.ts.map +1 -0
  180. package/dist/utils/walletPool.d.ts +57 -0
  181. package/dist/utils/walletPool.d.ts.map +1 -0
  182. package/dist/uuid-C0iMjdcc.js +1 -0
  183. package/dist/uuid-UlzrVY8Y.mjs +17 -0
  184. package/dist/vn-0nlIZFLP.mjs +19 -0
  185. package/dist/vn-B_iut9YL.js +1 -0
  186. package/dist/walletDetection-JZR3UCOa.mjs +27 -0
  187. package/dist/walletDetection-bNmV5ItZ.js +1 -0
  188. package/dist/zh-B4Endr1F.mjs +19 -0
  189. package/dist/zh-PR82dCHr.js +1 -0
  190. package/package.json +139 -0
@@ -0,0 +1,374 @@
1
+ import { vi as n } from "vitest";
2
+ import { jsx as c, Fragment as k } from "react/jsx-runtime";
3
+ import { C as f } from "../CedrosContext-vX9uqZKp.mjs";
4
+ const P = {
5
+ clusterApiUrl: n.fn(() => "https://api.devnet.solana.com"),
6
+ Connection: class {
7
+ async getLatestBlockhash() {
8
+ return {
9
+ blockhash: "mockedBlockhash123",
10
+ lastValidBlockHeight: 1e6
11
+ };
12
+ }
13
+ async getBalance() {
14
+ return 1e9;
15
+ }
16
+ async getSignatureStatus() {
17
+ return { value: { confirmationStatus: "confirmed" } };
18
+ }
19
+ async getAccountInfo() {
20
+ return {
21
+ data: new Uint8Array(),
22
+ executable: !1,
23
+ lamports: 1e6,
24
+ owner: new Uint8Array(32),
25
+ rentEpoch: 0
26
+ };
27
+ }
28
+ async sendRawTransaction() {
29
+ return "mockedSignature123";
30
+ }
31
+ async confirmTransaction() {
32
+ return { value: { err: null } };
33
+ }
34
+ },
35
+ SystemProgram: {
36
+ transfer: n.fn(() => ({
37
+ keys: [],
38
+ programId: {},
39
+ data: new Uint8Array()
40
+ }))
41
+ },
42
+ Transaction: class {
43
+ recentBlockhash;
44
+ feePayer;
45
+ instructions = [];
46
+ add(t) {
47
+ return this.instructions.push(t), this;
48
+ }
49
+ serialize() {
50
+ return new Uint8Array([1, 2, 3, 4, 5]);
51
+ }
52
+ },
53
+ LAMPORTS_PER_SOL: 1e9,
54
+ PublicKey: class {
55
+ constructor(t) {
56
+ this.value = t;
57
+ }
58
+ toString() {
59
+ return typeof this.value == "string" ? this.value : "mockPublicKey123";
60
+ }
61
+ toBase58() {
62
+ return this.toString();
63
+ }
64
+ toBytes() {
65
+ return new Uint8Array(32);
66
+ }
67
+ }
68
+ }, T = {
69
+ getAssociatedTokenAddress: n.fn(async () => ({
70
+ toBase58: () => "mockTokenAddress123"
71
+ })),
72
+ createTransferInstruction: n.fn(() => ({
73
+ keys: [],
74
+ programId: {},
75
+ data: new Uint8Array()
76
+ })),
77
+ TOKEN_PROGRAM_ID: "mockTokenProgramId"
78
+ }, w = {
79
+ ConnectionProvider: ({ children: e }) => e,
80
+ WalletProvider: ({ children: e }) => e,
81
+ useWallet: () => ({
82
+ connected: !1,
83
+ connecting: !1,
84
+ connect: n.fn(),
85
+ disconnect: n.fn(),
86
+ publicKey: null,
87
+ signTransaction: n.fn(),
88
+ signAllTransactions: n.fn(),
89
+ select: n.fn()
90
+ })
91
+ }, M = {
92
+ PhantomWalletAdapter: class {
93
+ },
94
+ SolflareWalletAdapter: class {
95
+ },
96
+ BackpackWalletAdapter: class {
97
+ }
98
+ }, C = {
99
+ loadStripe: n.fn(async () => ({
100
+ redirectToCheckout: n.fn(async (e) => ({
101
+ error: null
102
+ })),
103
+ confirmCardPayment: n.fn(async () => ({
104
+ paymentIntent: { id: "pi_mock123", status: "succeeded" },
105
+ error: null
106
+ }))
107
+ }))
108
+ };
109
+ function x(e = !0, t = "mockWallet123") {
110
+ return {
111
+ connected: e,
112
+ connecting: !1,
113
+ connect: n.fn().mockResolvedValue(void 0),
114
+ disconnect: n.fn().mockResolvedValue(void 0),
115
+ publicKey: e ? { toBase58: () => t, toString: () => t } : null,
116
+ signTransaction: n.fn().mockResolvedValue({
117
+ signature: new Uint8Array(64),
118
+ serialize: () => new Uint8Array([1, 2, 3])
119
+ }),
120
+ signAllTransactions: n.fn().mockResolvedValue([]),
121
+ select: n.fn()
122
+ };
123
+ }
124
+ function R(e = {}) {
125
+ const { redirectSuccess: t = !0 } = e, o = e.sessionId ?? "cs_test_mock123";
126
+ return {
127
+ redirectToCheckout: n.fn().mockResolvedValue({
128
+ error: t ? null : { message: "Mock redirect error" }
129
+ }),
130
+ confirmCardPayment: n.fn().mockResolvedValue({
131
+ paymentIntent: {
132
+ id: "pi_mock123",
133
+ status: "succeeded"
134
+ },
135
+ error: null
136
+ }),
137
+ _sessionId: o
138
+ // Store for potential inspection
139
+ };
140
+ }
141
+ function U(e) {
142
+ return n.fn((t) => {
143
+ for (const [o, r] of Object.entries(e))
144
+ if (t.includes(o))
145
+ return Promise.resolve({
146
+ ok: r.status >= 200 && r.status < 300,
147
+ status: r.status,
148
+ json: async () => r.body,
149
+ text: async () => JSON.stringify(r.body),
150
+ headers: new Map(Object.entries(r.headers || {}))
151
+ });
152
+ return Promise.resolve({
153
+ ok: !1,
154
+ status: 404,
155
+ json: async () => ({ error: "Not found" }),
156
+ text: async () => JSON.stringify({ error: "Not found" }),
157
+ headers: /* @__PURE__ */ new Map()
158
+ });
159
+ });
160
+ }
161
+ function p(e = {}) {
162
+ return function({ children: o }) {
163
+ const r = {
164
+ stripePublicKey: e.stripePublicKey ?? "pk_test_mock_key_for_testing",
165
+ serverUrl: e.serverUrl ?? "http://localhost:8080",
166
+ solanaCluster: e.solanaCluster ?? "devnet",
167
+ solanaEndpoint: e.solanaEndpoint,
168
+ theme: e.theme ?? "light",
169
+ themeOverrides: e.themeOverrides,
170
+ unstyled: !1,
171
+ tokenMint: void 0,
172
+ dangerouslyAllowUnknownMint: !0,
173
+ // Allow any mint in test mode
174
+ logLevel: 4
175
+ // LogLevel.SILENT - no logs in tests
176
+ };
177
+ return /* @__PURE__ */ c(f, { config: r, children: o });
178
+ };
179
+ }
180
+ function I() {
181
+ return p({
182
+ stripePublicKey: "pk_test_minimal",
183
+ serverUrl: "http://localhost:8080",
184
+ solanaCluster: "devnet"
185
+ });
186
+ }
187
+ function j(e = {}) {
188
+ return e.connected, e.publicKey, e.connecting, function({ children: o }) {
189
+ return /* @__PURE__ */ c(k, { children: o });
190
+ };
191
+ }
192
+ function B(e = "cs_test_mock123") {
193
+ return {
194
+ success: !0,
195
+ transactionId: e,
196
+ error: void 0
197
+ };
198
+ }
199
+ function O(e = "Payment failed") {
200
+ return {
201
+ success: !1,
202
+ transactionId: void 0,
203
+ error: e
204
+ };
205
+ }
206
+ function q(e = {}) {
207
+ const {
208
+ scheme: t = "solana-spl-transfer",
209
+ network: o = "mainnet-beta",
210
+ maxAmountRequired: r = "1000000",
211
+ resource: s = "test-resource",
212
+ description: a = "Test Payment",
213
+ mimeType: i = "application/json",
214
+ payTo: l = "mockRecipient123",
215
+ maxTimeoutSeconds: u = 300,
216
+ asset: m = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
217
+ // USDC mint
218
+ extra: d = {
219
+ recipientTokenAccount: "mockTokenAccount123",
220
+ decimals: 6,
221
+ tokenSymbol: "USDC",
222
+ memo: "test-payment"
223
+ }
224
+ } = e;
225
+ return {
226
+ scheme: t,
227
+ network: o,
228
+ maxAmountRequired: r,
229
+ resource: s,
230
+ description: a,
231
+ mimeType: i,
232
+ payTo: l,
233
+ maxTimeoutSeconds: u,
234
+ asset: m,
235
+ extra: d
236
+ };
237
+ }
238
+ function K(e = {}) {
239
+ const {
240
+ success: t = !0,
241
+ error: o = null,
242
+ txHash: r = "mockSignature123",
243
+ networkId: s = "mainnet-beta",
244
+ metadata: a
245
+ } = e;
246
+ return {
247
+ success: t,
248
+ error: o,
249
+ txHash: r,
250
+ networkId: s,
251
+ metadata: a
252
+ };
253
+ }
254
+ async function E() {
255
+ return new Promise((e) => setTimeout(e, 0));
256
+ }
257
+ async function N(e) {
258
+ return new Promise((t) => setTimeout(t, e));
259
+ }
260
+ function V(e, t = {}) {
261
+ const {
262
+ maxAmountRequired: o = "1000000",
263
+ asset: r = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
264
+ // USDC mint
265
+ payTo: s = "mockRecipient123"
266
+ } = t;
267
+ return {
268
+ ok: !1,
269
+ status: 402,
270
+ json: async () => ({
271
+ x402Version: 0,
272
+ error: "payment required",
273
+ accepts: [
274
+ {
275
+ scheme: "solana-spl-transfer",
276
+ network: "mainnet-beta",
277
+ maxAmountRequired: o,
278
+ resource: e,
279
+ description: "Payment required",
280
+ mimeType: "application/json",
281
+ payTo: s,
282
+ maxTimeoutSeconds: 300,
283
+ asset: r,
284
+ extra: {
285
+ recipientTokenAccount: "mockTokenAccount123",
286
+ decimals: 6,
287
+ tokenSymbol: "USDC",
288
+ memo: `${e}:${Date.now()}`
289
+ }
290
+ }
291
+ ]
292
+ }),
293
+ headers: /* @__PURE__ */ new Map([
294
+ ["content-type", "application/json"]
295
+ ])
296
+ };
297
+ }
298
+ function G(e = !0) {
299
+ const t = e ? {
300
+ success: !0,
301
+ error: null,
302
+ txHash: "mockSignature123",
303
+ networkId: "mainnet-beta"
304
+ } : {
305
+ success: !1,
306
+ error: "Payment verification failed",
307
+ txHash: null,
308
+ networkId: null
309
+ };
310
+ return {
311
+ ok: e,
312
+ status: e ? 200 : 402,
313
+ json: async () => t,
314
+ headers: /* @__PURE__ */ new Map([
315
+ ["x-payment-response", JSON.stringify(t)]
316
+ ])
317
+ };
318
+ }
319
+ function D(e = "cs_test_mock123") {
320
+ return {
321
+ ok: !0,
322
+ status: 200,
323
+ json: async () => ({
324
+ sessionId: e,
325
+ url: `https://checkout.stripe.com/pay/${e}`
326
+ })
327
+ };
328
+ }
329
+ function F(e = "mockWallet123") {
330
+ return {
331
+ publicKey: {
332
+ toBase58: () => e,
333
+ toString: () => e
334
+ }
335
+ };
336
+ }
337
+ function z() {
338
+ return {
339
+ signature: new Uint8Array(64).fill(1),
340
+ serialize: () => new Uint8Array([1, 2, 3, 4, 5])
341
+ };
342
+ }
343
+ function H(e) {
344
+ return n.fn(e);
345
+ }
346
+ async function J() {
347
+ return new Promise((e) => setImmediate(e));
348
+ }
349
+ export {
350
+ I as createMinimalMockProvider,
351
+ p as createMockCedrosProvider,
352
+ U as createMockFetch,
353
+ R as createMockStripe,
354
+ x as createMockWallet,
355
+ H as createSpy,
356
+ J as flushPromises,
357
+ O as mockPaymentFailure,
358
+ B as mockPaymentSuccess,
359
+ V as mockQuoteResponse,
360
+ K as mockSettlement,
361
+ z as mockSignTransaction,
362
+ P as mockSolanaWeb3,
363
+ T as mockSplToken,
364
+ C as mockStripeJs,
365
+ D as mockStripeSessionResponse,
366
+ G as mockVerifyResponse,
367
+ w as mockWalletAdapter,
368
+ M as mockWalletAdapterWallets,
369
+ F as mockWalletConnect,
370
+ j as mockWalletProvider,
371
+ q as mockX402Quote,
372
+ N as wait,
373
+ E as waitForNextTick
374
+ };
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Mock implementations for Solana and Stripe dependencies
3
+ *
4
+ * These mocks can be used with vi.mock() in Vitest or jest.mock() in Jest
5
+ * to avoid needing real Solana/Stripe connections in tests.
6
+ */
7
+ /**
8
+ * Mock Solana web3.js with common methods
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * vi.mock('@solana/web3.js', () => mockSolanaWeb3);
13
+ * ```
14
+ */
15
+ export declare const mockSolanaWeb3: {
16
+ clusterApiUrl: import('vitest').Mock<() => string>;
17
+ Connection: {
18
+ new (): {
19
+ getLatestBlockhash(): Promise<{
20
+ blockhash: string;
21
+ lastValidBlockHeight: number;
22
+ }>;
23
+ getBalance(): Promise<number>;
24
+ getSignatureStatus(): Promise<{
25
+ value: {
26
+ confirmationStatus: string;
27
+ };
28
+ }>;
29
+ getAccountInfo(): Promise<{
30
+ data: Uint8Array<ArrayBuffer>;
31
+ executable: boolean;
32
+ lamports: number;
33
+ owner: Uint8Array<ArrayBuffer>;
34
+ rentEpoch: number;
35
+ }>;
36
+ sendRawTransaction(): Promise<string>;
37
+ confirmTransaction(): Promise<{
38
+ value: {
39
+ err: null;
40
+ };
41
+ }>;
42
+ };
43
+ };
44
+ SystemProgram: {
45
+ transfer: import('vitest').Mock<() => {
46
+ keys: never[];
47
+ programId: {};
48
+ data: Uint8Array<ArrayBuffer>;
49
+ }>;
50
+ };
51
+ Transaction: {
52
+ new (): {
53
+ recentBlockhash?: string;
54
+ feePayer?: unknown;
55
+ instructions: unknown[];
56
+ add(instruction: unknown): /*elided*/ any;
57
+ serialize(): Uint8Array<ArrayBuffer>;
58
+ };
59
+ };
60
+ LAMPORTS_PER_SOL: number;
61
+ PublicKey: {
62
+ new (value: string | Uint8Array): {
63
+ value: string | Uint8Array;
64
+ toString(): string;
65
+ toBase58(): string;
66
+ toBytes(): Uint8Array<ArrayBuffer>;
67
+ };
68
+ };
69
+ };
70
+ /**
71
+ * Mock SPL Token with transfer instruction
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * vi.mock('@solana/spl-token', () => mockSplToken);
76
+ * ```
77
+ */
78
+ export declare const mockSplToken: {
79
+ getAssociatedTokenAddress: import('vitest').Mock<() => Promise<{
80
+ toBase58: () => "mockTokenAddress123";
81
+ }>>;
82
+ createTransferInstruction: import('vitest').Mock<() => {
83
+ keys: never[];
84
+ programId: {};
85
+ data: Uint8Array<ArrayBuffer>;
86
+ }>;
87
+ TOKEN_PROGRAM_ID: string;
88
+ };
89
+ /**
90
+ * Mock Solana wallet adapter (react)
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * vi.mock('@solana/wallet-adapter-react', () => mockWalletAdapter);
95
+ * ```
96
+ */
97
+ export declare const mockWalletAdapter: {
98
+ ConnectionProvider: ({ children }: {
99
+ children: React.ReactNode;
100
+ }) => import('react').ReactNode;
101
+ WalletProvider: ({ children }: {
102
+ children: React.ReactNode;
103
+ }) => import('react').ReactNode;
104
+ useWallet: () => {
105
+ connected: boolean;
106
+ connecting: boolean;
107
+ connect: import('vitest').Mock<import('@vitest/spy').Procedure>;
108
+ disconnect: import('vitest').Mock<import('@vitest/spy').Procedure>;
109
+ publicKey: null;
110
+ signTransaction: import('vitest').Mock<import('@vitest/spy').Procedure>;
111
+ signAllTransactions: import('vitest').Mock<import('@vitest/spy').Procedure>;
112
+ select: import('vitest').Mock<import('@vitest/spy').Procedure>;
113
+ };
114
+ };
115
+ /**
116
+ * Mock Solana wallet adapter wallets
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * vi.mock('@solana/wallet-adapter-wallets', () => mockWalletAdapterWallets);
121
+ * ```
122
+ */
123
+ export declare const mockWalletAdapterWallets: {
124
+ PhantomWalletAdapter: {
125
+ new (): {};
126
+ };
127
+ SolflareWalletAdapter: {
128
+ new (): {};
129
+ };
130
+ BackpackWalletAdapter: {
131
+ new (): {};
132
+ };
133
+ };
134
+ /**
135
+ * Mock Stripe.js
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * vi.mock('@stripe/stripe-js', () => mockStripeJs);
140
+ * ```
141
+ */
142
+ export declare const mockStripeJs: {
143
+ loadStripe: import('vitest').Mock<() => Promise<{
144
+ redirectToCheckout: import('vitest').Mock<(_options: {
145
+ sessionId: string;
146
+ }) => Promise<{
147
+ error: null;
148
+ }>>;
149
+ confirmCardPayment: import('vitest').Mock<() => Promise<{
150
+ paymentIntent: {
151
+ id: string;
152
+ status: string;
153
+ };
154
+ error: null;
155
+ }>>;
156
+ }>>;
157
+ };
158
+ /**
159
+ * Create a mock wallet with custom behavior
160
+ *
161
+ * @param connected - Whether wallet is connected
162
+ * @param publicKey - Mock public key string
163
+ * @returns Mock wallet object
164
+ */
165
+ export declare function createMockWallet(connected?: boolean, publicKey?: string): {
166
+ connected: boolean;
167
+ connecting: boolean;
168
+ connect: import('vitest').Mock<import('@vitest/spy').Procedure>;
169
+ disconnect: import('vitest').Mock<import('@vitest/spy').Procedure>;
170
+ publicKey: {
171
+ toBase58: () => string;
172
+ toString: () => string;
173
+ } | null;
174
+ signTransaction: import('vitest').Mock<import('@vitest/spy').Procedure>;
175
+ signAllTransactions: import('vitest').Mock<import('@vitest/spy').Procedure>;
176
+ select: import('vitest').Mock<import('@vitest/spy').Procedure>;
177
+ };
178
+ /**
179
+ * Create a mock Stripe instance
180
+ *
181
+ * @param options - Options for mock behavior
182
+ * @returns Mock Stripe object
183
+ */
184
+ export declare function createMockStripe(options?: {
185
+ redirectSuccess?: boolean;
186
+ sessionId?: string;
187
+ }): {
188
+ redirectToCheckout: import('vitest').Mock<import('@vitest/spy').Procedure>;
189
+ confirmCardPayment: import('vitest').Mock<import('@vitest/spy').Procedure>;
190
+ _sessionId: string;
191
+ };
192
+ /**
193
+ * Mock fetch for backend API calls
194
+ *
195
+ * @param responses - Map of URL patterns to responses
196
+ * @returns Mock fetch function
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * global.fetch = createMockFetch({
201
+ * '/paywall/v1/quote': { status: 402, body: { recipient: '...' } },
202
+ * '/paywall/v1/verify': { status: 200, body: { success: true } },
203
+ * });
204
+ * ```
205
+ */
206
+ export declare function createMockFetch(responses: Record<string, {
207
+ status: number;
208
+ body: unknown;
209
+ headers?: Record<string, string>;
210
+ }>): import('vitest').Mock<(url: string) => Promise<{
211
+ ok: boolean;
212
+ status: number;
213
+ json: () => Promise<unknown>;
214
+ text: () => Promise<string>;
215
+ headers: Map<string, string>;
216
+ }> | Promise<{
217
+ ok: boolean;
218
+ status: number;
219
+ json: () => Promise<{
220
+ error: string;
221
+ }>;
222
+ text: () => Promise<string>;
223
+ headers: Map<any, any>;
224
+ }>>;
225
+ //# sourceMappingURL=mocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/testing/mocks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA4CL,MAAM;uBACb,OAAO;0BACJ,OAAO,EAAE;6BAEN,OAAO;;;;;;oBAWE,MAAM,GAAG,UAAU;mBAAnB,MAAM,GAAG,UAAU;;;;;;CAchD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAUxB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;uCACO;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;mCACjC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;;;;;;;;;;;CAW7D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;CAIpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;;6DAEsB;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;CAQnE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,OAAc,EACzB,SAAS,GAAE,MAAwB;;;;;;;;;;;;EAepC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACf;;;;EAiBL;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,+BAE3E,MAAM;;;;;;;;;;;;;;IAsB1B"}
@@ -0,0 +1,89 @@
1
+ import { ReactNode } from 'react';
2
+ import { CedrosConfig } from '../types';
3
+ /**
4
+ * Configuration for creating a mock Cedros provider
5
+ */
6
+ export interface MockCedrosProviderConfig extends Partial<CedrosConfig> {
7
+ /** Mock implementations for managers (optional) */
8
+ mockManagers?: {
9
+ stripeManager?: Record<string, unknown>;
10
+ x402Manager?: Record<string, unknown>;
11
+ walletManager?: Record<string, unknown>;
12
+ routeDiscoveryManager?: Record<string, unknown>;
13
+ };
14
+ }
15
+ /**
16
+ * Creates a mock CedrosProvider for testing
17
+ *
18
+ * @param config - Optional configuration
19
+ * @returns Mock provider component
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { render } from '@testing-library/react';
24
+ * import { createMockCedrosProvider } from '@cedros/pay-react/testing';
25
+ *
26
+ * const MockProvider = createMockCedrosProvider({
27
+ * stripePublicKey: 'pk_test_mock',
28
+ * serverUrl: 'http://localhost:8080',
29
+ * });
30
+ *
31
+ * render(
32
+ * <MockProvider>
33
+ * <YourComponent />
34
+ * </MockProvider>
35
+ * );
36
+ * ```
37
+ */
38
+ export declare function createMockCedrosProvider(config?: MockCedrosProviderConfig): ({ children }: {
39
+ children: ReactNode;
40
+ }) => import("react/jsx-runtime").JSX.Element;
41
+ /**
42
+ * Creates a minimal mock provider for simple tests
43
+ *
44
+ * @returns Minimal mock provider component
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const MinimalProvider = createMinimalMockProvider();
49
+ *
50
+ * render(
51
+ * <MinimalProvider>
52
+ * <YourComponent />
53
+ * </MinimalProvider>
54
+ * );
55
+ * ```
56
+ */
57
+ export declare function createMinimalMockProvider(): ({ children }: {
58
+ children: ReactNode;
59
+ }) => import("react/jsx-runtime").JSX.Element;
60
+ /**
61
+ * Wrapper for testing with Solana wallet mocks
62
+ *
63
+ * @param walletState - Mock wallet state
64
+ * @returns Mock wallet provider component
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * import { mockWalletProvider } from '@cedros/pay-react/testing';
69
+ *
70
+ * const WalletProvider = mockWalletProvider({
71
+ * connected: true,
72
+ * publicKey: 'mockWallet123',
73
+ * });
74
+ *
75
+ * render(
76
+ * <WalletProvider>
77
+ * <CryptoButton resource="test" />
78
+ * </WalletProvider>
79
+ * );
80
+ * ```
81
+ */
82
+ export declare function mockWalletProvider(walletState?: {
83
+ connected?: boolean;
84
+ publicKey?: string;
85
+ connecting?: boolean;
86
+ }): ({ children }: {
87
+ children: ReactNode;
88
+ }) => import("react/jsx-runtime").JSX.Element;
89
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/testing/providers.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,YAAY,CAAC;IACrE,mDAAmD;IACnD,YAAY,CAAC,EAAE;QACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,wBAA6B,IAGzC,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,6CAmBzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,mBArCU;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,6CA2CzE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAE;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,IAO+B,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,6CAKzE"}