@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
|
@@ -1,52 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/** A feature whose lookup_key an unarchived feature already has: "A unique key you provide as your own system identifier"
|
|
5
|
-
* (docs.stripe.com/api/entitlements/feature/create). */
|
|
6
|
-
function lookupKeyTaken(ctx, lookupKey) {
|
|
7
|
-
return fail(ctx, `A feature with lookup_key '${lookupKey}' already exists.`, 400, 'resource_already_exists');
|
|
8
|
-
}
|
|
9
|
-
const create = async (ctx) => {
|
|
10
|
-
const params = ctx.params;
|
|
11
|
-
if (typeof params.name !== 'string' || !params.name)
|
|
12
|
-
return fail(ctx, 'Missing required param: name.', 400, 'parameter_missing');
|
|
13
|
-
const lookupKey = typeof params.lookup_key === 'string' ? params.lookup_key : '';
|
|
14
|
-
if (!lookupKey)
|
|
15
|
-
return fail(ctx, 'Missing required param: lookup_key.', 400, 'parameter_missing');
|
|
16
|
-
if (ctx.rowsRaw(FEAT, { withDeleted: true }).some((f) => f.lookup_key === lookupKey && !f._archived))
|
|
17
|
-
return lookupKeyTaken(ctx, lookupKey);
|
|
18
|
-
return ctx.reply(await created(ctx, FEAT, {}, {
|
|
19
|
-
name: params.name, lookup_key: lookupKey, active: true, livemode: false,
|
|
20
|
-
metadata: params.metadata && typeof params.metadata === 'object' ? params.metadata : {},
|
|
21
|
-
}));
|
|
22
|
-
};
|
|
23
|
-
const listFeatures = async (ctx) => list(ctx, FEAT, where(ctx, newest(ctx, FEAT), {
|
|
24
|
-
lookup_key: (f, v) => f.lookup_key === v,
|
|
25
|
-
archived: (f, v) => asBool(kept(ctx, FEAT, f, '_archived')) === asBool(v),
|
|
26
|
-
}));
|
|
27
|
-
// name, active and metadata change
|
|
28
|
-
const update = async (ctx) => {
|
|
29
|
-
const id = at(ctx, 'id');
|
|
30
|
-
if (!ctx.get(FEAT, id))
|
|
31
|
-
return ctx.notFound(FEAT, id);
|
|
32
|
-
const patch = {};
|
|
33
|
-
if (ctx.params.name !== undefined)
|
|
34
|
-
patch.name = ctx.params.name;
|
|
35
|
-
if (ctx.params.active !== undefined) {
|
|
36
|
-
patch.active = asBool(ctx.params.active);
|
|
37
|
-
patch._archived = undefined;
|
|
38
|
-
}
|
|
39
|
-
if (ctx.params.metadata !== undefined)
|
|
40
|
-
patch.metadata = ctx.params.metadata;
|
|
41
|
-
return ctx.reply(await ctx.write(FEAT, id, patch, 'entitlements_feature.update'));
|
|
42
|
-
};
|
|
1
|
+
import { FEAT } from "../engine/entitlements.js";
|
|
2
|
+
import { subscriptionItemPairs } from "../engine/stripe.js";
|
|
3
|
+
import { fail, newest, path } from "./shared.js";
|
|
43
4
|
// a customer is entitled to every feature granted to a product its live subscriptions bill, as the product stood when
|
|
44
5
|
// the subscription's current period began: "When a customer purchases or subscribes to a product with an attached
|
|
45
6
|
// feature, Stripe creates and manages an Active Entitlement for that customer and feature"; "Existing subscriptions will
|
|
46
7
|
// create active entitlements for any product feature changes at the start of the next billing period"
|
|
47
8
|
// (docs.stripe.com/billing/entitlements). Where the documentation stops and the twin decides: a feature removed from a
|
|
48
9
|
// product is kept, the same way, until the next period begins.
|
|
49
|
-
|
|
10
|
+
export async function GetEntitlementsActiveEntitlements(ctx) {
|
|
50
11
|
const customer = typeof ctx.params.customer === 'string' ? ctx.params.customer : '';
|
|
51
12
|
if (!customer)
|
|
52
13
|
return fail(ctx, 'Missing required param: customer.', 400, 'parameter_missing');
|
|
@@ -86,10 +47,4 @@ const activeEntitlements = async (ctx) => {
|
|
|
86
47
|
data.push({ id: `ent_twin_${customer}_${featId}`, object: 'entitlements.active_entitlement', feature: featId, lookup_key: feat.lookup_key, livemode: false });
|
|
87
48
|
}
|
|
88
49
|
return ctx.reply({ object: 'list', url: path(ctx), has_more: false, data });
|
|
89
|
-
}
|
|
90
|
-
export const entitlements = {
|
|
91
|
-
PostEntitlementsFeatures: create,
|
|
92
|
-
GetEntitlementsFeatures: listFeatures,
|
|
93
|
-
PostEntitlementsFeaturesId: update,
|
|
94
|
-
GetEntitlementsActiveEntitlements: activeEntitlements,
|
|
95
|
-
};
|
|
50
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EventWrite, WriteHookContext } from '@volter/world-core';
|
|
2
|
+
/** An event's `data`: the object the write concerns, as Stripe sends it in the event's API version. A plan is stored as
|
|
3
|
+
* the recurring price it is, and its own events carry the plan object; an Issuing authorization carries its full card;
|
|
4
|
+
* the balance notice the drain writes carries the account's Balance. */
|
|
5
|
+
export declare function data(ctx: WriteHookContext, write: EventWrite): Record<string, unknown>;
|
|
6
|
+
/** An event's further envelope values: the connected account it is about ("Each event for a connected account contains
|
|
7
|
+
* a top-level `account` property that identifies the connected account", docs.stripe.com/connect/webhooks) — the
|
|
8
|
+
* account a request acts as (Stripe-Account), a connected account's own account.updated, or the account whose books the
|
|
9
|
+
* written row is kept on (its `_account`) — and the API version it is rendered in. A connected account whose OAuth
|
|
10
|
+
* connection was revoked "can't be accessed by your platform" (docs.stripe.com/connect/oauth-reference): its events are
|
|
11
|
+
* kept but no longer sent (`$send: false`), except the account.application.deauthorized that says so. */
|
|
12
|
+
export declare function values(ctx: WriteHookContext, write: EventWrite, type: string): Record<string, unknown>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { planOf } from "../engine/plans.js";
|
|
2
|
+
import { embedIssuingAuthorizationCard, isValidApiVersion, PLATFORM_ACCOUNT_ID, TWIN_API_VERSION } from "../engine/stripe.js";
|
|
3
|
+
import { render } from "../engine/version.js";
|
|
4
|
+
import { connectionRevoked, finder } from "./shared.js";
|
|
5
|
+
// ── the events Stripe's writes send (the manifest's `events`: ./shared.ts STRIPE_EVENTS) ──
|
|
6
|
+
/** An event's `data`: the object the write concerns, as Stripe sends it in the event's API version. A plan is stored as
|
|
7
|
+
* the recurring price it is, and its own events carry the plan object; an Issuing authorization carries its full card;
|
|
8
|
+
* the balance notice the drain writes carries the account's Balance. */
|
|
9
|
+
export function data(ctx, write) {
|
|
10
|
+
const object = write.storedType === '_balance_notice' ? write.body.balance
|
|
11
|
+
: write.storedType === 'price' && write.operation.startsWith('plan.') ? planOf(write.body)
|
|
12
|
+
: write.storedType === 'issuing_authorization' ? embedIssuingAuthorizationCard({ ...write.body }, finder(ctx))
|
|
13
|
+
: write.body;
|
|
14
|
+
return { object: render(object, eventVersion(write)) };
|
|
15
|
+
}
|
|
16
|
+
/** An event's further envelope values: the connected account it is about ("Each event for a connected account contains
|
|
17
|
+
* a top-level `account` property that identifies the connected account", docs.stripe.com/connect/webhooks) — the
|
|
18
|
+
* account a request acts as (Stripe-Account), a connected account's own account.updated, or the account whose books the
|
|
19
|
+
* written row is kept on (its `_account`) — and the API version it is rendered in. A connected account whose OAuth
|
|
20
|
+
* connection was revoked "can't be accessed by your platform" (docs.stripe.com/connect/oauth-reference): its events are
|
|
21
|
+
* kept but no longer sent (`$send: false`), except the account.application.deauthorized that says so. */
|
|
22
|
+
export function values(ctx, write, type) {
|
|
23
|
+
const id = write.body.id;
|
|
24
|
+
const kept = typeof id === 'string' ? ctx.rowsRaw(write.storedType, { withDeleted: true }).find((r) => r.id === id)?._account : undefined;
|
|
25
|
+
const account = write.request?.headers.get('stripe-account')
|
|
26
|
+
?? (write.storedType === 'account' && typeof id === 'string' && id !== PLATFORM_ACCOUNT_ID ? id : undefined)
|
|
27
|
+
?? (write.storedType === '_balance_notice' && typeof write.body.account === 'string' ? write.body.account : undefined)
|
|
28
|
+
?? (typeof kept === 'string' ? kept : undefined);
|
|
29
|
+
const withheld = account !== undefined && type !== 'account.application.deauthorized' && connectionRevoked(ctx, account);
|
|
30
|
+
return { $account: account, $version: eventVersion(write), ...(withheld ? { $send: false } : {}) };
|
|
31
|
+
}
|
|
32
|
+
/** The API version an event is rendered in: the one the writing request pinned, when it is one, else the served one. */
|
|
33
|
+
const eventVersion = (write) => {
|
|
34
|
+
const pinned = write.request?.headers.get('stripe-version');
|
|
35
|
+
return pinned && isValidApiVersion(pinned) ? pinned : TWIN_API_VERSION;
|
|
36
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as account_links from "./account_links.js";
|
|
2
|
+
import * as accounts from "./accounts.js";
|
|
3
|
+
import * as apps from "./apps.js";
|
|
4
|
+
import * as balance from "./balance.js";
|
|
5
|
+
import * as balance_transactions from "./balance_transactions.js";
|
|
6
|
+
import * as billing_portal from "./billing_portal.js";
|
|
7
|
+
import * as charges from "./charges.js";
|
|
8
|
+
import * as checkout from "./checkout.js";
|
|
9
|
+
import * as coupons from "./coupons.js";
|
|
10
|
+
import * as customers from "./customers.js";
|
|
11
|
+
import * as disputes from "./disputes.js";
|
|
12
|
+
import * as entitlements from "./entitlements.js";
|
|
13
|
+
import * as invoice_payments from "./invoice_payments.js";
|
|
14
|
+
import * as invoiceitems from "./invoiceitems.js";
|
|
15
|
+
import * as invoices from "./invoices.js";
|
|
16
|
+
import * as payment_intents from "./payment_intents.js";
|
|
17
|
+
import * as payment_methods from "./payment_methods.js";
|
|
18
|
+
import * as payouts from "./payouts.js";
|
|
19
|
+
import * as prices from "./prices.js";
|
|
20
|
+
import * as products from "./products.js";
|
|
21
|
+
import * as promotion_codes from "./promotion_codes.js";
|
|
22
|
+
import * as radar from "./radar.js";
|
|
23
|
+
import * as refunds from "./refunds.js";
|
|
24
|
+
import * as setup_intents from "./setup_intents.js";
|
|
25
|
+
import * as subscription_items from "./subscription_items.js";
|
|
26
|
+
import * as subscription_schedules from "./subscription_schedules.js";
|
|
27
|
+
import * as subscriptions from "./subscriptions.js";
|
|
28
|
+
import * as test_helpers from "./test_helpers.js";
|
|
29
|
+
import * as transfers from "./transfers.js";
|
|
30
|
+
export const stripeSemantics = {
|
|
31
|
+
DeleteInvoiceitemsInvoiceitem: invoiceitems.DeleteInvoiceitemsInvoiceitem,
|
|
32
|
+
DeleteInvoicesInvoice: invoices.DeleteInvoicesInvoice,
|
|
33
|
+
DeleteProductsId: products.DeleteProductsId,
|
|
34
|
+
DeleteSubscriptionItemsItem: subscription_items.DeleteSubscriptionItemsItem,
|
|
35
|
+
DeleteSubscriptionsSubscriptionExposedId: subscriptions.DeleteSubscriptionsSubscriptionExposedId,
|
|
36
|
+
DeleteTestHelpersTestClocksTestClock: test_helpers.DeleteTestHelpersTestClocksTestClock,
|
|
37
|
+
GetAccountsAccountExternalAccounts: accounts.GetAccountsAccountExternalAccounts,
|
|
38
|
+
GetAppsSecretsFind: apps.GetAppsSecretsFind,
|
|
39
|
+
GetBalance: balance.GetBalance,
|
|
40
|
+
GetBalanceTransactions: balance_transactions.GetBalanceTransactions,
|
|
41
|
+
GetBillingPortalConfigurations: billing_portal.GetBillingPortalConfigurations,
|
|
42
|
+
GetCharges: charges.GetCharges,
|
|
43
|
+
GetChargesCharge: charges.GetChargesCharge,
|
|
44
|
+
GetCustomersCustomer: customers.GetCustomersCustomer,
|
|
45
|
+
GetCustomersCustomerPaymentMethods: customers.GetCustomersCustomerPaymentMethods,
|
|
46
|
+
GetCustomersSearch: customers.GetCustomersSearch,
|
|
47
|
+
GetDisputesDispute: disputes.GetDisputesDispute,
|
|
48
|
+
GetEntitlementsActiveEntitlements: entitlements.GetEntitlementsActiveEntitlements,
|
|
49
|
+
GetInvoicePayments: invoice_payments.GetInvoicePayments,
|
|
50
|
+
GetInvoicesInvoice: invoices.GetInvoicesInvoice,
|
|
51
|
+
GetInvoicesInvoiceLines: invoices.GetInvoicesInvoiceLines,
|
|
52
|
+
GetPaymentMethodsPaymentMethod: payment_methods.GetPaymentMethodsPaymentMethod,
|
|
53
|
+
GetPrices: prices.GetPrices,
|
|
54
|
+
GetPricesPrice: prices.GetPricesPrice,
|
|
55
|
+
GetProducts: products.GetProducts,
|
|
56
|
+
GetProductsSearch: products.GetProductsSearch,
|
|
57
|
+
GetPromotionCodes: promotion_codes.GetPromotionCodes,
|
|
58
|
+
GetRefundsRefund: refunds.GetRefundsRefund,
|
|
59
|
+
GetSubscriptionItemsItem: subscription_items.GetSubscriptionItemsItem,
|
|
60
|
+
GetSubscriptionSchedulesSchedule: subscription_schedules.GetSubscriptionSchedulesSchedule,
|
|
61
|
+
GetSubscriptions: subscriptions.GetSubscriptions,
|
|
62
|
+
GetSubscriptionsSearch: subscriptions.GetSubscriptionsSearch,
|
|
63
|
+
GetSubscriptionsSubscriptionExposedId: subscriptions.GetSubscriptionsSubscriptionExposedId,
|
|
64
|
+
PostAccountLinks: account_links.PostAccountLinks,
|
|
65
|
+
PostAccounts: accounts.PostAccounts,
|
|
66
|
+
PostAccountsAccountLoginLinks: accounts.PostAccountsAccountLoginLinks,
|
|
67
|
+
PostAppsSecrets: apps.PostAppsSecrets,
|
|
68
|
+
PostAppsSecretsDelete: apps.PostAppsSecretsDelete,
|
|
69
|
+
PostBillingPortalConfigurations: billing_portal.PostBillingPortalConfigurations,
|
|
70
|
+
PostBillingPortalConfigurationsConfiguration: billing_portal.PostBillingPortalConfigurationsConfiguration,
|
|
71
|
+
PostBillingPortalSessions: billing_portal.PostBillingPortalSessions,
|
|
72
|
+
PostCheckoutSessions: checkout.PostCheckoutSessions,
|
|
73
|
+
PostCheckoutSessionsSessionExpire: checkout.PostCheckoutSessionsSessionExpire,
|
|
74
|
+
PostCoupons: coupons.PostCoupons,
|
|
75
|
+
PostCustomers: customers.PostCustomers,
|
|
76
|
+
PostCustomersCustomerBalanceTransactions: customers.PostCustomersCustomerBalanceTransactions,
|
|
77
|
+
PostInvoiceitems: invoiceitems.PostInvoiceitems,
|
|
78
|
+
PostInvoices: invoices.PostInvoices,
|
|
79
|
+
PostInvoicesCreatePreview: invoices.PostInvoicesCreatePreview,
|
|
80
|
+
PostInvoicesInvoiceFinalize: invoices.PostInvoicesInvoiceFinalize,
|
|
81
|
+
PostInvoicesInvoicePay: invoices.PostInvoicesInvoicePay,
|
|
82
|
+
PostInvoicesInvoiceSend: invoices.PostInvoicesInvoiceSend,
|
|
83
|
+
PostInvoicesInvoiceVoid: invoices.PostInvoicesInvoiceVoid,
|
|
84
|
+
PostPaymentIntents: payment_intents.PostPaymentIntents,
|
|
85
|
+
PostPaymentIntentsIntentCancel: payment_intents.PostPaymentIntentsIntentCancel,
|
|
86
|
+
PostPaymentIntentsIntentConfirm: payment_intents.PostPaymentIntentsIntentConfirm,
|
|
87
|
+
PostPaymentMethods: payment_methods.PostPaymentMethods,
|
|
88
|
+
PostPaymentMethodsPaymentMethodAttach: payment_methods.PostPaymentMethodsPaymentMethodAttach,
|
|
89
|
+
PostPaymentMethodsPaymentMethodDetach: payment_methods.PostPaymentMethodsPaymentMethodDetach,
|
|
90
|
+
PostPayouts: payouts.PostPayouts,
|
|
91
|
+
PostPrices: prices.PostPrices,
|
|
92
|
+
PostProducts: products.PostProducts,
|
|
93
|
+
PostPromotionCodes: promotion_codes.PostPromotionCodes,
|
|
94
|
+
PostRadarValueListItems: radar.PostRadarValueListItems,
|
|
95
|
+
PostRefunds: refunds.PostRefunds,
|
|
96
|
+
PostSetupIntents: setup_intents.PostSetupIntents,
|
|
97
|
+
PostSetupIntentsIntentConfirm: setup_intents.PostSetupIntentsIntentConfirm,
|
|
98
|
+
PostSubscriptionItems: subscription_items.PostSubscriptionItems,
|
|
99
|
+
PostSubscriptionItemsItem: subscription_items.PostSubscriptionItemsItem,
|
|
100
|
+
PostSubscriptionSchedules: subscription_schedules.PostSubscriptionSchedules,
|
|
101
|
+
PostSubscriptionSchedulesScheduleRelease: subscription_schedules.PostSubscriptionSchedulesScheduleRelease,
|
|
102
|
+
PostSubscriptions: subscriptions.PostSubscriptions,
|
|
103
|
+
PostSubscriptionsSubscriptionExposedId: subscriptions.PostSubscriptionsSubscriptionExposedId,
|
|
104
|
+
PostTestHelpersTestClocks: test_helpers.PostTestHelpersTestClocks,
|
|
105
|
+
PostTestHelpersTestClocksTestClockAdvance: test_helpers.PostTestHelpersTestClocksTestClockAdvance,
|
|
106
|
+
PostTransfers: transfers.PostTransfers,
|
|
107
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { INV, invoicePayment } from "../engine/invoices.js";
|
|
2
|
+
import { list, newest } from "./shared.js";
|
|
3
|
+
export async function GetInvoicePayments(ctx) {
|
|
4
|
+
const p = ctx.params;
|
|
5
|
+
const wanted = p.payment?.payment_intent;
|
|
6
|
+
const items = newest(ctx, INV)
|
|
7
|
+
.filter((inv) => typeof p.invoice !== 'string' || inv.id === p.invoice)
|
|
8
|
+
.map(invoicePayment).filter((x) => !!x)
|
|
9
|
+
.filter((x) => typeof wanted !== 'string' || x.payment.payment_intent === wanted)
|
|
10
|
+
.filter((x) => typeof p.status !== 'string' || x.status === p.status);
|
|
11
|
+
return list(ctx, 'invoice_payment', items);
|
|
12
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { INV, linesOf } from "../engine/invoices.js";
|
|
2
|
+
import { nowUnix } from "../engine/stripe.js";
|
|
3
|
+
import { at, created, fail, invoiceMissing, itemMissing, pricedItem, resyncDraftLines, writeLines } from "./shared.js";
|
|
4
|
+
// an item is deleted only while its invoice is still editable
|
|
5
|
+
export async function DeleteInvoiceitemsInvoiceitem(ctx) {
|
|
6
|
+
const id = at(ctx, 'invoiceitem');
|
|
7
|
+
const it = ctx.get('invoiceitem', id);
|
|
8
|
+
if (!it)
|
|
9
|
+
return itemMissing(ctx, id);
|
|
10
|
+
const onInvoice = typeof it.invoice === 'string' ? ctx.get(INV, it.invoice) : undefined;
|
|
11
|
+
if (onInvoice && onInvoice.status !== 'draft')
|
|
12
|
+
return fail(ctx, 'You cannot delete an invoice item that is attached to an invoice that is no longer editable.', 400, 'invoice_not_editable');
|
|
13
|
+
await ctx.write('invoiceitem', id, { deleted: true }, 'invoiceitem.delete');
|
|
14
|
+
if (typeof it.invoice === 'string')
|
|
15
|
+
await resyncDraftLines(ctx, it.invoice);
|
|
16
|
+
return ctx.reply({ id, object: 'invoiceitem', deleted: true });
|
|
17
|
+
}
|
|
18
|
+
export async function PostInvoiceitems(ctx) {
|
|
19
|
+
const params = ctx.params;
|
|
20
|
+
const now = Number(nowUnix(ctx.occurredAt));
|
|
21
|
+
const qty = Number(params.quantity) || 1;
|
|
22
|
+
// the served version names the price in `pricing[price]` ("The pricing information for the invoice item", the served
|
|
23
|
+
// spec); an older version sends `price`. It is kept as the item's price, which the answer renders as `pricing`
|
|
24
|
+
// (../engine/version.ts)
|
|
25
|
+
const { pricing: pricingParam, ...stored } = params;
|
|
26
|
+
const given = pricingParam?.price;
|
|
27
|
+
const priceRef = typeof given === 'string' && given ? given : typeof params.price === 'string' ? params.price : '';
|
|
28
|
+
const priced = priceRef ? pricedItem(ctx, priceRef, qty) : undefined;
|
|
29
|
+
if (priced instanceof Response)
|
|
30
|
+
return priced;
|
|
31
|
+
const resolvedAmount = priced?.amount;
|
|
32
|
+
let resolvedCurrency = priced?.currency;
|
|
33
|
+
// only a draft invoice takes new items
|
|
34
|
+
const invoiceRef = typeof params.invoice === 'string' ? params.invoice : '';
|
|
35
|
+
let target;
|
|
36
|
+
if (invoiceRef) {
|
|
37
|
+
target = ctx.get(INV, invoiceRef);
|
|
38
|
+
if (!target)
|
|
39
|
+
return invoiceMissing(ctx, invoiceRef);
|
|
40
|
+
if (target.status !== 'draft')
|
|
41
|
+
return fail(ctx, `This invoice cannot have invoice items added because it has status ${String(target.status)}.`, 400, 'invoice_not_editable');
|
|
42
|
+
if (resolvedCurrency === undefined && typeof target.currency === 'string')
|
|
43
|
+
resolvedCurrency = target.currency;
|
|
44
|
+
}
|
|
45
|
+
// an invoice item is dated by `date`, not `created`; its currency is the price's, else the invoice's
|
|
46
|
+
const item = await created(ctx, 'invoiceitem', { ...stored, ...(priceRef ? { price: priceRef } : {}) }, {
|
|
47
|
+
livemode: false, discountable: true, proration: false, quantity: qty, quantity_decimal: String(qty),
|
|
48
|
+
period: { start: now, end: now }, currency: resolvedCurrency ?? 'usd',
|
|
49
|
+
...(resolvedAmount !== undefined ? { amount: resolvedAmount } : {}),
|
|
50
|
+
}, { timeField: 'date' });
|
|
51
|
+
if (target) {
|
|
52
|
+
await writeLines(ctx, invoiceRef, [...linesOf(target), {
|
|
53
|
+
id: `il_${String(item.id)}`, object: 'line_item', type: 'invoiceitem', amount: Number(item.amount) || 0, currency: String(target.currency ?? item.currency ?? 'usd'),
|
|
54
|
+
quantity: qty, proration: false, invoice_item: item.id, price: item.price ?? null,
|
|
55
|
+
period: item.period ?? { start: now, end: now }, description: item.description ?? null,
|
|
56
|
+
}]);
|
|
57
|
+
}
|
|
58
|
+
return ctx.reply(item);
|
|
59
|
+
}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare
|
|
17
|
-
export declare function finalizedFields(ctx: SemanticsContext, inv: Row, now: number): Row;
|
|
18
|
-
export declare const invoices: Record<string, Semantics>;
|
|
1
|
+
import type { HandlerContext } from '@volter/world-core';
|
|
2
|
+
export declare function DeleteInvoicesInvoice(ctx: HandlerContext): Promise<Response>;
|
|
3
|
+
export declare function GetInvoicesInvoice(ctx: HandlerContext): Promise<Response>;
|
|
4
|
+
export declare function GetInvoicesInvoiceLines(ctx: HandlerContext): Promise<Response>;
|
|
5
|
+
export declare function PostInvoices(ctx: HandlerContext): Promise<Response>;
|
|
6
|
+
/**
|
|
7
|
+
* A preview of the next invoice for a customer or subscription (create_preview), computed and never
|
|
8
|
+
* stored: the subscription's items at their prices, the customer's pending items, the subscription's
|
|
9
|
+
* discount, and with `subscription_details.proration_date` a credit for the unused period against a
|
|
10
|
+
* charge for the new one (split evenly: there is no clock here to measure the remaining fraction).
|
|
11
|
+
*/
|
|
12
|
+
export declare function PostInvoicesCreatePreview(ctx: HandlerContext): Promise<Response>;
|
|
13
|
+
export declare function PostInvoicesInvoiceFinalize(ctx: HandlerContext): Promise<Response>;
|
|
14
|
+
export declare function PostInvoicesInvoicePay(ctx: HandlerContext): Promise<Response>;
|
|
15
|
+
export declare function PostInvoicesInvoiceSend(ctx: HandlerContext): Promise<Response>;
|
|
16
|
+
export declare function PostInvoicesInvoiceVoid(ctx: HandlerContext): Promise<Response>;
|