@crvouga/mockingbird-service-stripe 1.4.2 → 1.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog — @crvouga/mockingbird-service-stripe
2
2
 
3
+ ## 1.6.0 (2026-09-29)
4
+
5
+ ### Features
6
+
7
+ - per-option data-testids on the portal's plan and reason choices ([237e5ef](https://github.com/crvouga/mockingbird/commit/237e5efc5425be3062e75cdfbcf942e8590bcd90))
8
+
9
+ ### Fixes and improvements
10
+
11
+ - name a missing invoice item list cursor an invoice item ([7cfc811](https://github.com/crvouga/mockingbird/commit/7cfc81125e5e5ee23cfb03644bb7db4fa5473fa2))
12
+ - keep a customer address country as sent unless it is two letters ([6547c6c](https://github.com/crvouga/mockingbird/commit/6547c6c41e35dcfb469ebd53fbbb31dedbe34379))
13
+ - refuse a malformed preferred_locales before an empty invoice_settings on customer create ([65b18ed](https://github.com/crvouga/mockingbird/commit/65b18ed74f072b856a9c5334c3039c17f705bf45))
14
+ - resolve a payment method list's cursors before its customer_account ([8df4ce6](https://github.com/crvouga/mockingbird/commit/8df4ce63462b0192e32b8a14ce411c136ac55639))
15
+ - refuse both price amounts before looking up the product ([86700e2](https://github.com/crvouga/mockingbird/commit/86700e2e22576a4ebb79d5caa2790a2c86954da5))
16
+ - refuse an empty expand before looking up a Checkout Session ([4eb1010](https://github.com/crvouga/mockingbird/commit/4eb1010153a26f321dbc2870a537f8e0842bc945))
17
+ - refuse an empty cursor on a customer's balance transactions ([05fe354](https://github.com/crvouga/mockingbird/commit/05fe3549de39fb1a0208e79eba3c12d35641e5c7))
18
+ - name the dispute, not the cursor, in a missing-cursor error ([036ed1a](https://github.com/crvouga/mockingbird/commit/036ed1a249d015242e068c9c6796a320a9483f5c))
19
+ - name a missing portal configuration "configuration" ([d62e1df](https://github.com/crvouga/mockingbird/commit/d62e1df914536adef44a34414a0e42bfc726961a))
20
+ - leave portal configuration listing out of live parity walks ([ea11169](https://github.com/crvouga/mockingbird/commit/ea11169571ed61c2308ad5cb13fc07fa907ee9b2))
21
+ - refuse an empty search query before an empty expand ([2d0a11a](https://github.com/crvouga/mockingbird/commit/2d0a11aa1aab9e925597e63a1ec9df1744f8f9ef))
22
+ - show redacted startup output when stripe listen fails ([6c86bcc](https://github.com/crvouga/mockingbird/commit/6c86bccfe4654442cf20d2ab4e7114b63bd1ac04))
23
+
24
+ ## 1.5.0 (2026-09-29)
25
+
26
+ ### Features
27
+
28
+ - model basil InvoicePayments and drop Charge.invoice at basil ([c7b97f0](https://github.com/crvouga/mockingbird/commit/c7b97f0528461adda6f29bce76685a7c80a2baea))
29
+
30
+ ### Fixes and improvements
31
+
32
+ - resolve list cursors before validating a subscription test_clock filter ([4c06ab9](https://github.com/crvouga/mockingbird/commit/4c06ab986e0eb5e63540cda6b2354c43f7be7e1e))
33
+ - call a missing event a notification, as Stripe does ([e72762a](https://github.com/crvouga/mockingbird/commit/e72762a763fe0c3cacd47749bfd0bbc309e3b07e))
34
+ - drop duplicate amount declarations left by the main merge ([df72fdc](https://github.com/crvouga/mockingbird/commit/df72fdc0924d6c5d13fa9ef8f098b10373fac042))
35
+ - refuse an empty metadata when creating a price ([aaf807f](https://github.com/crvouga/mockingbird/commit/aaf807f2d1bdf29c5ee2279b893ecf20b12b9205))
36
+ - refuse an invoice item list filtered by a missing invoice ([4516326](https://github.com/crvouga/mockingbird/commit/4516326117894548dd657100bb5806e1b122b4f7))
37
+ - give a non-object metadata Stripe's metadata message ([805b3e0](https://github.com/crvouga/mockingbird/commit/805b3e037ac0f7db21c1eef25efcfab82f61f0c3))
38
+ - name a missing invoice item cursor the way Stripe does ([c4b9ece](https://github.com/crvouga/mockingbird/commit/c4b9ece1e6cce38eb032b0c39c79a02c1434143f))
39
+ - refuse an empty marketing feature name as Stripe does ([015b016](https://github.com/crvouga/mockingbird/commit/015b016ab96b3d66c51a3bce38f7e2912cba4ac7))
40
+ - drop a duplicate empty-query check in search ([2de4b72](https://github.com/crvouga/mockingbird/commit/2de4b726e19ddc5d3eb557a54c368f751f0a5782))
41
+ - refuse an empty search expand after the other parameters ([bb3df1a](https://github.com/crvouga/mockingbird/commit/bb3df1a399c3d58a0700ef31e28fa68e780beabf))
42
+ - range-check a search limit before refusing an empty page ([6947944](https://github.com/crvouga/mockingbird/commit/694794462ffe366840a67faa624114ccc62df524))
43
+ - name a missing subscription schedule cursor the way Stripe does ([25f712b](https://github.com/crvouga/mockingbird/commit/25f712bed9bca38452089ad2cae91c0916eee260))
44
+ - answer 404 'No such setupintent' for a missing SetupIntent ([0ffa8c1](https://github.com/crvouga/mockingbird/commit/0ffa8c186a2f04e5009ea35573f413c6637a2210))
45
+ - report other empty parameters before an empty expand on writes ([f7e4b53](https://github.com/crvouga/mockingbird/commit/f7e4b530d9741cc02e95527ced805d970d27d483))
46
+ - leave the portal configuration list out of live parity walks ([79bdebd](https://github.com/crvouga/mockingbird/commit/79bdebd4f6ba125c3e21ab9ed2de8162062b6587))
47
+ - reject unit_amount with unit_amount_decimal before the product lookup ([b21c310](https://github.com/crvouga/mockingbird/commit/b21c310c409090e4b62820f045dac413eba4406a))
48
+ - let cleanup webhooks settle before the next parity walk ([432d1b3](https://github.com/crvouga/mockingbird/commit/432d1b32548c2261c18e35a12b3ebc024fb79f4d))
49
+ - match the real not-found error for subscription schedules ([28367fd](https://github.com/crvouga/mockingbird/commit/28367fd5ab6dc485dd3de64f91a2453dafe0e8f2))
50
+ - pass --all-snapshot to stripe listen for CLI 1.52 ([9d31ac9](https://github.com/crvouga/mockingbird/commit/9d31ac90880648c26e78a168db0b4d2f535169cc))
51
+ - surface redacted stripe listen output when the oracle fails to start ([571b8ed](https://github.com/crvouga/mockingbird/commit/571b8ede475aaece02f0e22391e17ee9f3be6fd2))
52
+
3
53
  ## 1.4.2 (2026-09-29)
4
54
 
5
55
  ### Fixes and improvements
package/README.md CHANGED
@@ -109,7 +109,12 @@ headers). Hosted-page URLs carry the `/ns/<namespace>` prefix so the browser lan
109
109
  `paid` / `subscription_details`, `subscription.current_period_*` and `subscription.discount`, and
110
110
  invoice lines with `price` objects; `2025-02-24.acacia` adds `total_pretax_credit_amounts`;
111
111
  2025-03-31.basil and later (the vendored latest) drop those and use `parent`, `pricing`,
112
- `discount.source` and item-level periods. `charge.refunds` appears only with `expand[]=refunds` at
112
+ `discount.source` and item-level periods; at basil `charge.invoice` and `payment_intent.invoice` are gone
113
+ too, and an invoice's payments are `invoice_payment` objects (`inpay_…`): `expand[]=payments` on an
114
+ invoice (or `latest_invoice.payments` on a subscription), `GET /v1/invoice_payments` (filter by
115
+ `invoice`, `payment[type]=payment_intent&payment[payment_intent]`, `status`, `created`) and
116
+ `GET /v1/invoice_payments/{id}`. One default payment per invoice that has a PaymentIntent, derived from
117
+ the invoice; a $0 invoice has none, and payment records are not modelled. `charge.refunds` appears only with `expand[]=refunds` at
113
118
  every one of these versions. `GET /v1/invoices/upcoming` answers at the older versions and returns
114
119
  Stripe's "deprecated" 404 at basil and later. Expansion is generic (any path through ids the mock
115
120
  holds, ancestors included); Stripe's own rules are enforced: a non-expandable first segment is
@@ -278,6 +283,11 @@ billing.stripe.com) where the customer manages their billing, as the session's c
278
283
  through a SetupIntent, which becomes the customer's and each subscription's default; **Make
279
284
  default**; **Delete** a non-default card); billing information (the configured `allowed_updates`,
280
285
  `customer.updated` with `previous_attributes`); invoice history with **Pay** for open invoices.
286
+ Repeated choices carry a per-option `data-testid` on the wrapping `<label class="option">`
287
+ (tapping it checks the radio), so a test-id-only driver can pick one: each plan is
288
+ `stripe-mock-portal-price-option-<price lookup_key, else price id>` and each cancellation reason
289
+ is `stripe-mock-portal-reason-<reason>` (e.g. `…-too_expensive`). The generic
290
+ `stripe-mock-portal-price-option` and `stripe-mock-portal-reason` ids stay on the radios.
281
291
  - **Deep links** open on the flow's page — cancel (with a retention offer to accept), update, update
282
292
  confirmation, payment method, billing details — and on completion honour `after_completion`:
283
293
  `redirect` (302), `hosted_confirmation` (its `custom_message`) or the homepage. Every action
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createRuntime,
3
3
  validateAccounts
4
- } from "./chunk-G3CFEXYC.js";
4
+ } from "./chunk-JMK5BHFP.js";
5
5
 
6
6
  // src/server.ts
7
7
  import { readFileSync } from "node:fs";
@@ -385,4 +385,4 @@ export {
385
385
  createServer2 as createServer,
386
386
  serveTarget
387
387
  };
388
- //# sourceMappingURL=chunk-3IXCGEEZ.js.map
388
+ //# sourceMappingURL=chunk-JLJVLLWF.js.map