@farthershore/farthershore-js 0.25.0 → 0.27.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.
Files changed (258) hide show
  1. package/CHANGELOG.md +169 -0
  2. package/README.md +15 -9
  3. package/dist/bootstrap.d.ts +1 -2
  4. package/dist/bootstrap.d.ts.map +1 -1
  5. package/dist/bootstrap.js +20 -28
  6. package/dist/bootstrap.js.map +1 -1
  7. package/dist/cache.d.ts +2 -2
  8. package/dist/cache.js +2 -2
  9. package/dist/client.d.ts +4 -3
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +3 -1
  12. package/dist/client.js.map +1 -1
  13. package/dist/component-policy.d.ts +82 -0
  14. package/dist/component-policy.d.ts.map +1 -0
  15. package/dist/component-policy.js +210 -0
  16. package/dist/component-policy.js.map +1 -0
  17. package/dist/components/access-control.d.ts.map +1 -1
  18. package/dist/components/access-control.js +1 -1
  19. package/dist/components/access-control.js.map +1 -1
  20. package/dist/components/access-denied.js +1 -1
  21. package/dist/components/access-denied.js.map +1 -1
  22. package/dist/components/app.d.ts.map +1 -1
  23. package/dist/components/app.js +1 -2
  24. package/dist/components/app.js.map +1 -1
  25. package/dist/components/audit-log-table.d.ts.map +1 -1
  26. package/dist/components/audit-log-table.js +4 -1
  27. package/dist/components/audit-log-table.js.map +1 -1
  28. package/dist/components/auth.d.ts +3 -1
  29. package/dist/components/auth.d.ts.map +1 -1
  30. package/dist/components/auth.js +55 -12
  31. package/dist/components/auth.js.map +1 -1
  32. package/dist/components/bill-preview-card.d.ts +14 -0
  33. package/dist/components/bill-preview-card.d.ts.map +1 -0
  34. package/dist/components/bill-preview-card.js +45 -0
  35. package/dist/components/bill-preview-card.js.map +1 -0
  36. package/dist/components/billing.d.ts.map +1 -1
  37. package/dist/components/billing.js +5 -2
  38. package/dist/components/billing.js.map +1 -1
  39. package/dist/components/chrome.d.ts.map +1 -1
  40. package/dist/components/chrome.js +8 -2
  41. package/dist/components/chrome.js.map +1 -1
  42. package/dist/components/component-access-panel.d.ts +17 -0
  43. package/dist/components/component-access-panel.d.ts.map +1 -0
  44. package/dist/components/component-access-panel.js +155 -0
  45. package/dist/components/component-access-panel.js.map +1 -0
  46. package/dist/components/docs-chrome/collections-context.d.ts +52 -0
  47. package/dist/components/docs-chrome/collections-context.d.ts.map +1 -0
  48. package/dist/components/docs-chrome/collections-context.js +72 -0
  49. package/dist/components/docs-chrome/collections-context.js.map +1 -0
  50. package/dist/components/docs-chrome/collections.d.ts +33 -0
  51. package/dist/components/docs-chrome/collections.d.ts.map +1 -0
  52. package/dist/components/docs-chrome/collections.js +38 -0
  53. package/dist/components/docs-chrome/collections.js.map +1 -0
  54. package/dist/components/docs-chrome/index.d.ts +4 -0
  55. package/dist/components/docs-chrome/index.d.ts.map +1 -1
  56. package/dist/components/docs-chrome/index.js +4 -0
  57. package/dist/components/docs-chrome/index.js.map +1 -1
  58. package/dist/components/docs.d.ts +1 -3
  59. package/dist/components/docs.d.ts.map +1 -1
  60. package/dist/components/docs.js +10 -17
  61. package/dist/components/docs.js.map +1 -1
  62. package/dist/components/index.d.ts +16 -14
  63. package/dist/components/index.d.ts.map +1 -1
  64. package/dist/components/index.js +19 -7
  65. package/dist/components/index.js.map +1 -1
  66. package/dist/components/keys.d.ts.map +1 -1
  67. package/dist/components/keys.js +151 -88
  68. package/dist/components/keys.js.map +1 -1
  69. package/dist/components/legal-consent-gate.d.ts +37 -0
  70. package/dist/components/legal-consent-gate.d.ts.map +1 -1
  71. package/dist/components/legal-consent-gate.js +103 -15
  72. package/dist/components/legal-consent-gate.js.map +1 -1
  73. package/dist/components/legal-document.d.ts +12 -8
  74. package/dist/components/legal-document.d.ts.map +1 -1
  75. package/dist/components/legal-document.js +21 -13
  76. package/dist/components/legal-document.js.map +1 -1
  77. package/dist/components/legal-route.d.ts +17 -0
  78. package/dist/components/legal-route.d.ts.map +1 -0
  79. package/dist/components/legal-route.js +45 -0
  80. package/dist/components/legal-route.js.map +1 -0
  81. package/dist/components/limit-boundary.d.ts +2 -2
  82. package/dist/components/limit-boundary.d.ts.map +1 -1
  83. package/dist/components/limit-boundary.js +4 -8
  84. package/dist/components/limit-boundary.js.map +1 -1
  85. package/dist/components/limit-notice.d.ts.map +1 -1
  86. package/dist/components/limit-notice.js +6 -2
  87. package/dist/components/limit-notice.js.map +1 -1
  88. package/dist/components/payment-required-gate.js +1 -1
  89. package/dist/components/payment-required-gate.js.map +1 -1
  90. package/dist/components/permission-gate.d.ts +64 -17
  91. package/dist/components/permission-gate.d.ts.map +1 -1
  92. package/dist/components/permission-gate.js +173 -22
  93. package/dist/components/permission-gate.js.map +1 -1
  94. package/dist/components/plans-table.d.ts.map +1 -1
  95. package/dist/components/plans-table.js +14 -16
  96. package/dist/components/plans-table.js.map +1 -1
  97. package/dist/components/product-docs/docs-route.d.ts.map +1 -1
  98. package/dist/components/product-docs/docs-route.js +8 -0
  99. package/dist/components/product-docs/docs-route.js.map +1 -1
  100. package/dist/components/product-docs/fetch-product-legal.d.ts +0 -5
  101. package/dist/components/product-docs/fetch-product-legal.d.ts.map +1 -1
  102. package/dist/components/product-docs/fetch-product-legal.js +6 -13
  103. package/dist/components/product-docs/fetch-product-legal.js.map +1 -1
  104. package/dist/components/product-docs/product-docs-index.d.ts +28 -1
  105. package/dist/components/product-docs/product-docs-index.d.ts.map +1 -1
  106. package/dist/components/product-docs/product-docs-index.js +146 -18
  107. package/dist/components/product-docs/product-docs-index.js.map +1 -1
  108. package/dist/components/product-docs/product-docs-view.d.ts +4 -1
  109. package/dist/components/product-docs/product-docs-view.d.ts.map +1 -1
  110. package/dist/components/product-docs/product-docs-view.js +42 -5
  111. package/dist/components/product-docs/product-docs-view.js.map +1 -1
  112. package/dist/components/product-docs/product-docs.d.ts +7 -1
  113. package/dist/components/product-docs/product-docs.d.ts.map +1 -1
  114. package/dist/components/product-docs/product-docs.js +54 -5
  115. package/dist/components/product-docs/product-docs.js.map +1 -1
  116. package/dist/components/product-docs/yaml-lite.d.ts.map +1 -1
  117. package/dist/components/product-docs/yaml-lite.js +4 -1
  118. package/dist/components/product-docs/yaml-lite.js.map +1 -1
  119. package/dist/components/rate-limit-display.d.ts.map +1 -1
  120. package/dist/components/rate-limit-display.js +1 -1
  121. package/dist/components/rate-limit-display.js.map +1 -1
  122. package/dist/components/resource-limit-usage-card.d.ts.map +1 -1
  123. package/dist/components/resource-limit-usage-card.js +1 -1
  124. package/dist/components/resource-limit-usage-card.js.map +1 -1
  125. package/dist/components/root.d.ts +4 -2
  126. package/dist/components/root.d.ts.map +1 -1
  127. package/dist/components/root.js.map +1 -1
  128. package/dist/components/route-panel.d.ts +3 -1
  129. package/dist/components/route-panel.d.ts.map +1 -1
  130. package/dist/components/route-panel.js +6 -1
  131. package/dist/components/route-panel.js.map +1 -1
  132. package/dist/components/spend-cap-control.js +1 -1
  133. package/dist/components/spend-cap-control.js.map +1 -1
  134. package/dist/components/team-panel.d.ts.map +1 -1
  135. package/dist/components/team-panel.js +8 -2
  136. package/dist/components/team-panel.js.map +1 -1
  137. package/dist/components/trial-banner.js +1 -1
  138. package/dist/components/trial-banner.js.map +1 -1
  139. package/dist/components/upgrade-prompt.js +1 -1
  140. package/dist/components/upgrade-prompt.js.map +1 -1
  141. package/dist/components/usage-limits.d.ts +10 -0
  142. package/dist/components/usage-limits.d.ts.map +1 -0
  143. package/dist/components/usage-limits.js +209 -0
  144. package/dist/components/usage-limits.js.map +1 -0
  145. package/dist/components/usage.d.ts +1 -1
  146. package/dist/components/usage.d.ts.map +1 -1
  147. package/dist/components/usage.js +5 -2
  148. package/dist/components/usage.js.map +1 -1
  149. package/dist/deny-codes.d.ts +7 -1
  150. package/dist/deny-codes.d.ts.map +1 -1
  151. package/dist/deny-codes.js +17 -1
  152. package/dist/deny-codes.js.map +1 -1
  153. package/dist/errors/index.d.ts +8 -5
  154. package/dist/errors/index.d.ts.map +1 -1
  155. package/dist/errors/index.js +17 -10
  156. package/dist/errors/index.js.map +1 -1
  157. package/dist/{catalog.d.ts → format/catalog-display.d.ts} +56 -192
  158. package/dist/format/catalog-display.d.ts.map +1 -0
  159. package/dist/{catalog.js → format/catalog-display.js} +144 -479
  160. package/dist/format/catalog-display.js.map +1 -0
  161. package/dist/format/index.d.ts +1 -1
  162. package/dist/format/index.d.ts.map +1 -1
  163. package/dist/format/index.js +27 -23
  164. package/dist/format/index.js.map +1 -1
  165. package/dist/generated/catalog-types.d.ts +15 -64
  166. package/dist/generated/catalog-types.d.ts.map +1 -1
  167. package/dist/generated/catalog-types.js +2 -3
  168. package/dist/generated/catalog-types.js.map +1 -1
  169. package/dist/generated/version.d.ts +2 -2
  170. package/dist/generated/version.js +2 -2
  171. package/dist/http.d.ts +2 -0
  172. package/dist/http.d.ts.map +1 -1
  173. package/dist/http.js +2 -0
  174. package/dist/http.js.map +1 -1
  175. package/dist/index.d.ts +9 -7
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +15 -14
  178. package/dist/index.js.map +1 -1
  179. package/dist/mock/fixtures.d.ts +35 -8
  180. package/dist/mock/fixtures.d.ts.map +1 -1
  181. package/dist/mock/fixtures.js +95 -30
  182. package/dist/mock/fixtures.js.map +1 -1
  183. package/dist/mock/transport.d.ts.map +1 -1
  184. package/dist/mock/transport.js +103 -19
  185. package/dist/mock/transport.js.map +1 -1
  186. package/dist/notification-categories.js +1 -1
  187. package/dist/notification-categories.js.map +1 -1
  188. package/dist/permissions.d.ts +9 -12
  189. package/dist/permissions.d.ts.map +1 -1
  190. package/dist/permissions.js +28 -15
  191. package/dist/permissions.js.map +1 -1
  192. package/dist/react/hooks.d.ts +46 -27
  193. package/dist/react/hooks.d.ts.map +1 -1
  194. package/dist/react/hooks.js +73 -13
  195. package/dist/react/hooks.js.map +1 -1
  196. package/dist/react/index.d.ts +2 -2
  197. package/dist/react/index.d.ts.map +1 -1
  198. package/dist/react/index.js +2 -2
  199. package/dist/react/index.js.map +1 -1
  200. package/dist/react/mounted-context.js +1 -1
  201. package/dist/react/mounted-context.js.map +1 -1
  202. package/dist/react/mounted-types.d.ts +6 -1
  203. package/dist/react/mounted-types.d.ts.map +1 -1
  204. package/dist/react/query-adapter.d.ts +0 -1
  205. package/dist/react/query-adapter.d.ts.map +1 -1
  206. package/dist/react/query-adapter.js +0 -4
  207. package/dist/react/query-adapter.js.map +1 -1
  208. package/dist/react/use-upgrade.js +1 -1
  209. package/dist/resources/account.d.ts +17 -1
  210. package/dist/resources/account.d.ts.map +1 -1
  211. package/dist/resources/account.js +39 -0
  212. package/dist/resources/account.js.map +1 -1
  213. package/dist/resources/billing.d.ts +19 -43
  214. package/dist/resources/billing.d.ts.map +1 -1
  215. package/dist/resources/billing.js +152 -64
  216. package/dist/resources/billing.js.map +1 -1
  217. package/dist/resources/keys.d.ts +40 -13
  218. package/dist/resources/keys.d.ts.map +1 -1
  219. package/dist/resources/keys.js +136 -2
  220. package/dist/resources/keys.js.map +1 -1
  221. package/dist/resources/usage-limits.d.ts +20 -0
  222. package/dist/resources/usage-limits.d.ts.map +1 -0
  223. package/dist/resources/usage-limits.js +79 -0
  224. package/dist/resources/usage-limits.js.map +1 -0
  225. package/dist/test-utils/mock-client.d.ts.map +1 -1
  226. package/dist/test-utils/mock-client.js +42 -9
  227. package/dist/test-utils/mock-client.js.map +1 -1
  228. package/dist/types.d.ts +399 -33
  229. package/dist/types.d.ts.map +1 -1
  230. package/dist/types.js +12 -4
  231. package/dist/types.js.map +1 -1
  232. package/package.json +2 -1
  233. package/dist/catalog.d.ts.map +0 -1
  234. package/dist/catalog.js.map +0 -1
  235. package/dist/component-permissions.d.ts +0 -6
  236. package/dist/component-permissions.d.ts.map +0 -1
  237. package/dist/component-permissions.js +0 -36
  238. package/dist/component-permissions.js.map +0 -1
  239. package/dist/components/bill-estimator.d.ts +0 -18
  240. package/dist/components/bill-estimator.d.ts.map +0 -1
  241. package/dist/components/bill-estimator.js +0 -30
  242. package/dist/components/bill-estimator.js.map +0 -1
  243. package/dist/components/credit.d.ts +0 -20
  244. package/dist/components/credit.d.ts.map +0 -1
  245. package/dist/components/credit.js +0 -33
  246. package/dist/components/credit.js.map +0 -1
  247. package/dist/components/move-to-latest.d.ts +0 -16
  248. package/dist/components/move-to-latest.d.ts.map +0 -1
  249. package/dist/components/move-to-latest.js +0 -68
  250. package/dist/components/move-to-latest.js.map +0 -1
  251. package/dist/components/top-up-prompt.d.ts +0 -21
  252. package/dist/components/top-up-prompt.d.ts.map +0 -1
  253. package/dist/components/top-up-prompt.js +0 -59
  254. package/dist/components/top-up-prompt.js.map +0 -1
  255. package/dist/top-up.d.ts +0 -12
  256. package/dist/top-up.d.ts.map +0 -1
  257. package/dist/top-up.js +0 -33
  258. package/dist/top-up.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,175 @@
