@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
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { at, created, fail, list, newest, path, where } from "./shared.js";
|
|
2
|
-
const METER = 'billing.meter';
|
|
3
|
-
const meterMissing = (ctx, id) => fail(ctx, `No such meter: '${id}'`, 404, 'resource_missing');
|
|
4
|
-
const objectOf = (v) => (v && typeof v === 'object' ? v : {});
|
|
5
|
-
// a meter needs a display name, the event name it counts, and how it aggregates (sum or count)
|
|
6
|
-
const createMeter = async (ctx) => {
|
|
7
|
-
const params = ctx.params;
|
|
8
|
-
const displayName = typeof params.display_name === 'string' ? params.display_name : '';
|
|
9
|
-
if (!displayName)
|
|
10
|
-
return fail(ctx, 'Missing required param: display_name.', 400, 'parameter_missing');
|
|
11
|
-
if (!(params.event_name ?? ''))
|
|
12
|
-
return fail(ctx, 'Missing required param: event_name.', 400, 'parameter_missing');
|
|
13
|
-
const formula = objectOf(params.default_aggregation).formula;
|
|
14
|
-
if (typeof formula !== 'string' || !formula)
|
|
15
|
-
return fail(ctx, 'Missing required param: default_aggregation[formula] (sum or count).', 400, 'parameter_missing');
|
|
16
|
-
return ctx.reply(await created(ctx, METER, params, {
|
|
17
|
-
status: 'active', livemode: false,
|
|
18
|
-
customer_mapping: params.customer_mapping ?? { event_payload_key: 'stripe_customer_id', type: 'by_id' },
|
|
19
|
-
event_time_window: params.event_time_window ?? null,
|
|
20
|
-
value_settings: params.value_settings ?? { event_payload_key: 'value' },
|
|
21
|
-
status_transitions: { deactivated_at: null }, updated: ctx.now(),
|
|
22
|
-
}));
|
|
23
|
-
};
|
|
24
|
-
function activation(kind) {
|
|
25
|
-
return async (ctx) => {
|
|
26
|
-
const id = at(ctx, 'id');
|
|
27
|
-
const m = ctx.get(METER, id);
|
|
28
|
-
if (!m)
|
|
29
|
-
return meterMissing(ctx, id);
|
|
30
|
-
const refused = ctx.legal(METER, 'status', kind === 'deactivate' ? 'PostBillingMetersIdDeactivate' : 'PostBillingMetersIdReactivate', m.status, undefined, id);
|
|
31
|
-
if (refused)
|
|
32
|
-
return ctx.refuse(refused);
|
|
33
|
-
const fields = { ...(kind === 'deactivate' ? { status: 'inactive', status_transitions: { deactivated_at: ctx.now() } } : { status: 'active', status_transitions: { deactivated_at: null } }), updated: ctx.now() };
|
|
34
|
-
return ctx.reply(await ctx.write(METER, id, fields, `billing_meter.${kind}`));
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
// a meter event has no id of its own on Stripe (it carries an `identifier`); its object is billing.meter_event
|
|
38
|
-
const reportUsage = async (ctx) => {
|
|
39
|
-
const params = ctx.params;
|
|
40
|
-
if (typeof params.event_name !== 'string' || !params.event_name)
|
|
41
|
-
return fail(ctx, 'Missing required param: event_name.', 400, 'parameter_missing');
|
|
42
|
-
const payload = objectOf(params.payload);
|
|
43
|
-
const body = await created(ctx, 'billing.meter_event', { ...params }, {
|
|
44
|
-
livemode: false, timestamp: params.timestamp !== undefined ? Math.trunc(Number(params.timestamp)) : ctx.now(),
|
|
45
|
-
identifier: payload.identifier ?? null, payload,
|
|
46
|
-
});
|
|
47
|
-
return ctx.reply({ ...body, object: 'billing.meter_event' });
|
|
48
|
-
};
|
|
49
|
-
// the meter's events for one customer in [start_time, end_time), aggregated by its formula
|
|
50
|
-
const eventSummaries = async (ctx) => {
|
|
51
|
-
const id = at(ctx, 'id');
|
|
52
|
-
const m = ctx.get(METER, id);
|
|
53
|
-
if (!m)
|
|
54
|
-
return meterMissing(ctx, id);
|
|
55
|
-
const params = ctx.params;
|
|
56
|
-
const customer = typeof params.customer === 'string' ? params.customer : '';
|
|
57
|
-
if (!customer)
|
|
58
|
-
return fail(ctx, 'Missing required param: customer.', 400, 'parameter_missing');
|
|
59
|
-
if (params.start_time === undefined)
|
|
60
|
-
return fail(ctx, 'Missing required param: start_time.', 400, 'parameter_missing');
|
|
61
|
-
if (params.end_time === undefined)
|
|
62
|
-
return fail(ctx, 'Missing required param: end_time.', 400, 'parameter_missing');
|
|
63
|
-
const startTime = Math.trunc(Number(params.start_time) || 0);
|
|
64
|
-
const endTime = Math.trunc(Number(params.end_time) || 0);
|
|
65
|
-
// "Must be aligned with minute boundaries" (start_time, end_time); "For hourly granularity, start and end times must
|
|
66
|
-
// align with hour boundaries … For daily granularity, … with UTC day boundaries (00:00 UTC)" (value_grouping_window;
|
|
67
|
-
// the served spec). Where the documentation stops and the twin decides: Stripe documents no error for it, so the
|
|
68
|
-
// twin answers a 400 naming the parameter and the boundary.
|
|
69
|
-
const window = params.value_grouping_window === 'hour' ? 3600 : params.value_grouping_window === 'day' ? 86_400 : 60;
|
|
70
|
-
const unit = window === 3600 ? 'hour' : window === 86_400 ? 'UTC day' : 'minute';
|
|
71
|
-
for (const [name, t] of [['start_time', startTime], ['end_time', endTime]]) {
|
|
72
|
-
if (t % window !== 0)
|
|
73
|
-
return fail(ctx, `Invalid ${name}: ${t} is not aligned with ${unit} boundaries.`, 400);
|
|
74
|
-
}
|
|
75
|
-
const mapKey = typeof objectOf(m.customer_mapping).event_payload_key === 'string' ? String(objectOf(m.customer_mapping).event_payload_key) : 'stripe_customer_id';
|
|
76
|
-
const valueKey = typeof objectOf(m.value_settings).event_payload_key === 'string' ? String(objectOf(m.value_settings).event_payload_key) : 'value';
|
|
77
|
-
const formula = objectOf(m.default_aggregation).formula ?? 'sum';
|
|
78
|
-
let aggregate = 0;
|
|
79
|
-
for (const ev of ctx.rowsRaw('billing.meter_event', { withDeleted: true })) {
|
|
80
|
-
if (ev.event_name !== String(m.event_name ?? ''))
|
|
81
|
-
continue;
|
|
82
|
-
const ts = Number(ev.timestamp) || 0;
|
|
83
|
-
if (ts < startTime || ts >= endTime)
|
|
84
|
-
continue;
|
|
85
|
-
const payload = objectOf(ev.payload);
|
|
86
|
-
if (String(payload[mapKey] ?? '') !== customer)
|
|
87
|
-
continue;
|
|
88
|
-
aggregate += formula === 'count' ? 1 : Number(payload[valueKey]) || 0;
|
|
89
|
-
}
|
|
90
|
-
return ctx.reply({
|
|
91
|
-
object: 'list', url: path(ctx), has_more: false,
|
|
92
|
-
data: [{ id: `mtrusg_twin_${id}_${customer}`, object: 'billing.meter_event_summary', meter: id, aggregated_value: aggregate, start_time: startTime, end_time: endTime, livemode: false }],
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
// ── credit grants: a customer's prepaid credit, paid or promotional, in a monetary amount ──
|
|
96
|
-
const GRANT = 'billing.credit_grant';
|
|
97
|
-
const grantMissing = (ctx, id) => fail(ctx, `No such credit grant: '${id}'`, 404, 'resource_missing');
|
|
98
|
-
const createGrant = async (ctx) => {
|
|
99
|
-
const params = ctx.params;
|
|
100
|
-
const customer = typeof params.customer === 'string' ? params.customer : '';
|
|
101
|
-
if (!customer)
|
|
102
|
-
return fail(ctx, 'Missing required param: customer.', 400, 'parameter_missing');
|
|
103
|
-
if (!ctx.row('customer', customer, { withDeleted: true }))
|
|
104
|
-
return fail(ctx, `No such customer: '${customer}'`, 404, 'resource_missing');
|
|
105
|
-
const category = typeof params.category === 'string' ? params.category : '';
|
|
106
|
-
if (category !== 'paid' && category !== 'promotional')
|
|
107
|
-
return fail(ctx, 'Invalid category: must be paid or promotional.', 400, 'parameter_invalid_string_enum');
|
|
108
|
-
const monetary = params.amount && typeof params.amount === 'object' ? objectOf(params.amount.monetary) : undefined;
|
|
109
|
-
if (!monetary || monetary.value === undefined || monetary.currency === undefined)
|
|
110
|
-
return fail(ctx, 'Missing required param: amount[monetary][value] and amount[monetary][currency].', 400, 'parameter_missing');
|
|
111
|
-
return ctx.reply(await created(ctx, GRANT, { customer }, {
|
|
112
|
-
category, livemode: false, name: params.name ?? null,
|
|
113
|
-
amount: { type: 'monetary', monetary: { currency: String(monetary.currency), value: Math.trunc(Number(monetary.value) || 0) } },
|
|
114
|
-
applicability_config: params.applicability_config && typeof params.applicability_config === 'object' ? params.applicability_config : { scope: { price_type: 'metered' } },
|
|
115
|
-
effective_at: params.effective_at !== undefined ? Math.trunc(Number(params.effective_at)) : ctx.now(),
|
|
116
|
-
expires_at: params.expires_at !== undefined ? Math.trunc(Number(params.expires_at)) : null,
|
|
117
|
-
priority: params.priority !== undefined ? Math.trunc(Number(params.priority)) : 50,
|
|
118
|
-
voided_at: null, metadata: params.metadata && typeof params.metadata === 'object' ? params.metadata : {}, updated: ctx.now(),
|
|
119
|
-
}));
|
|
120
|
-
};
|
|
121
|
-
// expiring or voiding a grant stamps the instant; it no longer counts toward the balance
|
|
122
|
-
function endGrant(kind) {
|
|
123
|
-
return async (ctx) => {
|
|
124
|
-
const id = at(ctx, 'id');
|
|
125
|
-
if (!ctx.get(GRANT, id))
|
|
126
|
-
return grantMissing(ctx, id);
|
|
127
|
-
return ctx.reply(await ctx.write(GRANT, id, { ...(kind === 'void' ? { voided_at: ctx.now() } : { expires_at: ctx.now() }), updated: ctx.now() }, `credit_grant.${kind}`));
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
// only the expiry and metadata change
|
|
131
|
-
const updateGrant = async (ctx) => {
|
|
132
|
-
const id = at(ctx, 'id');
|
|
133
|
-
if (!ctx.get(GRANT, id))
|
|
134
|
-
return grantMissing(ctx, id);
|
|
135
|
-
const patch = { updated: ctx.now() };
|
|
136
|
-
if (ctx.params.expires_at !== undefined)
|
|
137
|
-
patch.expires_at = Math.trunc(Number(ctx.params.expires_at));
|
|
138
|
-
if (ctx.params.metadata !== undefined)
|
|
139
|
-
patch.metadata = ctx.params.metadata;
|
|
140
|
-
return ctx.reply(await ctx.write(GRANT, id, patch, 'credit_grant.update'));
|
|
141
|
-
};
|
|
142
|
-
// the customer's live (unvoided, unexpired) monetary grants, summed per currency
|
|
143
|
-
const creditBalance = async (ctx) => {
|
|
144
|
-
const customer = typeof ctx.params.customer === 'string' ? ctx.params.customer : '';
|
|
145
|
-
if (!customer)
|
|
146
|
-
return fail(ctx, 'Missing required param: customer.', 400, 'parameter_missing');
|
|
147
|
-
if (!ctx.row('customer', customer, { withDeleted: true }))
|
|
148
|
-
return fail(ctx, `No such customer: '${customer}'`, 404, 'resource_missing');
|
|
149
|
-
const now = Number(ctx.now());
|
|
150
|
-
const byCurrency = {};
|
|
151
|
-
for (const g of ctx.rows(GRANT)) {
|
|
152
|
-
if (g.customer !== customer || g.voided_at != null)
|
|
153
|
-
continue;
|
|
154
|
-
if (typeof g.expires_at === 'number' && g.expires_at <= now)
|
|
155
|
-
continue;
|
|
156
|
-
const monetary = objectOf(objectOf(g.amount).monetary);
|
|
157
|
-
const cur = String(monetary.currency ?? 'usd');
|
|
158
|
-
byCurrency[cur] = (byCurrency[cur] ?? 0) + (Number(monetary.value) || 0);
|
|
159
|
-
}
|
|
160
|
-
const balances = Object.entries(byCurrency).map(([currency, value]) => ({
|
|
161
|
-
available_balance: { type: 'monetary', monetary: { currency, value } },
|
|
162
|
-
ledger_balance: { type: 'monetary', monetary: { currency, value } },
|
|
163
|
-
}));
|
|
164
|
-
return ctx.reply({ object: 'billing.credit_balance_summary', customer, balances, livemode: false });
|
|
165
|
-
};
|
|
166
|
-
// ── alerts: a usage threshold on a meter ──
|
|
167
|
-
const ALERT = 'billing.alert';
|
|
168
|
-
const createAlert = async (ctx) => {
|
|
169
|
-
const params = ctx.params;
|
|
170
|
-
if (params.alert_type !== 'usage_threshold')
|
|
171
|
-
return fail(ctx, 'Invalid alert_type: must be usage_threshold.', 400, 'parameter_invalid_string_enum');
|
|
172
|
-
if (typeof params.title !== 'string' || !params.title)
|
|
173
|
-
return fail(ctx, 'Missing required param: title.', 400, 'parameter_missing');
|
|
174
|
-
const ut = params.usage_threshold && typeof params.usage_threshold === 'object' ? params.usage_threshold : undefined;
|
|
175
|
-
if (!ut || ut.gte === undefined || typeof ut.meter !== 'string')
|
|
176
|
-
return fail(ctx, 'Missing required param: usage_threshold[gte] and usage_threshold[meter].', 400, 'parameter_missing');
|
|
177
|
-
// the spec requires recurrence too (one_time: the alert fires once)
|
|
178
|
-
if (ut.recurrence === undefined || ut.recurrence === '')
|
|
179
|
-
return fail(ctx, 'Missing required param: usage_threshold[recurrence].', 400, 'parameter_missing');
|
|
180
|
-
if (!ctx.get(METER, ut.meter))
|
|
181
|
-
return fail(ctx, `No such meter: '${ut.meter}'`, 400, 'resource_missing');
|
|
182
|
-
return ctx.reply(await created(ctx, ALERT, {}, {
|
|
183
|
-
alert_type: 'usage_threshold', livemode: false, status: 'active', title: params.title,
|
|
184
|
-
usage_threshold: { gte: Math.trunc(Number(ut.gte) || 0), meter: ut.meter, recurrence: String(ut.recurrence), filters: null },
|
|
185
|
-
}));
|
|
186
|
-
};
|
|
187
|
-
const listAlerts = async (ctx) => list(ctx, ALERT, where(ctx, newest(ctx, ALERT), {
|
|
188
|
-
alert_type: (a, v) => a.alert_type === v,
|
|
189
|
-
meter: (a, v) => objectOf(a.usage_threshold).meter === v,
|
|
190
|
-
}));
|
|
191
|
-
function alertMove(kind, operationId) {
|
|
192
|
-
return async (ctx) => {
|
|
193
|
-
const id = at(ctx, 'id');
|
|
194
|
-
const a = ctx.get(ALERT, id);
|
|
195
|
-
if (!a)
|
|
196
|
-
return fail(ctx, `No such alert: '${id}'`, 404, 'resource_missing');
|
|
197
|
-
const refused = ctx.legal(ALERT, 'status', operationId, a.status, undefined, id);
|
|
198
|
-
if (refused)
|
|
199
|
-
return ctx.refuse(refused);
|
|
200
|
-
const status = kind === 'activate' ? 'active' : kind === 'deactivate' ? 'inactive' : 'archived';
|
|
201
|
-
return ctx.reply(await ctx.write(ALERT, id, { status }, `billing_alert.${kind}`));
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
export const billing = {
|
|
205
|
-
PostBillingMeters: createMeter,
|
|
206
|
-
PostBillingMetersIdDeactivate: activation('deactivate'),
|
|
207
|
-
PostBillingMetersIdReactivate: activation('reactivate'),
|
|
208
|
-
PostBillingMeterEvents: reportUsage,
|
|
209
|
-
GetBillingMetersIdEventSummaries: eventSummaries,
|
|
210
|
-
PostBillingCreditGrants: createGrant,
|
|
211
|
-
PostBillingCreditGrantsIdExpire: endGrant('expire'),
|
|
212
|
-
PostBillingCreditGrantsIdVoid: endGrant('void'),
|
|
213
|
-
PostBillingCreditGrantsId: updateGrant,
|
|
214
|
-
GetBillingCreditBalanceSummary: creditBalance,
|
|
215
|
-
PostBillingAlerts: createAlert,
|
|
216
|
-
GetBillingAlerts: listAlerts,
|
|
217
|
-
PostBillingAlertsIdActivate: alertMove('activate', 'PostBillingAlertsIdActivate'),
|
|
218
|
-
PostBillingAlertsIdDeactivate: alertMove('deactivate', 'PostBillingAlertsIdDeactivate'),
|
|
219
|
-
PostBillingAlertsIdArchive: alertMove('archive', 'PostBillingAlertsIdArchive'),
|
|
220
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Semantics } from '@volter/world-core';
|
|
2
|
-
import { type Row } from './shared.js';
|
|
3
|
-
/** The platform's own account as Stripe's default has it, before anything is written to it. */
|
|
4
|
-
export declare const platformAccountDefault: () => Row;
|
|
5
|
-
export declare const connect: Record<string, Semantics>;
|