@volter/twin-stripe 2.0.38 → 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,47 @@
|
|
|
1
|
+
// Treasury semantics: financial accounts and the flows that move their money (outbound payments
|
|
2
|
+
// and transfers, inbound transfers), each posting a double entry to the account's ledger (a
|
|
3
|
+
// transaction and its entry). An outbound flow stays processing (cancelable) until the network
|
|
4
|
+
// settles it; an inbound transfer settles at once, as in test mode. The machines in
|
|
5
|
+
// ../manifest.ts say which flows cancel. Lists and retrieves with no required scope are the
|
|
6
|
+
// derived core's.
|
|
7
|
+
import type { Row } from './common.ts';
|
|
8
|
+
|
|
9
|
+
export const FA = 'treasury.financial_account';
|
|
10
|
+
export const TX = 'treasury.transaction';
|
|
11
|
+
export const ENTRY = 'treasury.transaction_entry';
|
|
12
|
+
export const ENTRY_TYPES = new Set(['credit_reversal', 'debit_reversal', 'inbound_transfer', 'inbound_transfer_return', 'issuing_authorization_hold', 'issuing_authorization_release', 'outbound_payment', 'outbound_transfer', 'received_credit', 'received_debit']);
|
|
13
|
+
|
|
14
|
+
/** A financial account's features as the served spec's treasury.financial_account_features gives them: a toggle
|
|
15
|
+
* (card_issuing, deposit_insurance, intra_stripe_flows) or a feature per network (financial_addresses.aba,
|
|
16
|
+
* inbound_transfers.ach, outbound_payments.ach and .us_domestic_wire, outbound_transfers likewise), each
|
|
17
|
+
* { requested, status, status_details }. What a request asks for is laid over what the account had. Where the
|
|
18
|
+
* documentation stops and the twin decides: a requested feature is active at once (test mode), and one never requested
|
|
19
|
+
* is left out (each is optional in the served spec). Answers the features and the active features' paths. */
|
|
20
|
+
export const NETWORKS: Record<string, string[]> = { financial_addresses: ['aba'], inbound_transfers: ['ach'], outbound_payments: ['ach', 'us_domestic_wire'], outbound_transfers: ['ach', 'us_domestic_wire'] };
|
|
21
|
+
export const TOGGLES = ['card_issuing', 'deposit_insurance', 'intra_stripe_flows'];
|
|
22
|
+
export function featuresOf(requested: Row, had: Row = {}): { features: Row; active: string[] } {
|
|
23
|
+
const on = (v: unknown): boolean => v === true || v === 'true';
|
|
24
|
+
const setting = (asked: boolean) => ({ requested: asked, status: asked ? 'active' : 'restricted', status_details: [] });
|
|
25
|
+
const features: Row = { ...had };
|
|
26
|
+
for (const t of TOGGLES) {
|
|
27
|
+
const r = requested[t] as Row | undefined;
|
|
28
|
+
if (r && typeof r === 'object' && r.requested !== undefined) features[t] = setting(on(r.requested));
|
|
29
|
+
}
|
|
30
|
+
for (const [f, nets] of Object.entries(NETWORKS)) {
|
|
31
|
+
const r = requested[f] as Row | undefined;
|
|
32
|
+
if (!r || typeof r !== 'object') continue;
|
|
33
|
+
const current = (features[f] as Row | undefined) ?? {};
|
|
34
|
+
const next: Row = { ...current };
|
|
35
|
+
for (const n of nets) {
|
|
36
|
+
const nr = r[n] as Row | undefined;
|
|
37
|
+
if (nr && typeof nr === 'object' && nr.requested !== undefined) next[n] = setting(on(nr.requested));
|
|
38
|
+
}
|
|
39
|
+
features[f] = next;
|
|
40
|
+
}
|
|
41
|
+
const active: string[] = [];
|
|
42
|
+
for (const t of TOGGLES) if ((features[t] as Row | undefined)?.status === 'active') active.push(t);
|
|
43
|
+
for (const [f, nets] of Object.entries(NETWORKS)) for (const n of nets) if (((features[f] as Row | undefined)?.[n] as Row | undefined)?.status === 'active') active.push(`${f}.${n}`);
|
|
44
|
+
return { features, active };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export const noTransitions = { canceled_at: null, failed_at: null, posted_at: null, returned_at: null };
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// Where the evidence stops: the changes below are the ones between the kept shape and the vendored spec that
|
|
9
9
|
// the pack's journeys reach, each from Stripe's changelog for basil (docs.stripe.com/changelog/basil); a version
|
|
10
10
|
// pinned between basil and the spec's is rendered in the spec's shape, not its own.
|
|
11
|
-
import surface from '
|
|
11
|
+
import surface from '../generated/surface.gen.json' with { type: 'json' };
|
|
12
12
|
|
|
13
13
|
type Row = Record<string, unknown>;
|
|
14
14
|
|
|
@@ -65,7 +65,7 @@ const BASIL_CHANGES: Record<string, (o: Row, parent?: Row) => Row> = {
|
|
|
65
65
|
const parent = o.parent !== undefined ? o.parent : subscription ? { type: 'subscription_details', quote_details: null, subscription_details: { metadata: {}, subscription } } : null;
|
|
66
66
|
// "confirmation_secret … Currently, this contains the client_secret of the PaymentIntent that Stripe creates during
|
|
67
67
|
// invoice finalization" (docs.stripe.com/api/invoices/object; includable, answered only when expanded: INCLUDABLE);
|
|
68
|
-
// the intent's client_secret is the one stripe
|
|
68
|
+
// the intent's client_secret is the one ./stripe.ts mintClientSecret gives it
|
|
69
69
|
const intent = typeof o.payment_intent === 'string' && o.payment_intent ? o.payment_intent : null;
|
|
70
70
|
const confirmation_secret = intent ? { type: 'payment_intent', client_secret: `${intent}_secret_twin` } : null;
|
|
71
71
|
return { ...omit(o, ['payment_intent', 'charge', 'paid', 'paid_out_of_band', 'subscription']), parent, confirmation_secret };
|
|
@@ -272,7 +272,8 @@ export function render(value: unknown, pinned?: string | null, expand: string[]
|
|
|
272
272
|
if (!kind || o.deleted === true) return o;
|
|
273
273
|
// metadata holds strings ("key-value pairs", each value up to 500 characters, docs.stripe.com/metadata); the form
|
|
274
274
|
// reader coerces a numeric-looking value to a number, which the answer gives back as the string it was sent as
|
|
275
|
-
|
|
275
|
+
// reads the same, and a key posted "" to remove it is not there (../semantics/shared.ts withMetadata)
|
|
276
|
+
if (o.metadata && typeof o.metadata === 'object' && !Array.isArray(o.metadata)) o.metadata = Object.fromEntries(Object.entries(o.metadata as Row).filter(([, v]) => v !== '').map(([k, v]) => [k, typeof v === 'number' || typeof v === 'boolean' ? String(v) : v]));
|
|
276
277
|
const kept = KEPT[kind] ? omit(o, KEPT[kind]!) : o;
|
|
277
278
|
// an includable field a version's change adds (an invoice's confirmation_secret) is hidden as its stored ones are
|
|
278
279
|
return omit(withNulls(BASIL_CHANGES[kind] ? BASIL_CHANGES[kind]!(kept) : kept, kind), hidden);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Webhook endpoint semantics: registering a URL and the events it subscribes to. Delivery reads
|
|
2
|
+
// the endpoints from the tree, signing each POST with the endpoint's own secret; a disabled one
|
|
3
|
+
// (the machine in ../manifest.ts) receives nothing. Endpoint list, retrieve and delete are the derived core's.
|
|
4
|
+
//
|
|
5
|
+
// The Events API lists and retrieves the stored events of the account a request acts for: an event of a connected
|
|
6
|
+
// account carries it ("Each event for a connected account contains a top-level `account` property that identifies the
|
|
7
|
+
// connected account. Because the connected account owns the object that triggered the event, you must make API
|
|
8
|
+
// requests for that object as the connected account", docs.stripe.com/connect/webhooks; the event's `account`: "The
|
|
9
|
+
// connected account that originates the event", spec/openapi.json.gz), so a request with the Stripe-Account header
|
|
10
|
+
// sees that account's events and one without it the platform's, those with no `account`. Where the documentation
|
|
11
|
+
// stops and the twin decides: a platform request does not see its connected accounts' events.
|
|
12
|
+
|
|
13
|
+
export const WE = 'webhook_endpoint';
|
|
14
|
+
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Stripe's events as its handlers and its declared `events` need them (the kernel renders, stores, signs and delivers
|
|
2
|
+
// every event a write sends: ../manifest.ts `events`, ../semantics/shared.ts STRIPE_EVENTS): which write sends which
|
|
3
|
+
// event type, Stripe's own event types (the spec's list, ../generated/events.gen.json), and the one message Stripe decides
|
|
4
|
+
// by its receiver's answer, the real-time authorization request.
|
|
5
|
+
import { hmac } from '@volter/world-core';
|
|
6
|
+
|
|
7
|
+
import vendorEvents from '../generated/events.gen.json' with { type: 'json' };
|
|
8
|
+
|
|
9
|
+
/** Every event type Stripe's spec enumerates: a write whose operation is one sends it, and `<resource>.create`,
|
|
10
|
+
* `.update` and `.delete` send `<resource>.created`, `.updated` and `.deleted` when Stripe has that type. */
|
|
11
|
+
export const STRIPE_EVENT_TYPES: ReadonlyArray<string> = (vendorEvents as { types: string[] }).types;
|
|
12
|
+
|
|
13
|
+
/** The writes whose event is named otherwise than by their resource (the rest are STRIPE_EVENT_TYPES'). A refund sends
|
|
14
|
+
* `refund.created` for the Refund; the charge's own write is recorded as `charge.refunded`, the charge with its new
|
|
15
|
+
* totals. `issuing_authorization.request` is no write's: it is asked of the endpoint (askForAuthorization). */
|
|
16
|
+
export const NAMED_EVENTS: Record<string, string> = {
|
|
17
|
+
'payment_intent.confirm': 'payment_intent.succeeded',
|
|
18
|
+
'payment_method.attach': 'payment_method.attached',
|
|
19
|
+
'payment_method.detach': 'payment_method.detached',
|
|
20
|
+
'setup_intent.confirm': 'setup_intent.succeeded',
|
|
21
|
+
'subscription.create': 'customer.subscription.created',
|
|
22
|
+
'subscription.update': 'customer.subscription.updated',
|
|
23
|
+
'subscription.cancel': 'customer.subscription.deleted',
|
|
24
|
+
'invoice.finalize': 'invoice.finalized',
|
|
25
|
+
'invoice.pay': 'invoice.paid',
|
|
26
|
+
'invoice.void': 'invoice.voided',
|
|
27
|
+
'dispute.create': 'charge.dispute.created',
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** Whether an endpoint's `enabled_events` takes a type: `*` takes all, `<family>.*` the family, else the type itself. */
|
|
31
|
+
export function stripeEventMatches(enabledEvents: unknown, type: string): boolean {
|
|
32
|
+
if (!Array.isArray(enabledEvents)) return false;
|
|
33
|
+
return enabledEvents.some((p) => {
|
|
34
|
+
const s = String(p);
|
|
35
|
+
return s === '*' || (s.endsWith('.*') && type.startsWith(s.slice(0, -1))) || s === type;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** A `Stripe-Signature` header: HMAC-SHA256 over `${timestamp}.${payload}` keyed by the endpoint's secret, as
|
|
40
|
+
* `t=<unix>,v1=<hex>` (docs.stripe.com/webhooks#verify-manually). */
|
|
41
|
+
export const stripeSignature = (payload: string, secret: string, timestamp: number): string => `t=${timestamp},v1=${hmac(secret, `${timestamp}.${payload}`)}`;
|
|
42
|
+
|
|
43
|
+
// ── Real-time authorization (issuing_authorization.request) ──────────────────────────────────────
|
|
44
|
+
// Stripe delivers issuing_authorization.request to the one enrolled endpoint while the card network holds the
|
|
45
|
+
// authorization open, and the endpoint must answer within Stripe's 2-second window ("This request should be made within
|
|
46
|
+
// the timeout window of the real-time authorization flow", stripe@22.3.0 Issuing/Authorizations.d.ts; the current method
|
|
47
|
+
// is to "respond directly to the webhook request to approve an authorization"). The answer's body carries the decision:
|
|
48
|
+
// a JSON object with a boolean `approved` (and, for an amount-controllable request, an optional integer `amount`).
|
|
49
|
+
// Outcomes map onto request_history.reason (stripe@22.3.0 RequestHistory.Reason): webhook_approved / webhook_declined,
|
|
50
|
+
// the endpoint answered in time; webhook_timeout, no answer inside the window (an unreachable endpoint too);
|
|
51
|
+
// webhook_error, "the direct webhook response is invalid (for example, parsing errors or missing parameters)": a
|
|
52
|
+
// non-2xx status, a body that is not JSON, or no `approved`.
|
|
53
|
+
export const STRIPE_REALTIME_AUTH_TIMEOUT_MS = 2_000;
|
|
54
|
+
|
|
55
|
+
export type StripeAuthRequestOutcome =
|
|
56
|
+
| { kind: 'approved'; amount?: number }
|
|
57
|
+
| { kind: 'declined' }
|
|
58
|
+
| { kind: 'timeout'; message: string }
|
|
59
|
+
| { kind: 'error'; message: string };
|
|
60
|
+
|
|
61
|
+
/** The endpoint's answer read as the decision: `approved` (and an optional `amount`), or an error for an answer Stripe
|
|
62
|
+
* cannot read. */
|
|
63
|
+
export function readDecision(res: { status: number; body: string }): StripeAuthRequestOutcome {
|
|
64
|
+
if (res.status < 200 || res.status >= 300) return { kind: 'error', message: `Webhook endpoint responded with HTTP status ${res.status}.` };
|
|
65
|
+
let parsed: unknown;
|
|
66
|
+
try { parsed = JSON.parse(res.body); } catch { return { kind: 'error', message: 'Webhook response body was not valid JSON.' }; }
|
|
67
|
+
const approved = (parsed as { approved?: unknown } | null)?.approved;
|
|
68
|
+
if (typeof approved !== 'boolean') return { kind: 'error', message: 'Webhook response is missing the required `approved` parameter.' };
|
|
69
|
+
if (!approved) return { kind: 'declined' };
|
|
70
|
+
const amount = (parsed as { amount?: unknown }).amount;
|
|
71
|
+
return { kind: 'approved', ...(typeof amount === 'number' && Number.isInteger(amount) && amount > 0 ? { amount } : {}) };
|
|
72
|
+
}
|
package/src/fetch.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// GENERATED by scripts/create-pack.ts (--init, --index): a fixed file. The kernel serves the discovery door, the clock,
|
|
2
|
+
// the World's doors, the vendor's screens and the API from the pack's parts (architecture, "The pack contract").
|
|
3
|
+
import { createPackFetch, type DerivedFetch, type DerivedSurface, type PackFetchOptions } from '@volter/world-core';
|
|
4
|
+
import surface from './generated/surface.gen.json' with { type: 'json' };
|
|
5
|
+
import { manifest } from './manifest.ts';
|
|
6
|
+
import { around } from './semantics/around.ts';
|
|
7
|
+
import { clock } from './semantics/clock.ts';
|
|
8
|
+
import * as doors from './semantics/doors.ts';
|
|
9
|
+
import { stripeSemantics } from './semantics/index.ts';
|
|
10
|
+
import { screen as screen_billing_portal } from './screens/billing-portal.tsx';
|
|
11
|
+
import { screen as screen_checkout } from './screens/checkout.tsx';
|
|
12
|
+
import { screen as screen_connect_oauth } from './screens/connect-oauth.tsx';
|
|
13
|
+
import { screen as screen_connect_onboarding } from './screens/connect-onboarding.tsx';
|
|
14
|
+
import { screen as screen_dashboard } from './screens/dashboard.tsx';
|
|
15
|
+
import { screen as screen_stripe_js } from './screens/stripe-js.ts';
|
|
16
|
+
|
|
17
|
+
export function createStripeFetch(options: PackFetchOptions = {}): DerivedFetch {
|
|
18
|
+
return createPackFetch({
|
|
19
|
+
manifest,
|
|
20
|
+
surface: surface as DerivedSurface,
|
|
21
|
+
handlers: stripeSemantics,
|
|
22
|
+
doors,
|
|
23
|
+
around,
|
|
24
|
+
clock,
|
|
25
|
+
screens: { "billing-portal": screen_billing_portal, "checkout": screen_checkout, "connect-oauth": screen_connect_oauth, "connect-onboarding": screen_connect_onboarding, "dashboard": screen_dashboard, "stripe-js": screen_stripe_js },
|
|
26
|
+
}, options);
|
|
27
|
+
}
|