@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,107 @@
1
+ /**
2
+ * Cedros Pay - Internationalization (i18n)
3
+ *
4
+ * Dynamic translation system that automatically loads languages
5
+ * based on JSON files in the translations/ folder.
6
+ *
7
+ * Features:
8
+ * - Zero-config language detection (uses browser locale)
9
+ * - Dynamic loading (only loads the language you need)
10
+ * - Automatic fallback to English
11
+ * - Type-safe translation keys
12
+ * - Manual locale override via CedrosProvider
13
+ */
14
+ /**
15
+ * Translation structure matching translations/*.json files
16
+ */
17
+ export interface Translations {
18
+ locale: string;
19
+ ui: {
20
+ pay_with_card: string;
21
+ pay_with_crypto: string;
22
+ pay_with_usdc: string;
23
+ purchase: string;
24
+ card: string;
25
+ usdc_solana: string;
26
+ crypto: string;
27
+ connect_wallet: string;
28
+ connecting: string;
29
+ processing: string;
30
+ loading: string;
31
+ close: string;
32
+ cancel: string;
33
+ confirm: string;
34
+ retry: string;
35
+ go_back: string;
36
+ contact_support: string;
37
+ disconnect: string;
38
+ payment_successful: string;
39
+ };
40
+ errors: {
41
+ [errorCode: string]: {
42
+ message: string;
43
+ action?: string;
44
+ };
45
+ };
46
+ validation: {
47
+ unknown_token_mint: string;
48
+ token_typo_warning: string;
49
+ };
50
+ wallet: {
51
+ no_wallet_detected: string;
52
+ install_wallet: string;
53
+ wallet_not_connected: string;
54
+ connect_your_wallet: string;
55
+ wallet_connection_failed: string;
56
+ try_again: string;
57
+ transaction_rejected: string;
58
+ approve_in_wallet: string;
59
+ select_wallet: string;
60
+ };
61
+ }
62
+ /**
63
+ * Supported locales (dynamically determined by files in translations/ folder)
64
+ * Locale codes follow BCP 47 standard (e.g., 'en', 'es', 'zh', 'ja', 'pt', 'fr')
65
+ */
66
+ export type Locale = string;
67
+ /**
68
+ * Get list of available locales by discovering translation files dynamically
69
+ * Uses Vite's import.meta.glob to find all translation JSON files
70
+ *
71
+ * @returns Array of available locale codes
72
+ */
73
+ export declare function getAvailableLocales(): Promise<Locale[]>;
74
+ /**
75
+ * Detect user's preferred locale from browser
76
+ *
77
+ * @returns Detected locale code (e.g., 'en', 'es')
78
+ */
79
+ export declare function detectLocale(): Locale;
80
+ /**
81
+ * Load translations for a specific locale with fallback to English
82
+ *
83
+ * @param locale - Requested locale (e.g., 'es', 'zh')
84
+ * @returns Translations object (always succeeds, falls back to English)
85
+ */
86
+ export declare function loadLocale(locale: Locale): Promise<Translations>;
87
+ /**
88
+ * Translation function type
89
+ */
90
+ export type TranslateFn = (key: string, params?: Record<string, string>) => string;
91
+ /**
92
+ * Create a translation function for a specific locale
93
+ *
94
+ * @param translations - Loaded translations object
95
+ * @returns Translation function
96
+ */
97
+ export declare function createTranslator(translations: Translations): TranslateFn;
98
+ /**
99
+ * Get error message in current locale
100
+ *
101
+ * @param errorCode - Error code string (e.g., 'insufficient_funds_token')
102
+ * @param translations - Current translations
103
+ * @param includeAction - Whether to include action guidance
104
+ * @returns Localized error message
105
+ */
106
+ export declare function getLocalizedError(errorCode: string, translations: Translations, includeAction?: boolean): string;
107
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,UAAU,EAAE;QACV,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE;QACN,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,wBAAwB,EAAE,MAAM,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAuC5B;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAsB7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAYrC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAetE;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AAEnF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,CA+BxE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,aAAa,GAAE,OAAc,GAC5B,MAAM,CAgBR"}
@@ -0,0 +1,55 @@
1
+ import { Translations, TranslateFn, Locale } from './index';
2
+ /**
3
+ * Translation hook return value
4
+ */
5
+ export interface UseTranslationResult {
6
+ /** Translation function */
7
+ t: TranslateFn;
8
+ /** Current locale */
9
+ locale: Locale;
10
+ /** Whether translations are loaded */
11
+ isLoading: boolean;
12
+ /** Full translations object (for advanced usage) */
13
+ translations: Translations | null;
14
+ }
15
+ /**
16
+ * Hook for accessing translations
17
+ *
18
+ * @param requestedLocale - Optional locale override (defaults to browser locale)
19
+ * @returns Translation function and locale info
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * function PaymentButton() {
24
+ * const { t } = useTranslation();
25
+ * return <button>{t('ui.pay_with_card')}</button>;
26
+ * }
27
+ *
28
+ * // With locale override
29
+ * function SpanishButton() {
30
+ * const { t } = useTranslation('es');
31
+ * return <button>{t('ui.pay_with_card')}</button>; // "Pagar con Tarjeta"
32
+ * }
33
+ * ```
34
+ */
35
+ export declare function useTranslation(requestedLocale?: Locale): UseTranslationResult;
36
+ /**
37
+ * Get error message in current locale
38
+ *
39
+ * Convenience function for getting localized error messages.
40
+ * Uses the translation hook internally.
41
+ *
42
+ * @param errorCode - Error code string
43
+ * @param includeAction - Whether to include action guidance
44
+ * @returns Localized error message
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * function ErrorDisplay({ error }: { error: PaymentError }) {
49
+ * const errorMessage = useLocalizedError(error.code);
50
+ * return <div>{errorMessage}</div>;
51
+ * }
52
+ * ```
53
+ */
54
+ export declare function useLocalizedError(errorCode: string, includeAction?: boolean): string;
55
+ //# sourceMappingURL=useTranslation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTranslation.d.ts","sourceRoot":"","sources":["../../src/i18n/useTranslation.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAA8C,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAGvH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,CAAC,EAAE,WAAW,CAAC;IACf,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAiD7E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,GAAE,OAAc,GAAG,MAAM,CA0B1F"}
@@ -0,0 +1,19 @@
1
+ const a = "CEDROS PAY - Berkas sumber terjemahan (Bahasa Indonesia)", n = "1.0.0", l = "id", e = { pay_with_card: "Bayar dengan Kartu", pay_with_crypto: "Bayar dengan USDC", pay_with_usdc: "Bayar dengan USDC", purchase: "Beli", card: "Kartu", usdc_solana: "USDC (Solana)", crypto: "Kripto", connect_wallet: "Hubungkan wallet", connecting: "Menghubungkan...", processing: "Memproses...", loading: "Memuat...", close: "Tutup", cancel: "Batal", confirm: "Konfirmasi", retry: "Coba Lagi", go_back: "Kembali", contact_support: "Hubungi Dukungan" }, i = { invalid_payment_proof: { message: "Verifikasi pembayaran gagal", action: "Silakan coba bayar lagi. Jika terus terjadi, hubungi dukungan." }, invalid_signature: { message: "Tanda tangan transaksi tidak valid", action: "Harap setujui transaksi di wallet Anda lalu coba lagi." }, invalid_transaction: { message: "Format transaksi tidak valid", action: "Silakan coba bayar lagi. Jika terus terjadi, coba perbarui aplikasi wallet Anda." }, transaction_not_found: { message: "Transaksi tidak ditemukan di blockchain", action: "Transaksi Anda mungkin masih diproses. Harap tunggu sebentar dan periksa wallet Anda, atau coba lagi." }, transaction_not_confirmed: { message: "Transaksi masih diproses", action: "Harap tunggu hingga blockchain mengonfirmasi transaksi Anda, lalu coba lagi." }, transaction_failed: { message: "Transaksi gagal di blockchain", action: "Periksa detail di wallet Anda. Anda mungkin perlu menyesuaikan pengaturan transaksi atau menambah SOL untuk biaya." }, transaction_expired: { message: "Transaksi memerlukan waktu terlalu lama untuk diproses", action: "Silakan coba bayar lagi. Pertimbangkan untuk meningkatkan prioritas transaksi jika wallet Anda mendukungnya." }, invalid_recipient: { message: "Pembayaran dikirim ke alamat yang salah", action: "Harap coba lagi dan pastikan Anda menyetujui transaksi yang benar di wallet." }, invalid_sender: { message: "Wallet pengirim pembayaran tidak valid", action: "Silakan hubungkan kembali wallet Anda lalu coba lagi." }, unauthorized_refund_issuer: { message: "Anda tidak berwenang melakukan pengembalian dana", action: "Hanya akun yang berwenang yang dapat memproses pengembalian dana. Hubungi dukungan jika Anda merasa ini kesalahan." }, amount_below_minimum: { message: "Jumlah pembayaran terlalu rendah", action: "Harap periksa jumlah yang diperlukan lalu coba lagi." }, amount_mismatch: { message: "Jumlah pembayaran tidak sesuai dengan penawaran", action: "Harga mungkin telah berubah. Segarkan halaman lalu coba bayar lagi." }, insufficient_funds_sol: { message: "SOL tidak cukup untuk biaya transaksi", action: "Tambahkan setidaknya 0.001 SOL ke wallet Anda untuk menutup biaya jaringan, lalu coba lagi." }, insufficient_funds_token: { message: "Saldo di wallet Anda tidak mencukupi", action: "Tambahkan dana ke wallet Anda lalu coba lagi." }, invalid_token_mint: { message: "Token pembayaran salah", action: "Harap bayar dengan token yang benar seperti yang ditampilkan pada detail pembayaran." }, not_spl_transfer: { message: "Transaksi bukan transfer token yang valid", action: "Pastikan Anda mengirim jenis token yang benar dari wallet Anda." }, missing_token_account: { message: "Akun token tidak ditemukan", action: "Wallet Anda mungkin perlu membuat akun token terlebih dahulu. Coba lagi atau gunakan wallet lain." }, invalid_token_program: { message: "Program token tidak valid", action: "Silakan coba bayar lagi. Jika terus terjadi, coba gunakan wallet lain." }, missing_memo: { message: "Memo pembayaran diperlukan tetapi tidak disertakan", action: "Silakan coba bayar lagi dan pastikan detail transaksi disetujui di wallet Anda." }, invalid_memo: { message: "Format memo pembayaran tidak valid", action: "Silakan coba bayar lagi." }, payment_already_used: { message: "Pembayaran ini sudah diproses", action: "Periksa riwayat transaksi Anda. Jika perlu melakukan pembayaran lain, mulai transaksi baru." }, signature_reused: { message: "Tanda tangan transaksi sudah digunakan", action: "Harap buat transaksi pembayaran baru." }, quote_expired: { message: "Penawaran pembayaran telah kedaluwarsa", action: "Harga diperbarui secara berkala. Segarkan halaman lalu coba bayar lagi." }, missing_field: { message: "Informasi wajib hilang", action: "Silakan periksa semua kolom yang diperlukan lalu coba lagi." }, invalid_field: { message: "Beberapa informasi tidak valid", action: "Harap periksa input Anda dan coba lagi." }, invalid_amount: { message: "Jumlah pembayaran tidak valid", action: "Harap periksa jumlahnya lalu coba lagi." }, invalid_wallet: { message: "Alamat wallet tidak valid", action: "Harap hubungkan kembali wallet Anda lalu coba lagi." }, invalid_resource: { message: "Pilihan item tidak valid", action: "Silakan segarkan halaman dan coba lagi." }, invalid_coupon: { message: "Kode kupon tidak valid", action: "Silakan periksa kode kupon lalu coba lagi." }, invalid_cart_item: { message: "Satu atau lebih item di keranjang tidak valid", action: "Silakan periksa keranjang Anda lalu coba lagi." }, empty_cart: { message: "Keranjang Anda kosong", action: "Silakan tambahkan item ke keranjang sebelum checkout." }, resource_not_found: { message: "Item tidak ditemukan", action: "Item ini mungkin sudah tidak tersedia. Silakan segarkan halaman dan coba lagi." }, cart_not_found: { message: "Keranjang belanja tidak ditemukan", action: "Keranjang Anda mungkin telah kedaluwarsa. Harap mulai pesanan baru." }, refund_not_found: { message: "Pengembalian dana tidak ditemukan", action: "Harap periksa nomor referensi pengembalian dana Anda atau hubungi dukungan." }, product_not_found: { message: "Produk tidak tersedia", action: "Produk ini mungkin sudah tidak tersedia. Silakan telusuri pilihan kami saat ini." }, coupon_not_found: { message: "Kode kupon tidak ditemukan", action: "Silakan periksa kode kupon atau hapus untuk melanjutkan." }, session_not_found: { message: "Sesi pembayaran kedaluwarsa", action: "Silakan mulai pembayaran baru." }, cart_already_paid: { message: "Pesanan ini sudah dibayar", action: "Periksa riwayat pesanan Anda. Jika ingin membeli lagi, mulai pesanan baru." }, refund_already_processed: { message: "Pengembalian dana ini sudah diproses", action: "Periksa riwayat transaksi Anda atau hubungi dukungan untuk detailnya." }, coupon_expired: { message: "Kupon telah kedaluwarsa", action: "Harap hapus kode kupon atau gunakan kode lain." }, coupon_usage_limit_reached: { message: "Batas penggunaan kupon telah tercapai", action: "Kupon ini telah digunakan sepenuhnya. Silakan coba kode lain." }, coupon_not_applicable: { message: "Kupon tidak dapat diterapkan pada pembelian ini", action: "Harap periksa syarat kupon atau hapus untuk melanjutkan." }, coupon_wrong_payment_method: { message: "Kupon tidak berlaku untuk metode pembayaran ini", action: "Coba metode pembayaran lain atau hapus kode kupon." }, stripe_error: { message: "Layanan pembayaran kartu untuk sementara tidak tersedia", action: "Silakan coba lagi sebentar lagi, atau gunakan pembayaran kripto." }, rpc_error: { message: "Jaringan blockchain untuk sementara tidak tersedia", action: "Silakan coba lagi sebentar lagi, atau gunakan pembayaran kartu." }, network_error: { message: "Masalah koneksi jaringan", action: "Harap periksa koneksi internet Anda lalu coba lagi." }, internal_error: { message: "Terjadi kesalahan pada pihak kami", action: "Silakan coba lagi. Jika terus berlanjut, hubungi dukungan." }, database_error: { message: "Layanan untuk sementara tidak tersedia", action: "Silakan coba lagi nanti." }, config_error: { message: "Kesalahan konfigurasi layanan", action: "Harap hubungi dukungan untuk bantuan." }, unknown_error: { message: "Terjadi kesalahan tak terduga", action: "Silakan coba lagi atau hubungi dukungan jika ini berlanjut." } }, t = { unknown_token_mint: "Peringatan: Alamat mint token tidak dikenali. Periksa kembali bahwa ini token yang benar untuk mencegah kehilangan dana.", token_typo_warning: "Alamat token tidak cocok dengan stablecoin yang dikenal (USDC, USDT, PYUSD, CASH). Verifikasi dengan saksama untuk mencegah kehilangan dana permanen." }, s = { no_wallet_detected: "Tidak ada wallet Solana terdeteksi", install_wallet: "Harap instal wallet Solana seperti Phantom, Solflare, atau Backpack.", wallet_not_connected: "Wallet belum terhubung", connect_your_wallet: "Harap hubungkan wallet Anda untuk melanjutkan.", wallet_connection_failed: "Gagal menghubungkan wallet", try_again: "Silakan coba hubungkan lagi.", transaction_rejected: "Transaksi ditolak", approve_in_wallet: "Harap setujui transaksi di wallet Anda untuk melanjutkan." }, r = {
2
+ comment: a,
3
+ version: n,
4
+ locale: "id",
5
+ ui: e,
6
+ errors: i,
7
+ validation: t,
8
+ wallet: s
9
+ };
10
+ export {
11
+ a as comment,
12
+ r as default,
13
+ i as errors,
14
+ l as locale,
15
+ e as ui,
16
+ t as validation,
17
+ n as version,
18
+ s as wallet
19
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a="CEDROS PAY - Berkas sumber terjemahan (Bahasa Indonesia)",n="1.0.0",e="id",i={pay_with_card:"Bayar dengan Kartu",pay_with_crypto:"Bayar dengan USDC",pay_with_usdc:"Bayar dengan USDC",purchase:"Beli",card:"Kartu",usdc_solana:"USDC (Solana)",crypto:"Kripto",connect_wallet:"Hubungkan wallet",connecting:"Menghubungkan...",processing:"Memproses...",loading:"Memuat...",close:"Tutup",cancel:"Batal",confirm:"Konfirmasi",retry:"Coba Lagi",go_back:"Kembali",contact_support:"Hubungi Dukungan"},t={invalid_payment_proof:{message:"Verifikasi pembayaran gagal",action:"Silakan coba bayar lagi. Jika terus terjadi, hubungi dukungan."},invalid_signature:{message:"Tanda tangan transaksi tidak valid",action:"Harap setujui transaksi di wallet Anda lalu coba lagi."},invalid_transaction:{message:"Format transaksi tidak valid",action:"Silakan coba bayar lagi. Jika terus terjadi, coba perbarui aplikasi wallet Anda."},transaction_not_found:{message:"Transaksi tidak ditemukan di blockchain",action:"Transaksi Anda mungkin masih diproses. Harap tunggu sebentar dan periksa wallet Anda, atau coba lagi."},transaction_not_confirmed:{message:"Transaksi masih diproses",action:"Harap tunggu hingga blockchain mengonfirmasi transaksi Anda, lalu coba lagi."},transaction_failed:{message:"Transaksi gagal di blockchain",action:"Periksa detail di wallet Anda. Anda mungkin perlu menyesuaikan pengaturan transaksi atau menambah SOL untuk biaya."},transaction_expired:{message:"Transaksi memerlukan waktu terlalu lama untuk diproses",action:"Silakan coba bayar lagi. Pertimbangkan untuk meningkatkan prioritas transaksi jika wallet Anda mendukungnya."},invalid_recipient:{message:"Pembayaran dikirim ke alamat yang salah",action:"Harap coba lagi dan pastikan Anda menyetujui transaksi yang benar di wallet."},invalid_sender:{message:"Wallet pengirim pembayaran tidak valid",action:"Silakan hubungkan kembali wallet Anda lalu coba lagi."},unauthorized_refund_issuer:{message:"Anda tidak berwenang melakukan pengembalian dana",action:"Hanya akun yang berwenang yang dapat memproses pengembalian dana. Hubungi dukungan jika Anda merasa ini kesalahan."},amount_below_minimum:{message:"Jumlah pembayaran terlalu rendah",action:"Harap periksa jumlah yang diperlukan lalu coba lagi."},amount_mismatch:{message:"Jumlah pembayaran tidak sesuai dengan penawaran",action:"Harga mungkin telah berubah. Segarkan halaman lalu coba bayar lagi."},insufficient_funds_sol:{message:"SOL tidak cukup untuk biaya transaksi",action:"Tambahkan setidaknya 0.001 SOL ke wallet Anda untuk menutup biaya jaringan, lalu coba lagi."},insufficient_funds_token:{message:"Saldo di wallet Anda tidak mencukupi",action:"Tambahkan dana ke wallet Anda lalu coba lagi."},invalid_token_mint:{message:"Token pembayaran salah",action:"Harap bayar dengan token yang benar seperti yang ditampilkan pada detail pembayaran."},not_spl_transfer:{message:"Transaksi bukan transfer token yang valid",action:"Pastikan Anda mengirim jenis token yang benar dari wallet Anda."},missing_token_account:{message:"Akun token tidak ditemukan",action:"Wallet Anda mungkin perlu membuat akun token terlebih dahulu. Coba lagi atau gunakan wallet lain."},invalid_token_program:{message:"Program token tidak valid",action:"Silakan coba bayar lagi. Jika terus terjadi, coba gunakan wallet lain."},missing_memo:{message:"Memo pembayaran diperlukan tetapi tidak disertakan",action:"Silakan coba bayar lagi dan pastikan detail transaksi disetujui di wallet Anda."},invalid_memo:{message:"Format memo pembayaran tidak valid",action:"Silakan coba bayar lagi."},payment_already_used:{message:"Pembayaran ini sudah diproses",action:"Periksa riwayat transaksi Anda. Jika perlu melakukan pembayaran lain, mulai transaksi baru."},signature_reused:{message:"Tanda tangan transaksi sudah digunakan",action:"Harap buat transaksi pembayaran baru."},quote_expired:{message:"Penawaran pembayaran telah kedaluwarsa",action:"Harga diperbarui secara berkala. Segarkan halaman lalu coba bayar lagi."},missing_field:{message:"Informasi wajib hilang",action:"Silakan periksa semua kolom yang diperlukan lalu coba lagi."},invalid_field:{message:"Beberapa informasi tidak valid",action:"Harap periksa input Anda dan coba lagi."},invalid_amount:{message:"Jumlah pembayaran tidak valid",action:"Harap periksa jumlahnya lalu coba lagi."},invalid_wallet:{message:"Alamat wallet tidak valid",action:"Harap hubungkan kembali wallet Anda lalu coba lagi."},invalid_resource:{message:"Pilihan item tidak valid",action:"Silakan segarkan halaman dan coba lagi."},invalid_coupon:{message:"Kode kupon tidak valid",action:"Silakan periksa kode kupon lalu coba lagi."},invalid_cart_item:{message:"Satu atau lebih item di keranjang tidak valid",action:"Silakan periksa keranjang Anda lalu coba lagi."},empty_cart:{message:"Keranjang Anda kosong",action:"Silakan tambahkan item ke keranjang sebelum checkout."},resource_not_found:{message:"Item tidak ditemukan",action:"Item ini mungkin sudah tidak tersedia. Silakan segarkan halaman dan coba lagi."},cart_not_found:{message:"Keranjang belanja tidak ditemukan",action:"Keranjang Anda mungkin telah kedaluwarsa. Harap mulai pesanan baru."},refund_not_found:{message:"Pengembalian dana tidak ditemukan",action:"Harap periksa nomor referensi pengembalian dana Anda atau hubungi dukungan."},product_not_found:{message:"Produk tidak tersedia",action:"Produk ini mungkin sudah tidak tersedia. Silakan telusuri pilihan kami saat ini."},coupon_not_found:{message:"Kode kupon tidak ditemukan",action:"Silakan periksa kode kupon atau hapus untuk melanjutkan."},session_not_found:{message:"Sesi pembayaran kedaluwarsa",action:"Silakan mulai pembayaran baru."},cart_already_paid:{message:"Pesanan ini sudah dibayar",action:"Periksa riwayat pesanan Anda. Jika ingin membeli lagi, mulai pesanan baru."},refund_already_processed:{message:"Pengembalian dana ini sudah diproses",action:"Periksa riwayat transaksi Anda atau hubungi dukungan untuk detailnya."},coupon_expired:{message:"Kupon telah kedaluwarsa",action:"Harap hapus kode kupon atau gunakan kode lain."},coupon_usage_limit_reached:{message:"Batas penggunaan kupon telah tercapai",action:"Kupon ini telah digunakan sepenuhnya. Silakan coba kode lain."},coupon_not_applicable:{message:"Kupon tidak dapat diterapkan pada pembelian ini",action:"Harap periksa syarat kupon atau hapus untuk melanjutkan."},coupon_wrong_payment_method:{message:"Kupon tidak berlaku untuk metode pembayaran ini",action:"Coba metode pembayaran lain atau hapus kode kupon."},stripe_error:{message:"Layanan pembayaran kartu untuk sementara tidak tersedia",action:"Silakan coba lagi sebentar lagi, atau gunakan pembayaran kripto."},rpc_error:{message:"Jaringan blockchain untuk sementara tidak tersedia",action:"Silakan coba lagi sebentar lagi, atau gunakan pembayaran kartu."},network_error:{message:"Masalah koneksi jaringan",action:"Harap periksa koneksi internet Anda lalu coba lagi."},internal_error:{message:"Terjadi kesalahan pada pihak kami",action:"Silakan coba lagi. Jika terus berlanjut, hubungi dukungan."},database_error:{message:"Layanan untuk sementara tidak tersedia",action:"Silakan coba lagi nanti."},config_error:{message:"Kesalahan konfigurasi layanan",action:"Harap hubungi dukungan untuk bantuan."},unknown_error:{message:"Terjadi kesalahan tak terduga",action:"Silakan coba lagi atau hubungi dukungan jika ini berlanjut."}},s={unknown_token_mint:"Peringatan: Alamat mint token tidak dikenali. Periksa kembali bahwa ini token yang benar untuk mencegah kehilangan dana.",token_typo_warning:"Alamat token tidak cocok dengan stablecoin yang dikenal (USDC, USDT, PYUSD, CASH). Verifikasi dengan saksama untuk mencegah kehilangan dana permanen."},l={no_wallet_detected:"Tidak ada wallet Solana terdeteksi",install_wallet:"Harap instal wallet Solana seperti Phantom, Solflare, atau Backpack.",wallet_not_connected:"Wallet belum terhubung",connect_your_wallet:"Harap hubungkan wallet Anda untuk melanjutkan.",wallet_connection_failed:"Gagal menghubungkan wallet",try_again:"Silakan coba hubungkan lagi.",transaction_rejected:"Transaksi ditolak",approve_in_wallet:"Harap setujui transaksi di wallet Anda untuk melanjutkan."},r={comment:a,version:n,locale:e,ui:i,errors:t,validation:s,wallet:l};exports.comment=a;exports.default=r;exports.errors=t;exports.locale=e;exports.ui=i;exports.validation=s;exports.version=n;exports.wallet=l;
@@ -0,0 +1,19 @@
1
+ const e = "CEDROS PAY - अनुवाद स्रोत फ़ाइल (हिंदी)", a = "1.0.0", i = "hi", n = { pay_with_card: "कार्ड से भुगतान करें", pay_with_crypto: "USDC से भुगतान करें", pay_with_usdc: "USDC से भुगतान करें", purchase: "खरीदें", card: "कार्ड", usdc_solana: "USDC (Solana)", crypto: "क्रिप्टो", connect_wallet: "वॉलेट कनेक्ट करें", connecting: "कनेक्ट हो रहा है...", processing: "प्रसंस्करण जारी है...", loading: "लोड हो रहा है...", close: "बंद करें", cancel: "रद्द करें", confirm: "पुष्टि करें", retry: "फिर से प्रयास करें", go_back: "वापस जाएँ", contact_support: "समर्थन से संपर्क करें" }, o = { invalid_payment_proof: { message: "भुगतान सत्यापन विफल", action: "कृपया अपना भुगतान फिर से आज़माएँ। यदि समस्या जारी रहती है, तो समर्थन से संपर्क करें।" }, invalid_signature: { message: "लेन‑देन का हस्ताक्षर अमान्य है", action: "कृपया अपने वॉलेट में लेन‑देन को अनुमोदित करें और फिर से प्रयास करें।" }, invalid_transaction: { message: "लेन‑देन का प्रारूप अमान्य है", action: "कृपया अपना भुगतान फिर से आज़माएँ। यदि यह जारी रहता है, तो अपने वॉलेट ऐप को अपडेट करने का प्रयास करें।" }, transaction_not_found: { message: "ब्लॉकचेन पर लेन‑देन नहीं मिला", action: "आपका लेन‑देन अभी भी प्रोसेस हो रहा हो सकता है। कृपया कुछ क्षण प्रतीक्षा करें और अपना वॉलेट जाँचें, या फिर से प्रयास करें।" }, transaction_not_confirmed: { message: "लेन‑देन अभी भी प्रोसेस हो रहा है", action: "कृपया ब्लॉकचेन द्वारा पुष्टि होने तक प्रतीक्षा करें, फिर पुनः प्रयास करें।" }, transaction_failed: { message: "ब्लॉकचेन पर लेन‑देन विफल हुआ", action: "विवरण के लिए अपना वॉलेट देखें। आपको लेन‑देन सेटिंग्स समायोजित करनी पड़ सकती हैं या शुल्क के लिए अधिक SOL जोड़ना पड़ सकता है।" }, transaction_expired: { message: "लेन‑देन को प्रोसेस होने में बहुत समय लगा", action: "कृपया अपना भुगतान फिर से करें। यदि आपका वॉलेट समर्थन करता है, तो लेन‑देन की प्राथमिकता बढ़ाने पर विचार करें।" }, invalid_recipient: { message: "भुगतान गलत पते पर भेजा गया", action: "कृपया दोबारा प्रयास करें और सुनिश्चित करें कि आप अपने वॉलेट में सही लेन‑देन को अनुमोदित कर रहे हैं।" }, invalid_sender: { message: "भुगतान का प्रेषक वॉलेट अमान्य है", action: "कृपया अपना वॉलेट फिर से कनेक्ट करें और पुनः प्रयास करें।" }, unauthorized_refund_issuer: { message: "आप रिफंड जारी करने के लिए अधिकृत नहीं हैं", action: "केवल अधिकृत खाते रिफंड प्रोसेस कर सकते हैं। यदि आपको लगता है कि यह त्रुटि है, तो समर्थन से संपर्क करें।" }, amount_below_minimum: { message: "भुगतान राशि बहुत कम है", action: "कृपया आवश्यक राशि जाँचें और पुनः प्रयास करें।" }, amount_mismatch: { message: "भुगतान राशि उद्धरण से मेल नहीं खाती", action: "कीमत बदल गई हो सकती है। कृपया पेज रीफ़्रेश करें और भुगतान फिर से करें।" }, insufficient_funds_sol: { message: "लेन‑देन शुल्क के लिए पर्याप्त SOL नहीं है", action: "नेटवर्क शुल्क कवर करने के लिए अपने वॉलेट में कम से कम 0.001 SOL जोड़ें, फिर पुनः प्रयास करें।" }, insufficient_funds_token: { message: "आपके वॉलेट में अपर्याप्त शेष राशि", action: "अपने वॉलेट में और धनराशि जोड़ें और फिर से प्रयास करें।" }, invalid_token_mint: { message: "गलत भुगतान टोकन", action: "कृपया भुगतान विवरण में दिखाए अनुसार सही टोकन से भुगतान करें।" }, not_spl_transfer: { message: "लेन‑देन मान्य टोकन ट्रांसफ़र नहीं है", action: "सुनिश्चित करें कि आप अपने वॉलेट से सही प्रकार का टोकन भेज रहे हैं।" }, missing_token_account: { message: "टोकन खाता नहीं मिला", action: "आपके वॉलेट को पहले टोकन खाता बनाना पड़ सकता है। पुनः प्रयास करें या कोई अन्य वॉलेट उपयोग करें।" }, invalid_token_program: { message: "टोकन प्रोग्राम अमान्य है", action: "कृपया भुगतान फिर से आज़माएँ। यदि समस्या जारी रहती है, तो कोई अन्य वॉलेट आज़माएँ।" }, missing_memo: { message: "भुगतान मेमो आवश्यक है, लेकिन शामिल नहीं किया गया", action: "कृपया भुगतान फिर से करें और सुनिश्चित करें कि आपने अपने वॉलेट में लेन‑देन विवरण अनुमोदित किए हैं।" }, invalid_memo: { message: "भुगतान मेमो का प्रारूप अमान्य है", action: "कृपया अपना भुगतान फिर से करें।" }, payment_already_used: { message: "यह भुगतान पहले ही प्रोसेस हो चुका है", action: "अपना लेन‑देन इतिहास जाँचें। यदि आपको फिर से भुगतान करना है, तो नई लेन‑देन शुरू करें।" }, signature_reused: { message: "लेन‑देन हस्ताक्षर पहले ही उपयोग किया जा चुका है", action: "कृपया नई भुगतान लेन‑देन बनाएँ।" }, quote_expired: { message: "भुगतान उद्धरण की समय‑सीमा समाप्त हो गई", action: "कीमतें अक्सर अपडेट होती हैं। कृपया पेज रीफ़्रेश करें और फिर से भुगतान करें।" }, missing_field: { message: "आवश्यक जानकारी अनुपलब्ध है", action: "कृपया सभी आवश्यक फ़ील्ड जाँचें और पुनः प्रयास करें।" }, invalid_field: { message: "कुछ जानकारी अमान्य है", action: "कृपया अपनी इनपुट जाँचें और पुनः प्रयास करें।" }, invalid_amount: { message: "भुगतान राशि अमान्य है", action: "कृपया राशि जाँचें और पुनः प्रयास करें।" }, invalid_wallet: { message: "वॉलेट पता अमान्य है", action: "कृपया अपना वॉलेट फिर से कनेक्ट करें और पुनः प्रयास करें।" }, invalid_resource: { message: "आइटम का चयन अमान्य है", action: "कृपया पेज रीफ़्रेश करें और पुनः प्रयास करें।" }, invalid_coupon: { message: "अमान्य कूपन कोड", action: "कृपया कूपन कोड जाँचें और पुनः प्रयास करें।" }, invalid_cart_item: { message: "कार्ट में एक या अधिक आइटम अमान्य हैं", action: "कृपया अपना कार्ट जाँचें और पुनः प्रयास करें।" }, empty_cart: { message: "आपका कार्ट खाली है", action: "चेकआउट से पहले कृपया कार्ट में आइटम जोड़ें।" }, resource_not_found: { message: "आइटम नहीं मिला", action: "यह आइटम अब उपलब्ध नहीं हो सकता है। कृपया पेज रीफ़्रेश करें और पुनः प्रयास करें।" }, cart_not_found: { message: "शॉपिंग कार्ट नहीं मिला", action: "आपका कार्ट संभवतः समाप्त हो गया है। कृपया नया ऑर्डर शुरू करें।" }, refund_not_found: { message: "रिफंड नहीं मिला", action: "कृपया अपना रिफंड संदर्भ नंबर जाँचें या समर्थन से संपर्क करें।" }, product_not_found: { message: "उत्पाद उपलब्ध नहीं है", action: "यह उत्पाद अब उपलब्ध नहीं हो सकता है। कृपया हमारी वर्तमान सूची ब्राउज़ करें।" }, coupon_not_found: { message: "कूपन कोड नहीं मिला", action: "कृपया कोड जाँचें या आगे बढ़ने के लिए उसे हटाएँ।" }, session_not_found: { message: "भुगतान सत्र समाप्त हो गया", action: "कृपया नया भुगतान शुरू करें।" }, cart_already_paid: { message: "इस ऑर्डर का भुगतान पहले ही हो चुका है", action: "अपना ऑर्डर इतिहास जाँचें। यदि आपको दूसरी खरीद करनी है, तो नया ऑर्डर शुरू करें।" }, refund_already_processed: { message: "यह रिफंड पहले ही प्रोसेस किया जा चुका है", action: "अपना लेन‑देन इतिहास जाँचें या अधिक विवरण के लिए समर्थन से संपर्क करें।" }, coupon_expired: { message: "कूपन की समय‑सीमा समाप्त हो गई है", action: "कृपया कूपन को हटाएँ या कोई दूसरा कोड उपयोग करें।" }, coupon_usage_limit_reached: { message: "कूपन उपयोग सीमा पूरी हो गई है", action: "यह कूपन पूरी तरह रिडीम किया जा चुका है। कृपया कोई दूसरा कोड आज़माएँ।" }, coupon_not_applicable: { message: "यह कूपन इस खरीद पर लागू नहीं होता", action: "कृपया कूपन की शर्तें जाँचें या आगे बढ़ने के लिए इसे हटाएँ।" }, coupon_wrong_payment_method: { message: "यह कूपन इस भुगतान विधि के लिए मान्य नहीं है", action: "कृपया अलग भुगतान विधि आज़माएँ या कूपन को हटाएँ।" }, stripe_error: { message: "कार्ड भुगतान सेवा अस्थायी रूप से अनुपलब्ध है", action: "कृपया कुछ देर में पुनः प्रयास करें, या इसके बजाय क्रिप्टो भुगतान करें।" }, rpc_error: { message: "ब्लॉकचेन नेटवर्क अस्थायी रूप से अनुपलब्ध है", action: "कृपया कुछ देर में पुनः प्रयास करें, या इसके बजाय कार्ड भुगतान करें।" }, network_error: { message: "नेटवर्क कनेक्शन समस्या", action: "कृपया अपना इंटरनेट कनेक्शन जाँचें और फिर से प्रयास करें।" }, internal_error: { message: "हमारी ओर से कुछ गलत हो गया", action: "कृपया पुनः प्रयास करें। यदि समस्या बनी रहती है, तो समर्थन से संपर्क करें।" }, database_error: { message: "सेवा अस्थायी रूप से उपलब्ध नहीं है", action: "कृपया थोड़ी देर बाद पुनः प्रयास करें।" }, config_error: { message: "सेवा कॉन्फ़िगरेशन त्रुटि", action: "कृपया सहायता के लिए समर्थन से संपर्क करें।" }, unknown_error: { message: "एक अप्रत्याशित त्रुटि हुई", action: "कृपया पुनः प्रयास करें, या यदि समस्या जारी रहती है तो समर्थन से संपर्क करें।" } }, s = { unknown_token_mint: "चेतावनी: अपरिचित टोकन मिंट पता। धनहानि से बचने के लिए सुनिश्चित करें कि यह सही टोकन है।", token_typo_warning: "टोकन पता ज्ञात स्टेबलकॉइन्स (USDC, USDT, PYUSD, CASH) से मेल नहीं खाता। स्थायी धनहानि से बचने के लिए सावधानी से सत्यापित करें।" }, t = { no_wallet_detected: "कोई Solana वॉलेट नहीं मिला", install_wallet: "कृपया Phantom, Solflare या Backpack जैसा Solana वॉलेट इंस्टॉल करें।", wallet_not_connected: "वॉलेट कनेक्ट नहीं है", connect_your_wallet: "जारी रखने के लिए कृपया अपना वॉलेट कनेक्ट करें।", wallet_connection_failed: "वॉलेट कनेक्शन विफल", try_again: "कृपया दोबारा कनेक्ट करने का प्रयास करें।", transaction_rejected: "लेन‑देन अस्वीकृत कर दिया गया", approve_in_wallet: "जारी रखने के लिए कृपया अपने वॉलेट में लेन‑देन को अनुमोदित करें।" }, c = {
2
+ comment: e,
3
+ version: a,
4
+ locale: "hi",
5
+ ui: n,
6
+ errors: o,
7
+ validation: s,
8
+ wallet: t
9
+ };
10
+ export {
11
+ e as comment,
12
+ c as default,
13
+ o as errors,
14
+ i as locale,
15
+ n as ui,
16
+ s as validation,
17
+ a as version,
18
+ t as wallet
19
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="CEDROS PAY - अनुवाद स्रोत फ़ाइल (हिंदी)",a="1.0.0",n="hi",o={pay_with_card:"कार्ड से भुगतान करें",pay_with_crypto:"USDC से भुगतान करें",pay_with_usdc:"USDC से भुगतान करें",purchase:"खरीदें",card:"कार्ड",usdc_solana:"USDC (Solana)",crypto:"क्रिप्टो",connect_wallet:"वॉलेट कनेक्ट करें",connecting:"कनेक्ट हो रहा है...",processing:"प्रसंस्करण जारी है...",loading:"लोड हो रहा है...",close:"बंद करें",cancel:"रद्द करें",confirm:"पुष्टि करें",retry:"फिर से प्रयास करें",go_back:"वापस जाएँ",contact_support:"समर्थन से संपर्क करें"},s={invalid_payment_proof:{message:"भुगतान सत्यापन विफल",action:"कृपया अपना भुगतान फिर से आज़माएँ। यदि समस्या जारी रहती है, तो समर्थन से संपर्क करें।"},invalid_signature:{message:"लेन‑देन का हस्ताक्षर अमान्य है",action:"कृपया अपने वॉलेट में लेन‑देन को अनुमोदित करें और फिर से प्रयास करें।"},invalid_transaction:{message:"लेन‑देन का प्रारूप अमान्य है",action:"कृपया अपना भुगतान फिर से आज़माएँ। यदि यह जारी रहता है, तो अपने वॉलेट ऐप को अपडेट करने का प्रयास करें।"},transaction_not_found:{message:"ब्लॉकचेन पर लेन‑देन नहीं मिला",action:"आपका लेन‑देन अभी भी प्रोसेस हो रहा हो सकता है। कृपया कुछ क्षण प्रतीक्षा करें और अपना वॉलेट जाँचें, या फिर से प्रयास करें।"},transaction_not_confirmed:{message:"लेन‑देन अभी भी प्रोसेस हो रहा है",action:"कृपया ब्लॉकचेन द्वारा पुष्टि होने तक प्रतीक्षा करें, फिर पुनः प्रयास करें।"},transaction_failed:{message:"ब्लॉकचेन पर लेन‑देन विफल हुआ",action:"विवरण के लिए अपना वॉलेट देखें। आपको लेन‑देन सेटिंग्स समायोजित करनी पड़ सकती हैं या शुल्क के लिए अधिक SOL जोड़ना पड़ सकता है।"},transaction_expired:{message:"लेन‑देन को प्रोसेस होने में बहुत समय लगा",action:"कृपया अपना भुगतान फिर से करें। यदि आपका वॉलेट समर्थन करता है, तो लेन‑देन की प्राथमिकता बढ़ाने पर विचार करें।"},invalid_recipient:{message:"भुगतान गलत पते पर भेजा गया",action:"कृपया दोबारा प्रयास करें और सुनिश्चित करें कि आप अपने वॉलेट में सही लेन‑देन को अनुमोदित कर रहे हैं।"},invalid_sender:{message:"भुगतान का प्रेषक वॉलेट अमान्य है",action:"कृपया अपना वॉलेट फिर से कनेक्ट करें और पुनः प्रयास करें।"},unauthorized_refund_issuer:{message:"आप रिफंड जारी करने के लिए अधिकृत नहीं हैं",action:"केवल अधिकृत खाते रिफंड प्रोसेस कर सकते हैं। यदि आपको लगता है कि यह त्रुटि है, तो समर्थन से संपर्क करें।"},amount_below_minimum:{message:"भुगतान राशि बहुत कम है",action:"कृपया आवश्यक राशि जाँचें और पुनः प्रयास करें।"},amount_mismatch:{message:"भुगतान राशि उद्धरण से मेल नहीं खाती",action:"कीमत बदल गई हो सकती है। कृपया पेज रीफ़्रेश करें और भुगतान फिर से करें।"},insufficient_funds_sol:{message:"लेन‑देन शुल्क के लिए पर्याप्त SOL नहीं है",action:"नेटवर्क शुल्क कवर करने के लिए अपने वॉलेट में कम से कम 0.001 SOL जोड़ें, फिर पुनः प्रयास करें।"},insufficient_funds_token:{message:"आपके वॉलेट में अपर्याप्त शेष राशि",action:"अपने वॉलेट में और धनराशि जोड़ें और फिर से प्रयास करें।"},invalid_token_mint:{message:"गलत भुगतान टोकन",action:"कृपया भुगतान विवरण में दिखाए अनुसार सही टोकन से भुगतान करें।"},not_spl_transfer:{message:"लेन‑देन मान्य टोकन ट्रांसफ़र नहीं है",action:"सुनिश्चित करें कि आप अपने वॉलेट से सही प्रकार का टोकन भेज रहे हैं।"},missing_token_account:{message:"टोकन खाता नहीं मिला",action:"आपके वॉलेट को पहले टोकन खाता बनाना पड़ सकता है। पुनः प्रयास करें या कोई अन्य वॉलेट उपयोग करें।"},invalid_token_program:{message:"टोकन प्रोग्राम अमान्य है",action:"कृपया भुगतान फिर से आज़माएँ। यदि समस्या जारी रहती है, तो कोई अन्य वॉलेट आज़माएँ।"},missing_memo:{message:"भुगतान मेमो आवश्यक है, लेकिन शामिल नहीं किया गया",action:"कृपया भुगतान फिर से करें और सुनिश्चित करें कि आपने अपने वॉलेट में लेन‑देन विवरण अनुमोदित किए हैं।"},invalid_memo:{message:"भुगतान मेमो का प्रारूप अमान्य है",action:"कृपया अपना भुगतान फिर से करें।"},payment_already_used:{message:"यह भुगतान पहले ही प्रोसेस हो चुका है",action:"अपना लेन‑देन इतिहास जाँचें। यदि आपको फिर से भुगतान करना है, तो नई लेन‑देन शुरू करें।"},signature_reused:{message:"लेन‑देन हस्ताक्षर पहले ही उपयोग किया जा चुका है",action:"कृपया नई भुगतान लेन‑देन बनाएँ।"},quote_expired:{message:"भुगतान उद्धरण की समय‑सीमा समाप्त हो गई",action:"कीमतें अक्सर अपडेट होती हैं। कृपया पेज रीफ़्रेश करें और फिर से भुगतान करें।"},missing_field:{message:"आवश्यक जानकारी अनुपलब्ध है",action:"कृपया सभी आवश्यक फ़ील्ड जाँचें और पुनः प्रयास करें।"},invalid_field:{message:"कुछ जानकारी अमान्य है",action:"कृपया अपनी इनपुट जाँचें और पुनः प्रयास करें।"},invalid_amount:{message:"भुगतान राशि अमान्य है",action:"कृपया राशि जाँचें और पुनः प्रयास करें।"},invalid_wallet:{message:"वॉलेट पता अमान्य है",action:"कृपया अपना वॉलेट फिर से कनेक्ट करें और पुनः प्रयास करें।"},invalid_resource:{message:"आइटम का चयन अमान्य है",action:"कृपया पेज रीफ़्रेश करें और पुनः प्रयास करें।"},invalid_coupon:{message:"अमान्य कूपन कोड",action:"कृपया कूपन कोड जाँचें और पुनः प्रयास करें।"},invalid_cart_item:{message:"कार्ट में एक या अधिक आइटम अमान्य हैं",action:"कृपया अपना कार्ट जाँचें और पुनः प्रयास करें।"},empty_cart:{message:"आपका कार्ट खाली है",action:"चेकआउट से पहले कृपया कार्ट में आइटम जोड़ें।"},resource_not_found:{message:"आइटम नहीं मिला",action:"यह आइटम अब उपलब्ध नहीं हो सकता है। कृपया पेज रीफ़्रेश करें और पुनः प्रयास करें।"},cart_not_found:{message:"शॉपिंग कार्ट नहीं मिला",action:"आपका कार्ट संभवतः समाप्त हो गया है। कृपया नया ऑर्डर शुरू करें।"},refund_not_found:{message:"रिफंड नहीं मिला",action:"कृपया अपना रिफंड संदर्भ नंबर जाँचें या समर्थन से संपर्क करें।"},product_not_found:{message:"उत्पाद उपलब्ध नहीं है",action:"यह उत्पाद अब उपलब्ध नहीं हो सकता है। कृपया हमारी वर्तमान सूची ब्राउज़ करें।"},coupon_not_found:{message:"कूपन कोड नहीं मिला",action:"कृपया कोड जाँचें या आगे बढ़ने के लिए उसे हटाएँ।"},session_not_found:{message:"भुगतान सत्र समाप्त हो गया",action:"कृपया नया भुगतान शुरू करें।"},cart_already_paid:{message:"इस ऑर्डर का भुगतान पहले ही हो चुका है",action:"अपना ऑर्डर इतिहास जाँचें। यदि आपको दूसरी खरीद करनी है, तो नया ऑर्डर शुरू करें।"},refund_already_processed:{message:"यह रिफंड पहले ही प्रोसेस किया जा चुका है",action:"अपना लेन‑देन इतिहास जाँचें या अधिक विवरण के लिए समर्थन से संपर्क करें।"},coupon_expired:{message:"कूपन की समय‑सीमा समाप्त हो गई है",action:"कृपया कूपन को हटाएँ या कोई दूसरा कोड उपयोग करें।"},coupon_usage_limit_reached:{message:"कूपन उपयोग सीमा पूरी हो गई है",action:"यह कूपन पूरी तरह रिडीम किया जा चुका है। कृपया कोई दूसरा कोड आज़माएँ।"},coupon_not_applicable:{message:"यह कूपन इस खरीद पर लागू नहीं होता",action:"कृपया कूपन की शर्तें जाँचें या आगे बढ़ने के लिए इसे हटाएँ।"},coupon_wrong_payment_method:{message:"यह कूपन इस भुगतान विधि के लिए मान्य नहीं है",action:"कृपया अलग भुगतान विधि आज़माएँ या कूपन को हटाएँ।"},stripe_error:{message:"कार्ड भुगतान सेवा अस्थायी रूप से अनुपलब्ध है",action:"कृपया कुछ देर में पुनः प्रयास करें, या इसके बजाय क्रिप्टो भुगतान करें।"},rpc_error:{message:"ब्लॉकचेन नेटवर्क अस्थायी रूप से अनुपलब्ध है",action:"कृपया कुछ देर में पुनः प्रयास करें, या इसके बजाय कार्ड भुगतान करें।"},network_error:{message:"नेटवर्क कनेक्शन समस्या",action:"कृपया अपना इंटरनेट कनेक्शन जाँचें और फिर से प्रयास करें।"},internal_error:{message:"हमारी ओर से कुछ गलत हो गया",action:"कृपया पुनः प्रयास करें। यदि समस्या बनी रहती है, तो समर्थन से संपर्क करें।"},database_error:{message:"सेवा अस्थायी रूप से उपलब्ध नहीं है",action:"कृपया थोड़ी देर बाद पुनः प्रयास करें।"},config_error:{message:"सेवा कॉन्फ़िगरेशन त्रुटि",action:"कृपया सहायता के लिए समर्थन से संपर्क करें।"},unknown_error:{message:"एक अप्रत्याशित त्रुटि हुई",action:"कृपया पुनः प्रयास करें, या यदि समस्या जारी रहती है तो समर्थन से संपर्क करें।"}},t={unknown_token_mint:"चेतावनी: अपरिचित टोकन मिंट पता। धनहानि से बचने के लिए सुनिश्चित करें कि यह सही टोकन है।",token_typo_warning:"टोकन पता ज्ञात स्टेबलकॉइन्स (USDC, USDT, PYUSD, CASH) से मेल नहीं खाता। स्थायी धनहानि से बचने के लिए सावधानी से सत्यापित करें।"},i={no_wallet_detected:"कोई Solana वॉलेट नहीं मिला",install_wallet:"कृपया Phantom, Solflare या Backpack जैसा Solana वॉलेट इंस्टॉल करें।",wallet_not_connected:"वॉलेट कनेक्ट नहीं है",connect_your_wallet:"जारी रखने के लिए कृपया अपना वॉलेट कनेक्ट करें।",wallet_connection_failed:"वॉलेट कनेक्शन विफल",try_again:"कृपया दोबारा कनेक्ट करने का प्रयास करें।",transaction_rejected:"लेन‑देन अस्वीकृत कर दिया गया",approve_in_wallet:"जारी रखने के लिए कृपया अपने वॉलेट में लेन‑देन को अनुमोदित करें।"},c={comment:e,version:a,locale:n,ui:o,errors:s,validation:t,wallet:i};exports.comment=e;exports.default=c;exports.errors=s;exports.locale=n;exports.ui=o;exports.validation=t;exports.version=a;exports.wallet=i;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @cedros/pay-react - Unified Stripe and Solana payments for React
3
+ *
4
+ * Main library exports
5
+ */
6
+ export { CedrosPay } from './components/CedrosPay';
7
+ export { StripeButton } from './components/StripeButton';
8
+ export { CryptoButton } from './components/CryptoButton';
9
+ export { PurchaseButton } from './components/PurchaseButton';
10
+ export type { PurchaseButtonProps } from './components/PurchaseButton';
11
+ export { PaymentModal } from './components/PaymentModal';
12
+ export type { PaymentModalProps } from './components/PaymentModal';
13
+ export { ProductPrice, PaymentMethodBadge } from './components/ProductPrice';
14
+ export type { PaymentMethod } from './components/ProductPrice';
15
+ export { CedrosProvider, useCedrosContext, useCedrosTheme, type CedrosContextValue } from './context';
16
+ export { useStripeCheckout } from './hooks/useStripeCheckout';
17
+ export { useX402Payment } from './hooks/useX402Payment';
18
+ export { useRefundVerification } from './hooks/useRefundVerification';
19
+ export { usePaymentMode } from './hooks/usePaymentMode';
20
+ export type { CedrosConfig, SolanaCluster, PaymentStatus, Currency, X402Requirement, X402Response, PaymentPayload, SettlementResponse, StripeSessionRequest, StripeSessionResponse, PaymentResult, PaymentMetadata, PaymentState, CedrosThemeMode, CedrosThemeTokens, Product, CartItem, PaymentErrorCode, PaymentError, ErrorResponse, FuturePaymentMethod, PaymentSuccessResult, PaymentErrorDetail as PaymentErrorInfo, CheckoutOptions, DisplayOptions, ModalRenderProps, CallbackOptions, AdvancedOptions, } from './types';
21
+ export { ERROR_CATEGORIES } from './types/errors';
22
+ export type { IStripeManager } from './managers/StripeManager';
23
+ export type { IX402Manager } from './managers/X402Manager';
24
+ export type { IWalletManager } from './managers/WalletManager';
25
+ export type { IRouteDiscoveryManager } from './managers/RouteDiscoveryManager';
26
+ export { validateConfig, parseCouponCodes, formatCouponCodes, calculateDiscountPercentage, createRateLimiter, RATE_LIMITER_PRESETS, type RateLimiter, type RateLimiterConfig, createCircuitBreaker, CircuitState, CircuitBreakerOpenError, CIRCUIT_BREAKER_PRESETS, type CircuitBreaker, type CircuitBreakerConfig, type CircuitBreakerStats, retryWithBackoff, RETRY_PRESETS, type RetryConfig, type RetryStats, createWalletPool, WalletPool, generateCSP, generateCSPDirectives, formatCSP, RPC_PROVIDERS, CSP_PRESETS, type CSPConfig, type CSPDirectives, type CSPFormat, } from './utils';
27
+ export { LogLevel, Logger, getLogger, createLogger, type LoggerConfig, } from './utils/logger';
28
+ export { CEDROS_EVENTS, emitPaymentStart, emitWalletConnect, emitWalletConnected, emitWalletError, emitPaymentProcessing, emitPaymentSuccess, emitPaymentError, type PaymentStartDetail, type WalletConnectDetail, type WalletErrorDetail, type PaymentProcessingDetail, type PaymentSuccessDetail, type PaymentErrorDetail, type WalletProvider, } from './utils';
29
+ export { parseStructuredErrorResponse, isRetryableError, getUserErrorMessage, } from './utils';
30
+ export { validateSecurity, logSecurityReport, SECURITY_RECOMMENDATIONS, type SecurityCheckResult, type SecurityReport, } from './utils/securityValidation';
31
+ export { detectLocale, loadLocale, getAvailableLocales, createTranslator, getLocalizedError, type Translations, type Locale, type TranslateFn, } from './i18n';
32
+ export { useTranslation, useLocalizedError, type UseTranslationResult, } from './i18n/useTranslation';
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,EAEb,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,IAAI,gBAAgB,EACtC,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,aAAa,EACb,WAAW,EACX,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),m=require("react"),A=require("@solana/wallet-adapter-react"),s=require("./styles-D3XGpsqb.js"),i=require("./CedrosContext-B3iCqN6e.js"),J=require("@solana/web3.js");function Z(t){switch(t){case"mainnet-beta":return"https://api.mainnet-beta.solana.com";case"devnet":return"https://api.devnet.solana.com";case"testnet":return"https://api.testnet.solana.com";default:return"https://api.mainnet-beta.solana.com"}}function ee(t){try{const r=new URL(t);return`${r.protocol}//${r.host}`}catch{return t}}function K(t={}){const{solanaCluster:r="mainnet-beta",solanaEndpoint:o,customRpcProviders:n=[],allowUnsafeScripts:a=!1,additionalScriptSrc:e=[],additionalConnectSrc:P=[],additionalFrameSrc:h=[],includeStripe:g=!0}=t,d=["'self'"];a&&d.push("'unsafe-inline'","'unsafe-eval'"),g&&d.push("https://js.stripe.com"),d.push(...e);const u=["'self'"];g&&u.push("https://api.stripe.com","https://*.stripe.com");const k=Z(r);if(u.push(k),u.push("https://*.solana.com"),o){const T=ee(o);u.includes(T)||u.push(T)}n.forEach(T=>{u.includes(T)||u.push(T)}),u.push(...P);const v=["'self'"];return g&&v.push("https://js.stripe.com","https://checkout.stripe.com"),v.push(...h),{scriptSrc:d,connectSrc:u,frameSrc:v}}function V(t,r="header"){const{scriptSrc:o,connectSrc:n,frameSrc:a}=t;switch(r){case"header":case"meta":case"nextjs":case"nginx":{const e=[];return o.length>0&&e.push(`script-src ${o.join(" ")}`),n.length>0&&e.push(`connect-src ${n.join(" ")}`),a.length>0&&e.push(`frame-src ${a.join(" ")}`),e.join("; ")}case"helmet":{const e={};return o.length>0&&(e.scriptSrc=o),n.length>0&&(e.connectSrc=n),a.length>0&&(e.frameSrc=a),e}case"directives":return{scriptSrc:o,connectSrc:n,frameSrc:a};default:throw new Error(`Unknown CSP format: ${r}`)}}function te(t={},r="header"){const o=K(t);return V(o,r)}const re={HELIUS:"https://*.helius-rpc.com",QUICKNODE:"https://*.quicknode.pro",ALCHEMY:"https://*.alchemy.com",ANKR:"https://rpc.ankr.com",TRITON:"https://*.rpcpool.com"},se={MAINNET_CUSTOM_RPC:t=>({solanaCluster:"mainnet-beta",solanaEndpoint:t,allowUnsafeScripts:!1}),MAINNET_NEXTJS:t=>({solanaCluster:"mainnet-beta",solanaEndpoint:t,allowUnsafeScripts:!0}),DEVNET:()=>({solanaCluster:"devnet",allowUnsafeScripts:!0}),CRYPTO_ONLY:t=>({solanaCluster:"mainnet-beta",solanaEndpoint:t,includeStripe:!1}),STRIPE_ONLY:()=>({solanaCluster:"mainnet-beta",includeStripe:!0,customRpcProviders:[]})},G=({resource:t,items:r,label:o,cardLabel:n,cryptoLabel:a,showCard:e=!0,showCrypto:P=!0,onPaymentAttempt:h,onPaymentSuccess:g,onPaymentError:d,onStripeSuccess:u,onCryptoSuccess:k,onStripeError:v,onCryptoError:T,customerEmail:p,successUrl:l,cancelUrl:c,metadata:E,couponCode:w,autoDetectWallets:R=!0,testPageUrl:b,hideMessages:q=!1,renderModal:N})=>{const I=i.useCedrosTheme(),[U,y]=m.useState(!1),{status:Y,processPayment:D,processCartCheckout:B}=s.useStripeCheckout(),{isCartMode:M,effectiveResource:L}=s.usePaymentMode(t,r),{t:_}=s.useTranslation(),z=o||_("ui.purchase"),Q=n||_("ui.card"),X=a||_("ui.usdc_solana"),W=m.useCallback(async()=>{if(R&&e){const{detectSolanaWallets:f}=await Promise.resolve().then(()=>require("./walletDetection-bNmV5ItZ.js"));if(!f()){const j=M?void 0:L,O=M&&r?s.getCartItemCount(r):void 0;s.emitPaymentStart("stripe",j,O),h&&h("stripe"),s.emitPaymentProcessing("stripe",j,O);let C;M&&r?C=await B(r,l,c,E,p,w):L&&(C=await D(L,l,c,E,p,w)),C&&C.success&&C.transactionId?(s.emitPaymentSuccess("stripe",C.transactionId,j,O),u?u(C.transactionId):g&&g(C.transactionId)):C&&!C.success&&C.error&&(s.emitPaymentError("stripe",C.error,j,O),v?v(C.error):d&&d(C.error));return}}y(!0)},[R,e,M,r,L,B,D,l,c,E,p,w,g,d,u,v,h]),H=m.useMemo(()=>M&&r?`purchase-cart-${r.map(f=>f.resource).join("-")}`:`purchase-${L||"unknown"}`,[M,r,L]),F=m.useMemo(()=>s.createDedupedClickHandler(H,W),[H,W]),x=Y==="loading",$={isOpen:U,onClose:()=>y(!1),resource:M?void 0:L,items:M?r:void 0,cardLabel:Q,cryptoLabel:X,showCard:e,showCrypto:P,onPaymentAttempt:h,onPaymentSuccess:f=>{y(!1),g?.(f)},onPaymentError:f=>{y(!1),d?.(f)},onStripeSuccess:f=>{y(!1),u?.(f)},onCryptoSuccess:f=>{y(!1),k?.(f)},onStripeError:f=>{y(!1),v?.(f)},onCryptoError:f=>{y(!1),T?.(f)},customerEmail:p,successUrl:l,cancelUrl:c,metadata:E,couponCode:w,testPageUrl:b,hideMessages:q};return S.jsxs("div",{className:I.unstyled?"":I.className,style:I.unstyled?{}:I.style,children:[S.jsx("button",{onClick:F,disabled:x,className:I.unstyled?"":"cedros-theme__button cedros-theme__stripe",style:{width:"100%",cursor:x?"not-allowed":"pointer",opacity:x?.6:1},type:"button",children:x?_("ui.processing"):z}),N?N($):S.jsx(s.PaymentModal,{...$})]})};function oe(t){const{resource:r,items:o,checkout:n={},display:a={},callbacks:e={},advanced:P={}}=t,{config:h,walletPool:g}=i.useCedrosContext(),d=i.useCedrosTheme(),{isCartMode:u}=s.usePaymentMode(r,o),k=m.useMemo(()=>({marginTop:"0.5rem",fontSize:"0.875rem",color:d.tokens.surfaceText,opacity:.7,textAlign:"center"}),[d.tokens.surfaceText]),v=m.useMemo(()=>P.wallets&&P.wallets.length>0?P.wallets:g.getAdapters(),[P.wallets,g]),T=m.useMemo(()=>o?s.getCartItemCount(o):0,[o]),p=m.useMemo(()=>e.onPaymentSuccess?y=>e.onPaymentSuccess({transactionId:y,method:"stripe"}):void 0,[e.onPaymentSuccess]),l=m.useMemo(()=>e.onPaymentSuccess?y=>e.onPaymentSuccess({transactionId:y,method:"crypto"}):void 0,[e.onPaymentSuccess]),c=m.useMemo(()=>e.onPaymentError?y=>e.onPaymentError({message:y,method:"stripe"}):void 0,[e.onPaymentError]),E=m.useMemo(()=>e.onPaymentError?y=>e.onPaymentError({message:y,method:"crypto"}):void 0,[e.onPaymentError]),w=h.solanaEndpoint??J.clusterApiUrl(h.solanaCluster);if(!r&&(!o||o.length===0))return i.getLogger().error('CedrosPay: Must provide either "resource" or "items" prop'),S.jsx("div",{className:a.className,style:{color:d.tokens.errorText},children:"Configuration error: No resource or items provided"});const R=a.showCard??!0,b=a.showCrypto??!0,q=a.showPurchaseButton??!1,N=a.layout??"vertical",I=a.hideMessages??!1,U=P.autoDetectWallets??!0;return S.jsx("div",{className:d.unstyled?a.className:d.className,style:d.unstyled?{}:d.style,children:S.jsx(A.ConnectionProvider,{endpoint:w,children:S.jsx(A.WalletProvider,{wallets:v,autoConnect:!1,children:S.jsx("div",{className:d.unstyled?a.className:`cedros-theme__pay ${a.className||""}`,children:S.jsxs("div",{className:d.unstyled?"":`cedros-theme__pay-content cedros-theme__pay-content--${N}`,children:[q?S.jsx(G,{resource:u?void 0:r||o?.[0]?.resource,items:u?o:void 0,label:a.purchaseLabel,cardLabel:a.cardLabel,cryptoLabel:a.cryptoLabel,showCard:R,showCrypto:b,onPaymentAttempt:e.onPaymentAttempt,onPaymentSuccess:p,onPaymentError:c,onStripeSuccess:p,onCryptoSuccess:l,onStripeError:c,onCryptoError:E,customerEmail:n.customerEmail,successUrl:n.successUrl,cancelUrl:n.cancelUrl,metadata:n.metadata,couponCode:n.couponCode,autoDetectWallets:U,testPageUrl:P.testPageUrl,hideMessages:I,renderModal:a.renderModal}):S.jsxs(S.Fragment,{children:[R&&S.jsx(s.StripeButton,{resource:u?void 0:r||o?.[0]?.resource,items:u?o:void 0,customerEmail:n.customerEmail,successUrl:n.successUrl,cancelUrl:n.cancelUrl,metadata:n.metadata,couponCode:n.couponCode,label:a.cardLabel,onAttempt:e.onPaymentAttempt,onSuccess:p,onError:c}),b&&S.jsx(s.CryptoButton,{resource:u?void 0:r||o?.[0]?.resource,items:u?o:void 0,metadata:n.metadata,couponCode:n.couponCode,label:a.cryptoLabel,onAttempt:e.onPaymentAttempt,onSuccess:l,onError:E,testPageUrl:P.testPageUrl,hideMessages:I})]}),u&&o&&o.length>1&&!I&&S.jsxs("div",{style:k,children:["Checking out ",T," items"]})]})})})})})}function ne(){const{x402Manager:t,walletManager:r}=i.useCedrosContext(),{publicKey:o,signTransaction:n}=A.useWallet(),[a,e]=m.useState({status:"idle",error:null,transactionId:null}),[P,h]=m.useState(null),[g,d]=m.useState(null),u=m.useCallback(async p=>{try{e(c=>({...c,status:"loading"}));const l=await t.requestQuote({resource:p});if(!t.validateRequirement(l))throw new Error("Invalid refund requirement received from server");return h(l),e(c=>({...c,status:"idle"})),l}catch(l){const c=i.formatError(l,"Failed to fetch refund requirement");throw e({status:"error",error:c,transactionId:null}),l}},[t]),k=m.useCallback(async(p,l)=>{if(!o||!n)throw new Error("Wallet not connected");try{e({status:"loading",error:null,transactionId:null});const c=await t.requestQuote({resource:p,couponCode:l});if(!t.validateRequirement(c))throw new Error("Invalid refund requirement received");h(c);const E=await r.buildTransaction({requirement:c,payerPublicKey:o}),w=await r.signTransaction({transaction:E,signTransaction:n}),R=r.buildPaymentPayload({requirement:c,signedTx:w,payerPublicKey:o}),b=await t.submitPayment({resource:p,payload:R,couponCode:l,metadata:void 0,resourceType:"refund"});return b.settlement&&d(b.settlement),e({status:"success",error:null,transactionId:b.transactionId||w.signature}),b}catch(c){const E=i.formatError(c,"Refund payment failed");throw e({status:"error",error:E,transactionId:null}),c}},[o,n,t,r]),v=m.useCallback(async p=>{if(!o||!n)throw new Error("Wallet not connected");try{e({status:"loading",error:null,transactionId:null});const l=await t.requestQuote({resource:p});if(!t.validateRequirement(l))throw new Error("Invalid refund requirement received");h(l);const{transaction:c}=await t.buildGaslessTransaction({resourceId:p,userWallet:o.toString(),feePayer:l.extra.feePayer}),E=r.deserializeTransaction(c),w=await r.partiallySignTransaction({transaction:E,signTransaction:n}),R=await t.submitGaslessTransaction({resource:p,partialTx:w,couponCode:void 0,metadata:void 0,resourceType:"refund",requirement:l});return R.settlement&&d(R.settlement),e({status:"success",error:null,transactionId:R.transactionId||"gasless-refund-tx"}),R}catch(l){const c=i.formatError(l,"Gasless refund payment failed");throw e({status:"error",error:c,transactionId:null}),l}},[o,n,t,r]),T=m.useCallback(()=>{e({status:"idle",error:null,transactionId:null}),h(null),d(null)},[]);return{state:a,requirement:P,settlement:g,fetchRefundQuote:u,processRefund:k,processGaslessRefund:v,reset:T}}function ae(){if(typeof window>"u")return{passed:!0,severity:"info",message:"HTTPS check skipped (SSR environment)"};const t=window.location.protocol==="https:",r=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1";return t||r?{passed:!0,severity:"info",message:"HTTPS enforced"}:{passed:!1,severity:"error",message:"Page not served over HTTPS",recommendation:"Enable HTTPS for all payment pages. Stripe.js requires HTTPS in production."}}function ce(){return typeof document>"u"?{passed:!0,severity:"info",message:"CSP check skipped (SSR environment)"}:document.querySelector('meta[http-equiv="Content-Security-Policy"]')?{passed:!0,severity:"info",message:"Content Security Policy detected"}:{passed:!1,severity:"warning",message:"No Content Security Policy detected",recommendation:"Configure CSP headers to protect against XSS and CDN compromise. Use generateCSP() helper from @cedros/pay-react."}}function ie(){return process.env.NODE_ENV==="development"||typeof window<"u"&&window.location.hostname==="localhost"?{passed:!0,severity:"info",message:"Running in development mode (some security checks relaxed)"}:{passed:!0,severity:"info",message:"Running in production mode"}}function le(){return{passed:!0,severity:"info",message:"Stripe.js loaded via @stripe/stripe-js package (CSP recommended, not SRI)",recommendation:"Ensure CSP script-src includes https://js.stripe.com"}}function ue(){return typeof window>"u"?{passed:!0,severity:"info",message:"Mixed content check skipped (SSR environment)"}:window.location.protocol==="https:"?{passed:!0,severity:"info",message:"Mixed content protection active (HTTPS page)"}:{passed:!0,severity:"info",message:"Mixed content check skipped (HTTP page)"}}function de(){const t=[ae(),ce(),ie(),le(),ue()],r=t.some(e=>e.severity==="error"&&!e.passed),o=t.some(e=>e.severity==="warning"&&!e.passed);let n,a;return r?(n="vulnerable",a="Security issues detected. Review errors and apply recommendations."):o?(n="warnings",a="Minor security warnings detected. Consider applying recommendations."):(n="secure",a="All security checks passed."),{checks:t,overallStatus:n,summary:a}}function me(t){process.env.NODE_ENV!=="production"&&(console.group("🔒 Cedros Pay Security Report"),console.log(`Status: ${t.overallStatus.toUpperCase()}`),console.log(`Summary: ${t.summary}`),console.log(""),t.checks.forEach(r=>{const o=r.passed?"✅":r.severity==="error"?"❌":"⚠️";console.log(`${o} ${r.message}`),r.recommendation&&console.log(` → ${r.recommendation}`)}),console.groupEnd())}const pe={CSP:"Use generateCSP() from @cedros/pay-react to generate Content Security Policy headers",HTTPS:"Always serve payment pages over HTTPS in production",PACKAGE_UPDATES:"Keep @stripe/stripe-js and @cedros/pay-react updated for security patches",AUDIT:"Run npm audit regularly to check for known vulnerabilities",MONITORING:"Monitor Stripe security advisories and apply updates promptly",NO_SRI:"Do NOT use SRI hashes for Stripe.js - use CSP instead"};exports.CEDROS_EVENTS=s.CEDROS_EVENTS;exports.CryptoButton=s.CryptoButton;exports.ERROR_CATEGORIES=s.ERROR_CATEGORIES;exports.PaymentMethodBadge=s.PaymentMethodBadge;exports.PaymentModal=s.PaymentModal;exports.ProductPrice=s.ProductPrice;exports.StripeButton=s.StripeButton;exports.calculateDiscountPercentage=s.calculateDiscountPercentage;exports.createTranslator=s.createTranslator;exports.detectLocale=s.detectLocale;exports.emitPaymentError=s.emitPaymentError;exports.emitPaymentProcessing=s.emitPaymentProcessing;exports.emitPaymentStart=s.emitPaymentStart;exports.emitPaymentSuccess=s.emitPaymentSuccess;exports.emitWalletConnect=s.emitWalletConnect;exports.emitWalletConnected=s.emitWalletConnected;exports.emitWalletError=s.emitWalletError;exports.formatCouponCodes=s.formatCouponCodes;exports.getAvailableLocales=s.getAvailableLocales;exports.getLocalizedError=s.getLocalizedError;exports.getUserErrorMessage=s.getUserErrorMessage;exports.isRetryableError=s.isRetryableError;exports.loadLocale=s.loadLocale;exports.parseCouponCodes=s.parseCouponCodes;exports.parseStructuredErrorResponse=s.parseErrorResponse;exports.useLocalizedError=s.useLocalizedError;exports.usePaymentMode=s.usePaymentMode;exports.useStripeCheckout=s.useStripeCheckout;exports.useTranslation=s.useTranslation;exports.useX402Payment=s.useX402Payment;exports.CIRCUIT_BREAKER_PRESETS=i.CIRCUIT_BREAKER_PRESETS;exports.CedrosProvider=i.CedrosProvider;exports.CircuitBreakerOpenError=i.CircuitBreakerOpenError;exports.CircuitState=i.CircuitState;exports.LogLevel=i.LogLevel;exports.Logger=i.Logger;exports.RATE_LIMITER_PRESETS=i.RATE_LIMITER_PRESETS;exports.RETRY_PRESETS=i.RETRY_PRESETS;exports.WalletPool=i.WalletPool;exports.createCircuitBreaker=i.createCircuitBreaker;exports.createLogger=i.createLogger;exports.createRateLimiter=i.createRateLimiter;exports.createWalletPool=i.createWalletPool;exports.getLogger=i.getLogger;exports.retryWithBackoff=i.retryWithBackoff;exports.useCedrosContext=i.useCedrosContext;exports.useCedrosTheme=i.useCedrosTheme;exports.validateConfig=i.validateConfig;exports.CSP_PRESETS=se;exports.CedrosPay=oe;exports.PurchaseButton=G;exports.RPC_PROVIDERS=re;exports.SECURITY_RECOMMENDATIONS=pe;exports.formatCSP=V;exports.generateCSP=te;exports.generateCSPDirectives=K;exports.logSecurityReport=me;exports.useRefundVerification=ne;exports.validateSecurity=de;