3
3
  All notable changes to `@farthershore/farthershore-js` are documented here.
4
4
  This project adheres to Semantic Versioning (pre-1.0: minors may break).
5
5
 
6
+ ## [0.27.0] - 2026-08-31
7
+
8
+ ### Removed — subscriber-facing "move to latest plan" (BREAKING)
9
+
10
+ The billing redesign decoupled meters from plans, which removed the reason this
11
+ control existed. A release's `measurement_schema` is built from the
12
+ business-wide commerce manifest (every measure, meter, and route binding), so
13
+ every plan in the release cohort sees a newly declared meter — and new measures
14
+ adopt the current published rate. A subscriber whose plan spec is unchanged
15
+ stays in the new release's cohort and picks the new meter up automatically. The
16
+ old failure mode this control worked around — "the feature I want reports a
17
+ meter my pinned plan's dimension map doesn't have, so I must move plans" — no
18
+ longer exists.
19
+
20
+ - **REMOVED `MoveToLatestPlan`** and its `MoveToLatestPlanProps`.
21
+ - **REMOVED `fs.billing.migrateToLatest()`** and **`useBilling().migrateToLatest`**.
22
+ - The backing `POST /portal/businesses/:businessId/me/migrate-latest` route is
23
+ removed from core in the same change, along with the unused
24
+ `POST /consumer/subscriptions/:subscriptionId/migrate-latest`.
25
+
26
+ Converging a subscriber whose plan's own economics changed (price, included
27
+ allowance, funding buckets, limits) is unchanged and remains an OPERATOR action:
28
+ the builder's Users tab, or `farthershore consumer migrate-latest`. Subscribers
29
+ still change plans with `changePlan()`.
30
+
31
+ ## [0.26.0] - 2026-08-30
32
+
33
+ Three efforts ship together: the billing redesign (already on `main` but never
34
+ published — it was staged as `1.0.0`, corrected here to stay on the pre-1.0
35
+ line), managed docs collections, and the uniform legal surface.
36
+
37
+ ### Changed — uniform legal documents (BREAKING)
38
+
39
+ Legal documents are now fully kind-generic and authored-only. `terms` and
40
+ `privacy` have no special status: they are ordinary kinds a builder declares in
41
+ `legal/_index.yaml`, exactly like `acceptable-use` or `dpa`.
42
+
43
+ - **REMOVED `TermsOfService` and `PrivacyPolicy`** (and their prop types). Use
44
+ `<LegalDocument kind="terms" />` — one component for every kind.
45
+ - **REMOVED the platform-terms fallback** from `LegalDocument` and `DocsLegal`,
46
+ along with `getPlatformLegalUrl`. A legal document exists only when the
47
+ builder authored it; the platform's terms govern the BUILDER's use of Farther
48
+ Shore, not a subscriber's use of the builder's product, so presenting them as
49
+ a stand-in was misleading. Unpublished documents now say so plainly.
50
+ - **Uniform routing**: every document lives at `/legal/<kind>` and `/legal`
51
+ indexes them. New `legalDocHref` / `legalIndexHref` / `parseLegalRoute`
52
+ helpers (plus `LEGAL_ROUTE_PREFIX`, `LegalRoute`) are the single source of the
53
+ path shape. Hosts that linked `/terms` or `/privacy` must move to
54
+ `/legal/terms` and `/legal/privacy`.
55
+ - **Derived link lists**: `FsFooter` and `DocsLegal` now list every published
56
+ document instead of a fixed Terms/Privacy pair. New `useLegalDocuments()`
57
+ exposes the same list (type `PublishedLegalDocument`).
58
+ - **Consent gate is a per-document wizard** — one step per OUTSTANDING document
59
+ (`none`-mode and already-accepted never appear), with a single atomic submit
60
+ at the end. New `useLegalConsentWizard()` (`UseLegalConsentWizardResult`)
61
+ holds all behavior; the component ships no CSS and no animation JS, exposing
62
+ `data-fs-legal-step` / `-steps` / `-action` / `-direction` and keying the step
63
+ card by kind so a host's enter animation replays per step.
64
+
65
+ ### Added — docs collections
66
+
67
+ Managed docs can now be logically separated into multiple self-contained
68
+ bundles ("collections") — e.g. narrative **Docs** alongside an **API
69
+ reference** — rendered by the default portal as a tab bar. Strictly opt-in: an
70
+ index without `collections:` parses and renders byte-identically to before.
71
+
72
+ - `_index.yaml` gains optional `collections:` (each entry: `id`, `label`,
73
+ optional `icon` image URL, `defaultPage`, its own `navigation`) and
74
+ `defaultCollection`. When present, top-level `navigation`/`defaultPage` move
75
+ into the collections.
76
+ - **Collection ids are route + storage prefixes.** Page slugs become
77
+ collection-qualified (`<id>/<slug>`, e.g. `guides/intro`): the URL is
78
+ `/docs/guides/intro`, the R2 object is `<prefix>/guides/intro.mdx`, and a
79
+ bare `/docs/<id>` lands on that collection's `defaultPage`. Slugs in a
80
+ collection's `navigation` are authored collection-relative; the parser
81
+ qualifies them.
82
+ - New headless `docs-chrome` collections layer (mirrors the language layer):
83
+ `resolveActiveCollection`, `DocsCollectionsProvider` /
84
+ `useDocsCollections` / `useDocsCollectionsState`, and
85
+ `DocsCollectionSelector` — an unstyled `role="group"` of
86
+ `aria-pressed` buttons that renders nothing at ≤ 1 collection. Ships no CSS;
87
+ hosts style `.fs-docs-collections`.
88
+ - New exports: the pieces above plus `DocsCollection`,
89
+ `DocsCollectionsContextValue`, `DocsCollectionSelectorProps`,
90
+ `UseDocsCollectionsStateOptions`, and the parsed-index element type
91
+ `BusinessDocsCollection` (alongside `BusinessDocsIndex`);
92
+ `BusinessDocsIndex` gains `collections?` / `defaultCollection?`, and
93
+ `BusinessDocsView` accepts `activeCollection` to scope the shell to one
94
+ bundle.
95
+ - Parser hardening shared with the reader: page-slug path segments are
96
+ validated (`.`/`..`/`\`/empty dropped) and a collection `icon` must be an
97
+ absolute/root-relative/`data:` URL (bare tokens are dropped rather than
98
+ rendered as a broken `<img>`).
99
+
100
+ ### Changed — billing redesign (FAR-912)
101
+
102
+ Plans carry no money; usage money comes ONLY from Core's bill preview, computed
103
+ by the same engine that invoices.
104
+
105
+ ### Added
106
+
107
+ - **`fs.billing.getBillPreview()`** → `BillPreview` (`GET /me/bill-preview`).
108
+ A discriminated union on `disclosure`: `TransparentBillPreview` (rating
109
+ `windows`, `totals.{ratedNanos,fundedNanos,receivableNanos}`, nanodollar
110
+ `allowances`) | `OpaqueBillPreview` (`allowances` with kind / state /
111
+ expiry / authored `display` only — no windows, totals, or amounts). Every
112
+ nanodollar field is a decimal STRING. The reader fails closed: anything not
113
+ verbatim `disclosure: "transparent"` is read as opaque.
114
+ - **`useBillPreview()`** React hook (query key `["billPreview", businessId,
115
+ organizationId]`; re-reads on every entitlement mutation and org switch).
116
+ - **`<BillPreviewCard>`** component — renders the preview and honors
117
+ disclosure (transparent: fee, rated / covered / due, windows, allowance
118
+ balances; opaque: allowances only, no rates or amounts).
119
+ - **`format.formatNanos(nanos, { currency, locale })`** — formats a
120
+ decimal-string / bigint nanodollar amount with bigint arithmetic (never
121
+ `Number()`); cent precision ≥ 1¢, up to 6 fraction digits below.
122
+ - `Plan.kind: PlanKind` — the builder's DECLARED kind (`free` | `flat` |
123
+ `usage` | `prepaid` | `hybrid` | `trial` | `custom`), read verbatim from the
124
+ wire. `PlanPricePresentation.kind` is now this declared kind.
125
+ - Mock mode: `GET /me/bill-preview` served from `mockBillPreviewTransparent` /
126
+ `mockBillPreviewOpaque` (`mockState.billPreviewDisclosure` toggles).
127
+ - Test-utils mock client: `billing.getBillPreview()` returns the empty
128
+ transparent preview.
129
+ - **`format.describePlanKind(kind)`** → `{ kind, label, billsUsage }` — the
130
+ ONE declared-kind label map (Free / Subscription / Usage-based / Prepaid /
131
+ Subscription + usage / Free trial / Custom) plus whether the kind bills
132
+ usage through a commerce binding (`usage` / `prepaid` / `hybrid` /
133
+ `custom`). `<PlansTable>`, the portal template and the dashboard all read
134
+ it, so a plan never shows two different kind labels across screens.
135
+ `PlanKindDescription` is exported at the root.
136
+ - **`BucketState`** — the allowance lifecycle state, mirroring Core verbatim
137
+ (`PENDING` | `AVAILABLE` | `EXPIRY_PENDING` | `FROZEN` | `EXPIRED` |
138
+ `CANCELLED`). `BillPreviewAllowance.state` / `OpaqueBillPreviewAllowance.state`
139
+ are typed to it; the reader drops an allowance whose state it cannot place.
140
+ - **`NanosAmount`** = `string | null`. Every nanodollar field on the preview
141
+ (`totals.*`, `windows[].ratedNanos`, allowance balances) is now
142
+ `NanosAmount`: a malformed wire value (`"1e9"`, `1.5`, `null`) maps to
143
+ `null` = unavailable, never to `"0"`, and `<BillPreviewCard>` renders it as
144
+ "unavailable" — never as a wrong `$0`.
145
+ - `bootstrap().availableModules` derives `billing` / `usage-metered` from
146
+ each plan's DECLARED `kind` (+ recurring fee for `billing`), never from the
147
+ structural meter list.
148
+
149
+ ### Removed
150
+
151
+ - **BREAKING: `Plan.free` is gone** — read `plan.kind === "free"`.
152
+ - **BREAKING: plan meters carry no money.** `PlanMeter` is structural
153
+ `{ dimension, kind? }`; `price_per_unit_micros`, `included_units`, and
154
+ `tiered` no longer exist on the wire or the domain type, and `mapPlan`
155
+ strips anything else.
156
+ - **BREAKING: the plan classifier and every meter-money helper are deleted**
157
+ from `format`: `classifyPlan`, `isFreePlan`, `isDeclaredFreePlan`,
158
+ `isPayAsYouGoPlan`, `formatPriceFromMicros`, `summarizeMeterPricing`,
159
+ `describeMeterTiers`; the `MeterTierDescription` / `MeterTierLine` types;
160
+ `PlanPricePresentation.usageSummary`. `quotaForDimension` reads month-window
161
+ limit rules only. `sortPlansForDisplay` / `synthesizePlanFeatures*` /
162
+ `describePlanSummary` / `selectAutoEnrollPlan` read `plan.kind`.
163
+ - **BREAKING: `<BillEstimator>` / `BillEstimatorProps` are removed** —
164
+ use `<BillPreviewCard>` (no re-export shim).
165
+ - The `credit_balance` managed component id is removed from
166
+ `MANAGED_COMPONENT_DEFAULTS` (never a shipped component).
167
+
168
+ ### Changed
169
+
170
+ - `<PlansTable>` badges and hides the free tier by `plan.kind`, and no longer
171
+ renders a per-meter price list under the card.
172
+ - `presentPlanPrice` / `formatPlanPrice` headline a fee-less plan by its
173
+ declared kind ("Free", "Usage-based", "Prepaid", "Free trial", "Custom").
174
+
6
175
  ## [0.25.0] - 2026-08-10
7
176
 
8
177
  Documentation versioning removed — product docs are now single, always-latest.
package/README.md CHANGED
@@ -3,10 +3,9 @@
3
3
  The **Farther Shore Frontend SDK** — the browser + React integration layer for
4
4
  your product's subscriber portal.
5
5
 
6
- > **Status: `0.25.0`.** Pre-1.0 (`0.x`): a minor bump (e.g. `0.9.x` → `0.10.0`)
7
- > may include breaking changes, so a caret range is unsafe — **pin this package
8
- > exactly** (`0.9.0`) or use a patch-only tilde (`~0.9.0`). Changes are recorded
9
- > in [`CHANGELOG.md`](./CHANGELOG.md).
6
+ > **Status: `0.27.0` (pre-1.0).** A MINOR bump may include breaking changes;
7
+ > patches are additive. Pin the version you build against and read
8
+ > [`CHANGELOG.md`](./CHANGELOG.md) before upgrading.
10
9
 
11
10
  ```bash
12
11
  pnpm add @farthershore/farthershore-js # React is an optional peer (for /react)
@@ -185,14 +184,12 @@ import {
185
184
  ApiKeysPanel,
186
185
  UsageCard,
187
186
  BillingSummary,
188
- CreditBalance,
189
187
  TeamPanel,
190
188
  AuditLogTable,
191
189
  RateLimitDisplay,
192
- BillEstimator,
190
+ BillPreviewCard,
193
191
  ResourceLimitUsageCard,
194
192
  UpgradePrompt,
195
- TopUpPrompt,
196
193
  DocsLegal,
197
194
  ResourcesPanel,
198
195
  RoutePanel,
@@ -345,15 +342,24 @@ codes, and more — lives at the `@farthershore/farthershore-js/errors` subpath.
345
342
 
346
343
  ## Display helpers
347
344
 
348
- Pure catalog/pricing/usage formatting helpers are grouped under the `format`
349
- namespace, so every frontend renders money, dates, and quotas identically:
345
+ Pure catalog display helpers (declared plan kind, recurring price, quotas,
346
+ dates, status chips) are grouped under the `format` namespace, so every
347
+ frontend renders them identically:
350
348
 
351
349
  ```ts
352
350
  import { format } from "@farthershore/farthershore-js";
353
351
 
354
352
  format.formatCents(1234); // "$12.34"
353
+ format.formatNanos("12450000000"); // "$12.45" — bill-preview nanos, bigint
355
354
  ```
356
355
 
356
+ Plans carry **no** per-unit money (`plan.meters` is structural
357
+ `{ dimension, kind? }`; `plan.kind` is the builder's declared kind). Usage
358
+ money comes only from Core's bill preview — `fs.billing.getBillPreview()`,
359
+ `useBillPreview()`, or the `<BillPreviewCard>` component — computed by the
360
+ same engine that invoices, and honoring the plan's disclosure (`transparent`
361
+ shows windows / totals / balances; `opaque` shows allowances only).
362
+
357
363
  ## Testing
358
364
 
359
365
  `@farthershore/farthershore-js/test-utils` gives you a fully-typed mock client,
@@ -3,8 +3,7 @@ import type { Bootstrap, Plan } from "./types.js";
3
3
  import type { PortalPlanWire, PlanMeterWire, PlanLimitWire } from "./generated/catalog-types.js";
4
4
  type RawPlanMeter = PlanMeterWire;
5
5
  type RawPlanLimit = PlanLimitWire;
6
- export type RawPortalPlan = Omit<PortalPlanWire, "grants" | "meters" | "limits" | "planDetails" | "resource_limits" | "max_monthly_spend_cents" | "min_monthly_spend_cents"> & {
7
- grants?: PortalPlanWire["grants"] | null;
6
+ export type RawPortalPlan = Omit<PortalPlanWire, "meters" | "limits" | "planDetails" | "resource_limits" | "max_monthly_spend_cents" | "min_monthly_spend_cents"> & {
8
7
  meters?: RawPlanMeter[] | null;
9
8
  limits?: RawPlanLimit[] | null;
10
9
  planDetails?: string[] | null;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAEV,SAAS,EAKT,IAAI,EAIL,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,MAAM,8BAA8B,CAAC;AAkDtC,KAAK,YAAY,GAAG,aAAa,CAAC;AAClC,KAAK,YAAY,GAAG,aAAa,CAAC;AAQlC,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,cAAc,EACZ,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,yBAAyB,GACzB,yBAAyB,CAC5B,GAAG;IACF,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AA6FF;;uEAEuE;AACvE,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CA4B9C;AAsED;kDACkD;AAClD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CA6C7E"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,KAAK,EAEV,SAAS,EAKT,IAAI,EAIL,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,MAAM,8BAA8B,CAAC;AAkDtC,KAAK,YAAY,GAAG,aAAa,CAAC;AAClC,KAAK,YAAY,GAAG,aAAa,CAAC;AAQlC,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,cAAc,EACZ,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,yBAAyB,GACzB,yBAAyB,CAC5B,GAAG;IACF,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AAsFF;;uEAEuE;AACvE,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAuB9C;AAyED;kDACkD;AAClD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CA6C7E"}
package/dist/bootstrap.js CHANGED
@@ -3,14 +3,15 @@
3
3
  // from — and caches businessId / environmentId / gateway origin on the client so
4
4
  // every later call knows where to go.
5
5
  //
6
- // The resolve DTO carries the business's full catalog: the plan list (the rich
7
- // 5-knob unified billing shape — recurring fee, metered $/unit, trial,
8
- // min/max spend, included quotas, credit grants), business-level meters, and the
9
- // docs/legal MDX origins. `bootstrap()` surfaces ALL of it so a generated or
10
- // managed frontend can render plans/pricing/quotas/credit/docs/legal and a
11
- // subscribe flow — not just an account dashboard.
6
+ // The resolve DTO carries the business's full catalog: the plan list (declared
7
+ // kind, recurring fee, trial, min/max spend, structural meters and limit
8
+ // rules — NO meter money), business-level meters, and the docs/legal MDX
9
+ // origins. `bootstrap()` surfaces ALL of it so a generated or managed
10
+ // frontend can render plans/pricing/quotas/docs/legal and a subscribe flow —
11
+ // not just an account dashboard.
12
12
  import { coreFetch } from "./http.js";
13
13
  import { consumePrimedResolve } from "./boot-primer.js";
14
+ import { describePlanKind } from "./format/catalog-display.js";
14
15
  import { FartherShoreNotReadyError } from "./errors/index.js";
15
16
  // ── Mappers ───────────────────────────────────────────────────────────────
16
17
  function mapMeter(m) {
@@ -63,18 +64,11 @@ function mapEnv(e) {
63
64
  };
64
65
  }
65
66
  function mapPlanMeter(m) {
67
+ // Structural only — dimension + aggregation kind. The plan carries NO meter
68
+ // money; rates/allowances come from `fs.billing.getBillPreview()`.
66
69
  return {
67
70
  dimension: m.dimension,
68
- price_per_unit_micros: m.price_per_unit_micros,
69
- // E1 — exact-offer fields. Previously STRIPPED here (the SDK-side meter
70
- // drop): kind / included_units / tiered now ride through so presenters
71
- // can render included allotments + tier schedules. All optional — absent
72
- // on pre-expansion cores means flat linear pricing.
73
71
  ...(m.kind ? { kind: m.kind } : {}),
74
- ...(typeof m.included_units === "number"
75
- ? { included_units: m.included_units }
76
- : {}),
77
- ...(m.tiered ? { tiered: m.tiered } : {}),
78
72
  };
79
73
  }
80
74
  function mapPlanLimit(l) {
@@ -96,11 +90,8 @@ export function mapPlan(p) {
96
90
  key: p.key,
97
91
  name: p.name,
98
92
  description: p.description ?? null,
99
- // The declaration. Defaulted defensively rather than trusted: a core that
100
- // predates the field would otherwise yield `undefined`, and an undefined
101
- // free tier reads as "no free plan" — which is the safe direction (show
102
- // the picker) rather than auto-enrolling someone onto a billable plan.
103
- free: p.free === true,
93
+ // The DECLARED kind, verbatim. Never inferred from shape.
94
+ kind: p.kind,
104
95
  recurringFeeCents: p.recurring_fee_cents,
105
96
  // The platform omits `billing_interval` for monthly plans (the default);
106
97
  // default a missing/absent value to "month" so the UI always has a cadence.
@@ -108,7 +99,6 @@ export function mapPlan(p) {
108
99
  // USD-only platform omits `currency` today; default it so the normalized
109
100
  // model always carries one (old-Core responses stay decodable).
110
101
  currency: p.currency ?? "USD",
111
- grants: p.grants ?? [],
112
102
  trialDays: p.trial_days,
113
103
  maxMonthlySpendCents: p.max_monthly_spend_cents ?? null,
114
104
  minMonthlySpendCents: p.min_monthly_spend_cents ?? null,
@@ -116,7 +106,6 @@ export function mapPlan(p) {
116
106
  limits: (p.limits ?? []).map(mapPlanLimit),
117
107
  planDetails: p.planDetails ?? [],
118
108
  resourceLimits: p.resource_limits ?? {},
119
- ...(p.creditPolicy ? { creditPolicy: p.creditPolicy } : {}),
120
109
  };
121
110
  }
122
111
  /** Map the resolve DTO's declared-resource catalog into the SDK domain type,
@@ -160,22 +149,25 @@ function mapDeclaredResources(raw, plans, featuredCompiledPlanId) {
160
149
  }
161
150
  /** Derive coarse resource keys from the resolved business + plans so a
162
151
  * managed frontend can branch on what the business actually offers (instead of
163
- * the previously hard-coded empty array). */
152
+ * the previously hard-coded empty array).
153
+ *
154
+ * Read from each plan's DECLARED `kind` (plus its recurring fee for
155
+ * "billing"), never from the structural meter list: `plan.meters` carries no
156
+ * money, so a usage plan priced only through commerce bindings still bills
157
+ * usage, and a free plan carrying a limits meter does not. */
164
158
  function deriveAvailableModules(business, plans) {
165
159
  const caps = new Set();
166
160
  if (plans.length > 0)
167
161
  caps.add("plans");
168
- if (plans.some((p) => p.recurringFeeCents > 0 || p.meters.length > 0)) {
162
+ const billsUsage = plans.some((p) => describePlanKind(p.kind).billsUsage);
163
+ if (billsUsage || plans.some((p) => p.recurringFeeCents > 0)) {
169
164
  caps.add("billing");
170
165
  }
171
- if (plans.some((p) => p.meters.length > 0))
166
+ if (billsUsage)
172
167
  caps.add("usage-metered");
173
168
  if (plans.some((p) => p.limits.some((l) => l.window.type === "named" && l.window.name === "month"))) {
174
169
  caps.add("usage-quota");
175
170
  }
176
- if (plans.some((p) => p.grants.length > 0 || p.trialDays > 0)) {
177
- caps.add("credit-grants");
178
- }
179
171
  if (business.docsBaseUrl)
180
172
  caps.add("docs");
181
173
  if (business.legalBaseUrl)
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
package/dist/cache.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare function bustReadCache(ctx: ClientContext): void;
25
25
  * `setSessionToken()` landing after a 401 left the payment gate open (its `/me`
26
26
  * read had FAILED, and failures evict rather than cache — so there was no entry
27
27
  * to drop, only a live reader to poke), and sibling billing surfaces kept the
28
- * old plan after `migrateToLatest()`.
28
+ * old plan after `changePlan()`.
29
29
  *
30
30
  * Listeners are woken unconditionally, never gated on the cache being
31
31
  * non-empty, precisely because the failed-read case leaves nothing cached.
@@ -40,7 +40,7 @@ export declare function bustReadCacheAndWake(ctx: ClientContext): void;
40
40
  /**
41
41
  * Reset everything an ENTITLEMENT-MUTATING action invalidates (W6.3): the read
42
42
  * cache AND the cached short-lived gateway context token. A plan change /
43
- * cancel / restore / top-up / subscribe can change what the edge grants, so the
43
+ * cancel / restore / subscribe can change what the edge grants, so the
44
44
  * next feature call must re-mint a token reflecting the new entitlement instead
45
45
  * of riding the stale one. Use this (not bare {@link bustReadCache}) after any
46
46
  * mutation that can move the subscriber's entitlement.
package/dist/cache.js CHANGED
@@ -50,7 +50,7 @@ export function bustReadCache(ctx) {
50
50
  * `setSessionToken()` landing after a 401 left the payment gate open (its `/me`
51
51
  * read had FAILED, and failures evict rather than cache — so there was no entry
52
52
  * to drop, only a live reader to poke), and sibling billing surfaces kept the
53
- * old plan after `migrateToLatest()`.
53
+ * old plan after `changePlan()`.
54
54
  *
55
55
  * Listeners are woken unconditionally, never gated on the cache being
56
56
  * non-empty, precisely because the failed-read case leaves nothing cached.
@@ -69,7 +69,7 @@ export function bustReadCacheAndWake(ctx) {
69
69
  /**
70
70
  * Reset everything an ENTITLEMENT-MUTATING action invalidates (W6.3): the read
71
71
  * cache AND the cached short-lived gateway context token. A plan change /
72
- * cancel / restore / top-up / subscribe can change what the edge grants, so the
72
+ * cancel / restore / subscribe can change what the edge grants, so the
73
73
  * next feature call must re-mint a token reflecting the new entitlement instead
74
74
  * of riding the stale one. Use this (not bare {@link bustReadCache}) after any
75
75
  * mutation that can move the subscriber's entitlement.
package/dist/client.d.ts CHANGED
@@ -5,6 +5,7 @@ import { type BusinessResource } from "./resources/business.js";
5
5
  import { type AuthResource } from "./resources/auth.js";
6
6
  import { type KeysResource } from "./resources/keys.js";
7
7
  import { type UsageResource } from "./resources/usage.js";
8
+ import { type UsageLimitsResource } from "./resources/usage-limits.js";
8
9
  import { type BillingResource } from "./resources/billing.js";
9
10
  import { type PlansResource } from "./resources/plans.js";
10
11
  import { type AuditLogsResource, type NotificationsResource, type OrganizationsResource, type RbacResource, type TeamResource } from "./resources/account.js";
@@ -31,8 +32,6 @@ export interface PrefetchSurface {
31
32
  apiKeys(): void;
32
33
  /** Warm the subscription read (billing surfaces). */
33
34
  subscription(): void;
34
- /** Warm the credit-balance read (billing surfaces). */
35
- creditBalance(): void;
36
35
  }
37
36
  export interface FartherShoreClient {
38
37
  /** The client's resolved runtime context (coreUrl, portalHost, businessId,
@@ -114,7 +113,9 @@ export interface FartherShoreClient {
114
113
  readonly keys: KeysResource;
115
114
  /** Per-dimension usage totals + recent events for this business. */
116
115
  readonly usage: UsageResource;
117
- /** The consumer's subscription, the Stripe billing portal, and credit balance. */
116
+ /** Subscriber-managed per-actor usage limits. */
117
+ readonly usageLimits: UsageLimitsResource;
118
+ /** The consumer's subscription and Stripe billing portal. */
118
119
  readonly billing: BillingResource;
119
120
  /** The business's plan catalog + the subscribe/checkout flow. */
120
121
  readonly plans: PlansResource;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAInB,MAAM,aAAa,CAAC;AAOrB,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA2BhF;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,IAAI,IAAI,IAAI,CAAC;IACb,0EAA0E;IAC1E,EAAE,IAAI,IAAI,CAAC;IACX,gFAAgF;IAChF,KAAK,IAAI,IAAI,CAAC;IACd,6BAA6B;IAC7B,OAAO,IAAI,IAAI,CAAC;IAChB,qDAAqD;IACrD,YAAY,IAAI,IAAI,CAAC;IACrB,uDAAuD;IACvD,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;6EAKyE;IACzE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC;yCACqC;IACrC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,+DAA+D;IAC/D,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACpC,8EAA8E;IAC9E,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5C;;gDAE4C;IAC5C,gBAAgB,CACd,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAC9D,IAAI,CAAC;IACR;;;yDAGqD;IACrD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvD;;4EAEwE;IACxE,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAAC;IACnC;;;;uBAImB;IACnB,iBAAiB,CACf,OAAO,EACL,CAAC,CAAC,GAAG,EAAE,OAAO,mBAAmB,EAAE,oBAAoB,KAAK,IAAI,CAAC,GAAG,IAAI,GACzE,IAAI,CAAC;IACR;;;wFAGoF;IACpF,UAAU,IAAI,IAAI,CAAC;IAEnB;;;yDAGqD;IACrD,QAAQ,CAAC,SAAS,EAAE;QAClB,GAAG,IAAI,OAAO,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;KAC7C,CAAC;IAEF;;;;wEAIoE;IACpE,QAAQ,CAAC,UAAU,EAAE;QACnB,GAAG,IAAI,OAAO,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;KAC7C,CAAC;IAEF;;;;;;;;;;;;mEAY+D;IAC/D,QAAQ,CAAC,SAAS,EAAE;QAClB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;KAC7C,CAAC;IAEF,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B;;sBAEkB;IAClB,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACvE,wEAAwE;IACxE,WAAW,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B;;;oCAGgC;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B;6DACyD;IACzD,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE3D,kFAAkF;IAClF,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAE5C;;;;;;;;OAQG;IACH,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,kBAAuB,GAC9B,kBAAkB,CAQpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0CAA0C,CACxD,MAAM,GAAE,0BAA+B,GACtC,kBAAkB,CA8LpB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -19,6 +19,7 @@ import { createBusinessResource, } from "./resources/business.js";
19
19
  import { createAuthResource, primePersistedPersona, } from "./resources/auth.js";
20
20
  import { createKeysResource } from "./resources/keys.js";
21
21
  import { createUsageResource } from "./resources/usage.js";
22
+ import { createUsageLimitsResource, } from "./resources/usage-limits.js";
22
23
  import { createBillingResource, } from "./resources/billing.js";
23
24
  import { createPlansResource } from "./resources/plans.js";
24
25
  import { createAccountSurface, } from "./resources/account.js";
@@ -136,6 +137,7 @@ export function createFartherShoreClientWithPlatformConfig(config = {}) {
136
137
  const account = createAccountSurface(ctx);
137
138
  const keys = createKeysResource(ctx);
138
139
  const usage = createUsageResource(ctx);
140
+ const usageLimits = createUsageLimitsResource(ctx);
139
141
  const billing = createBillingResource(ctx, account.me);
140
142
  const entitlements = createEntitlementsResource({
141
143
  ctx,
@@ -157,7 +159,6 @@ export function createFartherShoreClientWithPlatformConfig(config = {}) {
157
159
  usage: () => warm(() => usage.snapshot()),
158
160
  apiKeys: () => warm(() => keys.list()),
159
161
  subscription: () => warm(() => billing.subscription()),
160
- creditBalance: () => warm(() => billing.creditBalance()),
161
162
  };
162
163
  return {
163
164
  context: ctx,
@@ -265,6 +266,7 @@ export function createFartherShoreClientWithPlatformConfig(config = {}) {
265
266
  auth: createAuthResource(ctx),
266
267
  keys,
267
268
  usage,
269
+ usageLimits,
268
270
  billing,
269
271
  plans: createPlansResource(ctx, ensureBootstrap),
270
272
  me: account.me,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { ComponentAccessPolicyRow } from "./types.js";
2
+ /** The single gate-mode vocabulary — a faithful copy of the contracts
3
+ * `COMPONENT_GATE_MODES` (vocabulary-equality-tested in test/). */
4
+ export declare const COMPONENT_GATE_MODES: readonly ["hide", "disable", "readOnly", "denied"];
5
+ export type ComponentGateMode = (typeof COMPONENT_GATE_MODES)[number];
6
+ /** True iff `mode` is a member of {@link COMPONENT_GATE_MODES}. */
7
+ export declare function isComponentGateMode(mode: string): mode is ComponentGateMode;
8
+ /** A managed default entry — faithful copy of the contracts
9
+ * `ComponentPermissionDefault` shape. */
10
+ export interface ComponentPermissionDefault {
11
+ permission: string | null;
12
+ writePermission?: string;
13
+ presentational?: true;
14
+ }
15
+ /** FAITHFUL COPY of `@farthershore/contracts` `componentPermissionDefaults`
16
+ * (parity-tested in test/component-policy-parity.test.ts — the shipped SDK
17
+ * bundle must stay contracts-free). */
18
+ export declare const MANAGED_COMPONENT_DEFAULTS: Readonly<Record<string, ComponentPermissionDefault>>;
19
+ /** FAITHFUL COPY of contracts/evolution `SENSITIVE_COMPONENT_KEYS`.
20
+ * The SDK cannot import contracts at runtime, so parity is pinned in test/. */
21
+ export declare const SENSITIVE_COMPONENT_KEYS: readonly ["audit_log", "api_keys_panel", "team_panel"];
22
+ /** True iff `id` names a confidentiality-sensitive managed component. */
23
+ export declare function isSensitiveComponentKey(id: string): boolean;
24
+ /** Faithful copy of the contracts `CUSTOM_COMPONENT_KEY_PATTERN`. */
25
+ export declare const CUSTOM_COMPONENT_KEY_PATTERN: RegExp;
26
+ /** True iff `id` is a well-formed builder-custom component key. */
27
+ export declare function isCustomComponentKey(id: string): boolean;
28
+ export interface ComponentRegistration {
29
+ /** A `custom:<slug>` key (builder components) or a managed id (to override
30
+ * a managed default host-side). */
31
+ id: string;
32
+ /** Render-gate permission. Omit to fall through to overlay/managed/derived
33
+ * resolution. */
34
+ permission?: string;
35
+ /** Mutating-affordance permission; derived `<subject>:write` otherwise. */
36
+ writePermission?: string;
37
+ /** Default deny render for this component. */
38
+ gateMode?: ComponentGateMode;
39
+ /** Renders ungated by design. Explicit only — never inferred. */
40
+ presentational?: boolean;
41
+ }
42
+ /**
43
+ * Register a builder component's gate policy. Ids are namespaced
44
+ * `custom:<slug>` (managed ids are also accepted, letting a host re-declare a
45
+ * managed component's default gate). Throws on a malformed id — a typo'd
46
+ * registration would otherwise silently resolve DENIED.
47
+ */
48
+ export declare function registerComponent(registration: ComponentRegistration): void;
49
+ /** Remove a registration (host teardown / tests). */
50
+ export declare function unregisterComponent(id: string): void;
51
+ /** TEST ONLY — clear every registration. */
52
+ export declare function __resetComponentRegistry(): void;
53
+ /** The resolved gate policy for one component id. */
54
+ export interface ResolvedComponentPolicy {
55
+ componentId: string;
56
+ /** Render-gate permission; null ONLY when `presentational`. */
57
+ permission: string | null;
58
+ /** Every render permission that must pass. Sensitive components include
59
+ * their managed default as an AND-floor plus any stricter override. */
60
+ requiredPermissions: readonly string[];
61
+ /** Permission for the component's mutating affordances. */
62
+ writePermission: string;
63
+ /** How the component renders when the viewer lacks `permission`. */
64
+ gateMode: ComponentGateMode;
65
+ /** Renders ungated (explicit flag only). */
66
+ presentational: boolean;
67
+ /** Whether the id is one of the contracts-owned sensitive components. */
68
+ sensitive: boolean;
69
+ /** True when the id or its resolved permission policy is invalid: render
70
+ * DENIED before evaluating any permission claim. */
71
+ unknown: boolean;
72
+ }
73
+ /**
74
+ * Resolve the gate policy for `componentId`.
75
+ *
76
+ * Per-field precedence: builder registration → subscriber overlay (`/me`) →
77
+ * managed default → derived fail-closed default. Unknown ids and invalid
78
+ * resolved permission sets resolve `{ unknown: true, gateMode: "denied" }` —
79
+ * the gate renders AccessDenied, never the component.
80
+ */
81
+ export declare function resolveComponentPolicy(componentId: string, overlays?: readonly ComponentAccessPolicyRow[] | null): ResolvedComponentPolicy;
82
+ //# sourceMappingURL=component-policy.d.ts.map