@crvouga/mockingbird-service-stripe 1.4.0 → 1.4.2

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,29 @@
1
1
  # Changelog — @crvouga/mockingbird-service-stripe
2
2
 
3
+ ## 1.4.2 (2026-09-29)
4
+
5
+ ### Fixes and improvements
6
+
7
+ - name missing portal configurations as real Stripe does and skip the account-dependent list in parity ([11833e0](https://github.com/crvouga/mockingbird/commit/11833e0fc344d93d46be16a577d36ccadf393902))
8
+ - answer an unknown SetupIntent with a 404 naming "setupintent" ([9db9fff](https://github.com/crvouga/mockingbird/commit/9db9fffd3495343ac17b0b9e3cf6850e3024195c))
9
+ - check product images in index order across empty and invalid URLs ([662cca3](https://github.com/crvouga/mockingbird/commit/662cca3a85e63279faa0b3a2f1b304ca67ed650c))
10
+ - pass --all-snapshot to stripe listen ([8e32c50](https://github.com/crvouga/mockingbird/commit/8e32c50f06517bcfc9deeb118d608dd94eaba76c))
11
+ - report why stripe listen exited before ready ([31f2f21](https://github.com/crvouga/mockingbird/commit/31f2f2117a1bfba1a70381462a7b9c3f75592527))
12
+ - store and return price currency_options ([36e2b5a](https://github.com/crvouga/mockingbird/commit/36e2b5a917ac27a3f6dc2f59bc5604aa136c22d3))
13
+
14
+ ## 1.4.1 (2026-09-29)
15
+
16
+ ### Fixes and improvements
17
+
18
+ - report a missing invoice item under param id ([c2a5ede](https://github.com/crvouga/mockingbird/commit/c2a5ede5056a6f64d6df128b3f118759d452bc10))
19
+ - validate search limit before an empty page ([cc755f7](https://github.com/crvouga/mockingbird/commit/cc755f7672b4e652bd40c3b087c1fb504b636d85))
20
+ - refuse both price amounts before reading any other parameter ([e6a6735](https://github.com/crvouga/mockingbird/commit/e6a6735ae8bef0e7f9b40152a6e02056497739dd))
21
+ - leave the portal configuration list out of live parity walks ([f378c9d](https://github.com/crvouga/mockingbird/commit/f378c9d76e36f9fdc86343a4c3eeebf5694eb1a0))
22
+ - pick stripe listen's all-events flag from the installed CLI ([89ad2f4](https://github.com/crvouga/mockingbird/commit/89ad2f414745881f1c1f64445c12b8c70f80072d))
23
+ - pass --events to stripe listen so CLI 1.52 starts ([eeb20b2](https://github.com/crvouga/mockingbird/commit/eeb20b2cce57729d817b00d5f8bd9d0681db0ecb))
24
+ - report the stripe listen output when it exits before ready ([0155f0a](https://github.com/crvouga/mockingbird/commit/0155f0acfb8aed6f1677a29339dbeb4ef0bdaaad))
25
+ - reset the billing cycle anchor on a change to a different billing interval ([314910a](https://github.com/crvouga/mockingbird/commit/314910af7ff36ebd900445e97529740639ada4d2))
26
+
3
27
  ## 1.4.0 (2026-09-29)
4
28
 
5
29
  ### Features
package/README.md CHANGED
@@ -199,8 +199,12 @@ now and returns `incomplete` on a decline; `error_if_incomplete` fails the call
199
199
  customer, and paying it through Stripe.js activates the subscription. `trial_end`,
200
200
  `backdate_start_date` + `billing_cycle_anchor` + `proration_behavior=none` (a $0 first invoice),
201
201
  item updates with `always_invoice` (billed now) or `create_prorations` (next invoice), and
202
- discounts with stable `di_` ids (`discounts=""` clears) are modelled. Items must be active recurring
203
- prices sharing one currency and interval. `DELETE /v1/subscriptions/:id` takes
202
+ discounts with stable `di_` ids (`discounts=""` clears) are modelled. An item update to a price with
203
+ a different billing period (say monthly → yearly, through the API or the portal's **Update plan**)
204
+ resets `billing_cycle_anchor` to now, starts a new period and invoices it at once (less a
205
+ proration credit for the unused time unless `proration_behavior=none`); a trialing subscription
206
+ keeps its trial end instead. Items must be active recurring prices sharing one currency and
207
+ interval. `DELETE /v1/subscriptions/:id` takes
204
208
  `cancellation_details[comment|feedback]`, `prorate` (a credit for the unused time as a pending
205
209
  proration) and `invoice_now` (a final invoice; a net credit lands on the customer balance), in the
206
210
  query string (as stripe-node sends them) or the body. A $0 invoice is `paid` on
@@ -381,11 +385,18 @@ plus `port`, `host`; resolves `{url, port, runtime, close}`), `serveTarget` (the
381
385
  PaymentSheet cannot be redirected (member-app native keeps its fake provider).
382
386
  - **Connect** (`Stripe-Account`, application fees, transfers), tax, shipping, Radar, mandates,
383
387
  meters, quotes, credit notes, payouts, and non-card payment methods (bank debits, wallets).
388
+ - **Billing cycle anchor resets** other than a price change to a different billing period through
389
+ `POST /v1/subscriptions/:id`: an explicit `billing_cycle_anchor=now|unchanged` on update is ignored,
390
+ and the `/v1/subscription_items` endpoints change prices without resetting the period.
384
391
  - **Proration arithmetic** is day-fraction approximate (Stripe prorates to the second);
385
392
  `auto_advance` drafts are not finalized an hour later.
386
393
  - **Customer portal extras**: the login page (`login_page.url` is not served), `schedule_at_period_end`
387
- downgrades, `billing_cycle_anchor` resets on plan changes, multi-item subscription updates, locales,
394
+ downgrades, multi-item subscription updates, locales,
388
395
  and payment method configurations. Portal sessions do not expire.
396
+ - **Multi-currency prices** store, merge (on update) and return `currency_options` when expanded,
397
+ and a Checkout Session `currency` charges a payment-mode line in that option. Per-option
398
+ `tiers` and `custom_unit_amount`, and subscription-mode sessions in a non-default currency, are
399
+ refused with a 400; subscriptions and invoices always bill in the price's own currency.
389
400
  - **Webhook endpoint `api_version`**: payloads render at the account's version, not per endpoint.
390
401
  - **Live keys** (`sk_live_…`) are refused with Stripe's 401: the mock is test mode only.
391
402
  - Operations marked unsupported in SUPPORT.md (charge create/update, checkout session update,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createRuntime,
3
3
  validateAccounts
4
- } from "./chunk-P77GCNSW.js";
4
+ } from "./chunk-G3CFEXYC.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-ZSCTOAWQ.js.map
388
+ //# sourceMappingURL=chunk-3IXCGEEZ.js.map