@volter/twin-stripe 2.0.37 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -207
- package/dist/generated/pack-facts.json +94 -0
- package/dist/spec/SOURCE.md +14 -0
- package/dist/spec/fixtures3.json.gz +0 -0
- package/dist/spec/openapi.json.gz +0 -0
- package/dist/spec/patches.json +34 -0
- package/dist/spec/sources.json +378 -0
- package/dist/src/cli.js +12 -30
- package/dist/src/engine/after-payment.d.ts +9 -0
- package/dist/src/engine/after-payment.js +28 -0
- package/dist/src/engine/apps-secrets.d.ts +1 -0
- package/dist/src/engine/apps-secrets.js +3 -0
- package/dist/src/engine/balance.d.ts +5 -0
- package/dist/src/engine/balance.js +15 -0
- package/dist/src/engine/billing.d.ts +5 -0
- package/dist/src/engine/billing.js +6 -0
- package/dist/src/engine/charges.d.ts +6 -0
- package/dist/src/engine/charges.js +13 -0
- package/dist/src/engine/checkout.d.ts +24 -0
- package/dist/src/engine/checkout.js +30 -0
- package/dist/src/engine/common.d.ts +19 -0
- package/dist/src/engine/common.js +32 -0
- package/dist/src/{screens → engine}/connect-settings.d.ts +1 -7
- package/dist/src/engine/connect-settings.js +26 -0
- package/dist/src/engine/connect.d.ts +66 -0
- package/dist/src/engine/connect.js +189 -0
- package/dist/src/engine/coupons.d.ts +0 -0
- package/dist/src/engine/coupons.js +5 -0
- package/dist/src/engine/credit-notes.d.ts +1 -0
- package/dist/src/engine/credit-notes.js +5 -0
- package/dist/src/engine/customers.d.ts +12 -0
- package/dist/src/engine/customers.js +30 -0
- package/dist/src/engine/display.d.ts +14 -0
- package/dist/src/engine/display.js +16 -0
- package/dist/src/engine/disputes.d.ts +0 -0
- package/dist/src/engine/disputes.js +9 -0
- package/dist/src/engine/entitlements.d.ts +1 -0
- package/dist/src/engine/entitlements.js +4 -0
- package/dist/src/engine/ephemeral-keys.d.ts +0 -0
- package/dist/src/engine/ephemeral-keys.js +4 -0
- package/dist/src/engine/files.d.ts +18 -0
- package/dist/src/engine/files.js +33 -0
- package/dist/src/engine/front.d.ts +5 -0
- package/dist/src/engine/front.js +25 -0
- package/dist/src/engine/invoices.d.ts +24 -0
- package/dist/src/engine/invoices.js +57 -0
- package/dist/src/engine/issuing.d.ts +35 -0
- package/dist/src/engine/issuing.js +45 -0
- package/dist/src/engine/ledger.d.ts +9 -0
- package/dist/src/engine/ledger.js +9 -0
- package/dist/src/engine/oauth.d.ts +4 -0
- package/dist/src/engine/oauth.js +25 -0
- package/dist/src/engine/onboarding.d.ts +13 -0
- package/dist/src/engine/onboarding.js +42 -0
- package/dist/src/{stripe-params.d.ts → engine/params.d.ts} +20 -3
- package/dist/src/{stripe-params.js → engine/params.js} +7 -60
- package/dist/src/engine/payment-intents.d.ts +10 -0
- package/dist/src/engine/payment-intents.js +27 -0
- package/dist/src/engine/payment-links.d.ts +1 -0
- package/dist/src/engine/payment-links.js +5 -0
- package/dist/src/engine/payment-methods.d.ts +16 -0
- package/dist/src/engine/payment-methods.js +22 -0
- package/dist/src/engine/plans.d.ts +6 -0
- package/dist/src/engine/plans.js +26 -0
- package/dist/src/engine/platform.d.ts +39 -0
- package/dist/src/engine/platform.js +34 -0
- package/dist/src/engine/products.d.ts +0 -0
- package/dist/src/engine/products.js +4 -0
- package/dist/src/engine/radar.d.ts +2 -0
- package/dist/src/engine/radar.js +5 -0
- package/dist/src/engine/refunds.d.ts +1 -0
- package/dist/src/engine/refunds.js +28 -0
- package/dist/src/engine/renewals.d.ts +36 -0
- package/dist/src/engine/renewals.js +65 -0
- package/dist/src/engine/setup-intents.d.ts +1 -0
- package/dist/src/engine/setup-intents.js +4 -0
- package/dist/src/{stripe-twin.d.ts → engine/stripe.d.ts} +11 -39
- package/dist/src/{stripe-twin.js → engine/stripe.js} +25 -310
- package/dist/src/engine/subscription-schedules.d.ts +3 -0
- package/dist/src/engine/subscription-schedules.js +1 -0
- package/dist/src/engine/subscriptions.d.ts +12 -0
- package/dist/src/engine/subscriptions.js +31 -0
- package/dist/src/engine/tax.d.ts +7 -0
- package/dist/src/engine/tax.js +28 -0
- package/dist/src/engine/terminal.d.ts +4 -0
- package/dist/src/engine/terminal.js +20 -0
- package/dist/src/engine/test-clocks.d.ts +5 -0
- package/dist/src/engine/test-clocks.js +9 -0
- package/dist/src/engine/tokens.d.ts +7 -0
- package/dist/src/engine/tokens.js +20 -0
- package/dist/src/engine/transfers.d.ts +2 -0
- package/dist/src/engine/transfers.js +1 -0
- package/dist/src/engine/treasury.d.ts +23 -0
- package/dist/src/engine/treasury.js +45 -0
- package/dist/src/{stripe-version.js → engine/version.js} +4 -3
- package/dist/src/engine/webhook-endpoints.d.ts +1 -0
- package/dist/src/engine/webhook-endpoints.js +12 -0
- package/dist/src/engine/webhooks.d.ts +31 -0
- package/dist/src/engine/webhooks.js +68 -0
- package/dist/src/fetch.d.ts +2 -0
- package/dist/src/fetch.js +26 -0
- package/dist/src/generated/surface.gen.json +1 -1
- package/dist/src/generated/ui.gen.json +1 -1
- package/dist/src/index.d.ts +5 -14
- package/dist/src/index.js +8 -75
- package/dist/src/manifest.js +232 -758
- package/dist/src/screens/billing-portal.d.ts +3 -0
- package/dist/src/screens/{portal.js → billing-portal.js} +28 -54
- package/dist/src/screens/checkout.d.ts +2 -31
- package/dist/src/screens/checkout.js +32 -121
- package/dist/src/screens/connect-oauth.d.ts +3 -27
- package/dist/src/screens/connect-oauth.js +51 -132
- package/dist/src/screens/connect-onboarding.d.ts +3 -0
- package/dist/src/screens/{onboarding.js → connect-onboarding.js} +36 -102
- package/dist/src/screens/dashboard.d.ts +3 -0
- package/dist/src/screens/dashboard.js +117 -0
- package/dist/src/screens/shared.d.ts +27 -0
- package/dist/src/screens/shared.js +87 -0
- package/dist/src/screens/stripe-js.d.ts +3 -0
- package/dist/src/screens/stripe-js.js +135 -0
- package/dist/src/semantics/account_links.d.ts +2 -0
- package/dist/src/semantics/account_links.js +22 -0
- package/dist/src/semantics/accounts.d.ts +4 -0
- package/dist/src/semantics/accounts.js +38 -0
- package/dist/src/semantics/apps.d.ts +4 -0
- package/dist/src/semantics/{apps-secrets.js → apps.js} +14 -26
- package/dist/src/semantics/around.d.ts +2 -0
- package/dist/src/semantics/around.js +16 -0
- package/dist/src/semantics/balance.d.ts +2 -11
- package/dist/src/semantics/balance.js +3 -194
- package/dist/src/semantics/balance_transactions.d.ts +2 -0
- package/dist/src/semantics/balance_transactions.js +15 -0
- package/dist/src/semantics/billing_portal.d.ts +5 -0
- package/dist/src/semantics/billing_portal.js +42 -0
- package/dist/src/semantics/charges.d.ts +3 -28
- package/dist/src/semantics/charges.js +5 -202
- package/dist/src/semantics/checkout.d.ts +3 -20
- package/dist/src/semantics/checkout.js +8 -261
- package/dist/src/semantics/clock.d.ts +2 -0
- package/dist/src/semantics/clock.js +21 -0
- package/dist/src/semantics/coupons.d.ts +2 -6
- package/dist/src/semantics/coupons.js +2 -60
- package/dist/src/semantics/customers.d.ts +6 -6
- package/dist/src/semantics/customers.js +27 -387
- package/dist/src/semantics/disputes.d.ts +2 -2
- package/dist/src/semantics/disputes.js +3 -49
- package/dist/src/semantics/doors.d.ts +23 -0
- package/dist/src/semantics/doors.js +73 -0
- package/dist/src/semantics/entitlements.d.ts +2 -2
- package/dist/src/semantics/entitlements.js +5 -50
- package/dist/src/semantics/events.d.ts +12 -0
- package/dist/src/semantics/events.js +36 -0
- package/dist/src/semantics/index.d.ts +2 -0
- package/dist/src/semantics/index.js +107 -0
- package/dist/src/semantics/invoice_payments.d.ts +2 -0
- package/dist/src/semantics/invoice_payments.js +12 -0
- package/dist/src/semantics/invoiceitems.d.ts +3 -0
- package/dist/src/semantics/invoiceitems.js +59 -0
- package/dist/src/semantics/invoices.d.ts +16 -18
- package/dist/src/semantics/invoices.js +118 -444
- package/dist/src/semantics/payment_intents.d.ts +4 -0
- package/dist/src/semantics/payment_intents.js +79 -0
- package/dist/src/semantics/payment_methods.d.ts +5 -0
- package/dist/src/semantics/payment_methods.js +39 -0
- package/dist/src/semantics/payouts.d.ts +2 -0
- package/dist/src/semantics/payouts.js +21 -0
- package/dist/src/semantics/prices.d.ts +4 -0
- package/dist/src/semantics/prices.js +37 -0
- package/dist/src/semantics/products.d.ts +6 -2
- package/dist/src/semantics/products.js +15 -130
- package/dist/src/semantics/promotion_codes.d.ts +3 -0
- package/dist/src/semantics/promotion_codes.js +35 -0
- package/dist/src/semantics/radar.d.ts +2 -2
- package/dist/src/semantics/radar.js +5 -74
- package/dist/src/semantics/refunds.d.ts +3 -9
- package/dist/src/semantics/refunds.js +6 -192
- package/dist/src/semantics/setup_intents.d.ts +3 -0
- package/dist/src/semantics/{setup-intents.js → setup_intents.js} +10 -53
- package/dist/src/semantics/shared.d.ts +822 -47
- package/dist/src/semantics/shared.js +3044 -78
- package/dist/src/semantics/states.d.ts +531 -0
- package/dist/src/semantics/states.js +852 -0
- package/dist/src/semantics/subscription_items.d.ts +5 -0
- package/dist/src/semantics/subscription_items.js +55 -0
- package/dist/src/semantics/subscription_schedules.d.ts +4 -0
- package/dist/src/semantics/subscription_schedules.js +60 -0
- package/dist/src/semantics/subscriptions.d.ts +7 -11
- package/dist/src/semantics/subscriptions.js +44 -415
- package/dist/src/semantics/test_helpers.d.ts +6 -0
- package/dist/src/semantics/{test-clocks.js → test_helpers.js} +14 -40
- package/dist/src/semantics/transfers.d.ts +2 -2
- package/dist/src/semantics/transfers.js +6 -101
- package/dist/src/server.d.ts +7 -0
- package/dist/src/server.js +7 -0
- package/generated/pack-facts.json +94 -0
- package/package.json +10 -20
- package/spec/SOURCE.md +14 -0
- package/spec/fixtures3.json.gz +0 -0
- package/spec/openapi.json.gz +0 -0
- package/spec/patches.json +34 -0
- package/spec/sources.json +378 -0
- package/src/cli.ts +12 -26
- package/src/engine/after-payment.ts +31 -0
- package/src/engine/apps-secrets.ts +4 -0
- package/src/engine/balance.ts +33 -0
- package/src/engine/billing.ts +16 -0
- package/src/engine/charges.ts +19 -0
- package/src/engine/checkout.ts +40 -0
- package/src/engine/common.ts +47 -0
- package/src/engine/connect-settings.ts +23 -0
- package/src/engine/connect.ts +184 -0
- package/src/engine/coupons.ts +5 -0
- package/src/engine/credit-notes.ts +6 -0
- package/src/engine/customers.ts +35 -0
- package/src/engine/display.ts +19 -0
- package/src/engine/disputes.ts +9 -0
- package/src/engine/entitlements.ts +5 -0
- package/src/engine/ephemeral-keys.ts +3 -0
- package/src/engine/files.ts +41 -0
- package/src/engine/front.ts +31 -0
- package/src/engine/invoices.ts +71 -0
- package/src/engine/issuing.ts +61 -0
- package/src/engine/ledger.ts +50 -0
- package/src/engine/oauth.ts +19 -0
- package/src/engine/onboarding.ts +54 -0
- package/src/{stripe-params.ts → engine/params.ts} +8 -56
- package/src/engine/payment-intents.ts +33 -0
- package/src/engine/payment-links.ts +6 -0
- package/src/engine/payment-methods.ts +25 -0
- package/src/engine/plans.ts +42 -0
- package/src/engine/platform.ts +47 -0
- package/src/engine/products.ts +3 -0
- package/src/engine/radar.ts +6 -0
- package/src/engine/refunds.ts +29 -0
- package/src/engine/renewals.ts +73 -0
- package/src/engine/setup-intents.ts +5 -0
- package/src/{stripe-twin.ts → engine/stripe.ts} +28 -323
- package/src/engine/subscription-schedules.ts +10 -0
- package/src/engine/subscriptions.ts +40 -0
- package/src/engine/tax.ts +39 -0
- package/src/engine/terminal.ts +23 -0
- package/src/engine/test-clocks.ts +11 -0
- package/src/engine/tokens.ts +22 -0
- package/src/engine/transfers.ts +23 -0
- package/src/engine/treasury.ts +47 -0
- package/src/{stripe-version.ts → engine/version.ts} +4 -3
- package/src/engine/webhook-endpoints.ts +14 -0
- package/src/engine/webhooks.ts +72 -0
- package/src/fetch.ts +27 -0
- package/src/generated/surface.gen.json +1 -1
- package/src/generated/ui.gen.json +1 -1
- package/src/index.ts +8 -116
- package/src/manifest.ts +234 -786
- package/src/screens/{portal.tsx → billing-portal.tsx} +32 -37
- package/src/screens/checkout.tsx +33 -95
- package/src/screens/connect-oauth.tsx +64 -88
- package/src/screens/{onboarding.tsx → connect-onboarding.tsx} +38 -82
- package/src/screens/dashboard.tsx +198 -0
- package/src/screens/shared.tsx +84 -0
- package/src/screens/stripe-js.ts +170 -0
- package/src/semantics/account_links.ts +21 -0
- package/src/semantics/accounts.ts +43 -0
- package/src/semantics/{apps-secrets.ts → apps.ts} +17 -32
- package/src/semantics/around.ts +20 -0
- package/src/semantics/balance.ts +6 -207
- package/src/semantics/balance_transactions.ts +20 -0
- package/src/semantics/billing_portal.ts +51 -0
- package/src/semantics/charges.ts +12 -211
- package/src/semantics/checkout.ts +13 -268
- package/src/semantics/clock.ts +26 -0
- package/src/semantics/coupons.ts +5 -67
- package/src/semantics/customers.ts +29 -392
- package/src/semantics/disputes.ts +9 -59
- package/src/semantics/doors.ts +80 -0
- package/src/semantics/entitlements.ts +9 -56
- package/src/semantics/events.ts +44 -0
- package/src/semantics/index.ts +111 -0
- package/src/semantics/invoice_payments.ts +18 -0
- package/src/semantics/invoiceitems.ts +59 -0
- package/src/semantics/invoices.ts +109 -443
- package/src/semantics/payment_intents.ts +83 -0
- package/src/semantics/payment_methods.ts +43 -0
- package/src/semantics/payouts.ts +23 -0
- package/src/semantics/prices.ts +42 -0
- package/src/semantics/products.ts +18 -142
- package/src/semantics/promotion_codes.ts +39 -0
- package/src/semantics/radar.ts +8 -77
- package/src/semantics/refunds.ts +9 -212
- package/src/semantics/setup_intents.ts +45 -0
- package/src/semantics/shared.ts +3092 -106
- package/src/semantics/states.ts +883 -0
- package/src/semantics/subscription_items.ts +54 -0
- package/src/semantics/subscription_schedules.ts +66 -0
- package/src/semantics/subscriptions.ts +49 -432
- package/src/semantics/{test-clocks.ts → test_helpers.ts} +23 -47
- package/src/semantics/transfers.ts +11 -131
- package/src/server.ts +8 -0
- package/client/dashboard-api.ts +0 -286
- package/client/stripe-mirror.css +0 -277
- package/client/stripe-mirror.tsx +0 -1559
- package/dist/client/dashboard-api.d.ts +0 -107
- package/dist/client/dashboard-api.js +0 -238
- package/dist/client/dashboard-api.ts +0 -286
- package/dist/client/stripe-mirror.bundle.js +0 -236
- package/dist/client/stripe-mirror.css +0 -277
- package/dist/client/stripe-mirror.d.ts +0 -134
- package/dist/client/stripe-mirror.js +0 -859
- package/dist/client/stripe-mirror.tsx +0 -1559
- package/dist/src/screens/connect-settings.js +0 -103
- package/dist/src/screens/consent-skin.d.ts +0 -4
- package/dist/src/screens/consent-skin.js +0 -18
- package/dist/src/screens/financial-connections.d.ts +0 -5
- package/dist/src/screens/financial-connections.js +0 -90
- package/dist/src/screens/identity.d.ts +0 -5
- package/dist/src/screens/identity.js +0 -86
- package/dist/src/screens/onboarding.d.ts +0 -13
- package/dist/src/screens/portal.d.ts +0 -5
- package/dist/src/screens/public-details.d.ts +0 -5
- package/dist/src/screens/public-details.js +0 -90
- package/dist/src/semantics/after-payment.d.ts +0 -22
- package/dist/src/semantics/after-payment.js +0 -99
- package/dist/src/semantics/apps-secrets.d.ts +0 -2
- package/dist/src/semantics/billing.d.ts +0 -2
- package/dist/src/semantics/billing.js +0 -220
- package/dist/src/semantics/connect.d.ts +0 -5
- package/dist/src/semantics/connect.js +0 -493
- package/dist/src/semantics/credit-notes.d.ts +0 -2
- package/dist/src/semantics/credit-notes.js +0 -172
- package/dist/src/semantics/ephemeral-keys.d.ts +0 -2
- package/dist/src/semantics/ephemeral-keys.js +0 -34
- package/dist/src/semantics/files.d.ts +0 -2
- package/dist/src/semantics/files.js +0 -125
- package/dist/src/semantics/issuing.d.ts +0 -13
- package/dist/src/semantics/issuing.js +0 -575
- package/dist/src/semantics/ledger.d.ts +0 -59
- package/dist/src/semantics/ledger.js +0 -200
- package/dist/src/semantics/payment-intents.d.ts +0 -18
- package/dist/src/semantics/payment-intents.js +0 -452
- package/dist/src/semantics/payment-links.d.ts +0 -2
- package/dist/src/semantics/payment-links.js +0 -133
- package/dist/src/semantics/payment-methods.d.ts +0 -20
- package/dist/src/semantics/payment-methods.js +0 -140
- package/dist/src/semantics/plans.d.ts +0 -5
- package/dist/src/semantics/plans.js +0 -121
- package/dist/src/semantics/platform.d.ts +0 -9
- package/dist/src/semantics/platform.js +0 -206
- package/dist/src/semantics/renewals.d.ts +0 -47
- package/dist/src/semantics/renewals.js +0 -281
- package/dist/src/semantics/setup-intents.d.ts +0 -2
- package/dist/src/semantics/subscription-schedules.d.ts +0 -2
- package/dist/src/semantics/subscription-schedules.js +0 -119
- package/dist/src/semantics/tax.d.ts +0 -2
- package/dist/src/semantics/tax.js +0 -197
- package/dist/src/semantics/terminal.d.ts +0 -5
- package/dist/src/semantics/terminal.js +0 -182
- package/dist/src/semantics/test-clocks.d.ts +0 -6
- package/dist/src/semantics/tokens.d.ts +0 -4
- package/dist/src/semantics/tokens.js +0 -44
- package/dist/src/semantics/treasury.d.ts +0 -2
- package/dist/src/semantics/treasury.js +0 -377
- package/dist/src/semantics/webhook-endpoints.d.ts +0 -3
- package/dist/src/semantics/webhook-endpoints.js +0 -85
- package/dist/src/stripe-budget.d.ts +0 -55
- package/dist/src/stripe-budget.js +0 -155
- package/dist/src/stripe-capabilities.d.ts +0 -3
- package/dist/src/stripe-capabilities.js +0 -5836
- package/dist/src/stripe-conformance.d.ts +0 -43
- package/dist/src/stripe-conformance.js +0 -105
- package/dist/src/stripe-connector.d.ts +0 -161
- package/dist/src/stripe-connector.js +0 -414
- package/dist/src/stripe-emit.d.ts +0 -2
- package/dist/src/stripe-emit.js +0 -145
- package/dist/src/stripe-events.d.ts +0 -93
- package/dist/src/stripe-events.js +0 -392
- package/dist/src/stripe-js.d.ts +0 -4
- package/dist/src/stripe-js.js +0 -70
- package/dist/src/stripe-mirror-ui.d.ts +0 -15
- package/dist/src/stripe-mirror-ui.js +0 -87
- package/dist/src/stripe-perform-harness.d.ts +0 -9
- package/dist/src/stripe-perform-harness.js +0 -26
- package/dist/src/stripe-server.d.ts +0 -33
- package/dist/src/stripe-server.js +0 -429
- package/dist/src/stripe-shared.d.ts +0 -109
- package/dist/src/stripe-shared.js +0 -276
- package/dist/src/stripe-ui-conformance.d.ts +0 -5
- package/dist/src/stripe-ui-conformance.js +0 -79
- package/dist/src/stripe-ui-structure.d.ts +0 -3
- package/dist/src/stripe-ui-structure.js +0 -168
- package/dist/test-fixtures/stripe-known-deviations.json +0 -110
- package/dist/test-fixtures/stripe-openapi-operations.SOURCE.md +0 -14
- package/dist/test-fixtures/stripe-openapi-operations.json +0 -4717
- package/dist/test-fixtures/stripe-schemas.SOURCE.md +0 -35
- package/dist/test-fixtures/stripe-schemas.json +0 -3813
- package/src/screens/connect-settings.tsx +0 -121
- package/src/screens/consent-skin.ts +0 -20
- package/src/screens/financial-connections.tsx +0 -101
- package/src/screens/identity.tsx +0 -96
- package/src/screens/public-details.tsx +0 -105
- package/src/semantics/after-payment.ts +0 -118
- package/src/semantics/billing.ts +0 -216
- package/src/semantics/connect.ts +0 -487
- package/src/semantics/credit-notes.ts +0 -168
- package/src/semantics/ephemeral-keys.ts +0 -34
- package/src/semantics/files.ts +0 -143
- package/src/semantics/issuing.ts +0 -590
- package/src/semantics/ledger.ts +0 -253
- package/src/semantics/payment-intents.ts +0 -463
- package/src/semantics/payment-links.ts +0 -148
- package/src/semantics/payment-methods.ts +0 -145
- package/src/semantics/plans.ts +0 -131
- package/src/semantics/platform.ts +0 -220
- package/src/semantics/renewals.ts +0 -279
- package/src/semantics/setup-intents.ts +0 -87
- package/src/semantics/subscription-schedules.ts +0 -129
- package/src/semantics/tax.ts +0 -220
- package/src/semantics/terminal.ts +0 -195
- package/src/semantics/tokens.ts +0 -52
- package/src/semantics/treasury.ts +0 -383
- package/src/semantics/webhook-endpoints.ts +0 -87
- package/src/stripe-budget.ts +0 -181
- package/src/stripe-capabilities.ts +0 -5651
- package/src/stripe-conformance.ts +0 -124
- package/src/stripe-connector.ts +0 -462
- package/src/stripe-emit.ts +0 -157
- package/src/stripe-events.ts +0 -434
- package/src/stripe-js.ts +0 -70
- package/src/stripe-mirror-ui.ts +0 -90
- package/src/stripe-perform-harness.ts +0 -29
- package/src/stripe-server.ts +0 -393
- package/src/stripe-shared.ts +0 -297
- package/src/stripe-ui-conformance.ts +0 -88
- package/src/stripe-ui-structure.ts +0 -182
- package/test-fixtures/stripe-known-deviations.json +0 -110
- package/test-fixtures/stripe-openapi-operations.json +0 -4717
- package/test-fixtures/stripe-schemas.json +0 -3813
- /package/dist/src/{screens → engine}/industries.d.ts +0 -0
- /package/dist/src/{screens → engine}/industries.js +0 -0
- /package/dist/src/{semantics → engine}/test-cards.d.ts +0 -0
- /package/dist/src/{semantics → engine}/test-cards.js +0 -0
- /package/dist/src/{stripe-version.d.ts → engine/version.d.ts} +0 -0
- /package/src/{screens → engine}/industries.ts +0 -0
- /package/src/{semantics → engine}/test-cards.ts +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Refund semantics. A refund always names what it took money out of and lands there: a refund
|
|
2
|
+
// naming nothing, an id nobody minted, or more than the charge has left is refused as Stripe
|
|
3
|
+
// refuses it. The machine in ../manifest.ts says only a refund waiting on the customer
|
|
4
|
+
// (requires_action) may be canceled. List and update are the derived core's.
|
|
5
|
+
//
|
|
6
|
+
// Refunding a destination charge can take back the connected account's share (reverse_transfer: a reversal of the
|
|
7
|
+
// charge's transfer, in proportion to the refund) and the platform's (refund_application_fee: a refund of the
|
|
8
|
+
// application fee, in proportion) (docs.stripe.com/api/refunds/create#create_refund-reverse_transfer,
|
|
9
|
+
// docs.stripe.com/connect/destination-charges#issue-refunds). Where the documentation stops and the twin decides: the
|
|
10
|
+
// twin's destination charge transfers the amount less the fee (the fee is kept back rather than collected from the
|
|
11
|
+
// connected account), so a fee refund moves no money of its own; the reversal and the refund settle both shares.
|
|
12
|
+
//
|
|
13
|
+
// A payment made by bank transfer (from the customer's cash balance) is refunded to the customer's bank account: Stripe
|
|
14
|
+
// emails the customer (instructions_email, else the customer's email) for their bank details and the refund waits in
|
|
15
|
+
// requires_action, moving no money, until they answer; only then can it still be canceled. With origin=customer_balance
|
|
16
|
+
// it goes back to the cash balance at once (docs.stripe.com/payments/customer-balance/refunding,
|
|
17
|
+
// docs.stripe.com/api/refunds/cancel). Where the documentation stops and the twin decides: the customer never answers
|
|
18
|
+
// the email in the World, and its link expires 30 days on.
|
|
19
|
+
//
|
|
20
|
+
// An uncaptured charge holds an authorization, not money. A PaymentIntent's is not refunded: "the charge attached to the
|
|
21
|
+
// PaymentIntent remains uncaptured and can't be refunded directly. You must cancel the PaymentIntent"
|
|
22
|
+
// (docs.stripe.com/refunds), which releases it (charges.ts cancelAuthorization). A charge made with capture=false is
|
|
23
|
+
// released by its refund, as its authorization would be "automatically refunded if uncaptured" (spec/openapi.json.gz,
|
|
24
|
+
// `capture_before`): refunded in full, no balance moved, and its capture refused afterwards. Where the documentation
|
|
25
|
+
// stops and the twin decides: the refusal's code (payment_intent_unexpected_state) and wording, and that a refund of a
|
|
26
|
+
// capture=false charge releases the whole authorization, so an `amount` short of it is refused.
|
|
27
|
+
// the reasons a caller may give; `expired_uncaptured_charge` is Stripe's own
|
|
28
|
+
export const REFUND_REASONS = new Set(['duplicate', 'fraudulent', 'requested_by_customer']);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Row } from './common.js';
|
|
2
|
+
export declare const SUB = "subscription";
|
|
3
|
+
export declare const INV = "invoice";
|
|
4
|
+
export declare const HOUR = 3600;
|
|
5
|
+
/** The statuses a subscription renews in. */
|
|
6
|
+
export declare const RENEWING: string[];
|
|
7
|
+
export declare const itemsOf: (sub: Row) => Row[];
|
|
8
|
+
/** An item's quantity as it bills: 1 when none is set, and 0 when 0 is (a quantity of 0 bills nothing). */
|
|
9
|
+
export declare function itemQuantity(it: Row): number;
|
|
10
|
+
/** The subscription's discounts with a `once` coupon's spent: "When a subscription uses a coupon with `duration=once`, the
|
|
11
|
+
* coupon is considered used after the invoice finalizes and is removed from the subscription's `discounts` array"
|
|
12
|
+
* (docs.stripe.com/billing/subscriptions/coupons#coupon-duration). */
|
|
13
|
+
export declare function unspentDiscounts(discounts: unknown): Row[];
|
|
14
|
+
/** The coupon ids an invoice's discounts name. */
|
|
15
|
+
export declare const couponsOf: (discounts: unknown) => Set<string>;
|
|
16
|
+
/** A subscription's discounts after `invoice` finalizes: less the `once` coupons it took. */
|
|
17
|
+
export declare function keptAfter(discounts: Row[], invoice: Row): Row[];
|
|
18
|
+
/** A Checkout session's one-time line items as lines of its subscription's first invoice, numbered after its `after` lines. */
|
|
19
|
+
export declare function oneTimeLines(invoiceId: string, sub: Row, items: Row[], after: number, at: number, currency: string): {
|
|
20
|
+
id: string;
|
|
21
|
+
object: string;
|
|
22
|
+
type: string;
|
|
23
|
+
amount: number;
|
|
24
|
+
currency: string;
|
|
25
|
+
quantity: number;
|
|
26
|
+
proration: boolean;
|
|
27
|
+
price: Row | null;
|
|
28
|
+
subscription: unknown;
|
|
29
|
+
subscription_item: null;
|
|
30
|
+
invoice_item: null;
|
|
31
|
+
period: {
|
|
32
|
+
start: number;
|
|
33
|
+
end: number;
|
|
34
|
+
};
|
|
35
|
+
description: string | null;
|
|
36
|
+
}[];
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// A subscription's invoices over time: the first one Checkout pays, and each renewal. Time's moves are made
|
|
2
|
+
// as the twin's trial end already made them: caught up to the customer's clock (the World's, or its test
|
|
3
|
+
// clock) whenever the twin is asked anything (./front.ts), each checked against the machines in
|
|
4
|
+
// ../manifest.ts.
|
|
5
|
+
//
|
|
6
|
+
// - Checkout's subscription session pays the first invoice with the card the customer entered, which becomes the
|
|
7
|
+
// subscription's default payment method (docs.stripe.com/payments/checkout/how-checkout-works); nothing is due
|
|
8
|
+
// on a trial's.
|
|
9
|
+
// - At each period's end Stripe drafts a `subscription_cycle` invoice for the next period and advances the
|
|
10
|
+
// period; a trial's end is the first such renewal, and the subscription is active from then
|
|
11
|
+
// (docs.stripe.com/billing/subscriptions/overview#how-payments-work-subscriptions,
|
|
12
|
+
// docs.stripe.com/billing/subscriptions/trials).
|
|
13
|
+
// - About an hour after, Stripe finalizes the draft and charges the subscription's default payment method,
|
|
14
|
+
// else the customer's (docs.stripe.com/invoicing/integration/workflow-transitions#finalized,
|
|
15
|
+
// docs.stripe.com/api/subscriptions/object#subscription_object-default_payment_method).
|
|
16
|
+
// - A declined renewal leaves the invoice open with its attempt counted and the subscription past_due
|
|
17
|
+
// (docs.stripe.com/billing/subscriptions/overview#payment-status); paying the invoice later, through the API
|
|
18
|
+
// (docs.stripe.com/api/invoices/pay) or on the customer portal (docs.stripe.com/customer-management), makes it
|
|
19
|
+
// active again.
|
|
20
|
+
//
|
|
21
|
+
// Where the documentation stops and the twin decides: Stripe retries a failed renewal on its Smart Retries
|
|
22
|
+
// schedule and may then cancel or mark the subscription unpaid; the twin makes no retry (next_payment_attempt
|
|
23
|
+
// is null) and leaves it past_due until the invoice is paid. A paused subscription (pause_collection) is not renewed.
|
|
24
|
+
// - One set to cancel at its period's end is canceled when the period ends, with no renewal
|
|
25
|
+
// (docs.stripe.com/billing/subscriptions/cancel#cancel-at-end-of-cycle).
|
|
26
|
+
import { priceAmount } from "./stripe.js";
|
|
27
|
+
export const SUB = 'subscription';
|
|
28
|
+
export const INV = 'invoice';
|
|
29
|
+
export const HOUR = 3600;
|
|
30
|
+
/** The statuses a subscription renews in. */
|
|
31
|
+
export const RENEWING = ['trialing', 'active', 'past_due'];
|
|
32
|
+
export const itemsOf = (sub) => (sub.items?.data) ?? [];
|
|
33
|
+
/** An item's quantity as it bills: 1 when none is set, and 0 when 0 is (a quantity of 0 bills nothing). */
|
|
34
|
+
export function itemQuantity(it) {
|
|
35
|
+
return it.quantity === undefined || it.quantity === null ? 1 : Math.max(0, Math.trunc(Number(it.quantity) || 0));
|
|
36
|
+
}
|
|
37
|
+
/** The subscription's discounts with a `once` coupon's spent: "When a subscription uses a coupon with `duration=once`, the
|
|
38
|
+
* coupon is considered used after the invoice finalizes and is removed from the subscription's `discounts` array"
|
|
39
|
+
* (docs.stripe.com/billing/subscriptions/coupons#coupon-duration). */
|
|
40
|
+
export function unspentDiscounts(discounts) {
|
|
41
|
+
return (discounts ?? []).filter((d) => !(d && typeof d === 'object' && d.coupon?.duration === 'once'));
|
|
42
|
+
}
|
|
43
|
+
/** The coupon ids an invoice's discounts name. */
|
|
44
|
+
export const couponsOf = (discounts) => new Set((discounts ?? []).map((d) => {
|
|
45
|
+
const c = d && typeof d === 'object' ? d.coupon : undefined;
|
|
46
|
+
return typeof c === 'string' ? c : c && typeof c === 'object' ? String(c.id ?? '') : '';
|
|
47
|
+
}).filter(Boolean));
|
|
48
|
+
/** A subscription's discounts after `invoice` finalizes: less the `once` coupons it took. */
|
|
49
|
+
export function keptAfter(discounts, invoice) {
|
|
50
|
+
const taken = couponsOf(invoice.discounts);
|
|
51
|
+
return discounts.filter((d) => !(unspentDiscounts([d]).length === 0 && [...couponsOf([d])].some((c) => taken.has(c))));
|
|
52
|
+
}
|
|
53
|
+
/** A Checkout session's one-time line items as lines of its subscription's first invoice, numbered after its `after` lines. */
|
|
54
|
+
export function oneTimeLines(invoiceId, sub, items, after, at, currency) {
|
|
55
|
+
return items.map((it, i) => {
|
|
56
|
+
const price = it.price && typeof it.price === 'object' ? it.price : null;
|
|
57
|
+
const quantity = itemQuantity(it);
|
|
58
|
+
return {
|
|
59
|
+
id: `il_twin_${invoiceId}_${after + i + 1}`, object: 'line_item', type: 'subscription',
|
|
60
|
+
amount: priceAmount(price ?? undefined, quantity), currency, quantity, proration: false,
|
|
61
|
+
price, subscription: sub.id, subscription_item: null, invoice_item: null,
|
|
62
|
+
period: { start: at, end: at }, description: typeof it.description === 'string' ? it.description : null,
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SI = "setup_intent";
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
method: string;
|
|
3
|
-
path: string;
|
|
4
|
-
body?: string;
|
|
5
|
-
occurredAt?: string;
|
|
6
|
-
root?: string;
|
|
7
|
-
readOnly?: boolean;
|
|
8
|
-
idempotencyKey?: string;
|
|
9
|
-
apiVersion?: string;
|
|
10
|
-
stripeAccount?: string;
|
|
11
|
-
};
|
|
1
|
+
import { type TwinResource } from '@volter/world-core';
|
|
12
2
|
export type StripeResponse = {
|
|
13
3
|
status: number;
|
|
14
4
|
body: unknown;
|
|
15
5
|
};
|
|
6
|
+
/** Stripe's error body: an invalid_request_error with the message, and the code when there is one. */
|
|
7
|
+
export declare function err(message: string, status?: number, code?: string): StripeResponse;
|
|
16
8
|
export declare const TWIN_API_VERSION: string;
|
|
17
9
|
export declare function isValidApiVersion(v: string): boolean;
|
|
18
10
|
export declare function validateMoney(params: Record<string, unknown>): StripeResponse | null;
|
|
@@ -23,7 +15,7 @@ type DeclineOutcome = {
|
|
|
23
15
|
};
|
|
24
16
|
export declare const TEST_TOKEN_DECLINES: Record<string, DeclineOutcome | null>;
|
|
25
17
|
/** A stored subject by stored type and id, in the pack's view (tombstones included): how the
|
|
26
|
-
* semantics hand these helpers the tree they read (
|
|
18
|
+
* semantics hand these helpers the tree they read (./common.ts `finder`). */
|
|
27
19
|
export type FindStored = (storedType: string, id: string) => Record<string, unknown> | undefined;
|
|
28
20
|
export declare function declineFor(find: FindStored, ...paramSets: Array<Record<string, unknown>>): DeclineOutcome | null | undefined;
|
|
29
21
|
export declare function requiresAuthentication(...paramSets: Array<Record<string, unknown>>): boolean;
|
|
@@ -38,21 +30,17 @@ export declare function cardError(outcome: DeclineOutcome, attach?: {
|
|
|
38
30
|
payment_intent?: Record<string, unknown>;
|
|
39
31
|
}): StripeResponse;
|
|
40
32
|
export declare function nowUnix(occurredAt?: string): number;
|
|
41
|
-
|
|
33
|
+
/** An intent's client secret: its id, `_secret_`, and a secret the World holds for it (ctx.secret, passed in), so no one
|
|
34
|
+
* derives it from the intent's id; Stripe.js confirms an intent with it and the publishable key. */
|
|
35
|
+
export declare function mintClientSecret(id: string, secret: string): string;
|
|
42
36
|
export declare const OBJECT_NAME: Record<string, string>;
|
|
43
|
-
|
|
37
|
+
/** A stored row as Stripe answers it: its `object`, its own fields (the vendor's `type` among them, which the tree's
|
|
38
|
+
* shadows: world-core ownFields) without the twin's `_` bookkeeping, and its id. */
|
|
39
|
+
export declare function view(type: string, r: TwinResource): Record<string, unknown>;
|
|
44
40
|
export declare function paginate(items: Array<Record<string, unknown>>, params: Record<string, unknown>): {
|
|
45
41
|
page: Array<Record<string, unknown>>;
|
|
46
42
|
hasMore: boolean;
|
|
47
43
|
};
|
|
48
|
-
/** What follows every stored Stripe write: the webhook for the state change and the stored Event
|
|
49
|
-
* the Events API lists. The derived pack's write hook (manifest.ts) is this same function. */
|
|
50
|
-
export declare function afterStripeWrite(type: string, op: string, out: Record<string, unknown>, root?: string, occurredAt?: string, apiVersion?: string, stripeAccount?: string): Promise<void>;
|
|
51
|
-
/** The id the World's next event takes: its place in the World's events, so it is deterministic and never repeats
|
|
52
|
-
* within a World (a Balance has no id of its own, so nothing about the object can tell two events apart). The number
|
|
53
|
-
* is taken synchronously — the count of stored events, or the last number taken, whichever is higher. */
|
|
54
|
-
export declare function nextStripeEventId(root?: string): string;
|
|
55
|
-
export declare function persistStripeEvent(eventType: string, resource: Record<string, unknown>, root?: string, occurredAt?: string, apiVersion?: string, account?: string, id?: string): Promise<void>;
|
|
56
44
|
export declare function asBool(v: unknown): boolean;
|
|
57
45
|
export declare function searchOver(items: Array<Record<string, unknown>>, params: Record<string, unknown>, path: string): StripeResponse;
|
|
58
46
|
export declare function subscriptionHasPrice(sub: Record<string, unknown>, priceId: string): boolean;
|
|
@@ -93,8 +81,7 @@ export declare function resolveTrial(params: Record<string, unknown>, at: number
|
|
|
93
81
|
start: number;
|
|
94
82
|
end: number;
|
|
95
83
|
} | undefined;
|
|
96
|
-
export declare function
|
|
97
|
-
export declare function embedIssuingAuthorizationCard(body: Record<string, unknown>, root?: string): Record<string, unknown>;
|
|
84
|
+
export declare function embedIssuingAuthorizationCard(body: Record<string, unknown>, find: FindStored): Record<string, unknown>;
|
|
98
85
|
export declare function emptySpendingControls(): Record<string, unknown>;
|
|
99
86
|
export declare function normalizeSpendingControls(raw: unknown, currency: string | null): {
|
|
100
87
|
controls?: Record<string, unknown>;
|
|
@@ -137,19 +124,4 @@ export declare function resolveLineItem(entry: Record<string, unknown>, index: n
|
|
|
137
124
|
};
|
|
138
125
|
export declare function lineItemEntries(params: Record<string, unknown>): Array<Record<string, unknown>>;
|
|
139
126
|
export declare function chargeDefaults(chargeId: string, amount: number, captured: boolean, occurredAt?: string): Record<string, unknown>;
|
|
140
|
-
/**
|
|
141
|
-
* Public entry: honors the Idempotency-Key (replay → stored response, no re-write)
|
|
142
|
-
* then delegates to the router. Only POSTs are idempotent (matches Stripe; GET/DELETE
|
|
143
|
-
* pass straight through). A read-only twin never stores (it cannot write).
|
|
144
|
-
*/
|
|
145
|
-
/** Stripe's API as one call: the request goes through the pack's own dispatch (the derived dispatch over
|
|
146
|
-
* its semantics, its derived core and the hand-written routes below), so a caller that holds no
|
|
147
|
-
* HTTP server reaches exactly what an SDK does. `occurredAt` pins the World instant. */
|
|
148
|
-
export declare function handleStripeTwinRequest(req: StripeRequest): Promise<StripeResponse>;
|
|
149
|
-
/**
|
|
150
|
-
* The twin's doors: what stands in for an act Stripe's API does not have, each under `/_twin/`. The
|
|
151
|
-
* platform's own account settings (its payout schedule) change on Stripe's Dashboard, which has no API:
|
|
152
|
-
* POST /_twin/account stands in for that page. Answers nothing for any other path.
|
|
153
|
-
*/
|
|
154
|
-
export declare function handleStripeDoor(req: StripeRequest, params: Record<string, unknown>): Promise<StripeResponse | undefined>;
|
|
155
127
|
export {};
|