@cedros/pay-react 1.1.21 → 1.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AISettingsSection-BXWZcMQT.js → AISettingsSection-DAztmwnN.js} +1 -1
- package/dist/{AISettingsSection-8eDaxYp8.mjs → AISettingsSection-DpMIk431.mjs} +2 -2
- package/dist/{AutosaveIndicator-3S7EvXip.mjs → AutosaveIndicator-BRCqAWqP.mjs} +1 -1
- package/dist/{AutosaveIndicator-DW4IPbZ5.js → AutosaveIndicator-BnQkKxzr.js} +1 -1
- package/dist/{CedrosContext-D-lnoEkR.js → CedrosContext-7dwmEeUY.js} +2 -2
- package/dist/{CedrosContext-BE6P5PQ0.mjs → CedrosContext-BlArEF7k.mjs} +95 -78
- package/dist/{CryptoButton-Dy-g3bR0.js → CryptoButton-C1AAOOfj.js} +1 -1
- package/dist/{CryptoButton-CksMkZjL.mjs → CryptoButton-CREryx1l.mjs} +2 -2
- package/dist/{FAQSection-Dg-I7Z-N.mjs → FAQSection-Ruzs7a-0.mjs} +1 -1
- package/dist/{FAQSection-r6eKjfdO.js → FAQSection-yw64HLy3.js} +1 -1
- package/dist/{MessagingSection-D39EuOLN.mjs → MessagingSection-BLRjfBQT.mjs} +2 -2
- package/dist/{MessagingSection-Cld5Q7ZM.js → MessagingSection-Dp_SaXsv.js} +1 -1
- package/dist/OrdersSection-C2dyWqrR.js +1 -0
- package/dist/OrdersSection-l-MtP9EN.mjs +233 -0
- package/dist/{PaymentSettingsSection-CEGHN6VI.mjs → PaymentSettingsSection-Bbq93UtC.mjs} +1 -1
- package/dist/{PaymentSettingsSection-B-MRsh1K.js → PaymentSettingsSection-C5bhLgU7.js} +1 -1
- package/dist/{SettingsSection-ZrzfLBlS.js → SettingsSection-D_pKPRrP.js} +1 -1
- package/dist/{SettingsSection-CPFOuoZG.mjs → SettingsSection-DorqCFXE.mjs} +1 -1
- package/dist/SingleCategorySettings-BAND8Zkw.mjs +1006 -0
- package/dist/SingleCategorySettings-Cg-zuJfr.js +3 -0
- package/dist/{StorefrontSection-f54ySA6i.mjs → StorefrontSection-FSOxBclu.mjs} +2 -2
- package/dist/{StorefrontSection-DGVcJu1T.js → StorefrontSection-QZPEZ6Lz.js} +1 -1
- package/dist/{SubscriptionsSection-F2IiU2jv.mjs → SubscriptionsSection-C4TDXCX2.mjs} +1 -1
- package/dist/{SubscriptionsSection-fzbL5DGC.js → SubscriptionsSection-DYr99VzB.js} +1 -1
- package/dist/Token22Section-Cmn2lKcd.mjs +1685 -0
- package/dist/Token22Section-D3nnUyim.js +1 -0
- package/dist/{WalletManager-QcfgQmap.js → WalletManager-Bwk3rgr1.js} +1 -1
- package/dist/{WalletManager-D78miaJ2.mjs → WalletManager-peBN6RDH.mjs} +1 -1
- package/dist/bn-CHdpZHQm.mjs +1185 -0
- package/dist/bn-RbgIlcHc.js +1 -0
- package/dist/configApi-Ch0Rr7TD.mjs +554 -0
- package/dist/configApi-CxEbCAgG.js +1 -0
- package/dist/crypto-only.js +1 -1
- package/dist/crypto-only.mjs +54 -52
- package/dist/{index-bqhsxBTY.mjs → index-CKNB7XsA.mjs} +6709 -5888
- package/dist/index-vEe2Y39x.js +84 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +34 -32
- package/dist/pay-react_false-CPX8Vyp9.mjs +5 -0
- package/dist/pay-react_false-DaeIe3_l.js +1 -0
- package/dist/{sections-Dh0qFSUW.js → sections-Cklkxd85.js} +1 -1
- package/dist/{sections-CiAMjlPd.mjs → sections-Dt6vxDU4.mjs} +1 -1
- package/dist/src/components/CreditsBalance.d.ts +24 -0
- package/dist/src/components/CreditsBalance.d.ts.map +1 -0
- package/dist/src/components/admin/AssetClassesTab.d.ts +20 -0
- package/dist/src/components/admin/AssetClassesTab.d.ts.map +1 -0
- package/dist/src/components/admin/AssetRedemptionManager.d.ts +21 -0
- package/dist/src/components/admin/AssetRedemptionManager.d.ts.map +1 -0
- package/dist/src/components/admin/CedrosPayAdminDashboard.d.ts +1 -1
- package/dist/src/components/admin/CedrosPayAdminDashboard.d.ts.map +1 -1
- package/dist/src/components/admin/GiftCardComplianceTab.d.ts +3 -0
- package/dist/src/components/admin/GiftCardComplianceTab.d.ts.map +1 -0
- package/dist/src/components/admin/LiquidityPoolTab.d.ts +11 -0
- package/dist/src/components/admin/LiquidityPoolTab.d.ts.map +1 -0
- package/dist/src/components/admin/OrdersSection.d.ts +3 -0
- package/dist/src/components/admin/OrdersSection.d.ts.map +1 -0
- package/dist/src/components/admin/ProductsSection.d.ts.map +1 -1
- package/dist/src/components/admin/RedemptionFormBuilder.d.ts +25 -0
- package/dist/src/components/admin/RedemptionFormBuilder.d.ts.map +1 -0
- package/dist/src/components/admin/Token22Section.d.ts +3 -0
- package/dist/src/components/admin/Token22Section.d.ts.map +1 -0
- package/dist/src/components/admin/configApi.d.ts.map +1 -1
- package/dist/src/components/admin/index.d.ts +3 -0
- package/dist/src/components/admin/index.d.ts.map +1 -1
- package/dist/src/ecommerce/adapters/mock/mockAdapter.d.ts.map +1 -1
- package/dist/src/ecommerce/adapters/paywall/paywallAdapter.d.ts.map +1 -1
- package/dist/src/ecommerce/components/catalog/AssetBadge.d.ts +13 -0
- package/dist/src/ecommerce/components/catalog/AssetBadge.d.ts.map +1 -0
- package/dist/src/ecommerce/components/catalog/ProductCard.d.ts.map +1 -1
- package/dist/src/ecommerce/components/checkout/CheckoutForm.d.ts.map +1 -1
- package/dist/src/ecommerce/components/checkout/CheckoutReceipt.d.ts +9 -2
- package/dist/src/ecommerce/components/checkout/CheckoutReceipt.d.ts.map +1 -1
- package/dist/src/ecommerce/components/checkout/CheckoutSuccessPage.d.ts +7 -1
- package/dist/src/ecommerce/components/checkout/CheckoutSuccessPage.d.ts.map +1 -1
- package/dist/src/ecommerce/components/checkout/RedemptionForm.d.ts +22 -0
- package/dist/src/ecommerce/components/checkout/RedemptionForm.d.ts.map +1 -0
- package/dist/src/ecommerce/components/gift-cards/GiftCardRedemptionPage.d.ts +36 -0
- package/dist/src/ecommerce/components/gift-cards/GiftCardRedemptionPage.d.ts.map +1 -0
- package/dist/src/ecommerce/components/orders/OrderCard.d.ts.map +1 -1
- package/dist/src/ecommerce/components/orders/OrderDetails.d.ts +5 -1
- package/dist/src/ecommerce/components/orders/OrderDetails.d.ts.map +1 -1
- package/dist/src/ecommerce/index.d.ts +6 -0
- package/dist/src/ecommerce/index.d.ts.map +1 -1
- package/dist/src/ecommerce/state/checkout/checkoutSchema.d.ts +1 -0
- package/dist/src/ecommerce/state/checkout/checkoutSchema.d.ts.map +1 -1
- package/dist/src/ecommerce/state/checkout/useCheckout.d.ts.map +1 -1
- package/dist/src/ecommerce/templates/ProductTemplate.d.ts.map +1 -1
- package/dist/src/ecommerce/templates/PurchaseHistoryTemplate.d.ts +5 -1
- package/dist/src/ecommerce/templates/PurchaseHistoryTemplate.d.ts.map +1 -1
- package/dist/src/ecommerce/types.d.ts +20 -0
- package/dist/src/ecommerce/types.d.ts.map +1 -1
- package/dist/src/ecommerce/utils/cartItemMetadata.d.ts.map +1 -1
- package/dist/src/ecommerce/utils/safeHref.d.ts +9 -0
- package/dist/src/ecommerce/utils/safeHref.d.ts.map +1 -0
- package/dist/src/hooks/useCreditsBalance.d.ts +32 -0
- package/dist/src/hooks/useCreditsBalance.d.ts.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/managers/CreditsManager.d.ts +15 -0
- package/dist/src/managers/CreditsManager.d.ts.map +1 -1
- package/dist/src/managers/MeteoraPoolManager.d.ts +86 -0
- package/dist/src/managers/MeteoraPoolManager.d.ts.map +1 -0
- package/dist/stripe-only.js +1 -1
- package/dist/stripe-only.mjs +2 -2
- package/dist/{styles-BWrLnaUW.js → styles-21F1-oqx.js} +1 -1
- package/dist/{styles--eKKnfdj.mjs → styles-2VMpwuaI.mjs} +3 -3
- package/dist/testing/index.js +1 -1
- package/dist/testing/index.mjs +1 -1
- package/dist/{walletPool-BqNfOhB0.js → walletPool-Ddv33tej.js} +1 -1
- package/dist/{walletPool-DShNjCQ6.mjs → walletPool-DgQsh7Se.mjs} +1 -1
- package/package.json +5 -1
- package/dist/SingleCategorySettings-DhHGIGwB.mjs +0 -1418
- package/dist/SingleCategorySettings-DxjCafCk.js +0 -3
- package/dist/index-7YUxR4u5.js +0 -84
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";class o{constructor(e,t,i){this._serverUrl=e,this.auth=t,this.authManager=i}get serverUrl(){return this._serverUrl}async fetch(e,t={}){if(this.authManager?.isAuthenticated())return this.authManager.fetchWithAuth(e,t);throw this.auth?new Error("Legacy AdminAuth is no longer supported due to replay vulnerability. Use IAdminAuthManager instead."):new Error("Admin authentication required. Provide an IAdminAuthManager to ConfigApi.")}async listCategories(e=100){return this.fetch(`/admin/config?limit=${e}`)}async getConfig(e,t=!0){return this.fetch(`/admin/config/${e}?redact_secrets=${t}`)}async updateConfig(e,t,i){await this.fetch(`/admin/config/${e}`,{method:"PUT",body:JSON.stringify({config:t,description:i})})}async patchConfig(e,t,i){await this.fetch(`/admin/config/${e}`,{method:"PATCH",body:JSON.stringify({updates:t,description:i})})}async batchUpdate(e){await this.fetch("/admin/config/batch",{method:"POST",body:JSON.stringify({updates:e})})}async validateConfig(e,t){return this.fetch("/admin/config/validate",{method:"POST",body:JSON.stringify({category:e,config:t})})}async getHistory(e,t=50){const i=new URLSearchParams({limit:t.toString()});return e&&i.set("category",e),this.fetch(`/admin/config/history?${i}`)}}const r={server:{label:"Server",secrets:[],icon:"🖥️",fields:{admin_metrics_api_key:{hidden:!0},cors_allowed_origins:{hidden:!0}}},security:{label:"Security",description:"Configure CORS, rate limiting, and other security settings",secrets:[],icon:"🔒",fields:{cors_allowed_origins:{description:'List of allowed origins for CORS requests. Use ["*"] to allow all origins (not recommended for production).'}}},metrics:{label:"Metrics",description:"Configure metrics collection and API access",secrets:["admin_metrics_api_key"],icon:"📊",fields:{admin_metrics_api_key:{description:"API key for accessing the admin metrics endpoint. Keep this secret."}}},logging:{label:"Logging",secrets:[],icon:"📝",fields:{level:{type:"dropdown",options:["trace","debug","info","warn","error"]},format:{hidden:!0},environment:{hidden:!0}}},stripe:{label:"Stripe",secrets:["secret_key","webhook_secret"],icon:"💳",fields:{enabled:{hidden:!0},secret_key:{description:"Stripe Dashboard → Developers → API keys → Secret key. Use the test key (sk_test_...) for testing, or the live key (sk_live_...) for production."},publishable_key:{description:"Stripe Dashboard → Developers → API keys → Publishable key. Starts with pk_test_... or pk_live_..."},mode:{type:"dropdown",options:["test","live"],description:'Use "test" mode with test API keys during development, then switch to "live" with live keys for real payments.'},webhook_url:{description:"The full URL Stripe sends webhook events to. Default is your server URL + /webhook/stripe (e.g. https://example.com/webhook/stripe). Only change this if you've customized the route in your cedros-pay server."},webhook_secret:{description:`Stripe Dashboard → Developers → Webhooks → "Create an event destination" → select events: checkout.session.completed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.paid, invoice.payment_failed → Continue → choose "Webhook endpoint" → enter your server's webhook endpoint, e.g. https://example.com/webhook/stripe (your server URL + /webhook/stripe) → after creating, click the endpoint and "Click to reveal" the signing secret. Starts with whsec_...`},tax_rate_id:{description:`Stripe Dashboard → More → Product catalog → Tax rates → "+ New" → set the percentage, region, and whether tax is inclusive or exclusive → Save → copy the tax rate ID from the detail page (starts with txr_...). Leave empty if you don't collect tax.`},success_url:{hidden:!0},cancel_url:{hidden:!0}}},x402:{label:"X402 (Crypto)",secrets:["server_wallets"],icon:"⚡",fields:{enabled:{hidden:!0},payment_address:{type:"solana_address",description:"The Solana wallet address where payments are received. This is where customer funds are sent."},token_mint:{type:"token_mint",description:"The SPL token used for payments. Most commonly USDC."},token_decimals:{type:"number",description:"Number of decimal places for the token (e.g., USDC has 6 decimals).",hidden:!0},custom_token_symbol:{description:'Display symbol for your custom token (e.g., "MYTOKEN").',hidden:!0},custom_token_icon:{description:"URL to your token's icon image.",hidden:!0},rpc_url:{description:"Solana RPC endpoint URL. Required for crypto payment verification (e.g., from Helius, QuickNode, or Alchemy)."},gasless_enabled:{type:"toggle",description:"When enabled, your server pays transaction fees so customers don't need SOL."},server_wallets:{type:"secret_array",description:"Server keypair(s) used to sign and pay for transactions. Required for gasless payments.",showWhen:"gasless_enabled"},rounding_mode:{type:"dropdown",options:["nearest","up","down"],description:"How to round fractional token amounts: nearest (default), up (always round up), or down (always round down)."},network:{hidden:!0},ws_url:{hidden:!0},skip_preflight:{hidden:!0},commitment:{hidden:!0},compute_unit_limit:{hidden:!0},compute_unit_price:{hidden:!0}}},paywall:{label:"Paywall",secrets:[],icon:"🚪",fields:{product_cache_ttl:{type:"number",unit:"seconds"}}},coupons:{label:"Coupons",secrets:[],icon:"🎟️",fields:{cache_ttl:{type:"number",unit:"seconds"}}},subscriptions:{label:"Subscriptions",secrets:[],icon:"🔄",fields:{grace_period_hours:{type:"number",unit:"hours"}}},callbacks:{label:"Callbacks",secrets:["hmac_secret"],icon:"🔔"},email:{label:"Email",description:"Email receipts for customers after purchase",secrets:["smtp_password"],icon:"📧",fields:{enabled:{hidden:!0},provider:{type:"dropdown",options:["sendgrid","mailgun","postmark","ses","resend","custom"],description:"Email service provider."},smtp_host:{description:"SMTP server hostname.",showWhen:"provider"},smtp_port:{type:"number",description:"SMTP server port (typically 587 for TLS).",showWhen:"provider"},smtp_user:{description:"SMTP authentication username or API key name.",showWhen:"provider"},smtp_password:{description:"SMTP password or API key.",showWhen:"provider"},from_address:{description:"Sender email address (e.g., orders@yourstore.com)."},from_name:{description:'Sender display name (e.g., "Your Store").'}}},webhook:{label:"Webhook",description:"HTTP notifications when purchases occur",secrets:["secret"],icon:"🔔",fields:{enabled:{hidden:!0},url:{description:"URL to receive POST notifications (e.g., https://api.yoursite.com/webhooks/orders)."},secret:{description:"Shared secret for HMAC-SHA256 signature verification."},retry_attempts:{type:"number",description:"Number of retry attempts on failure (default: 3)."}}},messaging:{label:"Messaging",description:"Email and webhook notifications for purchases",secrets:["smtp_password","webhook_secret"],icon:"📬",fields:{email_enabled:{type:"boolean",description:"Send order confirmation emails to customers."},email_provider:{description:"Email service provider (mailgun, sendgrid, postmark, ses, resend, custom).",showWhen:"email_enabled"},smtp_host:{description:"SMTP server hostname.",showWhen:"email_enabled"},smtp_port:{type:"number",description:"SMTP server port (typically 587 for TLS).",showWhen:"email_enabled"},smtp_username:{description:"SMTP authentication username or API key.",showWhen:"email_enabled"},smtp_password:{description:"SMTP password or API key.",showWhen:"email_enabled"},from_email:{description:"Sender email address (e.g., orders@yourstore.com).",showWhen:"email_enabled"},from_name:{description:'Sender display name (e.g., "Your Store").',showWhen:"email_enabled"},webhook_enabled:{type:"boolean",description:"Send webhook notifications when purchases complete."},webhook_url:{description:"URL to receive POST notifications.",showWhen:"webhook_enabled"},webhook_secret:{description:"Shared secret for HMAC-SHA256 signature verification.",showWhen:"webhook_enabled"},webhook_timeout:{type:"number",description:"Request timeout in seconds (default: 30).",showWhen:"webhook_enabled"}}},monitoring:{label:"Monitoring",secrets:[],icon:"📊",fields:{check_interval:{type:"number",unit:"seconds"},low_balance_threshold:{type:"number",unit:"SOL"}}},rate_limit:{label:"Rate Limiting",secrets:[],icon:"⏱️"},circuit_breaker:{label:"Circuit Breaker",secrets:[],icon:"🔌"},admin:{label:"Admin Keys",secrets:[],icon:"👤"},api_keys:{label:"API Keys",secrets:[],icon:"🔐"},cedros_login:{label:"Cedros Login",secrets:["api_key"],icon:"🔑",fields:{enabled:{hidden:!0},credits_enabled:{hidden:!0},base_url:{hidden:!0},timeout:{hidden:!0},jwt_issuer:{hidden:!0},jwt_audience:{hidden:!0}}},gift_cards:{label:"Gift Cards",description:"Gift card issuance, expiry, and Token-22 secondary market settings",secrets:[],icon:"🎁",fields:{enabled:{hidden:!0},secondary_market_enabled:{type:"toggle",description:"Enable Token-22 secondary market for gift card store credit tokens."},transfer_fee_bps:{type:"number",description:"Transfer fee in basis points charged on secondary market trades (e.g. 250 = 2.5%)."},max_transfer_fee:{type:"number",description:"Maximum transfer fee in token atomic units (e.g. 500 = $5.00 with 2 decimals)."},treasury_address:{type:"solana_address",description:"Solana wallet address where collected transfer fees are sent."},token_name:{description:'Display name for the store credit token (e.g. "Store Credits USD").'},token_symbol:{description:'Token symbol for the store credit token (e.g. "storeUSD").'},token_decimals:{type:"number",description:"Number of decimal places for the token (default: 2 for cent precision)."},mint_address:{type:"solana_address",description:"Solana Token-22 mint address (auto-populated after initialization)."},business_state:{type:"dropdown",options:["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC","PR"],description:"US state where your business is registered. Determines applicable gift card regulations."},min_gift_card_value_cents:{type:"number",description:"Minimum gift card face value in cents. Auto-suggested based on state cash-out threshold."},max_gift_card_value_cents:{type:"number",description:"Maximum gift card face value in cents. Default $10,000 (AML compliance)."},liquidity_pool_address:{type:"solana_address",description:"Meteora DLMM pool address for gift card secondary market buyback."},buyback_rate_bps:{type:"number",description:"Buyback rate in basis points (8000 = 80 cents on the dollar)."},liquidity_usdc_amount:{type:"number",description:"USDC amount deposited into the liquidity pool (in atomic units).",hidden:!0},liquidity_deployed_at:{description:"ISO timestamp when the liquidity pool was deployed.",hidden:!0}}},tokenization:{label:"Asset Tokenization",description:"Settings for tokenized asset classes and on-chain minting",secrets:[],icon:"🪙",fields:{enabled:{type:"toggle",description:"Enable asset tokenization features."},default_transfer_fee_bps:{type:"number",description:"Default transfer fee in basis points for tokenized asset transfers (e.g. 250 = 2.5%)."},require_custody_proof:{type:"toggle",description:"Require a custody proof URL before an asset class can be activated."}}},shop:{label:"Storefront",description:"Product pages & display settings",secrets:[],icon:"🏪",fields:{enabled:{hidden:!0},"relatedProducts.mode":{type:"dropdown",options:["most_recent","by_category","manual","ai"]},"relatedProducts.maxItems":{type:"number"}}}};function n(s,e){return r[s]?.secrets.includes(e)??!1}const a="[REDACTED]";exports.CONFIG_CATEGORIES=r;exports.ConfigApiClient=o;exports.REDACTED_VALUE=a;exports.isSecretField=n;
|
package/dist/crypto-only.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./styles-BWrLnaUW.js"),t=require("./CedrosContext-D-lnoEkR.js"),N=require("./index-7YUxR4u5.js"),ce=require("./CryptoButton-Dy-g3bR0.js"),S=require("react/jsx-runtime"),a=require("react"),$=require("@solana/wallet-adapter-react"),ie=require("@solana/wallet-adapter-base"),Pe=require("@solana/wallet-adapter-react-ui"),le=require("./walletPool-BqNfOhB0.js");function ue(){const{subscriptionManager:o,x402Manager:d,walletManager:f}=t.useCedrosContext(),{publicKey:u,signTransaction:T}=$.useWallet(),[P,y]=a.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),[k,R]=a.useState(null),x=a.useRef(!1),h=a.useCallback(()=>{if(!u){const c="Wallet not connected";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}if(!T){const c="Wallet does not support signing";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}return{valid:!0}},[u,T]),_=a.useCallback(async c=>{if(!u)return y(n=>({...n,status:"error",error:"Wallet not connected"})),null;y(n=>({...n,status:"checking",error:null}));try{const n=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});return y(s=>({...s,status:n.active?"success":"idle",subscriptionStatus:n.status,expiresAt:n.expiresAt||n.currentPeriodEnd||null})),n}catch(n){const s=t.formatError(n,"Failed to check subscription status");return y(g=>({...g,status:"error",error:s})),null}},[u,o]),L=a.useCallback(async(c,n,s)=>{y(g=>({...g,status:"loading",error:null}));try{const g=await o.requestSubscriptionQuote(c,n,s);return R(g),y(i=>({...i,status:"idle"})),g}catch(g){const i=t.formatError(g,"Failed to get subscription quote");return y(l=>({...l,status:"error",error:i})),null}},[o]),C=a.useCallback(async(c,n,s)=>{if(x.current)return{success:!1,error:"Payment already in progress"};const g=h();if(!g.valid)return{success:!1,error:g.error};x.current=!0,y(i=>({...i,status:"loading",error:null}));try{const i=await o.requestSubscriptionQuote(c,n,s);R(i);const l=i.requirement;if(!d.validateRequirement(l))throw new Error("Invalid subscription quote received from server");const E=!!l.extra?.feePayer;let b;if(E){const{transaction:w,blockhash:W}=await d.buildGaslessTransaction({resourceId:c,userWallet:u.toString(),feePayer:l.extra.feePayer,couponCode:s?.couponCode}),M=f.deserializeTransaction(w),q=await f.partiallySignTransaction({transaction:M,signTransaction:T,blockhash:W});b=await d.submitGaslessTransaction({resource:c,partialTx:q,couponCode:s?.couponCode,resourceType:"regular",requirement:l})}else{const w=await f.buildTransaction({requirement:l,payerPublicKey:u}),W=await f.signTransaction({transaction:w,signTransaction:T}),M=f.buildPaymentPayload({requirement:l,signedTx:W,payerPublicKey:u});b=await d.submitPayment({resource:c,payload:M,couponCode:s?.couponCode,resourceType:"regular"})}if(b.success){const w=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});y({status:"success",error:null,sessionId:b.transactionId||null,subscriptionStatus:w.status,expiresAt:w.expiresAt||w.currentPeriodEnd||null})}else y(w=>({...w,status:"error",error:b.error||"Subscription payment failed"}));return b}catch(i){const l=t.formatError(i,"Subscription payment failed");return y(E=>({...E,status:"error",error:l})),{success:!1,error:l}}finally{x.current=!1}},[h,o,d,f,u,T]),v=a.useCallback(()=>{y({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),R(null)},[]);return{...P,quote:k,checkStatus:_,requestQuote:L,processPayment:C,reset:v}}function we({resource:o,interval:d,intervalDays:f,couponCode:u,label:T,disabled:P=!1,onAttempt:y,onSuccess:k,onError:R,className:x="",testPageUrl:h,hideMessages:_=!1,autoCheckStatus:L=!0}){const{connected:C,connecting:v,connect:c,disconnect:n,select:s,wallets:g,wallet:i,publicKey:l}=$.useWallet(),{status:E,error:b,subscriptionStatus:w,expiresAt:W,checkStatus:M,processPayment:q}=ue(),p=t.useCedrosTheme(),{solanaError:I}=t.useCedrosContext(),{t:B,translations:G}=e.useTranslation(),de=T||B("ui.subscribe_with_crypto"),Q=a.useRef(k),F=a.useRef(R),V=a.useRef(q),X=a.useRef(M);Q.current=k,F.current=R,V.current=q,X.current=M;const ge=b&&typeof b!="string"?b?.code??null:null,pe=I&&typeof I!="string"?I?.code??null:null,H=r=>{if(!r||!G)return"";const m=G.errors[r];return m?m.action?`${m.message} ${m.action}`:m.message:""},J=b?typeof b=="string"?b:H(ge):null,Z=I?typeof I=="string"?I:H(pe):null,me=a.useMemo(()=>g.map(r=>`${r.adapter.name}-${r.readyState}`).join(","),[g]),K=a.useMemo(()=>g.filter(({readyState:r})=>r===ie.WalletReadyState.Installed||r===ie.WalletReadyState.Loadable),[me]);a.useEffect(()=>{L&&C&&l&&(t.getLogger().debug("[CryptoSubscribeButton] Auto-checking subscription status"),X.current(o))},[L,C,l,o]),a.useEffect(()=>{E==="success"&&w==="active"&&(e.emitPaymentSuccess("crypto","subscription-active",o),Q.current?.("subscription-active"))},[E,w,o]),a.useEffect(()=>{E==="error"&&b&&(e.emitPaymentError("crypto",b,o),F.current?.(b))},[E,b,o]);const ee=typeof window<"u"&&window.top!==window.self,[te,O]=a.useState(!1),[re,U]=a.useState(!1),[ne,A]=a.useState(!1),D=I;a.useEffect(()=>{let r=!1;return r||(async()=>{if(re&&i&&!C&&!v){t.getLogger().debug("[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",i.adapter.name),U(!1),e.emitWalletConnect(i.adapter.name);try{await c(),r||t.getLogger().debug("[CryptoSubscribeButton] Auto-connect successful")}catch(Y){if(!r){t.getLogger().error("[CryptoSubscribeButton] Auto-connect failed:",Y);const Ee=Y instanceof Error?Y.message:"Failed to connect wallet";e.emitWalletError(Ee,i.adapter.name),A(!1)}}}})(),()=>{r=!0}},[i,re,C,v,c]),a.useEffect(()=>{C&&ne&&l&&i&&(e.emitWalletConnected(i.adapter.name,l.toString()),t.getLogger().debug("[CryptoSubscribeButton] Processing pending subscription payment"),A(!1),O(!1),e.emitPaymentProcessing("crypto",o),V.current(o,d,{couponCode:u,intervalDays:f}))},[C,ne,l,i,o,d,u,f]);const oe=a.useCallback(async()=>{if(t.getLogger().debug("[CryptoSubscribeButton] executeSubscriptionFlow called",{connected:C,wallet:i?.adapter.name,resource:o,interval:d}),e.emitPaymentStart("crypto",o),y&&y("crypto"),D){t.getLogger().error("[CryptoSubscribeButton] Solana dependencies missing:",D),e.emitPaymentError("crypto",D,o),R&&R(D);return}if(ee){const r=h||window.location.href;try{if(new URL(r,window.location.origin).origin!==window.location.origin)throw t.getLogger().error("[CryptoSubscribeButton] Blocked attempt to open external URL:",r),new Error("Cannot open external URLs from embedded context");window.open(r,"_blank","noopener,noreferrer")}catch(m){throw t.getLogger().error("[CryptoSubscribeButton] URL validation failed:",m),m}return}if(C)e.emitPaymentProcessing("crypto",o),await q(o,d,{couponCode:u,intervalDays:f});else{A(!0);try{if(i)t.getLogger().debug("[CryptoSubscribeButton] Wallet already selected, connecting:",i.adapter.name),e.emitWalletConnect(i.adapter.name),await c();else{if(t.getLogger().debug("[CryptoSubscribeButton] No wallet selected, showing selector"),K.length===0){A(!1);const r="No wallets available";throw e.emitWalletError(r),new Error(r)}O(!0)}}catch(r){A(!1);const m=r instanceof Error?r.message:"Failed to connect wallet";t.getLogger().error("[CryptoSubscribeButton] Connection error:",m),e.emitWalletError(m,i?.adapter.name)}}},[C,i,o,d,u,f,ee,h,K,c,q,D,y,R]),ae=a.useMemo(()=>`crypto-subscribe-${o}-${d}`,[o,d]),ye=a.useMemo(()=>e.createDedupedClickHandler(ae,oe,{cooldownMs:200,deduplicationWindowMs:0}),[ae,oe]),se=E==="loading"||E==="checking",j=w==="active"||w==="trialing",fe=P||se||v||!!D||j;let z=de;if(se)z=B("ui.processing");else if(j&&W){const r=new Date(W).toLocaleDateString();z=`${B("ui.subscribed_until")} ${r}`}else j&&(z=B("ui.subscribed"));const be=a.useCallback(async()=>{try{U(!1),C&&await n(),s(null),O(!0)}catch(r){t.getLogger().error("Failed to change wallet:",r)}},[C,n,s]),Se=a.useCallback(r=>{t.getLogger().debug("[CryptoSubscribeButton] Wallet clicked:",r),O(!1),s(r),U(!0)},[s]),Ce=a.useCallback(async()=>{try{if(await n(),A(!1),typeof window<"u"&&window.localStorage)try{window.localStorage.removeItem("walletName")}catch(r){r instanceof Error&&r.name==="QuotaExceededError"?t.getLogger().warn("localStorage quota exceeded when removing wallet preference"):t.getLogger().error("Failed to clear wallet preference from localStorage:",r)}}catch(r){t.getLogger().error("Failed to disconnect wallet:",r)}},[n]);return S.jsxs("div",{className:p.unstyled?x:`${p.className} cedros-theme__crypto-button ${x||""}`,style:p.unstyled?{}:p.style,children:[S.jsx("button",{onClick:ye,disabled:fe,className:p.unstyled?x:"cedros-theme__button cedros-theme__crypto",type:"button",children:z}),te&&!_&&S.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:p.tokens.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:()=>O(!1),children:S.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:p.tokens.modalBackground,borderRadius:"12px",padding:"2rem",maxWidth:"400px",width:"100%",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",border:`1px solid ${p.tokens.modalBorder}`},onClick:r=>r.stopPropagation(),children:[S.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[S.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:p.tokens.surfaceText},children:B("wallet.select_wallet")}),S.jsx("button",{onClick:()=>O(!1),style:e.getModalCloseButtonStyles(p.tokens.surfaceText),"aria-label":"Close modal",type:"button",children:"×"})]}),S.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:K.map(r=>S.jsxs("button",{onClick:()=>Se(r.adapter.name),style:{width:"100%",padding:"1rem",backgroundColor:p.tokens.surfaceBackground,border:`1px solid ${p.tokens.surfaceBorder}`,borderRadius:"0.5rem",cursor:"pointer",fontSize:"1rem",textAlign:"left",color:p.tokens.surfaceText,display:"flex",alignItems:"center",gap:"1rem",transition:"all 0.2s ease"},onMouseEnter:m=>{m.currentTarget.style.backgroundColor=p.tokens.modalBackground,m.currentTarget.style.borderColor=p.tokens.surfaceText,m.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:m=>{m.currentTarget.style.backgroundColor=p.tokens.surfaceBackground,m.currentTarget.style.borderColor=p.tokens.surfaceBorder,m.currentTarget.style.transform="translateY(0)"},type:"button",children:[S.jsx(Pe.WalletIcon,{wallet:r,style:{width:"24px",height:"24px"}}),S.jsx("span",{style:{fontWeight:500},children:r.adapter.name})]},r.adapter.name))})]})}),C&&!_&&!te&&S.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"0.5rem",fontSize:"0.75rem",color:p.tokens.surfaceText,opacity:.7},children:[S.jsx("button",{onClick:be,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:B("wallet.change")}),S.jsx("button",{onClick:Ce,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:B("ui.disconnect")})]}),!_&&Z&&S.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:Z}),!_&&J&&S.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:J}),!_&&j&&S.jsx("div",{className:p.unstyled?"":"cedros-theme__success",children:B("ui.subscription_active")})]})}function he(){const{x402Manager:o,walletManager:d}=t.useCedrosContext(),{publicKey:f,signTransaction:u}=$.useWallet(),[T,P]=a.useState({status:"idle",error:null,transactionId:null}),[y,k]=a.useState(null),[R,x]=a.useState(null),h=a.useRef(!1),_=a.useCallback(async c=>{try{P(s=>({...s,status:"loading"}));const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received from server");return k(n),P(s=>({...s,status:"idle"})),n}catch(n){const s=t.formatError(n,"Failed to fetch refund requirement");throw P({status:"error",error:s,transactionId:null}),n}},[o]),L=a.useCallback(async(c,n)=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const s=await o.requestQuote({resource:c,couponCode:n});if(!o.validateRequirement(s))throw new Error("Invalid refund requirement received");k(s);const g=await d.buildTransaction({requirement:s,payerPublicKey:f}),i=await d.signTransaction({transaction:g,signTransaction:u}),l=d.buildPaymentPayload({requirement:s,signedTx:i,payerPublicKey:f}),E=await o.submitPayment({resource:c,payload:l,couponCode:n,metadata:void 0,resourceType:"refund"});return E.settlement&&x(E.settlement),P({status:"success",error:null,transactionId:E.transactionId||i.signature}),E}catch(s){const g=t.formatError(s,"Refund payment failed");throw P({status:"error",error:g,transactionId:null}),s}finally{h.current=!1}},[f,u,o,d]),C=a.useCallback(async c=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received");k(n);const{transaction:s}=await o.buildGaslessTransaction({resourceId:c,userWallet:f.toString(),feePayer:n.extra.feePayer}),g=d.deserializeTransaction(s),i=await d.partiallySignTransaction({transaction:g,signTransaction:u}),l=await o.submitGaslessTransaction({resource:c,partialTx:i,couponCode:void 0,metadata:void 0,resourceType:"refund",requirement:n});return l.settlement&&x(l.settlement),P({status:"success",error:null,transactionId:l.transactionId||"gasless-refund-tx"}),l}catch(n){const s=t.formatError(n,"Gasless refund payment failed");throw P({status:"error",error:s,transactionId:null}),n}finally{h.current=!1}},[f,u,o,d]),v=a.useCallback(()=>{P({status:"idle",error:null,transactionId:null}),k(null),x(null)},[]);return{state:T,requirement:y,settlement:R,fetchRefundQuote:_,processRefund:L,processGaslessRefund:C,reset:v}}exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CreditsButton=e.CreditsButton;exports.CreditsSubscribeButton=e.CreditsSubscribeButton;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.PurchaseButton=e.PurchaseButton;exports.RPC_PROVIDERS=e.RPC_PROVIDERS;exports.SECURITY_RECOMMENDATIONS=e.SECURITY_RECOMMENDATIONS;exports.StripeButton=e.StripeButton;exports.SubscribeButton=e.SubscribeButton;exports.SubscriptionManagementPanel=e.SubscriptionManagementPanel;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.emitWalletConnect=e.emitWalletConnect;exports.emitWalletConnected=e.emitWalletConnected;exports.emitWalletError=e.emitWalletError;exports.formatCSP=e.formatCSP;exports.formatCouponCodes=e.formatCouponCodes;exports.generateCSP=e.generateCSP;exports.generateCSPDirectives=e.generateCSPDirectives;exports.getAvailableLocales=e.getAvailableLocales;exports.getLocalizedError=e.getLocalizedError;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.loadLocale=e.loadLocale;exports.logSecurityReport=e.logSecurityReport;exports.parseCouponCodes=e.parseCouponCodes;exports.stackCheckoutCoupons=e.stackCheckoutCoupons;exports.useCreditsPayment=e.useCreditsPayment;exports.useCreditsSubscription=e.useCreditsSubscription;exports.useLocalizedError=e.useLocalizedError;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;exports.useSubscription=e.useSubscription;exports.useSubscriptionManagement=e.useSubscriptionManagement;exports.useTranslation=e.useTranslation;exports.validateSecurity=e.validateSecurity;exports.CIRCUIT_BREAKER_PRESETS=t.CIRCUIT_BREAKER_PRESETS;exports.CedrosProvider=t.CedrosProvider;exports.CircuitBreakerOpenError=t.CircuitBreakerOpenError;exports.CircuitState=t.CircuitState;exports.ERROR_CATEGORIES=t.ERROR_CATEGORIES;exports.KNOWN_STABLECOINS=t.KNOWN_STABLECOINS;exports.LogLevel=t.LogLevel;exports.Logger=t.Logger;exports.RATE_LIMITER_PRESETS=t.RATE_LIMITER_PRESETS;exports.RETRY_PRESETS=t.RETRY_PRESETS;exports.createCircuitBreaker=t.createCircuitBreaker;exports.createLogger=t.createLogger;exports.createRateLimiter=t.createRateLimiter;exports.getLogger=t.getLogger;exports.retryWithBackoff=t.retryWithBackoff;exports.useCedrosContext=t.useCedrosContext;exports.useCedrosTheme=t.useCedrosTheme;exports.validateConfig=t.validateConfig;exports.validateTokenMint=t.validateTokenMint;exports.CEDROS_PAY_GROUPS=N.CEDROS_PAY_GROUPS;exports.CEDROS_PAY_SECTIONS=N.CEDROS_PAY_SECTIONS;exports.CEDROS_PAY_SECTION_IDS=N.CEDROS_PAY_SECTION_IDS;exports.CedrosPayAdminDashboard=N.CedrosPayAdminDashboard;exports.cedrosPayPlugin=N.cedrosPayPlugin;exports.ecommerce=N.index;exports.CryptoButton=ce.CryptoButton;exports.useX402Payment=ce.useX402Payment;exports.WalletPool=le.WalletPool;exports.createWalletPool=le.createWalletPool;exports.CryptoSubscribeButton=we;exports.useCryptoSubscription=ue;exports.useRefundVerification=he;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./styles-21F1-oqx.js"),v=require("./index-vEe2Y39x.js"),t=require("./CedrosContext-7dwmEeUY.js"),ce=require("./CryptoButton-C1AAOOfj.js"),C=require("react/jsx-runtime"),a=require("react"),$=require("@solana/wallet-adapter-react"),ie=require("@solana/wallet-adapter-base"),Pe=require("@solana/wallet-adapter-react-ui"),le=require("./walletPool-Ddv33tej.js");function ue(){const{subscriptionManager:o,x402Manager:d,walletManager:f}=t.useCedrosContext(),{publicKey:u,signTransaction:T}=$.useWallet(),[P,y]=a.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),[k,R]=a.useState(null),x=a.useRef(!1),h=a.useCallback(()=>{if(!u){const c="Wallet not connected";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}if(!T){const c="Wallet does not support signing";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}return{valid:!0}},[u,T]),B=a.useCallback(async c=>{if(!u)return y(n=>({...n,status:"error",error:"Wallet not connected"})),null;y(n=>({...n,status:"checking",error:null}));try{const n=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});return y(s=>({...s,status:n.active?"success":"idle",subscriptionStatus:n.status,expiresAt:n.expiresAt||n.currentPeriodEnd||null})),n}catch(n){const s=t.formatError(n,"Failed to check subscription status");return y(g=>({...g,status:"error",error:s})),null}},[u,o]),W=a.useCallback(async(c,n,s)=>{y(g=>({...g,status:"loading",error:null}));try{const g=await o.requestSubscriptionQuote(c,n,s);return R(g),y(i=>({...i,status:"idle"})),g}catch(g){const i=t.formatError(g,"Failed to get subscription quote");return y(l=>({...l,status:"error",error:i})),null}},[o]),S=a.useCallback(async(c,n,s)=>{if(x.current)return{success:!1,error:"Payment already in progress"};const g=h();if(!g.valid)return{success:!1,error:g.error};x.current=!0,y(i=>({...i,status:"loading",error:null}));try{const i=await o.requestSubscriptionQuote(c,n,s);R(i);const l=i.requirement;if(!d.validateRequirement(l))throw new Error("Invalid subscription quote received from server");const E=!!l.extra?.feePayer;let b;if(E){const{transaction:w,blockhash:M}=await d.buildGaslessTransaction({resourceId:c,userWallet:u.toString(),feePayer:l.extra.feePayer,couponCode:s?.couponCode}),q=f.deserializeTransaction(w),O=await f.partiallySignTransaction({transaction:q,signTransaction:T,blockhash:M});b=await d.submitGaslessTransaction({resource:c,partialTx:O,couponCode:s?.couponCode,resourceType:"regular",requirement:l})}else{const w=await f.buildTransaction({requirement:l,payerPublicKey:u}),M=await f.signTransaction({transaction:w,signTransaction:T}),q=f.buildPaymentPayload({requirement:l,signedTx:M,payerPublicKey:u});b=await d.submitPayment({resource:c,payload:q,couponCode:s?.couponCode,resourceType:"regular"})}if(b.success){const w=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});y({status:"success",error:null,sessionId:b.transactionId||null,subscriptionStatus:w.status,expiresAt:w.expiresAt||w.currentPeriodEnd||null})}else y(w=>({...w,status:"error",error:b.error||"Subscription payment failed"}));return b}catch(i){const l=t.formatError(i,"Subscription payment failed");return y(E=>({...E,status:"error",error:l})),{success:!1,error:l}}finally{x.current=!1}},[h,o,d,f,u,T]),I=a.useCallback(()=>{y({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),R(null)},[]);return{...P,quote:k,checkStatus:B,requestQuote:W,processPayment:S,reset:I}}function we({resource:o,interval:d,intervalDays:f,couponCode:u,label:T,disabled:P=!1,onAttempt:y,onSuccess:k,onError:R,className:x="",testPageUrl:h,hideMessages:B=!1,autoCheckStatus:W=!0}){const{connected:S,connecting:I,connect:c,disconnect:n,select:s,wallets:g,wallet:i,publicKey:l}=$.useWallet(),{status:E,error:b,subscriptionStatus:w,expiresAt:M,checkStatus:q,processPayment:O}=ue(),p=t.useCedrosTheme(),{solanaError:L}=t.useCedrosContext(),{t:_,translations:G}=e.useTranslation(),de=T||_("ui.subscribe_with_crypto"),Q=a.useRef(k),F=a.useRef(R),V=a.useRef(O),X=a.useRef(q);Q.current=k,F.current=R,V.current=O,X.current=q;const ge=b&&typeof b!="string"?b?.code??null:null,pe=L&&typeof L!="string"?L?.code??null:null,H=r=>{if(!r||!G)return"";const m=G.errors[r];return m?m.action?`${m.message} ${m.action}`:m.message:""},J=b?typeof b=="string"?b:H(ge):null,Z=L?typeof L=="string"?L:H(pe):null,me=a.useMemo(()=>g.map(r=>`${r.adapter.name}-${r.readyState}`).join(","),[g]),K=a.useMemo(()=>g.filter(({readyState:r})=>r===ie.WalletReadyState.Installed||r===ie.WalletReadyState.Loadable),[me]);a.useEffect(()=>{W&&S&&l&&(t.getLogger().debug("[CryptoSubscribeButton] Auto-checking subscription status"),X.current(o))},[W,S,l,o]),a.useEffect(()=>{E==="success"&&w==="active"&&(e.emitPaymentSuccess("crypto","subscription-active",o),Q.current?.("subscription-active"))},[E,w,o]),a.useEffect(()=>{E==="error"&&b&&(e.emitPaymentError("crypto",b,o),F.current?.(b))},[E,b,o]);const ee=typeof window<"u"&&window.top!==window.self,[te,A]=a.useState(!1),[re,U]=a.useState(!1),[ne,D]=a.useState(!1),N=L;a.useEffect(()=>{let r=!1;return r||(async()=>{if(re&&i&&!S&&!I){t.getLogger().debug("[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",i.adapter.name),U(!1),e.emitWalletConnect(i.adapter.name);try{await c(),r||t.getLogger().debug("[CryptoSubscribeButton] Auto-connect successful")}catch(Y){if(!r){t.getLogger().error("[CryptoSubscribeButton] Auto-connect failed:",Y);const Ee=Y instanceof Error?Y.message:"Failed to connect wallet";e.emitWalletError(Ee,i.adapter.name),D(!1)}}}})(),()=>{r=!0}},[i,re,S,I,c]),a.useEffect(()=>{S&&ne&&l&&i&&(e.emitWalletConnected(i.adapter.name,l.toString()),t.getLogger().debug("[CryptoSubscribeButton] Processing pending subscription payment"),D(!1),A(!1),e.emitPaymentProcessing("crypto",o),V.current(o,d,{couponCode:u,intervalDays:f}))},[S,ne,l,i,o,d,u,f]);const oe=a.useCallback(async()=>{if(t.getLogger().debug("[CryptoSubscribeButton] executeSubscriptionFlow called",{connected:S,wallet:i?.adapter.name,resource:o,interval:d}),e.emitPaymentStart("crypto",o),y&&y("crypto"),N){t.getLogger().error("[CryptoSubscribeButton] Solana dependencies missing:",N),e.emitPaymentError("crypto",N,o),R&&R(N);return}if(ee){const r=h||window.location.href;try{if(new URL(r,window.location.origin).origin!==window.location.origin)throw t.getLogger().error("[CryptoSubscribeButton] Blocked attempt to open external URL:",r),new Error("Cannot open external URLs from embedded context");window.open(r,"_blank","noopener,noreferrer")}catch(m){throw t.getLogger().error("[CryptoSubscribeButton] URL validation failed:",m),m}return}if(S)e.emitPaymentProcessing("crypto",o),await O(o,d,{couponCode:u,intervalDays:f});else{D(!0);try{if(i)t.getLogger().debug("[CryptoSubscribeButton] Wallet already selected, connecting:",i.adapter.name),e.emitWalletConnect(i.adapter.name),await c();else{if(t.getLogger().debug("[CryptoSubscribeButton] No wallet selected, showing selector"),K.length===0){D(!1);const r="No wallets available";throw e.emitWalletError(r),new Error(r)}A(!0)}}catch(r){D(!1);const m=r instanceof Error?r.message:"Failed to connect wallet";t.getLogger().error("[CryptoSubscribeButton] Connection error:",m),e.emitWalletError(m,i?.adapter.name)}}},[S,i,o,d,u,f,ee,h,K,c,O,N,y,R]),ae=a.useMemo(()=>`crypto-subscribe-${o}-${d}`,[o,d]),ye=a.useMemo(()=>e.createDedupedClickHandler(ae,oe,{cooldownMs:200,deduplicationWindowMs:0}),[ae,oe]),se=E==="loading"||E==="checking",j=w==="active"||w==="trialing",fe=P||se||I||!!N||j;let z=de;if(se)z=_("ui.processing");else if(j&&M){const r=new Date(M).toLocaleDateString();z=`${_("ui.subscribed_until")} ${r}`}else j&&(z=_("ui.subscribed"));const be=a.useCallback(async()=>{try{U(!1),S&&await n(),s(null),A(!0)}catch(r){t.getLogger().error("Failed to change wallet:",r)}},[S,n,s]),Ce=a.useCallback(r=>{t.getLogger().debug("[CryptoSubscribeButton] Wallet clicked:",r),A(!1),s(r),U(!0)},[s]),Se=a.useCallback(async()=>{try{if(await n(),D(!1),typeof window<"u"&&window.localStorage)try{window.localStorage.removeItem("walletName")}catch(r){r instanceof Error&&r.name==="QuotaExceededError"?t.getLogger().warn("localStorage quota exceeded when removing wallet preference"):t.getLogger().error("Failed to clear wallet preference from localStorage:",r)}}catch(r){t.getLogger().error("Failed to disconnect wallet:",r)}},[n]);return C.jsxs("div",{className:p.unstyled?x:`${p.className} cedros-theme__crypto-button ${x||""}`,style:p.unstyled?{}:p.style,children:[C.jsx("button",{onClick:ye,disabled:fe,className:p.unstyled?x:"cedros-theme__button cedros-theme__crypto",type:"button",children:z}),te&&!B&&C.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:p.tokens.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:()=>A(!1),children:C.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:p.tokens.modalBackground,borderRadius:"12px",padding:"2rem",maxWidth:"400px",width:"100%",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",border:`1px solid ${p.tokens.modalBorder}`},onClick:r=>r.stopPropagation(),children:[C.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[C.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:p.tokens.surfaceText},children:_("wallet.select_wallet")}),C.jsx("button",{onClick:()=>A(!1),style:e.getModalCloseButtonStyles(p.tokens.surfaceText),"aria-label":"Close modal",type:"button",children:"×"})]}),C.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:K.map(r=>C.jsxs("button",{onClick:()=>Ce(r.adapter.name),style:{width:"100%",padding:"1rem",backgroundColor:p.tokens.surfaceBackground,border:`1px solid ${p.tokens.surfaceBorder}`,borderRadius:"0.5rem",cursor:"pointer",fontSize:"1rem",textAlign:"left",color:p.tokens.surfaceText,display:"flex",alignItems:"center",gap:"1rem",transition:"all 0.2s ease"},onMouseEnter:m=>{m.currentTarget.style.backgroundColor=p.tokens.modalBackground,m.currentTarget.style.borderColor=p.tokens.surfaceText,m.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:m=>{m.currentTarget.style.backgroundColor=p.tokens.surfaceBackground,m.currentTarget.style.borderColor=p.tokens.surfaceBorder,m.currentTarget.style.transform="translateY(0)"},type:"button",children:[C.jsx(Pe.WalletIcon,{wallet:r,style:{width:"24px",height:"24px"}}),C.jsx("span",{style:{fontWeight:500},children:r.adapter.name})]},r.adapter.name))})]})}),S&&!B&&!te&&C.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"0.5rem",fontSize:"0.75rem",color:p.tokens.surfaceText,opacity:.7},children:[C.jsx("button",{onClick:be,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:_("wallet.change")}),C.jsx("button",{onClick:Se,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:_("ui.disconnect")})]}),!B&&Z&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:Z}),!B&&J&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:J}),!B&&j&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__success",children:_("ui.subscription_active")})]})}function he(){const{x402Manager:o,walletManager:d}=t.useCedrosContext(),{publicKey:f,signTransaction:u}=$.useWallet(),[T,P]=a.useState({status:"idle",error:null,transactionId:null}),[y,k]=a.useState(null),[R,x]=a.useState(null),h=a.useRef(!1),B=a.useCallback(async c=>{try{P(s=>({...s,status:"loading"}));const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received from server");return k(n),P(s=>({...s,status:"idle"})),n}catch(n){const s=t.formatError(n,"Failed to fetch refund requirement");throw P({status:"error",error:s,transactionId:null}),n}},[o]),W=a.useCallback(async(c,n)=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const s=await o.requestQuote({resource:c,couponCode:n});if(!o.validateRequirement(s))throw new Error("Invalid refund requirement received");k(s);const g=await d.buildTransaction({requirement:s,payerPublicKey:f}),i=await d.signTransaction({transaction:g,signTransaction:u}),l=d.buildPaymentPayload({requirement:s,signedTx:i,payerPublicKey:f}),E=await o.submitPayment({resource:c,payload:l,couponCode:n,metadata:void 0,resourceType:"refund"});return E.settlement&&x(E.settlement),P({status:"success",error:null,transactionId:E.transactionId||i.signature}),E}catch(s){const g=t.formatError(s,"Refund payment failed");throw P({status:"error",error:g,transactionId:null}),s}finally{h.current=!1}},[f,u,o,d]),S=a.useCallback(async c=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received");k(n);const{transaction:s}=await o.buildGaslessTransaction({resourceId:c,userWallet:f.toString(),feePayer:n.extra.feePayer}),g=d.deserializeTransaction(s),i=await d.partiallySignTransaction({transaction:g,signTransaction:u}),l=await o.submitGaslessTransaction({resource:c,partialTx:i,couponCode:void 0,metadata:void 0,resourceType:"refund",requirement:n});return l.settlement&&x(l.settlement),P({status:"success",error:null,transactionId:l.transactionId||"gasless-refund-tx"}),l}catch(n){const s=t.formatError(n,"Gasless refund payment failed");throw P({status:"error",error:s,transactionId:null}),n}finally{h.current=!1}},[f,u,o,d]),I=a.useCallback(()=>{P({status:"idle",error:null,transactionId:null}),k(null),x(null)},[]);return{state:T,requirement:y,settlement:R,fetchRefundQuote:B,processRefund:W,processGaslessRefund:S,reset:I}}exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CreditsButton=e.CreditsButton;exports.CreditsSubscribeButton=e.CreditsSubscribeButton;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.PurchaseButton=e.PurchaseButton;exports.RPC_PROVIDERS=e.RPC_PROVIDERS;exports.SECURITY_RECOMMENDATIONS=e.SECURITY_RECOMMENDATIONS;exports.StripeButton=e.StripeButton;exports.SubscribeButton=e.SubscribeButton;exports.SubscriptionManagementPanel=e.SubscriptionManagementPanel;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.emitWalletConnect=e.emitWalletConnect;exports.emitWalletConnected=e.emitWalletConnected;exports.emitWalletError=e.emitWalletError;exports.formatCSP=e.formatCSP;exports.formatCouponCodes=e.formatCouponCodes;exports.generateCSP=e.generateCSP;exports.generateCSPDirectives=e.generateCSPDirectives;exports.getAvailableLocales=e.getAvailableLocales;exports.getLocalizedError=e.getLocalizedError;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.loadLocale=e.loadLocale;exports.logSecurityReport=e.logSecurityReport;exports.parseCouponCodes=e.parseCouponCodes;exports.stackCheckoutCoupons=e.stackCheckoutCoupons;exports.useCreditsPayment=e.useCreditsPayment;exports.useCreditsSubscription=e.useCreditsSubscription;exports.useLocalizedError=e.useLocalizedError;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;exports.useSubscription=e.useSubscription;exports.useSubscriptionManagement=e.useSubscriptionManagement;exports.useTranslation=e.useTranslation;exports.validateSecurity=e.validateSecurity;exports.CEDROS_PAY_GROUPS=v.CEDROS_PAY_GROUPS;exports.CEDROS_PAY_SECTIONS=v.CEDROS_PAY_SECTIONS;exports.CEDROS_PAY_SECTION_IDS=v.CEDROS_PAY_SECTION_IDS;exports.CedrosPayAdminDashboard=v.CedrosPayAdminDashboard;exports.CreditsBalance=v.CreditsBalance;exports.cedrosPayPlugin=v.cedrosPayPlugin;exports.ecommerce=v.index;exports.useCreditsBalance=v.useCreditsBalance;exports.CIRCUIT_BREAKER_PRESETS=t.CIRCUIT_BREAKER_PRESETS;exports.CedrosProvider=t.CedrosProvider;exports.CircuitBreakerOpenError=t.CircuitBreakerOpenError;exports.CircuitState=t.CircuitState;exports.ERROR_CATEGORIES=t.ERROR_CATEGORIES;exports.KNOWN_STABLECOINS=t.KNOWN_STABLECOINS;exports.LogLevel=t.LogLevel;exports.Logger=t.Logger;exports.RATE_LIMITER_PRESETS=t.RATE_LIMITER_PRESETS;exports.RETRY_PRESETS=t.RETRY_PRESETS;exports.createCircuitBreaker=t.createCircuitBreaker;exports.createLogger=t.createLogger;exports.createRateLimiter=t.createRateLimiter;exports.getLogger=t.getLogger;exports.retryWithBackoff=t.retryWithBackoff;exports.useCedrosContext=t.useCedrosContext;exports.useCedrosTheme=t.useCedrosTheme;exports.validateConfig=t.validateConfig;exports.validateTokenMint=t.validateTokenMint;exports.CryptoButton=ce.CryptoButton;exports.useX402Payment=ce.useX402Payment;exports.WalletPool=le.WalletPool;exports.createWalletPool=le.createWalletPool;exports.CryptoSubscribeButton=we;exports.useCryptoSubscription=ue;exports.useRefundVerification=he;
|
package/dist/crypto-only.mjs
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { O as ke, B as ve, D as fe, y as
|
|
2
|
-
import { v as Ue, t as Ye, C as Ve, a as He, f as Je, d as Xe, b as Ze, c as et, P as tt, R as rt, I as nt, S as at, e as st, g as ot, n as it, M as ct, J as lt, r as ut, m as dt, o as pt, q as ft, L as mt, N as yt, F as gt, E as bt, K as St, H as wt, p as ht, s as Ct, h as xt, k as Pt, Q as Et, i as Rt, u as Tt, j as kt, l as vt, G as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { d as Yt,
|
|
6
|
-
import { C as
|
|
1
|
+
import { O as ke, B as ve, D as fe, y as Be, A as me, w as Ie, x as ye, z as V, V as _e, W as We } from "./styles-2VMpwuaI.mjs";
|
|
2
|
+
import { v as Ue, t as Ye, C as Ve, a as He, f as Je, d as Xe, b as Ze, c as et, P as tt, R as rt, I as nt, S as at, e as st, g as ot, n as it, M as ct, J as lt, r as ut, m as dt, o as pt, q as ft, L as mt, N as yt, F as gt, E as bt, K as St, H as wt, p as ht, s as Ct, h as xt, k as Pt, Q as Et, i as Rt, u as Tt, j as kt, l as vt, G as Bt } from "./styles-2VMpwuaI.mjs";
|
|
3
|
+
import { d as _t, a as Wt, b as qt, C as Mt, e as Lt, c as At, i as Dt, u as Ot } from "./index-CKNB7XsA.mjs";
|
|
4
|
+
import { u as H, m as z, a as qe, i as y } from "./CedrosContext-BlArEF7k.mjs";
|
|
5
|
+
import { f as zt, C as Kt, e as Qt, d as $t, E as Ft, K as Gt, L as jt, h as Ut, R as Yt, g as Vt, b as Ht, j as Jt, c as Xt, r as Zt, v as er, n as tr } from "./CedrosContext-BlArEF7k.mjs";
|
|
6
|
+
import { C as nr, u as ar } from "./CryptoButton-CREryx1l.mjs";
|
|
7
7
|
import { jsxs as K, jsx as x } from "react/jsx-runtime";
|
|
8
|
-
import { useState as
|
|
8
|
+
import { useState as B, useRef as N, useCallback as h, useMemo as G, useEffect as Q } from "react";
|
|
9
9
|
import { useWallet as J } from "@solana/wallet-adapter-react";
|
|
10
10
|
import { WalletReadyState as ge } from "@solana/wallet-adapter-base";
|
|
11
11
|
import { WalletIcon as Me } from "@solana/wallet-adapter-react-ui";
|
|
12
|
-
import { WalletPool as
|
|
12
|
+
import { WalletPool as or, createWalletPool as ir } from "./walletPool-DgQsh7Se.mjs";
|
|
13
13
|
function Le() {
|
|
14
|
-
const { subscriptionManager: r, x402Manager: c, walletManager: f } = H(), { publicKey: i, signTransaction: R } = J(), [S, p] =
|
|
14
|
+
const { subscriptionManager: r, x402Manager: c, walletManager: f } = H(), { publicKey: i, signTransaction: R } = J(), [S, p] = B({
|
|
15
15
|
status: "idle",
|
|
16
16
|
error: null,
|
|
17
17
|
sessionId: null,
|
|
18
18
|
subscriptionStatus: null,
|
|
19
19
|
expiresAt: null
|
|
20
|
-
}), [T, P] =
|
|
20
|
+
}), [T, P] = B(null), E = N(!1), C = h(() => {
|
|
21
21
|
if (!i) {
|
|
22
22
|
const s = "Wallet not connected";
|
|
23
23
|
return p((t) => ({ ...t, status: "error", error: s })), { valid: !1, error: s };
|
|
@@ -187,7 +187,7 @@ function Le() {
|
|
|
187
187
|
i,
|
|
188
188
|
R
|
|
189
189
|
]
|
|
190
|
-
),
|
|
190
|
+
), I = h(() => {
|
|
191
191
|
p({
|
|
192
192
|
status: "idle",
|
|
193
193
|
error: null,
|
|
@@ -202,7 +202,7 @@ function Le() {
|
|
|
202
202
|
checkStatus: k,
|
|
203
203
|
requestQuote: W,
|
|
204
204
|
processPayment: g,
|
|
205
|
-
reset:
|
|
205
|
+
reset: I
|
|
206
206
|
};
|
|
207
207
|
}
|
|
208
208
|
function $e({
|
|
@@ -222,7 +222,7 @@ function $e({
|
|
|
222
222
|
}) {
|
|
223
223
|
const {
|
|
224
224
|
connected: g,
|
|
225
|
-
connecting:
|
|
225
|
+
connecting: I,
|
|
226
226
|
connect: s,
|
|
227
227
|
disconnect: t,
|
|
228
228
|
select: n,
|
|
@@ -259,11 +259,11 @@ function $e({
|
|
|
259
259
|
}, [b, w, r]), Q(() => {
|
|
260
260
|
b === "error" && m && (fe("crypto", m, r), ee.current?.(m));
|
|
261
261
|
}, [b, m, r]);
|
|
262
|
-
const oe = typeof window < "u" && window.top !== window.self, [ie, A] =
|
|
262
|
+
const oe = typeof window < "u" && window.top !== window.self, [ie, A] = B(!1), [ce, U] = B(!1), [le, D] = B(!1), O = _;
|
|
263
263
|
Q(() => {
|
|
264
264
|
let e = !1;
|
|
265
265
|
return e || (async () => {
|
|
266
|
-
if (ce && a && !g && !
|
|
266
|
+
if (ce && a && !g && !I) {
|
|
267
267
|
y().debug(
|
|
268
268
|
"[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",
|
|
269
269
|
a.adapter.name
|
|
@@ -281,8 +281,8 @@ function $e({
|
|
|
281
281
|
})(), () => {
|
|
282
282
|
e = !0;
|
|
283
283
|
};
|
|
284
|
-
}, [a, ce, g,
|
|
285
|
-
g && le && o && a && (
|
|
284
|
+
}, [a, ce, g, I, s]), Q(() => {
|
|
285
|
+
g && le && o && a && (Be(a.adapter.name, o.toString()), y().debug("[CryptoSubscribeButton] Processing pending subscription payment"), D(!1), A(!1), me("crypto", r), te.current(r, c, { couponCode: i, intervalDays: f }));
|
|
286
286
|
}, [g, le, o, a, r, c, i, f]);
|
|
287
287
|
const ue = h(async () => {
|
|
288
288
|
if (y().debug("[CryptoSubscribeButton] executeSubscriptionFlow called", {
|
|
@@ -290,7 +290,7 @@ function $e({
|
|
|
290
290
|
wallet: a?.adapter.name,
|
|
291
291
|
resource: r,
|
|
292
292
|
interval: c
|
|
293
|
-
}),
|
|
293
|
+
}), Ie("crypto", r), p && p("crypto"), O) {
|
|
294
294
|
y().error("[CryptoSubscribeButton] Solana dependencies missing:", O), fe("crypto", O, r), P && P(O);
|
|
295
295
|
return;
|
|
296
296
|
}
|
|
@@ -350,7 +350,7 @@ function $e({
|
|
|
350
350
|
deduplicationWindowMs: 0
|
|
351
351
|
}),
|
|
352
352
|
[de, ue]
|
|
353
|
-
), pe = b === "loading" || b === "checking", $ = w === "active" || w === "trialing", xe = S || pe ||
|
|
353
|
+
), pe = b === "loading" || b === "checking", $ = w === "active" || w === "trialing", xe = S || pe || I || !!O || $;
|
|
354
354
|
let F = be;
|
|
355
355
|
if (pe)
|
|
356
356
|
F = v("ui.processing");
|
|
@@ -560,11 +560,11 @@ function $e({
|
|
|
560
560
|
);
|
|
561
561
|
}
|
|
562
562
|
function Fe() {
|
|
563
|
-
const { x402Manager: r, walletManager: c } = H(), { publicKey: f, signTransaction: i } = J(), [R, S] =
|
|
563
|
+
const { x402Manager: r, walletManager: c } = H(), { publicKey: f, signTransaction: i } = J(), [R, S] = B({
|
|
564
564
|
status: "idle",
|
|
565
565
|
error: null,
|
|
566
566
|
transactionId: null
|
|
567
|
-
}), [p, T] =
|
|
567
|
+
}), [p, T] = B(null), [P, E] = B(null), C = N(!1), k = h(
|
|
568
568
|
async (s) => {
|
|
569
569
|
try {
|
|
570
570
|
S((n) => ({ ...n, status: "loading" }));
|
|
@@ -685,7 +685,7 @@ function Fe() {
|
|
|
685
685
|
}
|
|
686
686
|
},
|
|
687
687
|
[f, i, r, c]
|
|
688
|
-
),
|
|
688
|
+
), I = h(() => {
|
|
689
689
|
S({
|
|
690
690
|
status: "idle",
|
|
691
691
|
error: null,
|
|
@@ -699,56 +699,57 @@ function Fe() {
|
|
|
699
699
|
fetchRefundQuote: k,
|
|
700
700
|
processRefund: W,
|
|
701
701
|
processGaslessRefund: g,
|
|
702
|
-
reset:
|
|
702
|
+
reset: I
|
|
703
703
|
};
|
|
704
704
|
}
|
|
705
705
|
export {
|
|
706
706
|
Ue as CEDROS_EVENTS,
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
707
|
+
_t as CEDROS_PAY_GROUPS,
|
|
708
|
+
Wt as CEDROS_PAY_SECTIONS,
|
|
709
|
+
qt as CEDROS_PAY_SECTION_IDS,
|
|
710
|
+
zt as CIRCUIT_BREAKER_PRESETS,
|
|
711
711
|
Ye as CSP_PRESETS,
|
|
712
712
|
Ve as CedrosPay,
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
713
|
+
Mt as CedrosPayAdminDashboard,
|
|
714
|
+
Kt as CedrosProvider,
|
|
715
|
+
Qt as CircuitBreakerOpenError,
|
|
716
|
+
$t as CircuitState,
|
|
717
|
+
Lt as CreditsBalance,
|
|
717
718
|
He as CreditsButton,
|
|
718
719
|
Je as CreditsSubscribeButton,
|
|
719
|
-
|
|
720
|
+
nr as CryptoButton,
|
|
720
721
|
$e as CryptoSubscribeButton,
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
722
|
+
Ft as ERROR_CATEGORIES,
|
|
723
|
+
Gt as KNOWN_STABLECOINS,
|
|
724
|
+
jt as LogLevel,
|
|
725
|
+
Ut as Logger,
|
|
725
726
|
Xe as PaymentMethodBadge,
|
|
726
727
|
Ze as PaymentModal,
|
|
727
728
|
et as ProductPrice,
|
|
728
729
|
tt as PurchaseButton,
|
|
729
|
-
|
|
730
|
-
|
|
730
|
+
Yt as RATE_LIMITER_PRESETS,
|
|
731
|
+
Vt as RETRY_PRESETS,
|
|
731
732
|
rt as RPC_PROVIDERS,
|
|
732
733
|
nt as SECURITY_RECOMMENDATIONS,
|
|
733
734
|
at as StripeButton,
|
|
734
735
|
st as SubscribeButton,
|
|
735
736
|
ot as SubscriptionManagementPanel,
|
|
736
|
-
|
|
737
|
+
or as WalletPool,
|
|
737
738
|
it as calculateDiscountPercentage,
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
739
|
+
At as cedrosPayPlugin,
|
|
740
|
+
Ht as createCircuitBreaker,
|
|
741
|
+
Jt as createLogger,
|
|
742
|
+
Xt as createRateLimiter,
|
|
742
743
|
ct as createTranslator,
|
|
743
|
-
|
|
744
|
+
ir as createWalletPool,
|
|
744
745
|
lt as detectLocale,
|
|
745
|
-
|
|
746
|
+
Dt as ecommerce,
|
|
746
747
|
fe as emitPaymentError,
|
|
747
748
|
me as emitPaymentProcessing,
|
|
748
|
-
|
|
749
|
+
Ie as emitPaymentStart,
|
|
749
750
|
ve as emitPaymentSuccess,
|
|
750
751
|
ye as emitWalletConnect,
|
|
751
|
-
|
|
752
|
+
Be as emitWalletConnected,
|
|
752
753
|
V as emitWalletError,
|
|
753
754
|
ut as formatCSP,
|
|
754
755
|
dt as formatCouponCodes,
|
|
@@ -762,10 +763,11 @@ export {
|
|
|
762
763
|
St as loadLocale,
|
|
763
764
|
wt as logSecurityReport,
|
|
764
765
|
ht as parseCouponCodes,
|
|
765
|
-
|
|
766
|
+
Zt as retryWithBackoff,
|
|
766
767
|
Ct as stackCheckoutCoupons,
|
|
767
768
|
H as useCedrosContext,
|
|
768
769
|
qe as useCedrosTheme,
|
|
770
|
+
Ot as useCreditsBalance,
|
|
769
771
|
xt as useCreditsPayment,
|
|
770
772
|
Pt as useCreditsSubscription,
|
|
771
773
|
Le as useCryptoSubscription,
|
|
@@ -776,8 +778,8 @@ export {
|
|
|
776
778
|
kt as useSubscription,
|
|
777
779
|
vt as useSubscriptionManagement,
|
|
778
780
|
ke as useTranslation,
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
781
|
+
ar as useX402Payment,
|
|
782
|
+
er as validateConfig,
|
|
783
|
+
Bt as validateSecurity,
|
|
784
|
+
tr as validateTokenMint
|
|
783
785
|
};
|