@farthershore/farthershore-js 0.25.0 → 0.26.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 +144 -0
- package/README.md +15 -9
- package/dist/bootstrap.d.ts +1 -2
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +20 -28
- package/dist/bootstrap.js.map +1 -1
- package/dist/cache.d.ts +1 -1
- package/dist/cache.js +1 -1
- package/dist/client.d.ts +4 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -1
- package/dist/client.js.map +1 -1
- package/dist/component-policy.d.ts +82 -0
- package/dist/component-policy.d.ts.map +1 -0
- package/dist/component-policy.js +210 -0
- package/dist/component-policy.js.map +1 -0
- package/dist/components/access-control.d.ts.map +1 -1
- package/dist/components/access-control.js +1 -1
- package/dist/components/access-control.js.map +1 -1
- package/dist/components/access-denied.js +1 -1
- package/dist/components/access-denied.js.map +1 -1
- package/dist/components/app.d.ts.map +1 -1
- package/dist/components/app.js +1 -2
- package/dist/components/app.js.map +1 -1
- package/dist/components/audit-log-table.d.ts.map +1 -1
- package/dist/components/audit-log-table.js +4 -1
- package/dist/components/audit-log-table.js.map +1 -1
- package/dist/components/auth.d.ts +3 -1
- package/dist/components/auth.d.ts.map +1 -1
- package/dist/components/auth.js +55 -12
- package/dist/components/auth.js.map +1 -1
- package/dist/components/bill-preview-card.d.ts +14 -0
- package/dist/components/bill-preview-card.d.ts.map +1 -0
- package/dist/components/bill-preview-card.js +45 -0
- package/dist/components/bill-preview-card.js.map +1 -0
- package/dist/components/billing.d.ts.map +1 -1
- package/dist/components/billing.js +5 -2
- package/dist/components/billing.js.map +1 -1
- package/dist/components/chrome.d.ts.map +1 -1
- package/dist/components/chrome.js +8 -2
- package/dist/components/chrome.js.map +1 -1
- package/dist/components/component-access-panel.d.ts +17 -0
- package/dist/components/component-access-panel.d.ts.map +1 -0
- package/dist/components/component-access-panel.js +155 -0
- package/dist/components/component-access-panel.js.map +1 -0
- package/dist/components/docs-chrome/collections-context.d.ts +52 -0
- package/dist/components/docs-chrome/collections-context.d.ts.map +1 -0
- package/dist/components/docs-chrome/collections-context.js +72 -0
- package/dist/components/docs-chrome/collections-context.js.map +1 -0
- package/dist/components/docs-chrome/collections.d.ts +33 -0
- package/dist/components/docs-chrome/collections.d.ts.map +1 -0
- package/dist/components/docs-chrome/collections.js +38 -0
- package/dist/components/docs-chrome/collections.js.map +1 -0
- package/dist/components/docs-chrome/index.d.ts +4 -0
- package/dist/components/docs-chrome/index.d.ts.map +1 -1
- package/dist/components/docs-chrome/index.js +4 -0
- package/dist/components/docs-chrome/index.js.map +1 -1
- package/dist/components/docs.d.ts +1 -3
- package/dist/components/docs.d.ts.map +1 -1
- package/dist/components/docs.js +10 -17
- package/dist/components/docs.js.map +1 -1
- package/dist/components/index.d.ts +16 -12
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +19 -6
- package/dist/components/index.js.map +1 -1
- package/dist/components/keys.d.ts.map +1 -1
- package/dist/components/keys.js +151 -88
- package/dist/components/keys.js.map +1 -1
- package/dist/components/legal-consent-gate.d.ts +37 -0
- package/dist/components/legal-consent-gate.d.ts.map +1 -1
- package/dist/components/legal-consent-gate.js +103 -15
- package/dist/components/legal-consent-gate.js.map +1 -1
- package/dist/components/legal-document.d.ts +12 -8
- package/dist/components/legal-document.d.ts.map +1 -1
- package/dist/components/legal-document.js +21 -13
- package/dist/components/legal-document.js.map +1 -1
- package/dist/components/legal-route.d.ts +17 -0
- package/dist/components/legal-route.d.ts.map +1 -0
- package/dist/components/legal-route.js +45 -0
- package/dist/components/legal-route.js.map +1 -0
- package/dist/components/limit-boundary.d.ts +2 -2
- package/dist/components/limit-boundary.d.ts.map +1 -1
- package/dist/components/limit-boundary.js +4 -8
- package/dist/components/limit-boundary.js.map +1 -1
- package/dist/components/limit-notice.d.ts.map +1 -1
- package/dist/components/limit-notice.js +6 -2
- package/dist/components/limit-notice.js.map +1 -1
- package/dist/components/payment-required-gate.js +1 -1
- package/dist/components/payment-required-gate.js.map +1 -1
- package/dist/components/permission-gate.d.ts +64 -17
- package/dist/components/permission-gate.d.ts.map +1 -1
- package/dist/components/permission-gate.js +173 -22
- package/dist/components/permission-gate.js.map +1 -1
- package/dist/components/plans-table.d.ts.map +1 -1
- package/dist/components/plans-table.js +14 -16
- package/dist/components/plans-table.js.map +1 -1
- package/dist/components/product-docs/docs-route.d.ts.map +1 -1
- package/dist/components/product-docs/docs-route.js +8 -0
- package/dist/components/product-docs/docs-route.js.map +1 -1
- package/dist/components/product-docs/fetch-product-legal.d.ts +0 -5
- package/dist/components/product-docs/fetch-product-legal.d.ts.map +1 -1
- package/dist/components/product-docs/fetch-product-legal.js +6 -13
- package/dist/components/product-docs/fetch-product-legal.js.map +1 -1
- package/dist/components/product-docs/product-docs-index.d.ts +28 -1
- package/dist/components/product-docs/product-docs-index.d.ts.map +1 -1
- package/dist/components/product-docs/product-docs-index.js +146 -18
- package/dist/components/product-docs/product-docs-index.js.map +1 -1
- package/dist/components/product-docs/product-docs-view.d.ts +4 -1
- package/dist/components/product-docs/product-docs-view.d.ts.map +1 -1
- package/dist/components/product-docs/product-docs-view.js +42 -5
- package/dist/components/product-docs/product-docs-view.js.map +1 -1
- package/dist/components/product-docs/product-docs.d.ts +7 -1
- package/dist/components/product-docs/product-docs.d.ts.map +1 -1
- package/dist/components/product-docs/product-docs.js +54 -5
- package/dist/components/product-docs/product-docs.js.map +1 -1
- package/dist/components/product-docs/yaml-lite.d.ts.map +1 -1
- package/dist/components/product-docs/yaml-lite.js +4 -1
- package/dist/components/product-docs/yaml-lite.js.map +1 -1
- package/dist/components/rate-limit-display.d.ts.map +1 -1
- package/dist/components/rate-limit-display.js +1 -1
- package/dist/components/rate-limit-display.js.map +1 -1
- package/dist/components/resource-limit-usage-card.d.ts.map +1 -1
- package/dist/components/resource-limit-usage-card.js +1 -1
- package/dist/components/resource-limit-usage-card.js.map +1 -1
- package/dist/components/root.d.ts +4 -2
- package/dist/components/root.d.ts.map +1 -1
- package/dist/components/root.js.map +1 -1
- package/dist/components/route-panel.d.ts +3 -1
- package/dist/components/route-panel.d.ts.map +1 -1
- package/dist/components/route-panel.js +6 -1
- package/dist/components/route-panel.js.map +1 -1
- package/dist/components/spend-cap-control.js +1 -1
- package/dist/components/spend-cap-control.js.map +1 -1
- package/dist/components/team-panel.d.ts.map +1 -1
- package/dist/components/team-panel.js +8 -2
- package/dist/components/team-panel.js.map +1 -1
- package/dist/components/trial-banner.js +1 -1
- package/dist/components/trial-banner.js.map +1 -1
- package/dist/components/upgrade-prompt.js +1 -1
- package/dist/components/upgrade-prompt.js.map +1 -1
- package/dist/components/usage-limits.d.ts +10 -0
- package/dist/components/usage-limits.d.ts.map +1 -0
- package/dist/components/usage-limits.js +209 -0
- package/dist/components/usage-limits.js.map +1 -0
- package/dist/components/usage.d.ts +1 -1
- package/dist/components/usage.d.ts.map +1 -1
- package/dist/components/usage.js +5 -2
- package/dist/components/usage.js.map +1 -1
- package/dist/deny-codes.d.ts +7 -1
- package/dist/deny-codes.d.ts.map +1 -1
- package/dist/deny-codes.js +17 -1
- package/dist/deny-codes.js.map +1 -1
- package/dist/errors/index.d.ts +8 -5
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +17 -10
- package/dist/errors/index.js.map +1 -1
- package/dist/{catalog.d.ts → format/catalog-display.d.ts} +56 -192
- package/dist/format/catalog-display.d.ts.map +1 -0
- package/dist/{catalog.js → format/catalog-display.js} +144 -479
- package/dist/format/catalog-display.js.map +1 -0
- package/dist/format/index.d.ts +1 -1
- package/dist/format/index.d.ts.map +1 -1
- package/dist/format/index.js +27 -23
- package/dist/format/index.js.map +1 -1
- package/dist/generated/catalog-types.d.ts +15 -64
- package/dist/generated/catalog-types.d.ts.map +1 -1
- package/dist/generated/catalog-types.js +2 -3
- package/dist/generated/catalog-types.js.map +1 -1
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +2 -2
- package/dist/http.d.ts +2 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +2 -0
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -14
- package/dist/index.js.map +1 -1
- package/dist/mock/fixtures.d.ts +35 -8
- package/dist/mock/fixtures.d.ts.map +1 -1
- package/dist/mock/fixtures.js +95 -30
- package/dist/mock/fixtures.js.map +1 -1
- package/dist/mock/transport.d.ts.map +1 -1
- package/dist/mock/transport.js +103 -15
- package/dist/mock/transport.js.map +1 -1
- package/dist/notification-categories.js +1 -1
- package/dist/notification-categories.js.map +1 -1
- package/dist/permissions.d.ts +9 -12
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +28 -15
- package/dist/permissions.js.map +1 -1
- package/dist/react/hooks.d.ts +46 -18
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/hooks.js +73 -7
- package/dist/react/hooks.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react/mounted-context.js +1 -1
- package/dist/react/mounted-context.js.map +1 -1
- package/dist/react/mounted-types.d.ts +6 -1
- package/dist/react/mounted-types.d.ts.map +1 -1
- package/dist/react/query-adapter.d.ts +0 -1
- package/dist/react/query-adapter.d.ts.map +1 -1
- package/dist/react/query-adapter.js +0 -4
- package/dist/react/query-adapter.js.map +1 -1
- package/dist/react/use-upgrade.js +1 -1
- package/dist/resources/account.d.ts +17 -1
- package/dist/resources/account.d.ts.map +1 -1
- package/dist/resources/account.js +39 -0
- package/dist/resources/account.js.map +1 -1
- package/dist/resources/billing.d.ts +19 -31
- package/dist/resources/billing.d.ts.map +1 -1
- package/dist/resources/billing.js +152 -50
- package/dist/resources/billing.js.map +1 -1
- package/dist/resources/keys.d.ts +40 -13
- package/dist/resources/keys.d.ts.map +1 -1
- package/dist/resources/keys.js +136 -2
- package/dist/resources/keys.js.map +1 -1
- package/dist/resources/usage-limits.d.ts +20 -0
- package/dist/resources/usage-limits.d.ts.map +1 -0
- package/dist/resources/usage-limits.js +79 -0
- package/dist/resources/usage-limits.js.map +1 -0
- package/dist/test-utils/mock-client.d.ts.map +1 -1
- package/dist/test-utils/mock-client.js +42 -3
- package/dist/test-utils/mock-client.js.map +1 -1
- package/dist/types.d.ts +399 -33
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -4
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
- package/dist/catalog.d.ts.map +0 -1
- package/dist/catalog.js.map +0 -1
- package/dist/component-permissions.d.ts +0 -6
- package/dist/component-permissions.d.ts.map +0 -1
- package/dist/component-permissions.js +0 -36
- package/dist/component-permissions.js.map +0 -1
- package/dist/components/bill-estimator.d.ts +0 -18
- package/dist/components/bill-estimator.d.ts.map +0 -1
- package/dist/components/bill-estimator.js +0 -30
- package/dist/components/bill-estimator.js.map +0 -1
- package/dist/components/credit.d.ts +0 -20
- package/dist/components/credit.d.ts.map +0 -1
- package/dist/components/credit.js +0 -33
- package/dist/components/credit.js.map +0 -1
- package/dist/components/top-up-prompt.d.ts +0 -21
- package/dist/components/top-up-prompt.d.ts.map +0 -1
- package/dist/components/top-up-prompt.js +0 -59
- package/dist/components/top-up-prompt.js.map +0 -1
- package/dist/top-up.d.ts +0 -12
- package/dist/top-up.d.ts.map +0 -1
- package/dist/top-up.js +0 -33
- package/dist/top-up.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,150 @@
|
|
|
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.26.0] - 2026-08-30
|
|
7
|
+
|
|
8
|
+
Three efforts ship together: the billing redesign (already on `main` but never
|
|
9
|
+
published — it was staged as `1.0.0`, corrected here to stay on the pre-1.0
|
|
10
|
+
line), managed docs collections, and the uniform legal surface.
|
|
11
|
+
|
|
12
|
+
### Changed — uniform legal documents (BREAKING)
|
|
13
|
+
|
|
14
|
+
Legal documents are now fully kind-generic and authored-only. `terms` and
|
|
15
|
+
`privacy` have no special status: they are ordinary kinds a builder declares in
|
|
16
|
+
`legal/_index.yaml`, exactly like `acceptable-use` or `dpa`.
|
|
17
|
+
|
|
18
|
+
- **REMOVED `TermsOfService` and `PrivacyPolicy`** (and their prop types). Use
|
|
19
|
+
`<LegalDocument kind="terms" />` — one component for every kind.
|
|
20
|
+
- **REMOVED the platform-terms fallback** from `LegalDocument` and `DocsLegal`,
|
|
21
|
+
along with `getPlatformLegalUrl`. A legal document exists only when the
|
|
22
|
+
builder authored it; the platform's terms govern the BUILDER's use of Farther
|
|
23
|
+
Shore, not a subscriber's use of the builder's product, so presenting them as
|
|
24
|
+
a stand-in was misleading. Unpublished documents now say so plainly.
|
|
25
|
+
- **Uniform routing**: every document lives at `/legal/<kind>` and `/legal`
|
|
26
|
+
indexes them. New `legalDocHref` / `legalIndexHref` / `parseLegalRoute`
|
|
27
|
+
helpers (plus `LEGAL_ROUTE_PREFIX`, `LegalRoute`) are the single source of the
|
|
28
|
+
path shape. Hosts that linked `/terms` or `/privacy` must move to
|
|
29
|
+
`/legal/terms` and `/legal/privacy`.
|
|
30
|
+
- **Derived link lists**: `FsFooter` and `DocsLegal` now list every published
|
|
31
|
+
document instead of a fixed Terms/Privacy pair. New `useLegalDocuments()`
|
|
32
|
+
exposes the same list (type `PublishedLegalDocument`).
|
|
33
|
+
- **Consent gate is a per-document wizard** — one step per OUTSTANDING document
|
|
34
|
+
(`none`-mode and already-accepted never appear), with a single atomic submit
|
|
35
|
+
at the end. New `useLegalConsentWizard()` (`UseLegalConsentWizardResult`)
|
|
36
|
+
holds all behavior; the component ships no CSS and no animation JS, exposing
|
|
37
|
+
`data-fs-legal-step` / `-steps` / `-action` / `-direction` and keying the step
|
|
38
|
+
card by kind so a host's enter animation replays per step.
|
|
39
|
+
|
|
40
|
+
### Added — docs collections
|
|
41
|
+
|
|
42
|
+
Managed docs can now be logically separated into multiple self-contained
|
|
43
|
+
bundles ("collections") — e.g. narrative **Docs** alongside an **API
|
|
44
|
+
reference** — rendered by the default portal as a tab bar. Strictly opt-in: an
|
|
45
|
+
index without `collections:` parses and renders byte-identically to before.
|
|
46
|
+
|
|
47
|
+
- `_index.yaml` gains optional `collections:` (each entry: `id`, `label`,
|
|
48
|
+
optional `icon` image URL, `defaultPage`, its own `navigation`) and
|
|
49
|
+
`defaultCollection`. When present, top-level `navigation`/`defaultPage` move
|
|
50
|
+
into the collections.
|
|
51
|
+
- **Collection ids are route + storage prefixes.** Page slugs become
|
|
52
|
+
collection-qualified (`<id>/<slug>`, e.g. `guides/intro`): the URL is
|
|
53
|
+
`/docs/guides/intro`, the R2 object is `<prefix>/guides/intro.mdx`, and a
|
|
54
|
+
bare `/docs/<id>` lands on that collection's `defaultPage`. Slugs in a
|
|
55
|
+
collection's `navigation` are authored collection-relative; the parser
|
|
56
|
+
qualifies them.
|
|
57
|
+
- New headless `docs-chrome` collections layer (mirrors the language layer):
|
|
58
|
+
`resolveActiveCollection`, `DocsCollectionsProvider` /
|
|
59
|
+
`useDocsCollections` / `useDocsCollectionsState`, and
|
|
60
|
+
`DocsCollectionSelector` — an unstyled `role="group"` of
|
|
61
|
+
`aria-pressed` buttons that renders nothing at ≤ 1 collection. Ships no CSS;
|
|
62
|
+
hosts style `.fs-docs-collections`.
|
|
63
|
+
- New exports: the pieces above plus `DocsCollection`,
|
|
64
|
+
`DocsCollectionsContextValue`, `DocsCollectionSelectorProps`,
|
|
65
|
+
`UseDocsCollectionsStateOptions`, and the parsed-index element type
|
|
66
|
+
`BusinessDocsCollection` (alongside `BusinessDocsIndex`);
|
|
67
|
+
`BusinessDocsIndex` gains `collections?` / `defaultCollection?`, and
|
|
68
|
+
`BusinessDocsView` accepts `activeCollection` to scope the shell to one
|
|
69
|
+
bundle.
|
|
70
|
+
- Parser hardening shared with the reader: page-slug path segments are
|
|
71
|
+
validated (`.`/`..`/`\`/empty dropped) and a collection `icon` must be an
|
|
72
|
+
absolute/root-relative/`data:` URL (bare tokens are dropped rather than
|
|
73
|
+
rendered as a broken `<img>`).
|
|
74
|
+
|
|
75
|
+
### Changed — billing redesign (FAR-912)
|
|
76
|
+
|
|
77
|
+
Plans carry no money; usage money comes ONLY from Core's bill preview, computed
|
|
78
|
+
by the same engine that invoices.
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
|
|
82
|
+
- **`fs.billing.getBillPreview()`** → `BillPreview` (`GET /me/bill-preview`).
|
|
83
|
+
A discriminated union on `disclosure`: `TransparentBillPreview` (rating
|
|
84
|
+
`windows`, `totals.{ratedNanos,fundedNanos,receivableNanos}`, nanodollar
|
|
85
|
+
`allowances`) | `OpaqueBillPreview` (`allowances` with kind / state /
|
|
86
|
+
expiry / authored `display` only — no windows, totals, or amounts). Every
|
|
87
|
+
nanodollar field is a decimal STRING. The reader fails closed: anything not
|
|
88
|
+
verbatim `disclosure: "transparent"` is read as opaque.
|
|
89
|
+
- **`useBillPreview()`** React hook (query key `["billPreview", businessId,
|
|
90
|
+
organizationId]`; re-reads on every entitlement mutation and org switch).
|
|
91
|
+
- **`<BillPreviewCard>`** component — renders the preview and honors
|
|
92
|
+
disclosure (transparent: fee, rated / covered / due, windows, allowance
|
|
93
|
+
balances; opaque: allowances only, no rates or amounts).
|
|
94
|
+
- **`format.formatNanos(nanos, { currency, locale })`** — formats a
|
|
95
|
+
decimal-string / bigint nanodollar amount with bigint arithmetic (never
|
|
96
|
+
`Number()`); cent precision ≥ 1¢, up to 6 fraction digits below.
|
|
97
|
+
- `Plan.kind: PlanKind` — the builder's DECLARED kind (`free` | `flat` |
|
|
98
|
+
`usage` | `prepaid` | `hybrid` | `trial` | `custom`), read verbatim from the
|
|
99
|
+
wire. `PlanPricePresentation.kind` is now this declared kind.
|
|
100
|
+
- Mock mode: `GET /me/bill-preview` served from `mockBillPreviewTransparent` /
|
|
101
|
+
`mockBillPreviewOpaque` (`mockState.billPreviewDisclosure` toggles).
|
|
102
|
+
- Test-utils mock client: `billing.getBillPreview()` returns the empty
|
|
103
|
+
transparent preview.
|
|
104
|
+
- **`format.describePlanKind(kind)`** → `{ kind, label, billsUsage }` — the
|
|
105
|
+
ONE declared-kind label map (Free / Subscription / Usage-based / Prepaid /
|
|
106
|
+
Subscription + usage / Free trial / Custom) plus whether the kind bills
|
|
107
|
+
usage through a commerce binding (`usage` / `prepaid` / `hybrid` /
|
|
108
|
+
`custom`). `<PlansTable>`, the portal template and the dashboard all read
|
|
109
|
+
it, so a plan never shows two different kind labels across screens.
|
|
110
|
+
`PlanKindDescription` is exported at the root.
|
|
111
|
+
- **`BucketState`** — the allowance lifecycle state, mirroring Core verbatim
|
|
112
|
+
(`PENDING` | `AVAILABLE` | `EXPIRY_PENDING` | `FROZEN` | `EXPIRED` |
|
|
113
|
+
`CANCELLED`). `BillPreviewAllowance.state` / `OpaqueBillPreviewAllowance.state`
|
|
114
|
+
are typed to it; the reader drops an allowance whose state it cannot place.
|
|
115
|
+
- **`NanosAmount`** = `string | null`. Every nanodollar field on the preview
|
|
116
|
+
(`totals.*`, `windows[].ratedNanos`, allowance balances) is now
|
|
117
|
+
`NanosAmount`: a malformed wire value (`"1e9"`, `1.5`, `null`) maps to
|
|
118
|
+
`null` = unavailable, never to `"0"`, and `<BillPreviewCard>` renders it as
|
|
119
|
+
"unavailable" — never as a wrong `$0`.
|
|
120
|
+
- `bootstrap().availableModules` derives `billing` / `usage-metered` from
|
|
121
|
+
each plan's DECLARED `kind` (+ recurring fee for `billing`), never from the
|
|
122
|
+
structural meter list.
|
|
123
|
+
|
|
124
|
+
### Removed
|
|
125
|
+
|
|
126
|
+
- **BREAKING: `Plan.free` is gone** — read `plan.kind === "free"`.
|
|
127
|
+
- **BREAKING: plan meters carry no money.** `PlanMeter` is structural
|
|
128
|
+
`{ dimension, kind? }`; `price_per_unit_micros`, `included_units`, and
|
|
129
|
+
`tiered` no longer exist on the wire or the domain type, and `mapPlan`
|
|
130
|
+
strips anything else.
|
|
131
|
+
- **BREAKING: the plan classifier and every meter-money helper are deleted**
|
|
132
|
+
from `format`: `classifyPlan`, `isFreePlan`, `isDeclaredFreePlan`,
|
|
133
|
+
`isPayAsYouGoPlan`, `formatPriceFromMicros`, `summarizeMeterPricing`,
|
|
134
|
+
`describeMeterTiers`; the `MeterTierDescription` / `MeterTierLine` types;
|
|
135
|
+
`PlanPricePresentation.usageSummary`. `quotaForDimension` reads month-window
|
|
136
|
+
limit rules only. `sortPlansForDisplay` / `synthesizePlanFeatures*` /
|
|
137
|
+
`describePlanSummary` / `selectAutoEnrollPlan` read `plan.kind`.
|
|
138
|
+
- **BREAKING: `<BillEstimator>` / `BillEstimatorProps` are removed** —
|
|
139
|
+
use `<BillPreviewCard>` (no re-export shim).
|
|
140
|
+
- The `credit_balance` managed component id is removed from
|
|
141
|
+
`MANAGED_COMPONENT_DEFAULTS` (never a shipped component).
|
|
142
|
+
|
|
143
|
+
### Changed
|
|
144
|
+
|
|
145
|
+
- `<PlansTable>` badges and hides the free tier by `plan.kind`, and no longer
|
|
146
|
+
renders a per-meter price list under the card.
|
|
147
|
+
- `presentPlanPrice` / `formatPlanPrice` headline a fee-less plan by its
|
|
148
|
+
declared kind ("Free", "Usage-based", "Prepaid", "Free trial", "Custom").
|
|
149
|
+
|
|
6
150
|
## [0.25.0] - 2026-08-10
|
|
7
151
|
|
|
8
152
|
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.
|
|
7
|
-
>
|
|
8
|
-
>
|
|
9
|
-
> in [`CHANGELOG.md`](./CHANGELOG.md).
|
|
6
|
+
> **Status: `0.26.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
|
-
|
|
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
|
|
349
|
-
|
|
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,
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -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, "
|
|
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;
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -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;
|
|
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 (
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
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
|
|
100
|
-
|
|
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
|
-
|
|
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 (
|
|
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)
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,sCAAsC;AACtC,EAAE;AACF,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts
CHANGED
|
@@ -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 /
|
|
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
|
@@ -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 /
|
|
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
|
-
/**
|
|
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;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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;
|
|
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,
|
package/dist/client.js.map
CHANGED
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-policy.d.ts","sourceRoot":"","sources":["../src/component-policy.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D;oEACoE;AACpE,eAAO,MAAM,oBAAoB,oDAKvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,iBAAiB,CAE3E;AAED;0CAC0C;AAC1C,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED;;wCAEwC;AACxC,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAC/C,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAsB3C,CAAC;AAEF;gFACgF;AAChF,eAAO,MAAM,wBAAwB,wDAI3B,CAAC;AAEX,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE3D;AAaD,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,QAAmC,CAAC;AAE7E,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAExD;AAMD,MAAM,WAAW,qBAAqB;IACpC;wCACoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX;sBACkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,iEAAiE;IACjE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAgB3E;AAED,qDAAqD;AACrD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,4CAA4C;AAC5C,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAMD,qDAAqD;AACrD,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;4EACwE;IACxE,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,4CAA4C;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB;yDACqD;IACrD,OAAO,EAAE,OAAO,CAAC;CAClB;AAiBD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,SAAS,wBAAwB,EAAE,GAAG,IAAI,GACpD,uBAAuB,CAqFzB"}
|