@arcblock/payment-service 1.29.8 → 1.29.9
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/cf.d.ts +31 -0
- package/dist/cf.js +79 -60
- package/dist/index.js +163 -44
- package/package.json +4 -4
- package/web/assets/{account-DETfFe4_.js → account-Clbqiiw3.js} +1 -1
- package/web/assets/{action-B_DQJlip.js → action-DENqSeOa.js} +1 -1
- package/web/assets/{actions-BtaoyTWt.js → actions-0iWP2mcx.js} +1 -1
- package/web/assets/{actions-QPa-8lfB.js → actions-BD9BAp3M.js} +1 -1
- package/web/assets/{actions-jxGAdGfb.js → actions-BJDN6Op2.js} +1 -1
- package/web/assets/{actions-DJyfN5OU.js → actions-BSNy5bOd.js} +1 -1
- package/web/assets/{actions-Bt_jST94.js → actions-CDsj5j8l.js} +1 -1
- package/web/assets/{actions-D9MHLBFH.js → actions-CSpJGOX7.js} +1 -1
- package/web/assets/{actions-BknL4OyZ.js → actions-CZL47E9r.js} +1 -1
- package/web/assets/{actions-EPYeS5p4.js → actions-D3tJgrUn.js} +1 -1
- package/web/assets/{actions-BaDh4xWX.js → actions-DGQs8fFF.js} +1 -1
- package/web/assets/{add-price-CD-utowo.js → add-price-BpnICuHO.js} +1 -1
- package/web/assets/{admin-_nEB-lHn.js → admin-CD8ViZ7D.js} +1 -1
- package/web/assets/{assign-CkV5Q2LP.js → assign-0vMUDW_C.js} +1 -1
- package/web/assets/{attempts-DySeqBYU.js → attempts-CKlxkJuE.js} +1 -1
- package/web/assets/browser-DDv4_sgY.js +1 -0
- package/web/assets/{change-payment-CPUCUEER.js → change-payment-gAlRmJpv.js} +1 -1
- package/web/assets/{change-plan-CxE-XfWc.js → change-plan-C47wfWH8.js} +1 -1
- package/web/assets/{click-boundary-y8dVA_tr.js → click-boundary-CafubiPp.js} +1 -1
- package/web/assets/{connect-CC_l_f6Q.js → connect-BHHzrwLA.js} +1 -1
- package/web/assets/{copyable-DpX04wZz.js → copyable-QrCyyiou.js} +1 -1
- package/web/assets/{create-3SsWCAOC.js → create-0PUtkJZY.js} +1 -1
- package/web/assets/{create-BkQAaSvD.js → create-BJ1asdcy.js} +1 -1
- package/web/assets/{create-kG09X9gl.js → create-Bgv5ux17.js} +1 -1
- package/web/assets/{create-BmcRybZ5.js → create-C7GOgZZM.js} +1 -1
- package/web/assets/{create-tYebjhr9.js → create-DNar5UQD.js} +1 -1
- package/web/assets/{create-Bs65p5Ne.js → create-ke4FrPx1.js} +1 -1
- package/web/assets/{credit-grant-item-list-Bk27jIc7.js → credit-grant-item-list-CeDAM3qV.js} +1 -1
- package/web/assets/{credit-overview-DmMSEs14.js → credit-overview-4zh0H02x.js} +2 -2
- package/web/assets/{currency-restrictions-DYLv4YyW.js → currency-restrictions-BcEm8W45.js} +1 -1
- package/web/assets/{currency-select-DGS-62-L.js → currency-select-B4ieQBvv.js} +1 -1
- package/web/assets/{dayjs-B9tvQIKg.js → dayjs-DUTDpcNU.js} +1 -1
- package/web/assets/{description-Ym17DL48.js → description-SnR5WxWT.js} +1 -1
- package/web/assets/detail-46aLUdJj.js +1 -0
- package/web/assets/{detail-Cr2wG4Th.js → detail-B-ceWfZr.js} +1 -1
- package/web/assets/detail-B0IHl4MI.js +1 -0
- package/web/assets/detail-B8eOBVSQ.js +15 -0
- package/web/assets/{detail-DE3OOC5M.js → detail-BO3zglCn.js} +1 -1
- package/web/assets/{detail-DG4l2CqN.js → detail-BQpDGZJQ.js} +1 -1
- package/web/assets/{detail-CxYQYu_l.js → detail-BXTsnQny.js} +1 -1
- package/web/assets/{detail-CT9Unyrf.js → detail-B_lpOomD.js} +1 -1
- package/web/assets/{detail-Do9QO5L2.js → detail-Bfnkg0A1.js} +1 -1
- package/web/assets/detail-BwH0DwAi.js +1 -0
- package/web/assets/{detail-OZeeKI69.js → detail-C1FupF1D.js} +2 -2
- package/web/assets/{detail-cwHZbY62.js → detail-CMBRd4Ct.js} +1 -1
- package/web/assets/detail-C_Zdfa0y.js +1 -0
- package/web/assets/{detail-Cb9HBSMw.js → detail-Cg505nKX.js} +1 -1
- package/web/assets/{detail-DB56SG-k.js → detail-CsGZMimg.js} +1 -1
- package/web/assets/{detail-K9EVY3r2.js → detail-Ct5QNBqu.js} +1 -1
- package/web/assets/{detail-DuO_Jn5X.js → detail-CyMhK5K_.js} +1 -1
- package/web/assets/{detail-DuWdZIyp.js → detail-DACnmls3.js} +1 -1
- package/web/assets/{detail-BJTcK7mx.js → detail-DCTb8R7F.js} +1 -1
- package/web/assets/{detail-DPCTQLOx.js → detail-DNcp_u5S.js} +1 -1
- package/web/assets/detail-DbU3p040.js +1 -0
- package/web/assets/{detail-D5KRrQDx.js → detail-Tn2R5C8i.js} +1 -1
- package/web/assets/{detail-15zxCbV9.js → detail-wU4wNf4s.js} +1 -1
- package/web/assets/{drawer-form-Cl0T1Yyt.js → drawer-form-DspWWj3x.js} +1 -1
- package/web/assets/{edit-3HUAnaXW.js → edit-Bkj-OTJh.js} +1 -1
- package/web/assets/{editor-BF5I0siU.js → editor-AmthipP2.js} +1 -1
- package/web/assets/{embed-CsNqeCd0.js → embed-rRKjDoHi.js} +1 -1
- package/web/assets/{filter-toolbar-BydfQ-79.js → filter-toolbar-DXGSTq57.js} +1 -1
- package/web/assets/{form-DSzMo9UD.js → form-B5WW-lS5.js} +1 -1
- package/web/assets/form-BmQlJZ84.js +9 -0
- package/web/assets/{form-BGm5NPDn.js → form-CAPjlw7l.js} +1 -1
- package/web/assets/{form-CKfKLGXP.js → form-DD-EiA7W.js} +3 -3
- package/web/assets/{form-P4luyUpY.js → form-cX026J4G.js} +1 -1
- package/web/assets/{gas-Qf0SSUfS.js → gas-nyR96dB0.js} +1 -1
- package/web/assets/{generateCategoricalChart-BaWwaXky.js → generateCategoricalChart-BadryV3H.js} +1 -1
- package/web/assets/{home-HbrLyxJL.js → home-_eX1aim8.js} +1 -1
- package/web/assets/index-BBHMsIxJ.js +1 -0
- package/web/assets/{index-Dr_MwbKt.js → index-BQjlhCSt.js} +1 -1
- package/web/assets/{index-DPodCQ9c.js → index-BRENdB5m.js} +1 -1
- package/web/assets/{index-9xBRL_33.js → index-BTfJ08JU.js} +1 -1
- package/web/assets/{index-DgSc1Qy8.js → index-BarN7DfU.js} +17 -17
- package/web/assets/index-BhcoukR2.js +1 -0
- package/web/assets/index-BturOfxo.js +1 -0
- package/web/assets/{index-SYTpMMMH.js → index-BzABukCz.js} +1 -1
- package/web/assets/{index-2l22EYw9.js → index-C-RT84yb.js} +1 -1
- package/web/assets/{index-C0JaS08f.js → index-C136x0O2.js} +1 -1
- package/web/assets/{index-Cw0ugaQL.js → index-CCVDDX0c.js} +1 -1
- package/web/assets/index-CDVogp6E.js +1 -0
- package/web/assets/{index-Br7_mvEw.js → index-CW8VfoJO.js} +1 -1
- package/web/assets/{index-BIoSdRvX.js → index-CbSXdD6E.js} +3 -3
- package/web/assets/{index-CdkYrABk.js → index-Cd_BD9TM.js} +1 -1
- package/web/assets/index-D-bx9Kam.js +1 -0
- package/web/assets/index-D0mynT6_.js +1 -0
- package/web/assets/index-DEiuhiEo.js +14 -0
- package/web/assets/{index-DE2KzqXl.js → index-DNGmCIRP.js} +1 -1
- package/web/assets/{index-CI_EY4YS.js → index-DSe7Dot_.js} +1 -1
- package/web/assets/{index-BFML4-2u.js → index-DcddP3R9.js} +1 -1
- package/web/assets/index-DcrGSDby.js +1 -0
- package/web/assets/{index-fByZjxLy.js → index-DeK5Pqjv.js} +1 -1
- package/web/assets/{index-Clbt8nRm.js → index-DoX0A-rP.js} +1 -1
- package/web/assets/index-Du0Ieh1F.js +49 -0
- package/web/assets/index-Dybqd298.js +1 -0
- package/web/assets/index-EXZPddtw.js +1 -0
- package/web/assets/{index-Drav4oDH.js → index-Kd_qCyRG.js} +2 -2
- package/web/assets/{index-Dc954mDP.js → index-SOzRg0yJ.js} +1 -1
- package/web/assets/{index-BMKZToMM.js → index-UYeD8rTJ.js} +2 -2
- package/web/assets/{index-DZpJPE1Z.js → index-W2uZUlFs.js} +1 -1
- package/web/assets/{index-1y9kjPIr.js → index-XaFn2ySq.js} +1 -1
- package/web/assets/{index-fswPX_qe.js → index-YG5oc8O3.js} +1 -1
- package/web/assets/{index-B1pTTyGZ.js → index-ajD9Iotk.js} +1 -1
- package/web/assets/index-brUCsnBA.js +1 -0
- package/web/assets/{index-BP53rZV9.js → index-mn5Zdrtn.js} +1 -1
- package/web/assets/index-qulrJQ4J.js +1 -0
- package/web/assets/{index.es-BWnfUzLb.js → index.es-C8dcCHdW.js} +1 -1
- package/web/assets/{info-card-C1yxhxJG.js → info-card-BvIMFQo5.js} +1 -1
- package/web/assets/{info-metric-CNse3r66.js → info-metric-Dl4ZDm0Z.js} +1 -1
- package/web/assets/{info-row-group-BeUhWnnY.js → info-row-group-CFuMWJf1.js} +1 -1
- package/web/assets/{info-row-DOK2whMn.js → info-row-jI0h_hv4.js} +1 -1
- package/web/assets/{libphonenumber-CyphiuxQ.js → libphonenumber-Qs8PCdM-.js} +1 -1
- package/web/assets/{link-3eeclTeS.js → link-CmPoIweR.js} +1 -1
- package/web/assets/{list-DnePqZ2K.js → list-BdSkPjIa.js} +1 -1
- package/web/assets/{list-jHj_5yy3.js → list-CWMEf-_C.js} +1 -1
- package/web/assets/{list-C521zE_7.js → list-CkHExntK.js} +1 -1
- package/web/assets/{list-CO0X4L3-.js → list-DLB_hd0Q.js} +1 -1
- package/web/assets/{list-D-I0msRW.js → list-DVFJwd_I.js} +2 -2
- package/web/assets/{list-D1aevUOI.js → list-DaK9287Y.js} +2 -2
- package/web/assets/{list-1OG83xc4.js → list-DghnUOc4.js} +1 -1
- package/web/assets/{list-CNmzJKIQ.js → list-eFkvVlp5.js} +1 -1
- package/web/assets/metadata-BmQTVFku.js +55 -0
- package/web/assets/{meter-event-lmNMgmIu.js → meter-event-B1JIhVpb.js} +1 -1
- package/web/assets/{metrics-C7U41HWk.js → metrics-UvxyQbUF.js} +1 -1
- package/web/assets/{overview-Cs3-8n4e.js → overview-Cxc6WKba.js} +1 -1
- package/web/assets/{overview-CH1HnSP-.js → overview-DrMaIptb.js} +1 -1
- package/web/assets/{past-due-CGGRZmXY.js → past-due-CUXkxns0.js} +1 -1
- package/web/assets/pay-omLYkqRA.js +4 -0
- package/web/assets/{payment-method-info-BsOBbA3m.js → payment-method-info-Bsf89VxV.js} +2 -2
- package/web/assets/{preview-DjYRpRA8.js → preview-BifsgUGT.js} +1 -1
- package/web/assets/{preview-CjYh9dTg.js → preview-C-H8pGVw.js} +1 -1
- package/web/assets/{pricing-table-C3Lkhq46.js → pricing-table-B3QOaAB5.js} +2 -2
- package/web/assets/{pricing-table-edE6TJGX.js → pricing-table-BUJdtkMq.js} +1 -1
- package/web/assets/{product-select-0ScZE2e8.js → product-select-ChEyoJqJ.js} +1 -1
- package/web/assets/{recharge-DcPtT8vt.js → recharge-BVT4USAO.js} +1 -1
- package/web/assets/{related-credit-grants-BygNGPfb.js → related-credit-grants-JV2ICsR5.js} +22 -22
- package/web/assets/{safe-did-address-B0fFbUph.js → safe-did-address-CiG_V6Gy.js} +1 -1
- package/web/assets/{source-data-viewer-By_Utay-.js → source-data-viewer-i1q9wNIG.js} +1 -1
- package/web/assets/{status-l6pD08fw.js → status-CUVYrUIG.js} +1 -1
- package/web/assets/subscription-BYz_k9dq.js +1 -0
- package/web/assets/{subscription-Dq22e3D1.js → subscription-DrnSPIfs.js} +1 -1
- package/web/assets/table-BrtHemkA.js +1 -0
- package/web/assets/{tax-code-select-CWhIIiXi.js → tax-code-select-TS07I0rB.js} +1 -1
- package/web/assets/{tax-utils-DqNX34-r.js → tax-utils-bPjALcVG.js} +1 -1
- package/web/assets/{uploader-DRXDz_r0.js → uploader-CsQNHG4I.js} +1 -1
- package/web/assets/{usage-records-jjJMZ6DI.js → usage-records-DAUQMJAW.js} +1 -1
- package/web/assets/{util-mDHAL0lx.js → util-DxXTXkeY.js} +1 -1
- package/web/assets/{vendor-arcblock-ChFCRdyx.js → vendor-arcblock-BTCAQSUK.js} +1 -1
- package/web/assets/{vendor-blocklet-D_i_QeSo.js → vendor-blocklet-DcLR2Cyf.js} +43 -43
- package/web/index.html +1 -1
- package/web/assets/browser-DSLTxXlL.js +0 -1
- package/web/assets/detail-ASPdMJoW.js +0 -1
- package/web/assets/detail-CIx9vkir.js +0 -1
- package/web/assets/detail-D5NbV29V.js +0 -1
- package/web/assets/detail-DVVzYhdV.js +0 -1
- package/web/assets/detail-Dqc0OfCQ.js +0 -1
- package/web/assets/detail-uhlID8jD.js +0 -15
- package/web/assets/form-BXAuSawq.js +0 -9
- package/web/assets/index-0HK7CYm4.js +0 -1
- package/web/assets/index-BJ_E6bEO.js +0 -1
- package/web/assets/index-Bnyh4rlV.js +0 -1
- package/web/assets/index-BoQ7wf3O.js +0 -1
- package/web/assets/index-C68x-aau.js +0 -1
- package/web/assets/index-C8s2QKoe.js +0 -1
- package/web/assets/index-Cn7O-OP7.js +0 -49
- package/web/assets/index-DU39aG5u.js +0 -1
- package/web/assets/index-DtbqgSK4.js +0 -1
- package/web/assets/index-DuRu9NWB.js +0 -14
- package/web/assets/index-WMKOiUez.js +0 -1
- package/web/assets/index-dmHgoplS.js +0 -1
- package/web/assets/index-txVTkoDD.js +0 -1
- package/web/assets/metadata-CMSHcSXi.js +0 -55
- package/web/assets/pay-CSpHBUh_.js +0 -4
- package/web/assets/subscription-DcwhSOpa.js +0 -1
- package/web/assets/table-BRU4Enia.js +0 -1
package/dist/index.js
CHANGED
|
@@ -410,6 +410,7 @@ __export(env_exports, {
|
|
|
410
410
|
stripePaymentCronTime: () => stripePaymentCronTime,
|
|
411
411
|
stripeSubscriptionCronTime: () => stripeSubscriptionCronTime,
|
|
412
412
|
stripeWebhookSecret: () => stripeWebhookSecret,
|
|
413
|
+
stripeWebhookUrl: () => stripeWebhookUrl,
|
|
413
414
|
subscriptionCronTime: () => subscriptionCronTime,
|
|
414
415
|
systemMaxPendingAmount: () => systemMaxPendingAmount,
|
|
415
416
|
tenantModeRaw: () => tenantModeRaw,
|
|
@@ -436,7 +437,7 @@ function hasConfig(key) {
|
|
|
436
437
|
const v = readConfig(key);
|
|
437
438
|
return v !== void 0 && v !== "";
|
|
438
439
|
}
|
|
439
|
-
var import_env, activeConfig, numConfig, TRUTHY, FALSY, parseBool, readConfigAny, paymentStatCronTime, subscriptionCronTime, notificationCronTime, expiredSessionCleanupCronTime, notificationCronConcurrency, stripeInvoiceCronTime, stripePaymentCronTime, stripeSubscriptionCronTime, revokeStakeCronTime, meteringSubscriptionDetectionCronTime, overdueDetectionCronTime, overdueThreshold, depositVaultCronTime, creditConsumptionCronTime, vendorStatusCheckCronTime, vendorReturnScanCronTime, iapReconcileCronTime, eventRetryCronTime, quoteCleanupCronTime, vendorTimeoutMinutes, webhookAlertWindowMinutes, webhookAlertMinFailures, shortUrlApiKey, shortUrlDomain, sequelizeOptionsPoolMin, sequelizeOptionsPoolMax, sequelizeOptionsPoolIdle, updateDataConcurrency, stopAcceptingOrders, exchangeRateCacheTTLSeconds, systemMaxPendingAmount, allowChangeLockedPrice, blockletMode, isProduction, nodeEnv, isTestEnv, isDevelopmentEnv, enableDevFakeAuth, tenantModeRaw, blockletAppPid, blockletAppId, blockletAppName, blockletAppUrl, blockletAppHost, blockletAppDir, blockletPort, blockletMountPoints, appStoreWriteEnabled, appStoreSkipSignatureVerify, googlePubsubSkipSignatureVerify, googlePubsubPushServiceAccount, googlePubsubAllowUnverifiedSender, googlePlayWebhookUrl, stripeWebhookSecret, iapReconcileBatchSize, paymentBillingThreshold, paymentMinStakeAmount, paymentDaysUntilDue, paymentDaysUntilCancel, paymentReloadSubscriptionJobs, paymentRateVolatilityThreshold, paymentLivemode, creditLowBalanceThresholdPercentage, creditBatchSize, creditBatchWindowMs, creditQueueConcurrency, exchangeRateCacheTTLFromEnv, sqlLog, sqlBenchmark, cfEnv, isCfWorker, isBlockletServer, env_default;
|
|
440
|
+
var import_env, activeConfig, numConfig, TRUTHY, FALSY, parseBool, readConfigAny, paymentStatCronTime, subscriptionCronTime, notificationCronTime, expiredSessionCleanupCronTime, notificationCronConcurrency, stripeInvoiceCronTime, stripePaymentCronTime, stripeSubscriptionCronTime, revokeStakeCronTime, meteringSubscriptionDetectionCronTime, overdueDetectionCronTime, overdueThreshold, depositVaultCronTime, creditConsumptionCronTime, vendorStatusCheckCronTime, vendorReturnScanCronTime, iapReconcileCronTime, eventRetryCronTime, quoteCleanupCronTime, vendorTimeoutMinutes, webhookAlertWindowMinutes, webhookAlertMinFailures, shortUrlApiKey, shortUrlDomain, sequelizeOptionsPoolMin, sequelizeOptionsPoolMax, sequelizeOptionsPoolIdle, updateDataConcurrency, stopAcceptingOrders, exchangeRateCacheTTLSeconds, systemMaxPendingAmount, allowChangeLockedPrice, blockletMode, isProduction, nodeEnv, isTestEnv, isDevelopmentEnv, enableDevFakeAuth, tenantModeRaw, blockletAppPid, blockletAppId, blockletAppName, blockletAppUrl, blockletAppHost, blockletAppDir, blockletPort, blockletMountPoints, appStoreWriteEnabled, appStoreSkipSignatureVerify, googlePubsubSkipSignatureVerify, googlePubsubPushServiceAccount, googlePubsubAllowUnverifiedSender, googlePlayWebhookUrl, stripeWebhookSecret, stripeWebhookUrl, iapReconcileBatchSize, paymentBillingThreshold, paymentMinStakeAmount, paymentDaysUntilDue, paymentDaysUntilCancel, paymentReloadSubscriptionJobs, paymentRateVolatilityThreshold, paymentLivemode, creditLowBalanceThresholdPercentage, creditBatchSize, creditBatchWindowMs, creditQueueConcurrency, exchangeRateCacheTTLFromEnv, sqlLog, sqlBenchmark, cfEnv, isCfWorker, isBlockletServer, env_default;
|
|
440
441
|
var init_env = __esm({
|
|
441
442
|
"../../blocklets/core/api/src/libs/env.ts"() {
|
|
442
443
|
"use strict";
|
|
@@ -518,6 +519,7 @@ var init_env = __esm({
|
|
|
518
519
|
googlePubsubAllowUnverifiedSender = () => parseBool(readConfig("GOOGLE_PUBSUB_ALLOW_UNVERIFIED_SENDER"));
|
|
519
520
|
googlePlayWebhookUrl = () => readConfig("GOOGLE_PLAY_WEBHOOK_URL");
|
|
520
521
|
stripeWebhookSecret = () => readConfig("STRIPE_WEBHOOK_SECRET");
|
|
522
|
+
stripeWebhookUrl = () => readConfig("STRIPE_WEBHOOK_URL");
|
|
521
523
|
iapReconcileBatchSize = () => Number(readConfig("IAP_RECONCILE_BATCH_SIZE") ?? "100");
|
|
522
524
|
paymentBillingThreshold = () => +readConfig("PAYMENT_BILLING_THRESHOLD");
|
|
523
525
|
paymentMinStakeAmount = () => +readConfig("PAYMENT_MIN_STAKE_AMOUNT");
|
|
@@ -1132,6 +1134,10 @@ var init_context = __esm({
|
|
|
1132
1134
|
peekInstanceDid() {
|
|
1133
1135
|
return this.storage.getStore()?.instanceDid;
|
|
1134
1136
|
}
|
|
1137
|
+
/** Request-scoped externally reachable payment base URL, when supplied by an embedded host. */
|
|
1138
|
+
peekPublicBaseUrl() {
|
|
1139
|
+
return this.storage.getStore()?.publicBaseUrl;
|
|
1140
|
+
}
|
|
1135
1141
|
/**
|
|
1136
1142
|
* Run fn as a system operation: TenantModel scoping is bypassed for the span
|
|
1137
1143
|
* of fn so legitimate cross-tenant reads can load rows regardless of tenant.
|
|
@@ -1149,13 +1155,15 @@ var init_context = __esm({
|
|
|
1149
1155
|
run(context2, fn3) {
|
|
1150
1156
|
const requestId = context2.requestId || `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
1151
1157
|
const instanceDid = context2.instanceDid ?? this.storage.getStore()?.instanceDid;
|
|
1158
|
+
const publicBaseUrl = context2.publicBaseUrl ?? this.storage.getStore()?.publicBaseUrl;
|
|
1152
1159
|
this.contexts.set(requestId, {
|
|
1153
1160
|
...context2,
|
|
1154
1161
|
instanceDid,
|
|
1162
|
+
publicBaseUrl,
|
|
1155
1163
|
requestId
|
|
1156
1164
|
});
|
|
1157
1165
|
return new Promise((resolve, reject) => {
|
|
1158
|
-
this.storage.run({ ...context2, instanceDid, requestId }, async () => {
|
|
1166
|
+
this.storage.run({ ...context2, instanceDid, publicBaseUrl, requestId }, async () => {
|
|
1159
1167
|
const resource = new import_async_hooks.AsyncResource("RequestContext");
|
|
1160
1168
|
try {
|
|
1161
1169
|
const result = await resource.runInAsyncScope(fn3);
|
|
@@ -1203,6 +1211,24 @@ var init_logger = __esm({
|
|
|
1203
1211
|
}
|
|
1204
1212
|
});
|
|
1205
1213
|
|
|
1214
|
+
// ../../blocklets/core/api/src/libs/secrets.ts
|
|
1215
|
+
function encryptSecret(value) {
|
|
1216
|
+
return getSecretsDriver().encryptSync(getInstanceDid(), value);
|
|
1217
|
+
}
|
|
1218
|
+
function decryptSecret(value) {
|
|
1219
|
+
return getSecretsDriver().decryptSync(getInstanceDid(), value);
|
|
1220
|
+
}
|
|
1221
|
+
function warmupSecrets(instanceDid) {
|
|
1222
|
+
return getSecretsDriver().warmup(instanceDid ?? getInstanceDid());
|
|
1223
|
+
}
|
|
1224
|
+
var init_secrets2 = __esm({
|
|
1225
|
+
"../../blocklets/core/api/src/libs/secrets.ts"() {
|
|
1226
|
+
"use strict";
|
|
1227
|
+
init_context();
|
|
1228
|
+
init_secrets();
|
|
1229
|
+
}
|
|
1230
|
+
});
|
|
1231
|
+
|
|
1206
1232
|
// ../../blocklets/core/api/src/libs/did-connect/tenant-identity.ts
|
|
1207
1233
|
var tenant_identity_exports = {};
|
|
1208
1234
|
__export(tenant_identity_exports, {
|
|
@@ -1274,7 +1300,14 @@ async function warmTenantIdentity(instanceDidArg) {
|
|
|
1274
1300
|
try {
|
|
1275
1301
|
await resolveTenantIdentity(instanceDidArg);
|
|
1276
1302
|
} catch (err) {
|
|
1277
|
-
logger_default.warn("[tenant-identity] warm failed \u2014 wallet access will fail-closed", {
|
|
1303
|
+
logger_default.warn("[tenant-identity] wallet identity warm failed \u2014 wallet access will fail-closed", {
|
|
1304
|
+
error: err instanceof Error ? err.message : String(err)
|
|
1305
|
+
});
|
|
1306
|
+
}
|
|
1307
|
+
try {
|
|
1308
|
+
await warmupSecrets(instanceDidArg);
|
|
1309
|
+
} catch (err) {
|
|
1310
|
+
logger_default.warn("[tenant-identity] secrets warm failed \u2014 settings/Stripe decrypt will fail-closed", {
|
|
1278
1311
|
error: err instanceof Error ? err.message : String(err)
|
|
1279
1312
|
});
|
|
1280
1313
|
}
|
|
@@ -1299,6 +1332,7 @@ var init_tenant_identity = __esm({
|
|
|
1299
1332
|
init_context();
|
|
1300
1333
|
init_drivers();
|
|
1301
1334
|
init_logger();
|
|
1335
|
+
init_secrets2();
|
|
1302
1336
|
walletType = {
|
|
1303
1337
|
role: Mcrypto.types.RoleType.ROLE_APPLICATION,
|
|
1304
1338
|
pk: Mcrypto.types.KeyType.ED25519,
|
|
@@ -1773,6 +1807,13 @@ var init_auth = __esm({
|
|
|
1773
1807
|
});
|
|
1774
1808
|
|
|
1775
1809
|
// ../../blocklets/core/api/src/libs/util.ts
|
|
1810
|
+
function getPublicAssetUrl(assetUrl) {
|
|
1811
|
+
if (!assetUrl || !assetUrl.startsWith("/") || assetUrl.startsWith("//")) return assetUrl;
|
|
1812
|
+
const basePath = readConfig("PAYMENT_PUBLIC_BASE_PATH");
|
|
1813
|
+
if (!basePath) return (0, import_component.getUrl)(assetUrl);
|
|
1814
|
+
if (assetUrl === basePath || assetUrl.startsWith(`${basePath}/`)) return assetUrl;
|
|
1815
|
+
return (0, import_ufo.joinURL)(basePath, assetUrl);
|
|
1816
|
+
}
|
|
1776
1817
|
function md5(input) {
|
|
1777
1818
|
return import_crypto2.default.createHash("md5").update(input).digest("hex");
|
|
1778
1819
|
}
|
|
@@ -2197,7 +2238,7 @@ function formatLinkWithLocale(url, locale) {
|
|
|
2197
2238
|
return `${url}${separator}locale=${locale}`;
|
|
2198
2239
|
}
|
|
2199
2240
|
}
|
|
2200
|
-
var import_crypto2, import_stream, import_consumers, import_component, import_env4, import_did, import_cbor, import_nanoid, import_ufo, import_axios, import_util, import_get, import_trimEnd, OCAP_PAYMENT_TX_TYPE, MAX_SUBSCRIPTION_ITEM_COUNT, MAX_RETRY_COUNT, MIN_RETRY_MAIL, CHECKOUT_SESSION_TTL, STRIPE_API_VERSION,
|
|
2241
|
+
var import_crypto2, import_stream, import_consumers, import_component, import_env4, import_did, import_cbor, import_nanoid, import_ufo, import_axios, import_util, import_get, import_trimEnd, OCAP_PAYMENT_TX_TYPE, MAX_SUBSCRIPTION_ITEM_COUNT, MAX_RETRY_COUNT, MIN_RETRY_MAIL, CHECKOUT_SESSION_TTL, STRIPE_API_VERSION, stripeEndpoint, googlePlayEndpoint, GOOGLE_PLAY_ENDPOINT, APP_STORE_ENDPOINT, STRIPE_EVENTS, api, getNextRetry, getWebhookJobId, cachedBlockletJsonResult, CACHE_TTL, CURRENCY_SYMBOLS;
|
|
2201
2242
|
var init_util = __esm({
|
|
2202
2243
|
"../../blocklets/core/api/src/libs/util.ts"() {
|
|
2203
2244
|
"use strict";
|
|
@@ -2215,6 +2256,7 @@ var init_util = __esm({
|
|
|
2215
2256
|
import_get = __toESM(require("lodash/get"));
|
|
2216
2257
|
import_trimEnd = __toESM(require("lodash/trimEnd"));
|
|
2217
2258
|
init_env();
|
|
2259
|
+
init_context();
|
|
2218
2260
|
init_dayjs();
|
|
2219
2261
|
init_auth();
|
|
2220
2262
|
init_logger();
|
|
@@ -2224,7 +2266,13 @@ var init_util = __esm({
|
|
|
2224
2266
|
MIN_RETRY_MAIL = 13;
|
|
2225
2267
|
CHECKOUT_SESSION_TTL = 6 * 60 * 60;
|
|
2226
2268
|
STRIPE_API_VERSION = "2023-08-16";
|
|
2227
|
-
|
|
2269
|
+
stripeEndpoint = () => {
|
|
2270
|
+
const override = stripeWebhookUrl();
|
|
2271
|
+
if (override) return override;
|
|
2272
|
+
const publicBaseUrl = context.peekPublicBaseUrl();
|
|
2273
|
+
if (publicBaseUrl) return (0, import_ufo.joinURL)(publicBaseUrl, "/api/integrations/stripe/webhook");
|
|
2274
|
+
return (0, import_component.getUrl)("/api/integrations/stripe/webhook");
|
|
2275
|
+
};
|
|
2228
2276
|
googlePlayEndpoint = () => googlePlayWebhookUrl() || (0, import_component.getUrl)("/api/integrations/google-play/webhook");
|
|
2229
2277
|
GOOGLE_PLAY_ENDPOINT = googlePlayEndpoint();
|
|
2230
2278
|
APP_STORE_ENDPOINT = (0, import_component.getUrl)("/api/integrations/app-store/webhook");
|
|
@@ -2314,6 +2362,11 @@ var init_payment_currency = __esm({
|
|
|
2314
2362
|
init_util();
|
|
2315
2363
|
nextId = createIdGenerator("pc", 12);
|
|
2316
2364
|
PaymentCurrency = class _PaymentCurrency extends TenantModel {
|
|
2365
|
+
toJSON() {
|
|
2366
|
+
const data = super.toJSON();
|
|
2367
|
+
if (data.logo) data.logo = getPublicAssetUrl(data.logo);
|
|
2368
|
+
return data;
|
|
2369
|
+
}
|
|
2317
2370
|
static {
|
|
2318
2371
|
this.GENESIS_ATTRIBUTES = {
|
|
2319
2372
|
id: {
|
|
@@ -9126,21 +9179,6 @@ var init_payment_link = __esm({
|
|
|
9126
9179
|
}
|
|
9127
9180
|
});
|
|
9128
9181
|
|
|
9129
|
-
// ../../blocklets/core/api/src/libs/secrets.ts
|
|
9130
|
-
function encryptSecret(value) {
|
|
9131
|
-
return getSecretsDriver().encryptSync(getInstanceDid(), value);
|
|
9132
|
-
}
|
|
9133
|
-
function decryptSecret(value) {
|
|
9134
|
-
return getSecretsDriver().decryptSync(getInstanceDid(), value);
|
|
9135
|
-
}
|
|
9136
|
-
var init_secrets2 = __esm({
|
|
9137
|
-
"../../blocklets/core/api/src/libs/secrets.ts"() {
|
|
9138
|
-
"use strict";
|
|
9139
|
-
init_context();
|
|
9140
|
-
init_secrets();
|
|
9141
|
-
}
|
|
9142
|
-
});
|
|
9143
|
-
|
|
9144
9182
|
// ../../blocklets/core/api/src/integrations/app-store/apple-root-certs.ts
|
|
9145
9183
|
var APPLE_INC_ROOT_B64, APPLE_ROOT_CA_G2_B64, APPLE_ROOT_CA_G3_B64, APPLE_ROOT_CERTS;
|
|
9146
9184
|
var init_apple_root_certs = __esm({
|
|
@@ -9416,7 +9454,7 @@ function decodeUnsafe(jws) {
|
|
|
9416
9454
|
throw new Error(`AppStore JWS payload not valid JSON: ${err.message}`);
|
|
9417
9455
|
}
|
|
9418
9456
|
}
|
|
9419
|
-
|
|
9457
|
+
function getAllSubscriptionStatuses(originalTransactionId, creds) {
|
|
9420
9458
|
return nativeGetAllSubscriptionStatuses(originalTransactionId, creds);
|
|
9421
9459
|
}
|
|
9422
9460
|
var init_signed_data_verifier = __esm({
|
|
@@ -9983,6 +10021,11 @@ var init_payment_method = __esm({
|
|
|
9983
10021
|
googlePlayClients = /* @__PURE__ */ new Map();
|
|
9984
10022
|
appStoreClients = /* @__PURE__ */ new Map();
|
|
9985
10023
|
PaymentMethod = class _PaymentMethod extends TenantModel {
|
|
10024
|
+
toJSON() {
|
|
10025
|
+
const data = super.toJSON();
|
|
10026
|
+
if (data.logo) data.logo = getPublicAssetUrl(data.logo);
|
|
10027
|
+
return data;
|
|
10028
|
+
}
|
|
9986
10029
|
static {
|
|
9987
10030
|
this.GENESIS_ATTRIBUTES = {
|
|
9988
10031
|
id: {
|
|
@@ -10078,11 +10121,13 @@ var init_payment_method = __esm({
|
|
|
10078
10121
|
}
|
|
10079
10122
|
static encryptSettings(settings) {
|
|
10080
10123
|
const tmp = (0, import_cloneDeep3.default)(settings);
|
|
10081
|
-
if (tmp.stripe) {
|
|
10124
|
+
if (tmp.stripe?.secret_key) {
|
|
10082
10125
|
tmp.stripe.secret_key = encryptSecret(tmp.stripe.secret_key);
|
|
10126
|
+
}
|
|
10127
|
+
if (tmp.stripe?.webhook_signing_secret) {
|
|
10083
10128
|
tmp.stripe.webhook_signing_secret = encryptSecret(tmp.stripe.webhook_signing_secret);
|
|
10084
10129
|
}
|
|
10085
|
-
if (tmp.google_play) {
|
|
10130
|
+
if (tmp.google_play?.service_account_json) {
|
|
10086
10131
|
tmp.google_play.service_account_json = encryptSecret(tmp.google_play.service_account_json);
|
|
10087
10132
|
}
|
|
10088
10133
|
if (tmp.app_store?.private_key_pem) {
|
|
@@ -10095,11 +10140,13 @@ var init_payment_method = __esm({
|
|
|
10095
10140
|
}
|
|
10096
10141
|
static decryptSettings(settings) {
|
|
10097
10142
|
const tmp = (0, import_cloneDeep3.default)(settings);
|
|
10098
|
-
if (tmp.stripe) {
|
|
10143
|
+
if (tmp.stripe?.secret_key) {
|
|
10099
10144
|
tmp.stripe.secret_key = decryptSecret(tmp.stripe.secret_key);
|
|
10145
|
+
}
|
|
10146
|
+
if (tmp.stripe?.webhook_signing_secret) {
|
|
10100
10147
|
tmp.stripe.webhook_signing_secret = decryptSecret(tmp.stripe.webhook_signing_secret);
|
|
10101
10148
|
}
|
|
10102
|
-
if (tmp.google_play) {
|
|
10149
|
+
if (tmp.google_play?.service_account_json) {
|
|
10103
10150
|
tmp.google_play.service_account_json = decryptSecret(tmp.google_play.service_account_json);
|
|
10104
10151
|
}
|
|
10105
10152
|
if (tmp.app_store?.private_key_pem) {
|
|
@@ -10145,7 +10192,7 @@ var init_payment_method = __esm({
|
|
|
10145
10192
|
const host = this.settings.arcblock?.api_host;
|
|
10146
10193
|
const cached = ocapClients.has(host);
|
|
10147
10194
|
if (!cached) {
|
|
10148
|
-
const created = new import_client.default(host);
|
|
10195
|
+
const created = new import_client.default(host, false);
|
|
10149
10196
|
ocapClients.set(host, created);
|
|
10150
10197
|
return created;
|
|
10151
10198
|
}
|
|
@@ -15924,6 +15971,18 @@ function sessionMiddleware(options = {}) {
|
|
|
15924
15971
|
} catch (err) {
|
|
15925
15972
|
return c.json({ error: err.message }, 401);
|
|
15926
15973
|
}
|
|
15974
|
+
if (!result) {
|
|
15975
|
+
const injectedDid = c.req.header("x-user-did");
|
|
15976
|
+
if (injectedDid) {
|
|
15977
|
+
result = {
|
|
15978
|
+
did: injectedDid,
|
|
15979
|
+
role: c.req.header("x-user-role"),
|
|
15980
|
+
provider: c.req.header("x-user-provider"),
|
|
15981
|
+
fullName: decodeURIComponent(c.req.header("x-user-fullname") || ""),
|
|
15982
|
+
walletOS: c.req.header("x-user-wallet-os") || ""
|
|
15983
|
+
};
|
|
15984
|
+
}
|
|
15985
|
+
}
|
|
15927
15986
|
if (result) {
|
|
15928
15987
|
c.set("user", result);
|
|
15929
15988
|
}
|
|
@@ -22781,10 +22840,11 @@ __export(notification_exports, {
|
|
|
22781
22840
|
ensureBlockletSdkTransportGuard: () => ensureBlockletSdkTransportGuard
|
|
22782
22841
|
});
|
|
22783
22842
|
function noopSdkTransport(mod, fns) {
|
|
22784
|
-
const noop =
|
|
22843
|
+
const noop = () => Promise.resolve(void 0);
|
|
22785
22844
|
for (const target of [mod, mod?.default]) {
|
|
22786
|
-
if (
|
|
22787
|
-
|
|
22845
|
+
if (target) {
|
|
22846
|
+
for (const fn3 of fns) target[fn3] = noop;
|
|
22847
|
+
}
|
|
22788
22848
|
}
|
|
22789
22849
|
}
|
|
22790
22850
|
function ensureBlockletSdkTransportGuard() {
|
|
@@ -47455,7 +47515,7 @@ async function ensureWebhookRegistered() {
|
|
|
47455
47515
|
const exist = data.find((webhook) => webhook.metadata?.appPid === import_env29.env.appPid);
|
|
47456
47516
|
if (exist) {
|
|
47457
47517
|
await stripe.webhookEndpoints.update(exist.id, {
|
|
47458
|
-
url:
|
|
47518
|
+
url: stripeEndpoint(),
|
|
47459
47519
|
description: import_env29.env.appName,
|
|
47460
47520
|
enabled_events: STRIPE_EVENTS,
|
|
47461
47521
|
disabled: false
|
|
@@ -47463,7 +47523,7 @@ async function ensureWebhookRegistered() {
|
|
|
47463
47523
|
logger_default.info("stripe webhook updated");
|
|
47464
47524
|
} else {
|
|
47465
47525
|
const result = await stripe.webhookEndpoints.create({
|
|
47466
|
-
url:
|
|
47526
|
+
url: stripeEndpoint(),
|
|
47467
47527
|
description: import_env29.env.appName,
|
|
47468
47528
|
enabled_events: STRIPE_EVENTS,
|
|
47469
47529
|
api_version: STRIPE_API_VERSION,
|
|
@@ -47609,7 +47669,9 @@ var init_payment_methods = __esm({
|
|
|
47609
47669
|
metadata: {}
|
|
47610
47670
|
});
|
|
47611
47671
|
await method.update({ default_currency_id: currency.id });
|
|
47612
|
-
ensureWebhookRegistered().catch(
|
|
47672
|
+
ensureWebhookRegistered().catch(
|
|
47673
|
+
(err) => logger_default.error("ensureWebhookRegistered failed (payments may not reconcile in real-time)", err)
|
|
47674
|
+
);
|
|
47613
47675
|
return c.json({ ...method.toJSON(), payment_currencies: [currency.toJSON()] });
|
|
47614
47676
|
}
|
|
47615
47677
|
if (EVM_CHAIN_TYPES.includes(raw.type)) {
|
|
@@ -47972,7 +48034,9 @@ var init_payment_methods = __esm({
|
|
|
47972
48034
|
}
|
|
47973
48035
|
const updatedMethod = await method.update(updateData);
|
|
47974
48036
|
if (method.type === "stripe") {
|
|
47975
|
-
ensureWebhookRegistered().catch(
|
|
48037
|
+
ensureWebhookRegistered().catch(
|
|
48038
|
+
(err) => logger_default.error("ensureWebhookRegistered failed (payments may not reconcile in real-time)", err)
|
|
48039
|
+
);
|
|
47976
48040
|
}
|
|
47977
48041
|
return c.json(updatedMethod);
|
|
47978
48042
|
} catch (err) {
|
|
@@ -60846,7 +60910,7 @@ var init_entitlements = __esm({
|
|
|
60846
60910
|
init_logger();
|
|
60847
60911
|
init_security();
|
|
60848
60912
|
app26 = new import_hono26.Hono();
|
|
60849
|
-
auth18 = authenticate({ component: true,
|
|
60913
|
+
auth18 = authenticate({ component: true, ensureLogin: true });
|
|
60850
60914
|
checkQuerySchema = import_joi25.default.object({
|
|
60851
60915
|
customer_did: import_joi25.default.string().required(),
|
|
60852
60916
|
product_id: import_joi25.default.string().required(),
|
|
@@ -67618,6 +67682,29 @@ var init_collect_batch = __esm({
|
|
|
67618
67682
|
}
|
|
67619
67683
|
});
|
|
67620
67684
|
|
|
67685
|
+
// ../../blocklets/core/api/src/libs/arcblock-transfer.ts
|
|
67686
|
+
async function encodeArcblockTransfer({
|
|
67687
|
+
chainHost,
|
|
67688
|
+
tx,
|
|
67689
|
+
wallet: wallet2
|
|
67690
|
+
}) {
|
|
67691
|
+
const context2 = await (0, import_encode.fetchContext)(chainHost);
|
|
67692
|
+
return (0, import_encode.encodeTx)({
|
|
67693
|
+
type: "TransferV3Tx",
|
|
67694
|
+
tx,
|
|
67695
|
+
wallet: wallet2,
|
|
67696
|
+
chainId: context2.chainId,
|
|
67697
|
+
feeConfig: context2.txFee
|
|
67698
|
+
});
|
|
67699
|
+
}
|
|
67700
|
+
var import_encode;
|
|
67701
|
+
var init_arcblock_transfer = __esm({
|
|
67702
|
+
"../../blocklets/core/api/src/libs/arcblock-transfer.ts"() {
|
|
67703
|
+
"use strict";
|
|
67704
|
+
import_encode = require("@ocap/client/encode");
|
|
67705
|
+
}
|
|
67706
|
+
});
|
|
67707
|
+
|
|
67621
67708
|
// ../../blocklets/core/api/src/libs/chain-error.ts
|
|
67622
67709
|
function parseChainError(err) {
|
|
67623
67710
|
const msg = err?.message ?? String(err);
|
|
@@ -67662,6 +67749,7 @@ var init_pay = __esm({
|
|
|
67662
67749
|
init_token();
|
|
67663
67750
|
init_tx();
|
|
67664
67751
|
init_auth();
|
|
67752
|
+
init_arcblock_transfer();
|
|
67665
67753
|
init_logger();
|
|
67666
67754
|
init_chain_error();
|
|
67667
67755
|
init_payment();
|
|
@@ -67769,20 +67857,30 @@ var init_pay = __esm({
|
|
|
67769
67857
|
}
|
|
67770
67858
|
if (paymentMethod.type === "arcblock") {
|
|
67771
67859
|
try {
|
|
67772
|
-
await paymentIntent.update({ status: "processing" });
|
|
67773
67860
|
const client = paymentMethod.getOcapClient();
|
|
67774
67861
|
const claim = claims.find((x) => x.type === "prepareTx");
|
|
67775
|
-
await client.getContext();
|
|
67776
67862
|
const tx = client.decodeTx(claim.finalTx);
|
|
67777
67863
|
if (claim.delegator && claim.from) {
|
|
67778
67864
|
tx.delegator = claim.delegator;
|
|
67779
67865
|
tx.from = claim.from;
|
|
67780
67866
|
}
|
|
67781
|
-
const
|
|
67867
|
+
const chainHost = paymentMethod.settings.arcblock?.api_host;
|
|
67868
|
+
if (!chainHost) {
|
|
67869
|
+
throw new Error("ArcBlock payment method API host is missing");
|
|
67870
|
+
}
|
|
67871
|
+
const signingWallet = (0, import_wallet5.fromAddress)(userDid);
|
|
67872
|
+
const { object: encodedTx, buffer: buffer2 } = await encodeArcblockTransfer({
|
|
67873
|
+
chainHost,
|
|
67874
|
+
tx,
|
|
67875
|
+
wallet: signingWallet
|
|
67876
|
+
});
|
|
67877
|
+
const gasPayerExtra = await getGasPayerExtra(buffer2, client.pickGasPayerHeaders(request), client);
|
|
67878
|
+
await paymentIntent.update({ status: "processing" });
|
|
67782
67879
|
const txHash = await client.sendTransferV3Tx(
|
|
67783
|
-
//
|
|
67784
|
-
|
|
67785
|
-
|
|
67880
|
+
// Passing the already-encoded signature skips the client's timer-backed
|
|
67881
|
+
// encodeTransferV3Tx/getContext path in Cloudflare Workers.
|
|
67882
|
+
{ tx: encodedTx, wallet: signingWallet, signature: encodedTx.signature },
|
|
67883
|
+
gasPayerExtra
|
|
67786
67884
|
);
|
|
67787
67885
|
const quoteValidation = await validateQuoteForPayment({
|
|
67788
67886
|
checkoutSessionId: checkoutSession?.id,
|
|
@@ -77304,6 +77402,7 @@ function csrfSecret() {
|
|
|
77304
77402
|
}
|
|
77305
77403
|
function csrf() {
|
|
77306
77404
|
return async (c, next) => {
|
|
77405
|
+
if (readConfig("PAYMENT_DISABLE_CSRF") === "true") return next();
|
|
77307
77406
|
const method = c.req.method.toUpperCase();
|
|
77308
77407
|
const loginToken = (0, import_cookie.getCookie)(c, "login_token");
|
|
77309
77408
|
const existingCsrf = (0, import_cookie.getCookie)(c, "x-csrf-token");
|
|
@@ -77566,10 +77665,18 @@ function buildConnectRoutesHono() {
|
|
|
77566
77665
|
const connectApp = new import_hono43.Hono();
|
|
77567
77666
|
connectApp.use("*", async (c, next) => {
|
|
77568
77667
|
const { context: requestCtx } = (init_context(), __toCommonJS(context_exports));
|
|
77569
|
-
|
|
77668
|
+
const { warmTenantIdentity: warmTenantIdentity2 } = (init_tenant_identity(), __toCommonJS(tenant_identity_exports));
|
|
77669
|
+
const preResolved = requestCtx.peekInstanceDid();
|
|
77670
|
+
if (preResolved) {
|
|
77671
|
+
await warmTenantIdentity2(preResolved);
|
|
77672
|
+
return next();
|
|
77673
|
+
}
|
|
77570
77674
|
const { resolveTenantForHost: resolveTenantForHost2 } = (init_identity(), __toCommonJS(identity_exports));
|
|
77571
77675
|
const instanceDid = await resolveTenantForHost2(c.req.header("host"));
|
|
77572
|
-
return requestCtx.withTenant(instanceDid, () =>
|
|
77676
|
+
return requestCtx.withTenant(instanceDid, async () => {
|
|
77677
|
+
await warmTenantIdentity2(instanceDid);
|
|
77678
|
+
return next();
|
|
77679
|
+
});
|
|
77573
77680
|
});
|
|
77574
77681
|
for (const h of connectHandlerModules()) handlers2.attach(Object.assign({ app: connectApp }, h));
|
|
77575
77682
|
return connectApp;
|
|
@@ -77661,8 +77768,20 @@ async function provisionTenant(instanceDid) {
|
|
|
77661
77768
|
const { fromTokenToUnit: fromTokenToUnit31 } = require("@ocap/util");
|
|
77662
77769
|
const { PaymentMethod: PaymentMethod3, PaymentCurrency: PaymentCurrency3 } = (init_models(), __toCommonJS(models_exports));
|
|
77663
77770
|
const CHAINS = [
|
|
77664
|
-
{
|
|
77665
|
-
|
|
77771
|
+
{
|
|
77772
|
+
chainId: "main",
|
|
77773
|
+
livemode: true,
|
|
77774
|
+
symbol: "ABT",
|
|
77775
|
+
label: "ArcBlock Main",
|
|
77776
|
+
contract: "z35nNRvYxBoHitx9yZ5ATS88psfShzPPBLxYD"
|
|
77777
|
+
},
|
|
77778
|
+
{
|
|
77779
|
+
chainId: "beta",
|
|
77780
|
+
livemode: false,
|
|
77781
|
+
symbol: "TBA",
|
|
77782
|
+
label: "ArcBlock Beta",
|
|
77783
|
+
contract: "z35n6UoHSi9MED4uaQy6ozFgKPaZj2UKrurBG"
|
|
77784
|
+
}
|
|
77666
77785
|
];
|
|
77667
77786
|
await context.withTenant(instanceDid, async () => {
|
|
77668
77787
|
const existing = await PaymentMethod3.findOne({ where: { type: "arcblock" } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcblock/payment-service",
|
|
3
|
-
"version": "1.29.
|
|
3
|
+
"version": "1.29.9",
|
|
4
4
|
"description": "Embedded payment service factory (W2) — side-effect-free core for arc / blocklet server / standalone worker hosts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"@blocklet/constant": "^1.17.13-beta-20260613-094425-b81920c8",
|
|
45
45
|
"@blocklet/error": "^0.3.5",
|
|
46
46
|
"@blocklet/logger": "^1.17.13-beta-20260613-094425-b81920c8",
|
|
47
|
-
"@blocklet/payment-vendor": "1.29.
|
|
47
|
+
"@blocklet/payment-vendor": "1.29.9",
|
|
48
48
|
"@blocklet/sdk": "^1.17.13-beta-20260613-094425-b81920c8",
|
|
49
|
-
"@blocklet/xss": "^0.
|
|
49
|
+
"@blocklet/xss": "^0.15.4",
|
|
50
50
|
"@hono/node-server": "^2.0.4",
|
|
51
51
|
"@ocap/asset": "^1.30.24",
|
|
52
52
|
"@ocap/client": "^1.30.24",
|
|
@@ -90,5 +90,5 @@
|
|
|
90
90
|
"ts-jest": "^29.1.2",
|
|
91
91
|
"typescript": "^5.4.3"
|
|
92
92
|
},
|
|
93
|
-
"gitHead": "
|
|
93
|
+
"gitHead": "249bd9bf3c6cc54f77c260edb4b4d3c0be60f126"
|
|
94
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as e,B as m,w as pe,x as R,bv as N,A as ge,a3 as i,q as n,N as fe,bL as be,bx as ye,$ as p,bg as I,bl as V,a2 as je,Y as ve,bf as ee}from"./vendor-mui-BXZut9Pz.js";import{e as Ce,b as Re,a as Se}from"./vendor-react-BPknnnEA.js";import{V as we,
|
|
1
|
+
import{r as s,j as e,B as m,w as pe,x as R,bv as N,A as ge,a3 as i,q as n,N as fe,bL as be,bx as ye,$ as p,bg as I,bl as V,a2 as je,Y as ve,bf as ee}from"./vendor-mui-BXZut9Pz.js";import{e as Ce,b as Re,a as Se}from"./vendor-react-BPknnnEA.js";import{V as we,af as ke,H as X,G as H,Z as q,F as Ae}from"./vendor-blocklet-DcLR2Cyf.js";import{a as Ne,u as Be,i as Ie,a4 as Pe,a8 as Te,f as Ee,e as Z,k as J,l as Fe,G as De}from"./index-BarN7DfU.js";import{R as Me}from"./recharge-BVT4USAO.js";import{g as B,M as K}from"./util-DxXTXkeY.js";import{f as S}from"./dayjs-DUTDpcNU.js";import{u as We}from"./browser-DDv4_sgY.js";import"./table-BrtHemkA.js";import"./lodash-B4Ozcv0x.js";const _e=ee(i)(({theme:t})=>({marginBottom:t.spacing(3),gap:t.spacing(3),flexDirection:"column"})),Q=ee(I)(({theme:t})=>({padding:t.spacing(2),backgroundColor:t.palette.background.paper,border:`1px solid ${t.palette.divider}`,borderRadius:t.shape.borderRadius,marginBottom:t.spacing(2)}));function qe(){const{t,locale:P}=we(),{currencyId:u}=Ce(),[re]=Re(),w=We(),T=re.get("rechargeAddress"),E=Se(),{connect:k}=Ne(),[a,g]=s.useState("50"),[f,te]=s.useState(""),[F,D]=s.useState(!0),[M,W]=s.useState(""),_=s.useRef(null),[h,oe]=s.useState({amount:"0",interval:"month",cycle:1}),[z,se]=s.useState(null),[d,L]=s.useState(!1),[ne,$]=s.useState([]),{session:b}=Be(),[o,ae]=s.useState(null),[O,ce]=s.useState([]),y=T||z?.paymentAddress||b?.user?.did,Y=async()=>{try{if(D(!0),!u){E("/customer");return}const{data:r}=await Z.get(`/api/customers/recharge?currencyId=${u}`);if(r.currency){if(ae(r.currency),ce(r.relatedSubscriptions||[]),r.recommendedRecharge&&r.recommendedRecharge.amount&&r.recommendedRecharge.amount!=="0"){const c=r.recommendedRecharge.amount,v=r.currency.decimal||0,C=A=>{const xe=X(new H(c).mul(new H(String(A))).toString(),v);return Math.ceil(parseFloat(xe)).toString()};oe({amount:X(c,v),interval:r.recommendedRecharge.interval,cycle:r.recommendedRecharge.cycle});const U=[{amount:C(1),multiplier:r.recommendedRecharge.cycle,label:t("common.estimatedDuration",{duration:S(1,r.recommendedRecharge.interval,{t})})},{amount:C(4),multiplier:r.recommendedRecharge.cycle*4,label:t("common.estimatedDuration",{duration:S(4,r.recommendedRecharge.interval,{t})})},{amount:C(8),multiplier:r.recommendedRecharge.cycle*8,label:t("common.estimatedDuration",{duration:S(8,r.recommendedRecharge.interval,{t})})}];$(U);const G=C(4);!d&&!U.find(A=>A.amount===G)&&g(G)}else $([{amount:"10",multiplier:0,label:""},{amount:"50",multiplier:0,label:""},{amount:"100",multiplier:0,label:""}]);if(["arcblock","ethereum","base"].includes(r.currency?.paymentMethod?.type)){const c=await Z.get(`/api/customers/payer-token?currencyId=${u}&payerAddress=${y}`);c?.data&&se(c.data)}}else W(t("customer.balance.currency.notFound"))}catch(r){W(J(r)||t("common.fetchError")),console.error(r)}finally{D(!1)}},j=s.useRef(null);s.useEffect(()=>{Y()},[u]),s.useEffect(()=>{j.current&&o&&setTimeout(()=>{if(j.current){const r=j.current.getBoundingClientRect(),c=window.scrollY+r.top-120;window.scrollTo({top:c,behavior:"smooth"})}},200)},[o,F]);const ie=()=>{o&&(Number.isNaN(Number(a))||k.open({containerEl:void 0,saveConnect:!1,action:"recharge-account",locale:P,prefix:Ae(Fe(),"/api/did"),extraParams:{customerDid:b?.user?.did,currencyId:o.id,amount:Number(a),rechargeAddress:T||b?.user?.did},messages:{scan:t("common.connect.defaultScan"),title:t("customer.recharge.title"),confirm:t("common.connect.confirm")},onSuccess:()=>{k.close(),q.success(t("customer.recharge.success")),Y()},onClose:()=>{k.close()},onError:r=>{q.error(J(r))}}))},le=r=>{const{value:l}=r.target;if(!o||!/^\d*\.?\d*$/.test(l)||l.startsWith(".")||Number(l)>K)return;const c=o.maximum_precision,v=De(l,P,c||6);te(v||""),g(l)},me=r=>{g(r),L(!1)},de=()=>{L(!0),g(""),setTimeout(()=>{_.current?.focus()},0)},ue=r=>{E(`/customer/subscription/${r}`)};if(F)return e.jsx(m,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"50vh"},children:e.jsx(pe,{})});if(!["arcblock","ethereum","base"].includes(o?.paymentMethod?.type||""))return e.jsxs(m,{children:[!w&&e.jsx(R,{startIcon:e.jsx(N,{}),variant:"outlined",onClick:()=>B("/customer"),children:t("common.previous")}),e.jsx(ke,{children:t("customer.recharge.unsupported")})]});if(M)return e.jsxs(m,{children:[!w&&e.jsx(R,{startIcon:e.jsx(N,{}),variant:"outlined",onClick:()=>B("/customer"),children:t("common.previous")}),e.jsx(ge,{severity:"error",sx:{mt:2},children:M})]});const he=Ie(z?.token||"0",o?.decimal||0,6,!1),x=o?.paymentMethod?Pe(o.paymentMethod,y||""):void 0;return e.jsxs(_e,{children:[e.jsx(i,{direction:"row",sx:{justifyContent:"space-between",alignItems:"center",position:"relative"},children:w?e.jsx(m,{}):e.jsx(R,{startIcon:e.jsx(N,{}),variant:"text",color:"inherit",onClick:()=>B("/customer"),sx:{color:"text.secondary"},children:t("common.previous")})}),e.jsxs(n,{variant:"h2",gutterBottom:!0,children:[o?.symbol," ",t("customer.recharge.title")]}),o&&e.jsxs(m,{ref:j,children:[e.jsxs(i,{sx:{maxWidth:"760px"},children:[e.jsxs(m,{sx:{mb:4},children:[e.jsx(Q,{elevation:0,children:e.jsxs(i,{direction:"row",spacing:2,sx:{justifyContent:"space-between",alignItems:"center"},children:[e.jsxs(i,{spacing:.5,children:[e.jsx(n,{variant:"body2",sx:{color:"text.secondary"},children:t("customer.recharge.receiveAddress")}),e.jsx(n,{variant:"body1",sx:{wordBreak:"break-all",fontFamily:"monospace"},children:y||t("customer.balance.addressNotFound")})]}),o.logo&&e.jsx(fe,{src:o.logo,alt:o.name,sx:{width:{xs:30,sm:40},height:{xs:30,sm:40}}})]})}),e.jsx(Q,{elevation:0,onClick:()=>x&&window.open(x,"_blank"),sx:{color:"text.primary",borderRadius:1,transition:"all 0.2s ease-in-out",cursor:x?"pointer":"default",position:"relative","&:hover":x?{"& .arrow-icon":{opacity:1,transform:"translateX(0)"}}:void 0},children:e.jsxs(i,{direction:"row",sx:{alignItems:"center",justifyContent:"space-between"},children:[e.jsxs(i,{children:[e.jsxs(n,{variant:"body1",color:"inherit",sx:{display:"flex",alignItems:"center",gap:1,color:"text.secondary"},children:[e.jsx(be,{color:"success",fontSize:"small"}),t("admin.customer.summary.balance")]}),e.jsxs(n,{variant:"h3",sx:{fontWeight:"bold",mt:1,color:"text.primary"},children:[he," ",o.symbol]})]}),x&&e.jsx(ye,{className:"arrow-icon",sx:{opacity:0,transform:"translateX(-10px)",transition:"all 0.2s ease-in-out",color:"inherit",fontSize:30}})]})})]}),e.jsx(i,{sx:{mb:3,backgroundColor:"background.default",borderRadius:"16px"},children:e.jsxs(p,{container:!0,spacing:2,children:[ne.map(({amount:r,label:l,multiplier:c})=>e.jsx(p,{size:{xs:6,sm:3},children:e.jsx(I,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",transition:"all 0.2s",cursor:"pointer",borderRadius:"12px","&:hover":{transform:"translateY(-4px)",boxShadow:3},...a===r&&!d?{borderColor:"primary.main",borderWidth:2,backgroundColor:"primary.lighter"}:{}},children:e.jsxs(V,{onClick:()=>me(r),sx:{height:"100%",p:1.5,textAlign:"center"},children:[e.jsxs(n,{variant:"h6",align:"center",sx:{fontWeight:600,color:a===r&&!d?"primary.main":"text.primary"},children:[Te(r)," ",o.symbol]}),c>0&&l&&e.jsx(n,{variant:"caption",align:"center",sx:{color:"text.secondary"},children:l})]})})},r)),e.jsx(p,{size:{xs:6,sm:3},children:e.jsx(I,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",transition:"all 0.2s",cursor:"pointer",borderRadius:"12px","&:hover":{transform:"translateY(-4px)",boxShadow:"0 4px 10px rgba(0,0,0,0.1)"},...d?{borderColor:"primary.main",borderWidth:2,backgroundColor:"primary.lighter"}:{}},children:e.jsx(V,{onClick:de,sx:{height:"100%",p:1},children:e.jsx(i,{direction:"row",spacing:1,sx:{justifyContent:"center",alignItems:"center"},children:e.jsx(n,{variant:"h6",align:"center",sx:{fontWeight:600,color:d?"primary.main":"text.primary"},children:t("customer.recharge.custom")||t("common.custom")})})})})})]})}),d&&e.jsxs(m,{sx:{mb:3},children:[e.jsx(je,{fullWidth:!0,label:t("customer.recharge.amount"),variant:"outlined",type:"text",value:a,error:!!f,helperText:f,onChange:le,inputRef:_,autoComplete:"off",slotProps:{input:{endAdornment:e.jsx(n,{children:o.symbol})},htmlInput:{min:0,max:K}}}),a&&Number(a)>0&&Number(h.amount)>0&&!f&&e.jsx(n,{variant:"body2",sx:{fontSize:12,color:"text.lighter",mt:1},children:t("common.estimatedDuration",{duration:S(Math.floor(Number(a)/Number(h.amount))<1?parseFloat((Number(a)/Number(h.amount)).toFixed(1)):Math.floor(Number(a)/Number(h.amount)),h.interval,{t})})})]}),e.jsx(R,{fullWidth:!0,size:"large",variant:"contained",color:"primary",onClick:ie,disabled:!a||parseFloat(a)<=0||!!f,sx:{mb:4,py:1.5,borderRadius:"8px",boxShadow:"0 4px 10px rgba(0,0,0,0.1)","&:hover":{boxShadow:"0 6px 15px rgba(0,0,0,0.15)",transform:"translateY(-2px)"},transition:"all 0.2s"},children:t("customer.recharge.submit")})]}),O.length>0&&e.jsxs(m,{sx:{mb:3},children:[e.jsx(n,{variant:"h4",gutterBottom:!0,children:t("customer.recharge.relatedSubscriptions")}),e.jsx(p,{container:!0,spacing:2,children:O.map(r=>e.jsx(p,{size:{xs:12,sm:6,md:4,lg:3},children:e.jsxs(i,{onClick:()=>ue(r.id),className:"base-card",sx:{height:"100%"},children:[e.jsx(i,{direction:"row",spacing:1.5,sx:{alignItems:"center",mb:1},children:e.jsx(n,{variant:"subtitle1",sx:{fontWeight:"medium",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"text.link",cursor:"pointer"},children:r.description||r.id})}),r.items&&r.items[0]&&o&&e.jsx(n,{variant:"body1",sx:{color:"text.secondary"},children:Ee(r.items[0].price,o,r.items[0].price?.product?.unit_label)})]})},r.id))})]}),e.jsx(ve,{sx:{mb:3}}),e.jsx(n,{variant:"h4",gutterBottom:!0,children:t("customer.recharge.history")}),e.jsx(Me,{currency_id:u,customer_id:b?.user?.did,recharge_address:y})]})]})}export{qe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as r}from"./vendor-mui-BXZut9Pz.js";import{V as C,
|
|
1
|
+
import{j as r}from"./vendor-mui-BXZut9Pz.js";import{V as C,Y as x,P as j,Z as c}from"./vendor-blocklet-DcLR2Cyf.js";import{I as u,e as d,k as A}from"./index-BarN7DfU.js";import{A as w}from"./actions-BJDN6Op2.js";import{C as $}from"./click-boundary-CafubiPp.js";import{a as I}from"./vendor-react-BPknnnEA.js";const R=i=>d.get(`/api/invoices/${i}/return-stake`).then(s=>s.data);function q({data:i,variant:s="compact",onChange:y,mode:b="admin"}){const{t:e}=C(),l=I(),[t,n]=x({action:"",loading:!1}),g=["stake","stake_overdraft_protection"].includes(i.billing_reason),h=i.status==="paid",a=b==="admin",v=a&&g&&h&&i.paymentMethod?.type==="arcblock",{data:p={value:"0"},runAsync:k}=j(()=>v?R(i.id):Promise.resolve({value:"0"}),{manual:!0}),m=async()=>{try{if(n({loading:!0}),t.action==="return-stake"){const o=await d.post(`/api/invoices/${i.id}/return-stake`).then(S=>S.data);o.success?c.success(e("admin.invoice.returnStake.success")):c.error(o.error)}t.action==="retry-uncollectible"&&(await d.get("/api/invoices/retry-uncollectible",{params:{invoiceId:i.id}}).then(o=>o.data),c.success(e("admin.invoice.retryUncollectible.success"))),t.action==="void"&&(await d.post(`/api/invoices/${i.id}/void`).then(o=>o.data),c.success(e("admin.invoice.void.success"))),y(t.action)}catch(o){console.error(o),c.error(A(o))}finally{n({loading:!1,action:""})}},f=[a&&{label:e("admin.invoice.edit"),handler:()=>n({action:"edit"}),color:"primary",disabled:i.status!=="draft"},a&&{label:e("admin.invoice.duplicate"),handler:()=>n({action:"duplicate"}),color:"primary",disabled:i.status!=="draft",divider:!0},a&&i.status==="uncollectible"&&{label:e("admin.invoice.retryUncollectible.title"),handler:()=>n({action:"retry-uncollectible"}),color:"primary"},v&&p&&p.value!=="0"&&{label:e("admin.invoice.returnStake.title"),handler:()=>n({action:"return-stake"}),color:"primary",divider:!0},a&&!["paid","void","draft"].includes(i.status)&&{label:e("admin.invoice.void.title"),handler:()=>n({action:"void"}),color:"primary",divider:!0},{label:e("admin.customer.view"),handler:()=>{l(a?`/admin/customers/${i.customer_id}`:"/customer")},color:"primary"}].filter(Boolean);return s==="compact"&&f.push({label:e("admin.invoice.view"),handler:()=>{l(a?`/admin/billing/${i.id}`:`/customer/invoice/${i.id}`)},color:"primary"}),r.jsxs($,{children:[r.jsx(w,{variant:s,actions:f,onOpenCallback:k}),t.action==="retry-uncollectible"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.retryUncollectible.title"),message:e("admin.invoice.retryUncollectible.tip"),loading:t.loading,color:"primary"}),t.action==="return-stake"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.returnStake.title"),message:e("admin.invoice.returnStake.tip"),loading:t.loading}),t.action==="void"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.void.title"),message:e("admin.invoice.void.tip"),loading:t.loading})]})}export{q as I};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./vendor-mui-BXZut9Pz.js";import{V as f,
|
|
1
|
+
import{j as s}from"./vendor-mui-BXZut9Pz.js";import{V as f,Y as p,Z as l}from"./vendor-blocklet-DcLR2Cyf.js";import{I as u,e as y,k as g}from"./index-BarN7DfU.js";import{A as C}from"./actions-BJDN6Op2.js";import{C as h}from"./click-boundary-CafubiPp.js";import{a as b}from"./vendor-react-BPknnnEA.js";function A({data:a,variant:i="compact",onChange:d=()=>{}}){const{t:e}=f(),r=b(),[o,n]=p({action:"",loading:!1}),t=[{label:e("admin.customer.view"),handler:()=>r(`/admin/customers/${a.customer_id}`),color:"primary",disabled:!1}];i==="compact"&&t.push({label:e("admin.refund.view"),handler:()=>r(`/admin/payments/${a.id}`),color:"primary",disabled:!1}),["succeeded","canceled"].includes(a.status)||t.push({label:e("admin.paymentIntent.cancelRefund"),handler:()=>n({action:"cancel"}),color:"error",disabled:!1});const m=async()=>{try{n({loading:!0}),await y.post(`/api/refunds/${a?.id}/cancel`),l.success(e("admin.paymentIntent.refundCanceled")),d(o.action)}catch(c){console.error(c),l.error(g(c))}finally{n({loading:!1,action:""})}};return s.jsxs(h,{children:[s.jsx(C,{variant:i,actions:t}),o.action==="cancel"&&s.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.paymentIntent.cancelRefund"),message:e("admin.paymentIntent.refundCanceledTip"),loading:o.loading})]})}export{A as R};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as n,a3 as R,x as P,w as B}from"./vendor-mui-BXZut9Pz.js";import{V as E,
|
|
1
|
+
import{j as n,a3 as R,x as P,w as B}from"./vendor-mui-BXZut9Pz.js";import{V as E,H as j,$ as I,Z as o,Y as z,P as L,aa as C}from"./vendor-blocklet-DcLR2Cyf.js";import{h as V,F as H,I as w,e as m,b8 as _,k as y}from"./index-BarN7DfU.js";import{A as M}from"./actions-BJDN6Op2.js";import{l as S}from"./lodash-B4Ozcv0x.js";import{o as U}from"./util-DxXTXkeY.js";import{D as W,a as D}from"./form-cX026J4G.js";import{P as K}from"./product-select-ChEyoJqJ.js";import{a as O}from"./vendor-react-BPknnnEA.js";function Y({price:e,loading:s,onSave:v,onCancel:l,productType:g=""}){const{t:r}=E(),f=t=>S.isEmpty(t)?{}:t,d=V({mode:"onChange",defaultValues:{...e,unit_amount:j(e.unit_amount,e.currency?.decimal),model:U(e),metadata:f(e.metadata),recurring:e.recurring?{...e.recurring}:W.recurring,currency_options:S.cloneDeep(e.currency_options).map(t=>(t.unit_amount=j(t.unit_amount,t.currency?.decimal),t))}}),{handleSubmit:b,reset:h,formState:{errors:c}}=d,a=()=>{Object.keys(c).length>0||b(async t=>{if(t.metadata===void 0&&(t.metadata=d.getValues("metadata")),Number(t.quantity_available)>0&&Number(t.quantity_available)<Number(t.quantity_sold)){o.warning(r("admin.price.quantityAvailable.valid"));return}await v(t),h(),l(null)})()};return n.jsx(I,{open:!0,disableEscapeKeyDown:!0,fullWidth:!0,maxWidth:"sm",className:"base-dialog",onClose:()=>l(null),showCloseButton:!1,title:r("admin.price.edit"),actions:n.jsxs(R,{direction:"row",children:[n.jsx(P,{size:"small",sx:{mr:2},onClick:l,children:r("common.cancel")}),n.jsxs(P,{variant:"contained",color:"primary",size:"small",disabled:s,onClick:a,children:[s&&n.jsx(B,{size:"small"})," ",r("common.save")]})]}),children:n.jsx(H,{...d,children:n.jsx(K,{children:n.jsx(D,{productType:g||e.product?.type})})})})}const Z=async e=>(await m.get(`/api/payment-currencies/${e}/recharge-config`)).data;function ne({data:e,onChange:s,variant:v="compact",setAsDefault:l=!1,product:g=null}){const{t:r}=E(),f=O(),d=e.active,b=e.active,h=!e.locked&&!l,[c,a]=z({action:"",loading:!1}),t=async i=>{if(Number(i.quantity_available)>0&&Number(i.quantity_available)<Number(i.quantity_sold)){o.warning(r("admin.price.quantityAvailable.valid"));return}try{a({loading:!0}),await m.put(`/api/prices/${e.id}`,i).then(p=>p.data),o.success(r("common.saved")),_("price.updated"),s(c.action)}catch(p){throw console.error(p),o.error(y(p)),p}finally{a({loading:!1})}},k=async()=>{try{a({loading:!0}),await m.put(`/api/prices/${e.id}/archive`).then(i=>i.data),o.success(r("common.saved")),_("price.updated"),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},A=async()=>{try{a({loading:!0}),await m.delete(`/api/prices/${e.id}`).then(i=>i.data),o.success(r("common.removed")),_("price.deleted"),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},T=async()=>{try{a({loading:!0}),await m.put(`/api/products/${e.product_id}`,{default_price_id:e.id}).then(i=>i.data),o.success(r("common.saveAsDefaultPriceSuccess")),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},q=()=>{f(`/admin/products/links?price_id=${e.id}`)},$=()=>{f(`/admin/products/pricing-tables?price_id=${e.id}`)},u=e.metadata?.credit_config?.currency_id,{data:N}=L(()=>Z(u),{refreshDeps:[u],ready:!!u}),F=async()=>{try{a({loading:!0}),await m.put(`/api/payment-currencies/${u}/recharge-config`,{base_price_id:e.id}),o.success(r("admin.price.credit.saveSuccess")),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},x=[{label:r("admin.pricing"),handler:C,color:"text.primary",disabled:!0},{label:r("admin.price.edit"),handler:()=>a({action:"edit"}),color:d?"text.primary":"text.disabled",disabled:!d},{label:r("admin.price.archive"),handler:()=>a({action:"archive"}),color:b?"text.primary":"text.disabled",disabled:!b},{label:r("admin.price.remove"),handler:()=>a({action:"remove"}),color:h?"error.main":"text.disabled",disabled:!h,divider:!l},{label:r("admin.payments"),handler:C,color:"text.primary",disabled:!0},{label:r("admin.paymentLink.add"),handler:q,color:"primary"},{label:r("admin.pricingTable.add"),handler:$,color:"primary",disabled:!e.recurring}].filter(Boolean);if(l||x.splice(4,0,{label:r("admin.price.setAsDefault"),handler:T,color:"text.primary",disabled:!1,divider:!0}),u&&N?.recharge_config?.base_price_id!==e.id){const i=l?4:5;x.splice(i,0,{label:r("admin.price.credit.saveAsBasePrice"),handler:F,color:"text.primary",disabled:!1,divider:!1})}return n.jsxs(n.Fragment,{children:[n.jsx(M,{variant:v,actions:x}),c.action==="edit"&&n.jsx(Y,{price:e,onSave:t,onCancel:()=>a({action:""}),productType:g?.type}),c.action==="archive"&&n.jsx(w,{onConfirm:k,onCancel:()=>a({action:""}),title:r("admin.price.archive"),message:r("admin.price.archiveTip")}),c.action==="remove"&&n.jsx(w,{onConfirm:A,onCancel:()=>a({action:""}),title:r("admin.price.remove"),message:r("admin.price.removeTip")})]})}export{Y as E,ne as P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as a,j as e,aJ as v,ad as p,aH as d,a1 as k,x as u,c3 as x,I as C,c2 as y}from"./vendor-mui-BXZut9Pz.js";import{V as z}from"./vendor-blocklet-
|
|
1
|
+
import{r as a,j as e,aJ as v,ad as p,aH as d,a1 as k,x as u,c3 as x,I as C,c2 as y}from"./vendor-mui-BXZut9Pz.js";import{V as z}from"./vendor-blocklet-DcLR2Cyf.js";import{b4 as m}from"./index-BarN7DfU.js";function M(f){const s=Object.assign({variant:"compact",sx:{},onOpenCallback:null},f),{t:h}=z(),[o,i]=a.useState(null),j=!!o,b=a.useRef(null),[g,l]=a.useState(!1),t=n=>{if(m(n),b.current=n.currentTarget,s.onOpenCallback&&typeof s.onOpenCallback=="function"){const r=s.onOpenCallback();r instanceof Promise&&(l(!0),r.finally(()=>{l(!1)}))}i(n.currentTarget)},c=(n,r)=>{m(n),i(null),typeof r=="function"&&r()},O=()=>s.variant==="outlined"?e.jsx(u,{"aria-label":"actions",sx:{minWidth:0,padding:"5px",...s.sx},variant:"outlined",onClick:t,size:"small",children:e.jsx(x,{})}):s.variant==="compact"?e.jsx(C,{"aria-label":"actions",sx:s.sx,"aria-haspopup":"true",onClick:t,size:"small",children:e.jsx(x,{})}):e.jsxs(u,{sx:s.sx,onClick:t,size:"small",variant:"contained",color:"primary",children:[h("common.actions")," ",e.jsx(y,{fontSize:"small"})]});return e.jsxs(e.Fragment,{children:[O(),e.jsx(v,{anchorEl:o,open:j,onClose:c,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:s.actions.map(n=>g?e.jsx(p,{dense:!0,disabled:!0,children:e.jsx(d,{primary:e.jsx(k,{}),slotProps:{primary:{width:"56px"}}})},n.label):e.jsx(p,{divider:!!n.divider,dense:!!n.dense,disabled:!!n.disabled,onClick:r=>c(r,n.handler),children:e.jsx(d,{primary:n.label,slotProps:{primary:{color:n.color}}})},n.label))})]})}export{M as A};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as n}from"./vendor-mui-BXZut9Pz.js";import{V as g,
|
|
1
|
+
import{j as n}from"./vendor-mui-BXZut9Pz.js";import{V as g,Y as C,Z as o}from"./vendor-blocklet-DcLR2Cyf.js";import{I as f,e as v,k as x}from"./index-BarN7DfU.js";import{A as y}from"./actions-BJDN6Op2.js";import{C as h}from"./click-boundary-CafubiPp.js";import{a as j}from"./vendor-react-BPknnnEA.js";function E({data:t,variant:s="compact",onChange:p}){const{t:e}=g(),u=j(),[i,r]=C({action:"",loading:!1}),c=a=>async()=>{try{r({loading:!0}),a==="delete"?await v.delete(`/api/meters/${t.id}`):await v.put(`/api/meters/${t.id}/${a}`),a==="activate"?o.success(e("admin.meter.activated")):a==="deactivate"?o.success(e("admin.meter.deactivated")):a==="delete"&&o.success(e("admin.meter.deleted")),p(a)}catch(d){console.error(d),o.error(x(d))}finally{r({loading:!1,action:""})}},m=()=>{r({action:""})},l=[{label:t.status==="inactive"?e("admin.meter.activate"):e("admin.meter.deactivate"),handler:()=>r({action:t.status==="inactive"?"activate":"deactivate"}),color:t.status==="inactive"?"primary":"error"}];return s==="compact"&&l.push({label:e("admin.meter.view"),handler:()=>u(`/admin/billing/${t.id}`),color:"primary"}),n.jsxs(h,{children:[n.jsx(y,{variant:s,actions:l}),i.action==="activate"&&n.jsx(f,{onConfirm:c("activate"),onCancel:m,title:e("admin.meter.activate"),message:e("admin.meter.activateConfirm"),loading:i.loading,color:"primary"}),i.action==="deactivate"&&n.jsx(f,{onConfirm:c("deactivate"),onCancel:m,title:e("admin.meter.deactivate"),message:e("admin.meter.deactivateConfirm"),loading:i.loading,color:"warning"})]})}export{E as M};
|