@volter/twin-stripe 3.0.0 → 3.0.1
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 +51 -21
- package/dist/generated/pack-facts.json +3 -3
- package/dist/journeys/coverage.json +596 -0
- package/dist/journeys/customer-life.json +6108 -0
- package/dist/journeys/customer-life.outline.md +371 -0
- package/dist/journeys/decisions.json +677 -0
- package/dist/journeys/demand.json +706 -0
- package/dist/journeys/score.json +853 -0
- package/dist/journeys/unreachable.json +102 -0
- package/dist/journeys/vendor-examples.json +8010 -0
- package/dist/spec/SOURCE.md +5 -1
- package/dist/spec/doc-examples.json +445 -0
- package/dist/spec/sources.json +135 -207
- package/dist/src/cli.d.ts +0 -1
- package/dist/src/cli.js +0 -2
- package/dist/src/engine/after-payment.d.ts +0 -1
- package/dist/src/engine/after-payment.js +0 -1
- package/dist/src/engine/common.d.ts +5 -5
- package/dist/src/engine/common.js +13 -11
- package/dist/src/engine/connect.d.ts +0 -21
- package/dist/src/engine/connect.js +1 -82
- package/dist/src/engine/customers.d.ts +0 -8
- package/dist/src/engine/customers.js +0 -22
- package/dist/src/engine/display.d.ts +0 -3
- package/dist/src/engine/display.js +0 -3
- package/dist/src/engine/files.d.ts +0 -7
- package/dist/src/engine/files.js +0 -10
- package/dist/src/engine/invoices.d.ts +6 -9
- package/dist/src/engine/invoices.js +56 -29
- package/dist/src/engine/issuing.d.ts +6 -8
- package/dist/src/engine/issuing.js +19 -10
- package/dist/src/engine/ledger.d.ts +0 -1
- package/dist/src/engine/ledger.js +0 -1
- package/dist/src/engine/oauth.js +1 -2
- package/dist/src/engine/refunds.js +2 -27
- package/dist/src/engine/stripe.d.ts +2 -7
- package/dist/src/engine/stripe.js +34 -83
- package/dist/src/engine/subscriptions.d.ts +0 -1
- package/dist/src/engine/subscriptions.js +0 -1
- package/dist/src/engine/version.d.ts +0 -2
- package/dist/src/engine/version.js +17 -6
- package/dist/src/fetch.js +2 -2
- package/dist/src/generated/surface.gen.json +1 -1
- package/dist/src/generated/ui.gen.json +1 -1
- package/dist/src/index.js +5 -3
- package/dist/src/manifest.js +348 -220
- package/dist/src/screens/billing-portal.js +5 -5
- package/dist/src/screens/{connect-oauth.d.ts → checkout-js.d.ts} +0 -1
- package/dist/src/screens/checkout-js.js +84 -0
- package/dist/src/screens/connect-onboarding.js +3 -3
- package/dist/src/screens/dashboard.d.ts +1 -1
- package/dist/src/screens/dashboard.js +52 -53
- package/dist/src/screens/stripe-js.js +53 -93
- package/dist/src/semantics/account.d.ts +2 -0
- package/dist/src/semantics/account.js +8 -0
- package/dist/src/semantics/accounts.js +3 -1
- package/dist/src/semantics/around.js +3 -6
- package/dist/src/semantics/billing_portal.d.ts +0 -1
- package/dist/src/semantics/billing_portal.js +1 -7
- package/dist/src/semantics/checkout.d.ts +1 -1
- package/dist/src/semantics/checkout.js +18 -15
- package/dist/src/semantics/clock.js +1 -7
- package/dist/src/semantics/customers.d.ts +1 -2
- package/dist/src/semantics/customers.js +32 -38
- package/dist/src/semantics/entitlements.d.ts +0 -2
- package/dist/src/semantics/entitlements.js +4 -50
- package/dist/src/semantics/events.d.ts +2 -3
- package/dist/src/semantics/events.js +6 -11
- package/dist/src/semantics/index.js +16 -38
- package/dist/src/semantics/invoices.d.ts +3 -8
- package/dist/src/semantics/invoices.js +134 -127
- package/dist/src/semantics/issuing.d.ts +6 -0
- package/dist/src/semantics/issuing.js +77 -0
- package/dist/src/semantics/payment_intents.d.ts +0 -1
- package/dist/src/semantics/payment_intents.js +5 -13
- package/dist/src/semantics/payment_methods.d.ts +0 -2
- package/dist/src/semantics/payment_methods.js +2 -26
- package/dist/src/semantics/payouts.d.ts +1 -0
- package/dist/src/semantics/payouts.js +8 -1
- package/dist/src/semantics/products.d.ts +1 -3
- package/dist/src/semantics/products.js +3 -14
- package/dist/src/semantics/refunds.d.ts +1 -2
- package/dist/src/semantics/refunds.js +1 -5
- package/dist/src/semantics/shared.d.ts +64 -336
- package/dist/src/semantics/shared.js +326 -1336
- package/dist/src/semantics/states.d.ts +20 -89
- package/dist/src/semantics/states.js +116 -334
- package/dist/src/semantics/subscriptions.d.ts +1 -2
- package/dist/src/semantics/subscriptions.js +23 -145
- package/dist/src/semantics/test_helpers.d.ts +2 -5
- package/dist/src/semantics/test_helpers.js +121 -43
- package/dist/src/semantics/webhook_endpoints.d.ts +2 -0
- package/dist/src/semantics/webhook_endpoints.js +26 -0
- package/generated/pack-facts.json +3 -3
- package/journeys/coverage.json +596 -0
- package/journeys/customer-life.json +6108 -0
- package/journeys/customer-life.outline.md +371 -0
- package/journeys/decisions.json +677 -0
- package/journeys/demand.json +706 -0
- package/journeys/score.json +853 -0
- package/journeys/unreachable.json +102 -0
- package/journeys/vendor-examples.json +8010 -0
- package/package.json +4 -3
- package/spec/SOURCE.md +5 -1
- package/spec/doc-examples.json +445 -0
- package/spec/sources.json +135 -207
- package/src/cli.ts +0 -3
- package/src/engine/after-payment.ts +0 -2
- package/src/engine/balance.ts +0 -1
- package/src/engine/checkout.ts +0 -1
- package/src/engine/common.ts +19 -17
- package/src/engine/connect.ts +1 -79
- package/src/engine/customers.ts +0 -25
- package/src/engine/display.ts +2 -3
- package/src/engine/files.ts +0 -13
- package/src/engine/invoices.ts +64 -33
- package/src/engine/issuing.ts +16 -11
- package/src/engine/ledger.ts +0 -2
- package/src/engine/oauth.ts +1 -2
- package/src/engine/onboarding.ts +0 -1
- package/src/engine/params.ts +0 -1
- package/src/engine/payment-intents.ts +0 -1
- package/src/engine/payment-methods.ts +0 -1
- package/src/engine/refunds.ts +2 -28
- package/src/engine/renewals.ts +0 -1
- package/src/engine/stripe.ts +35 -83
- package/src/engine/subscriptions.ts +0 -3
- package/src/engine/transfers.ts +0 -1
- package/src/engine/version.ts +15 -7
- package/src/engine/webhooks.ts +0 -2
- package/src/fetch.ts +2 -2
- package/src/generated/surface.gen.json +1 -1
- package/src/generated/ui.gen.json +1 -1
- package/src/index.ts +6 -4
- package/src/manifest.ts +348 -220
- package/src/screens/billing-portal.tsx +5 -7
- package/src/screens/checkout-js.ts +80 -0
- package/src/screens/checkout.tsx +0 -2
- package/src/screens/connect-onboarding.tsx +3 -5
- package/src/screens/dashboard.tsx +53 -73
- package/src/screens/stripe-js.ts +57 -125
- package/src/semantics/account.ts +10 -0
- package/src/semantics/account_links.ts +0 -1
- package/src/semantics/accounts.ts +8 -7
- package/src/semantics/apps.ts +1 -2
- package/src/semantics/around.ts +3 -6
- package/src/semantics/balance.ts +0 -1
- package/src/semantics/balance_transactions.ts +1 -3
- package/src/semantics/billing_portal.ts +1 -7
- package/src/semantics/charges.ts +1 -6
- package/src/semantics/checkout.ts +16 -12
- package/src/semantics/clock.ts +1 -8
- package/src/semantics/coupons.ts +0 -1
- package/src/semantics/customers.ts +32 -35
- package/src/semantics/doors.ts +2 -3
- package/src/semantics/entitlements.ts +1 -45
- package/src/semantics/events.ts +7 -14
- package/src/semantics/index.ts +16 -38
- package/src/semantics/invoice_payments.ts +1 -3
- package/src/semantics/invoices.ts +124 -119
- package/src/semantics/issuing.ts +74 -0
- package/src/semantics/payment_intents.ts +10 -17
- package/src/semantics/payment_methods.ts +2 -25
- package/src/semantics/payouts.ts +9 -3
- package/src/semantics/prices.ts +0 -1
- package/src/semantics/products.ts +4 -14
- package/src/semantics/promotion_codes.ts +0 -1
- package/src/semantics/radar.ts +1 -3
- package/src/semantics/refunds.ts +2 -11
- package/src/semantics/shared.ts +350 -1382
- package/src/semantics/states.ts +109 -330
- package/src/semantics/subscriptions.ts +25 -145
- package/src/semantics/test_helpers.ts +109 -43
- package/src/semantics/transfers.ts +1 -3
- package/src/semantics/webhook_endpoints.ts +27 -0
- package/src/server.ts +0 -1
- package/dist/src/engine/billing.d.ts +0 -5
- package/dist/src/engine/billing.js +0 -6
- package/dist/src/engine/charges.d.ts +0 -6
- package/dist/src/engine/charges.js +0 -13
- package/dist/src/engine/connect-settings.d.ts +0 -16
- package/dist/src/engine/connect-settings.js +0 -26
- package/dist/src/engine/coupons.d.ts +0 -0
- package/dist/src/engine/coupons.js +0 -5
- package/dist/src/engine/credit-notes.d.ts +0 -1
- package/dist/src/engine/credit-notes.js +0 -5
- package/dist/src/engine/disputes.d.ts +0 -0
- package/dist/src/engine/disputes.js +0 -9
- package/dist/src/engine/entitlements.d.ts +0 -1
- package/dist/src/engine/entitlements.js +0 -4
- package/dist/src/engine/ephemeral-keys.d.ts +0 -0
- package/dist/src/engine/ephemeral-keys.js +0 -4
- package/dist/src/engine/front.d.ts +0 -5
- package/dist/src/engine/front.js +0 -25
- package/dist/src/engine/payment-links.d.ts +0 -1
- package/dist/src/engine/payment-links.js +0 -5
- package/dist/src/engine/plans.d.ts +0 -6
- package/dist/src/engine/plans.js +0 -26
- package/dist/src/engine/platform.d.ts +0 -39
- package/dist/src/engine/platform.js +0 -34
- package/dist/src/engine/products.d.ts +0 -0
- package/dist/src/engine/products.js +0 -4
- package/dist/src/engine/setup-intents.d.ts +0 -1
- package/dist/src/engine/setup-intents.js +0 -4
- package/dist/src/engine/subscription-schedules.d.ts +0 -3
- package/dist/src/engine/subscription-schedules.js +0 -1
- package/dist/src/engine/tax.d.ts +0 -7
- package/dist/src/engine/tax.js +0 -28
- package/dist/src/engine/terminal.d.ts +0 -4
- package/dist/src/engine/terminal.js +0 -20
- package/dist/src/engine/test-clocks.d.ts +0 -5
- package/dist/src/engine/test-clocks.js +0 -9
- package/dist/src/engine/tokens.d.ts +0 -7
- package/dist/src/engine/tokens.js +0 -20
- package/dist/src/engine/treasury.d.ts +0 -23
- package/dist/src/engine/treasury.js +0 -45
- package/dist/src/screens/connect-oauth.js +0 -333
- package/dist/src/semantics/disputes.d.ts +0 -2
- package/dist/src/semantics/disputes.js +0 -5
- package/dist/src/semantics/invoiceitems.d.ts +0 -3
- package/dist/src/semantics/invoiceitems.js +0 -59
- package/dist/src/semantics/setup_intents.d.ts +0 -3
- package/dist/src/semantics/setup_intents.js +0 -41
- package/dist/src/semantics/subscription_items.d.ts +0 -5
- package/dist/src/semantics/subscription_items.js +0 -55
- package/dist/src/semantics/subscription_schedules.d.ts +0 -4
- package/dist/src/semantics/subscription_schedules.js +0 -60
- package/src/engine/billing.ts +0 -16
- package/src/engine/charges.ts +0 -19
- package/src/engine/connect-settings.ts +0 -23
- package/src/engine/coupons.ts +0 -5
- package/src/engine/credit-notes.ts +0 -6
- package/src/engine/disputes.ts +0 -9
- package/src/engine/entitlements.ts +0 -5
- package/src/engine/ephemeral-keys.ts +0 -3
- package/src/engine/front.ts +0 -31
- package/src/engine/payment-links.ts +0 -6
- package/src/engine/plans.ts +0 -42
- package/src/engine/platform.ts +0 -47
- package/src/engine/products.ts +0 -3
- package/src/engine/setup-intents.ts +0 -5
- package/src/engine/subscription-schedules.ts +0 -10
- package/src/engine/tax.ts +0 -39
- package/src/engine/terminal.ts +0 -23
- package/src/engine/test-clocks.ts +0 -11
- package/src/engine/tokens.ts +0 -22
- package/src/engine/treasury.ts +0 -47
- package/src/screens/connect-oauth.tsx +0 -376
- package/src/semantics/disputes.ts +0 -12
- package/src/semantics/invoiceitems.ts +0 -59
- package/src/semantics/setup_intents.ts +0 -45
- package/src/semantics/subscription_items.ts +0 -54
- package/src/semantics/subscription_schedules.ts +0 -66
package/README.md
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
A local Stripe: the REST API the unmodified `stripe` SDK calls (`https://api.stripe.com/v1`), the hosted pages an
|
|
4
4
|
application sends a person through, and Stripe.js, over one state.
|
|
5
5
|
|
|
6
|
-
A Protocol 3 pack (
|
|
7
|
-
from Stripe's published OpenAPI document (`spec/`). The derived core serves plain reads, writes and deletes.
|
|
8
|
-
are in `src/semantics/<family>.ts`, the state machines in `src/semantics/states.ts`, and Stripe's own
|
|
9
|
-
(money and declines, billing, the ledger, the API versions) in `src/engine/`.
|
|
6
|
+
A Protocol 3 pack (twin-world's docs/contributing/architecture.md, "Protocol 3: the derived pack"). Its surface is
|
|
7
|
+
generated from Stripe's published OpenAPI document (`spec/`). The derived core serves plain reads, writes and deletes.
|
|
8
|
+
Handlers are in `src/semantics/<family>.ts`, the state machines in `src/semantics/states.ts`, and Stripe's own
|
|
9
|
+
computation (money and declines, billing, the ledger, the API versions) in `src/engine/`.
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
world-stripe serve [--port N] [--root DIR] [--read-only]
|
|
@@ -14,32 +14,55 @@ world-stripe serve [--port N] [--root DIR] [--read-only]
|
|
|
14
14
|
|
|
15
15
|
## What it models
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
frontends' Stripe.js)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- **
|
|
22
|
-
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
What the demand reaches (`journeys/demand.json`: Open Autonomy, Twin, Volter Harness, and the stripe-node applications
|
|
18
|
+
Cal.com, Dub, Postiz, Rallly and Twenty, with their frontends' Stripe.js), the life (`journeys/customer-life.json`) and a
|
|
19
|
+
vendor-backed World's refresh; each served operation is decided in `journeys/decisions.json`:
|
|
20
|
+
|
|
21
|
+
- **Customers**: created, updated, searched, listed by email, deleted; their balance transactions and payment methods,
|
|
22
|
+
and their active entitlements (read). Balance-transaction writes answer the gap.
|
|
23
|
+
- **Catalog**: products and prices created and listed, prices retrieved, coupons and promotion codes managed. Product search and administrative product/price updates answer the gap.
|
|
24
|
+
- **Checkout Sessions** and the customer portal (sessions and configurations): pay, add a card, pay an open invoice,
|
|
25
|
+
cancel at the period's end or at once.
|
|
26
|
+
- **Subscriptions**: created (charged at once, trialing, `default_incomplete` or `error_if_incomplete`), updated (items,
|
|
27
|
+
discounts, a trial ended early or added), searched, canceled; their items, schedules (made, updated, released),
|
|
28
|
+
renewals on the World clock, and a renewal declined and paid later.
|
|
29
|
+
- **Invoices**: invoice items, drafts, finalize, pay (a draft is finalized on the way), void, delete, lines,
|
|
30
|
+
previews and their payments. Invoice lines are read in the invoice; the standalone lines endpoint answers the gap.
|
|
31
|
+
- **Intents**: payment and setup intents, confirmed on the server or by Stripe.js with the publishable key and the
|
|
32
|
+
client secret, through the testing page's cards (declines, 3-D Secure) and test bank accounts (ACH debits that settle,
|
|
33
|
+
micro-deposit verification asked), a hold confirmed under manual capture and canceled, a bank transfer that waits for
|
|
34
|
+
funds; payment methods attached and detached; refunds (held for want of balance, with a destination charge's
|
|
35
|
+
transfer reversed and its application fee refunded); the charges, disputes and Radar reviews the testing page's cards
|
|
36
|
+
bring.
|
|
37
|
+
- **Apps secret store**; existing Radar value lists and their items (reads and item insertion).
|
|
38
|
+
- **Connect**: Express and Custom accounts, account links (Stripe's hosted onboarding) and login links, transfers (from
|
|
39
|
+
a charge's funds too), payouts, the balance and its transactions, application fees and their refunds, and Connect
|
|
40
|
+
OAuth (cal.com's).
|
|
41
|
+
- **Issuing** (Open Autonomy's card rail): cardholders and cards (a card is `inactive` unless its create names a status;
|
|
42
|
+
its number and CVC drawn from the World and shown only when expanded), activated, frozen and canceled; authorizations
|
|
43
|
+
asked of the real-time endpoint, approved or declined within the window or decided by Stripe when it ends, and
|
|
44
|
+
received from the vendor and closed by its transactions. Their published fixtures are recorded notReplayed because authorization creation and capture test helpers remain outside demand.
|
|
45
|
+
- **Webhook endpoints** made through the API, each with its own signing secret; events listed.
|
|
30
46
|
|
|
31
47
|
**Keys.** The platform's secret and publishable keys, and its webhook secret, are issued by the credential door and
|
|
32
48
|
held by their SHA-256. A request with no key, or with one Stripe never issued, is refused 401. A connected account's
|
|
33
49
|
OAuth key acts as that account.
|
|
34
50
|
|
|
35
|
-
**The gap.**
|
|
36
|
-
|
|
51
|
+
**The gap.** Operations outside application demand and the declared refresh reads answer Stripe's unknown-URL 404
|
|
52
|
+
(the manifest's literal `unmodeled` list). This includes administrative catalog updates and deletion, direct
|
|
53
|
+
PaymentMethod creation and attachment, send-invoice, balance-credit writes, test clocks and Issuing test helpers,
|
|
54
|
+
top-ups, Plans, meter and entitlement-feature setup, Radar-list creation, and separate products such as Terminal,
|
|
55
|
+
Treasury, Tax, Climate, Identity and Financial Connections. Reading an already declared resource for vendor-backed
|
|
56
|
+
refresh remains served; declaring an unused product does not establish application demand.
|
|
57
|
+
|
|
58
|
+
**Vendor-backed.** Every stored resource declares its `refresh` (the list that reads it back, under its parent where it
|
|
59
|
+
has one); Stripe's webhooks are ingested by their `Stripe-Signature` (`type`, `data.object`); calls are charged against
|
|
60
|
+
Stripe's documented limit (25 requests a second in a sandbox).
|
|
37
61
|
|
|
38
62
|
## Events
|
|
39
63
|
|
|
40
64
|
Every write Stripe reports sends its event (`payment_intent.succeeded`, `customer.subscription.created`,
|
|
41
|
-
`invoice.paid`, …; a charge sends `charge.succeeded
|
|
42
|
-
`charge.created`), declared as data the kernel renders, stores, signs (`Stripe-Signature: t=…,v1=…`, which the
|
|
65
|
+
`invoice.paid`, …; a charge sends `charge.succeeded` or `charge.failed`, never an invented `charge.created`), declared as data the kernel renders, stores, signs (`Stripe-Signature: t=…,v1=…`, which the
|
|
43
66
|
SDK's `constructEvent` verifies) and delivers to the account's enabled webhook endpoints whose `enabled_events` take it
|
|
44
67
|
(`*`, `<family>.*` or the type). Each event is rendered in the writing request's API version.
|
|
45
68
|
|
|
@@ -86,3 +109,10 @@ The World's hands where Stripe's API has no act (`src/semantics/doors.ts`), refu
|
|
|
86
109
|
- `POST /_twin/account {settings?, business_profile?, …}`: the platform's own account settings, as the Dashboard
|
|
87
110
|
changes them.
|
|
88
111
|
- `POST /_twin/drain`: time's events, sent when a runner drives them (`payout.paid`, `balance.available`).
|
|
112
|
+
|
|
113
|
+
## Published examples
|
|
114
|
+
|
|
115
|
+
`journeys/vendor-examples.json` replays Stripe's published examples for the operations the pack serves: the fixtures
|
|
116
|
+
beside its spec (`spec/fixtures3.json.gz`), and the requests and rules its documentation pages publish
|
|
117
|
+
(`spec/doc-examples.json`: the testing page's cards and test bank accounts, the payment lifecycle's states, and each
|
|
118
|
+
reference page's stated rule). Examples whose preconditions require an unserved setup operation are recorded notReplayed naming that operation and its pinned-spec citation. Served preconditions replay through vendor APIs, including customer balance changes and their immutable ledger entries. Coverage remains missing where no application call or published replay reaches it.
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"host": "connect.stripe.com",
|
|
31
|
-
"pathPattern": "^/setup
|
|
31
|
+
"pathPattern": "^/setup/"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"host": "dashboard.stripe.com",
|
|
35
|
-
"pathPattern": "^/
|
|
35
|
+
"pathPattern": "^/radar/lists(?:/[^/]+)?/?$|^/test/issuing/balance/?$|^/settings/public/?$"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"host": "verify.stripe.com",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"host": "js.stripe.com",
|
|
43
|
-
"pathPattern": "^/v3
|
|
43
|
+
"pathPattern": "^/v3/?$|^/(v3|[a-z]+)/stripe\\.js$"
|
|
44
44
|
}
|
|
45
45
|
],
|
|
46
46
|
"archetype": "crud",
|