@farthershore/farthershore-js 0.2.0 → 0.3.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 (58) hide show
  1. package/README.md +1 -1
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +1 -0
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/catalog.d.ts +14 -5
  6. package/dist/catalog.d.ts.map +1 -1
  7. package/dist/catalog.js +90 -76
  8. package/dist/catalog.js.map +1 -1
  9. package/dist/client.d.ts +15 -0
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +4 -0
  12. package/dist/client.js.map +1 -1
  13. package/dist/components/index.d.ts +4 -0
  14. package/dist/components/index.d.ts.map +1 -1
  15. package/dist/components/index.js +2 -0
  16. package/dist/components/index.js.map +1 -1
  17. package/dist/components/resources-panel.d.ts +15 -0
  18. package/dist/components/resources-panel.d.ts.map +1 -0
  19. package/dist/components/resources-panel.js +52 -0
  20. package/dist/components/resources-panel.js.map +1 -0
  21. package/dist/components/upgrade-prompt.d.ts +16 -0
  22. package/dist/components/upgrade-prompt.d.ts.map +1 -0
  23. package/dist/components/upgrade-prompt.js +65 -0
  24. package/dist/components/upgrade-prompt.js.map +1 -0
  25. package/dist/errors.d.ts +50 -0
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js +67 -0
  28. package/dist/errors.js.map +1 -1
  29. package/dist/http.d.ts.map +1 -1
  30. package/dist/http.js +16 -6
  31. package/dist/http.js.map +1 -1
  32. package/dist/index.d.ts +6 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/react/hooks.d.ts +15 -1
  37. package/dist/react/hooks.d.ts.map +1 -1
  38. package/dist/react/hooks.js +26 -0
  39. package/dist/react/hooks.js.map +1 -1
  40. package/dist/react/index.d.ts +4 -2
  41. package/dist/react/index.d.ts.map +1 -1
  42. package/dist/react/index.js +2 -1
  43. package/dist/react/index.js.map +1 -1
  44. package/dist/react/use-upgrade.d.ts +30 -0
  45. package/dist/react/use-upgrade.d.ts.map +1 -0
  46. package/dist/react/use-upgrade.js +88 -0
  47. package/dist/react/use-upgrade.js.map +1 -0
  48. package/dist/resources/api.d.ts +20 -0
  49. package/dist/resources/api.d.ts.map +1 -0
  50. package/dist/resources/api.js +48 -0
  51. package/dist/resources/api.js.map +1 -0
  52. package/dist/resources/resources.d.ts +24 -0
  53. package/dist/resources/resources.d.ts.map +1 -0
  54. package/dist/resources/resources.js +49 -0
  55. package/dist/resources/resources.js.map +1 -0
  56. package/dist/types.d.ts +25 -21
  57. package/dist/types.d.ts.map +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // UpgradePrompt — the monetization payoff. Given a LimitExceededError (thrown
3
+ // by any fs.api / fs.resources call at a plan limit), it resolves the cheapest
4
+ // upgrade from the bootstrap catalog and renders a one-click upgrade CTA wired
5
+ // to billing.changePlan. Drop it under <FartherShoreRoot>; pass the caught
6
+ // error. Works with zero other props.
7
+ import { useState } from "react";
8
+ import { useFartherShore } from "../react/index.js";
9
+ import { useUpgrade } from "../react/use-upgrade.js";
10
+ import { cx } from "./_internal.js";
11
+ function formatPrice(cents) {
12
+ // Show whole dollars with no decimals, but a partial amount with exactly two
13
+ // (so $9.90 doesn't render as "$9.9").
14
+ const hasCents = cents % 100 !== 0;
15
+ return `$${(cents / 100).toLocaleString(undefined, {
16
+ minimumFractionDigits: hasCents ? 2 : 0,
17
+ maximumFractionDigits: 2,
18
+ })}`;
19
+ }
20
+ export function UpgradePrompt({ error, onUpgraded, className, }) {
21
+ const fs = useFartherShore();
22
+ const { resolve, loading } = useUpgrade();
23
+ const [busy, setBusy] = useState(false);
24
+ const [actionError, setActionError] = useState(null);
25
+ const target = loading ? null : resolve(error);
26
+ if (loading) {
27
+ return (_jsx("section", { className: cx("fs-card", className), children: _jsx("p", { className: "fs-muted", children: "Checking upgrade options\u2026" }) }));
28
+ }
29
+ if (!target) {
30
+ return (_jsx("section", { className: cx("fs-card", className), children: _jsx("p", { className: "fs-muted", children: "You\u2019ve reached your plan\u2019s limit. Contact support to raise it." }) }));
31
+ }
32
+ const dimensionLabel = error.dimension ?? "your limit";
33
+ async function onUpgrade() {
34
+ if (!target)
35
+ return;
36
+ setBusy(true);
37
+ setActionError(null);
38
+ try {
39
+ const result = await fs.billing.changePlan({
40
+ compiledPlanId: target.plan.id,
41
+ successUrl: typeof window !== "undefined" ? window.location.href : undefined,
42
+ });
43
+ const checkoutUrl = result
44
+ ?.checkoutUrl;
45
+ if (checkoutUrl) {
46
+ // Checkout required — the change is NOT complete yet. Redirect; do not
47
+ // fire onUpgraded (it means an inline, completed change).
48
+ if (typeof window !== "undefined")
49
+ window.location.assign(checkoutUrl);
50
+ return;
51
+ }
52
+ onUpgraded?.(target);
53
+ }
54
+ catch (err) {
55
+ setActionError(err instanceof Error ? err.message : "Could not start the upgrade");
56
+ }
57
+ finally {
58
+ setBusy(false);
59
+ }
60
+ }
61
+ return (_jsxs("section", { className: cx("fs-card", className), children: [_jsx("div", { className: "fs-card__head", children: _jsx("h3", { className: "fs-card__title", children: "You\u2019ve hit a plan limit" }) }), _jsxs("p", { children: ["Upgrade to ", _jsx("strong", { children: target.plan.name }), " (", formatPrice(target.plan.recurringFeeCents), "/mo)", target.raisesTo !== null
62
+ ? ` to raise ${dimensionLabel} to ${target.raisesTo}.`
63
+ : ` for a higher ${dimensionLabel}.`] }), actionError && _jsx("p", { className: "fs-error fs-card__note", children: actionError }), _jsx("button", { type: "button", className: "fs-btn fs-btn--primary", disabled: busy, onClick: () => void onUpgrade(), children: busy ? "Starting upgrade…" : `Upgrade to ${target.plan.name}` })] }));
64
+ }
65
+ //# sourceMappingURL=upgrade-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-prompt.js","sourceRoot":"","sources":["../../src/components/upgrade-prompt.tsx"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -28,6 +28,56 @@ export declare class FartherShoreApiError extends FartherShoreError {
28
28
  readonly body: unknown;
29
29
  constructor(status: number, code: string, message: string, body: unknown);
30
30
  }
31
+ /**
32
+ * The machine-readable limit descriptor the gateway/core attach to a limit
33
+ * deny body (`{ error: { code, message, limitCode, dimension, currentCapacity } }`).
34
+ * The SDK turns this into an upgrade prompt — see {@link LimitExceededError}.
35
+ */
36
+ export interface LimitDescriptor {
37
+ /** Stable identifier for the limit that was hit, e.g. `resource:widgets`. */
38
+ limitCode: string;
39
+ /** The metered/resource dimension, when known (e.g. `widgets`, `requests`). */
40
+ dimension: string | null;
41
+ /** The cap the subscriber is at, when known. */
42
+ currentCapacity: number | null;
43
+ }
44
+ /**
45
+ * A {@link FartherShoreApiError} that is specifically a plan-limit block — a
46
+ * resource quota (`402 resource_count_limit_exceeded`), a usage quota, a rate
47
+ * limit, or a credit cap. Carries the {@link LimitDescriptor} so the app can
48
+ * resolve an upgrade target from the bootstrap catalog and prompt the user
49
+ * (see `useUpgrade` / `<UpgradePrompt>`).
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * try {
54
+ * await fs.resources("widgets").create({ name });
55
+ * } catch (err) {
56
+ * if (err instanceof LimitExceededError) showUpgrade(err);
57
+ * else throw err;
58
+ * }
59
+ * ```
60
+ */
61
+ export declare class LimitExceededError extends FartherShoreApiError {
62
+ readonly limitCode: string;
63
+ readonly dimension: string | null;
64
+ readonly currentCapacity: number | null;
65
+ constructor(status: number, code: string, message: string, body: unknown, descriptor: LimitDescriptor);
66
+ }
67
+ /**
68
+ * Extract a {@link LimitDescriptor} from a deny body, or null if absent.
69
+ * Handles both shapes: nested `{ error: { limitCode, … } }` (core resource
70
+ * limits, proxied raw through the gateway) and flat `{ error, code, limitCode,
71
+ * … }` (gateway compute limits — quota/rate-limit).
72
+ */
73
+ export declare function parseLimitDescriptor(body: unknown): LimitDescriptor | null;
74
+ /**
75
+ * Build the right API error for a non-2xx response: a {@link LimitExceededError}
76
+ * when the body carries a limit descriptor on a limit status (402/403/429), and
77
+ * a plain {@link FartherShoreApiError} otherwise. Used at the single non-2xx
78
+ * throw site so every transport (core + gateway) surfaces limits uniformly.
79
+ */
80
+ export declare function makeApiError(status: number, code: string, message: string, body: unknown): FartherShoreApiError;
31
81
  /** A network-level failure (DNS, connection, CORS, abort). */
32
82
  export declare class FartherShoreNetworkError extends FartherShoreError {
33
83
  readonly cause?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBACX,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAOzE;AAED,8DAA8D;AAC9D,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;4EAC4E;AAC5E,qBAAa,sBAAuB,SAAQ,iBAAiB;gBAC/C,OAAO,SAAoB;CAIxC;AAED;uEACuE;AACvE,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,OAAO,EAAE,MAAM;CAI5B;AAED;0BAC0B;AAC1B,qBAAa,uBAAwB,SAAQ,iBAAiB;gBAChD,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBACX,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAOzE;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gDAAgD;IAChD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAmB,SAAQ,oBAAoB;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,eAAe;CAQ9B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAmB1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,oBAAoB,CAMtB;AAED,8DAA8D;AAC9D,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;4EAC4E;AAC5E,qBAAa,sBAAuB,SAAQ,iBAAiB;gBAC/C,OAAO,SAAoB;CAIxC;AAED;uEACuE;AACvE,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,OAAO,EAAE,MAAM;CAI5B;AAED;0BAC0B;AAC1B,qBAAa,uBAAwB,SAAQ,iBAAiB;gBAChD,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js CHANGED
@@ -38,6 +38,73 @@ export class FartherShoreApiError extends FartherShoreError {
38
38
  this.body = body;
39
39
  }
40
40
  }
41
+ /**
42
+ * A {@link FartherShoreApiError} that is specifically a plan-limit block — a
43
+ * resource quota (`402 resource_count_limit_exceeded`), a usage quota, a rate
44
+ * limit, or a credit cap. Carries the {@link LimitDescriptor} so the app can
45
+ * resolve an upgrade target from the bootstrap catalog and prompt the user
46
+ * (see `useUpgrade` / `<UpgradePrompt>`).
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * try {
51
+ * await fs.resources("widgets").create({ name });
52
+ * } catch (err) {
53
+ * if (err instanceof LimitExceededError) showUpgrade(err);
54
+ * else throw err;
55
+ * }
56
+ * ```
57
+ */
58
+ export class LimitExceededError extends FartherShoreApiError {
59
+ limitCode;
60
+ dimension;
61
+ currentCapacity;
62
+ constructor(status, code, message, body, descriptor) {
63
+ super(status, code, message, body);
64
+ this.name = "LimitExceededError";
65
+ this.limitCode = descriptor.limitCode;
66
+ this.dimension = descriptor.dimension;
67
+ this.currentCapacity = descriptor.currentCapacity;
68
+ }
69
+ }
70
+ /**
71
+ * Extract a {@link LimitDescriptor} from a deny body, or null if absent.
72
+ * Handles both shapes: nested `{ error: { limitCode, … } }` (core resource
73
+ * limits, proxied raw through the gateway) and flat `{ error, code, limitCode,
74
+ * … }` (gateway compute limits — quota/rate-limit).
75
+ */
76
+ export function parseLimitDescriptor(body) {
77
+ if (!body || typeof body !== "object")
78
+ return null;
79
+ const b = body;
80
+ const nested = b.error && typeof b.error === "object"
81
+ ? b.error
82
+ : null;
83
+ const source = nested && typeof nested.limitCode === "string" ? nested : b;
84
+ if (typeof source.limitCode !== "string" || source.limitCode.length === 0) {
85
+ return null;
86
+ }
87
+ return {
88
+ limitCode: source.limitCode,
89
+ dimension: typeof source.dimension === "string" ? source.dimension : null,
90
+ currentCapacity: typeof source.currentCapacity === "number"
91
+ ? source.currentCapacity
92
+ : null,
93
+ };
94
+ }
95
+ /**
96
+ * Build the right API error for a non-2xx response: a {@link LimitExceededError}
97
+ * when the body carries a limit descriptor on a limit status (402/403/429), and
98
+ * a plain {@link FartherShoreApiError} otherwise. Used at the single non-2xx
99
+ * throw site so every transport (core + gateway) surfaces limits uniformly.
100
+ */
101
+ export function makeApiError(status, code, message, body) {
102
+ const descriptor = parseLimitDescriptor(body);
103
+ if (descriptor && (status === 402 || status === 403 || status === 429)) {
104
+ return new LimitExceededError(status, code, message, body, descriptor);
105
+ }
106
+ return new FartherShoreApiError(status, code, message, body);
107
+ }
41
108
  /** A network-level failure (DNS, connection, CORS, abort). */
42
109
  export class FartherShoreNetworkError extends FartherShoreError {
43
110
  cause;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;IAChD,MAAM,CAAS;IACf,IAAI,CAAS;IACb,IAAI,CAAU;IACvB,YAAY,MAAc,EAAE,IAAY,EAAE,OAAe,EAAE,IAAa;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IACpD,KAAK,CAAW;IACzB,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;4EAC4E;AAC5E,MAAM,OAAO,sBAAuB,SAAQ,iBAAiB;IAC3D,YAAY,OAAO,GAAG,iBAAiB;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;uEACuE;AACvE,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED;0BAC0B;AAC1B,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,aAAa,CAAC;AAO/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKtD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;+DAC2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B;mFAC+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA0ED;;+DAE+D;AAC/D,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,CAAC,CAAC,CAwCZ;AA4BD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;AAED;;;;0EAI0E;AAC1E,wBAAsB,YAAY,CAChC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,QAAQ,CAAC,CAuCnB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,aAAa,CAAC;AAO/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKtD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;+DAC2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B;mFAC+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAoFD;;+DAE+D;AAC/D,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,CAAC,CAAC,CAwCZ;AA4BD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;AAED;;;;0EAI0E;AAC1E,wBAAsB,YAAY,CAChC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,QAAQ,CAAC,CAuCnB"}
package/dist/http.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Gateway (builder features) — and the auth each one needs. Frontend code never
3
3
  // constructs a URL or sets an auth header; it goes through here.
4
4
  import { resolveToken } from "./config.js";
5
- import { FartherShoreAbortError, FartherShoreApiError, FartherShoreNotReadyError, FartherShoreNetworkError, } from "./errors.js";
5
+ import { FartherShoreAbortError, FartherShoreNotReadyError, FartherShoreNetworkError, makeApiError, } from "./errors.js";
6
6
  const SURFACE_HEADER = "x-fs-surface";
7
7
  const MANAGED_FRONTEND_SURFACE = "managed_frontend";
8
8
  /** Whether a thrown fetch error is an abort (so we surface
@@ -29,14 +29,24 @@ async function parseBody(res) {
29
29
  return res.text().catch(() => null);
30
30
  }
31
31
  function extractError(status, body) {
32
- if (body && typeof body === "object" && "error" in body) {
33
- const e = body.error;
34
- if (e) {
32
+ if (body && typeof body === "object") {
33
+ const b = body;
34
+ const nested = b.error;
35
+ // Nested (core): `{ error: { code, message } }`.
36
+ if (nested && typeof nested === "object") {
37
+ const e = nested;
35
38
  return {
36
39
  code: e.code ?? "unknown",
37
40
  message: e.message ?? `Request failed (${status})`,
38
41
  };
39
42
  }
43
+ // Flat (gateway formatDeny): `{ error: <message string>, code }`.
44
+ if (typeof nested === "string") {
45
+ return {
46
+ code: typeof b.code === "string" ? b.code : "unknown",
47
+ message: nested.length > 0 ? nested : `Request failed (${status})`,
48
+ };
49
+ }
40
50
  }
41
51
  return { code: "unknown", message: `Request failed (${status})` };
42
52
  }
@@ -98,7 +108,7 @@ export async function coreFetch(ctx, req) {
98
108
  const body = await parseBody(res);
99
109
  if (!res.ok) {
100
110
  const { code, message } = extractError(res.status, body);
101
- throw new FartherShoreApiError(res.status, code, message, body);
111
+ throw makeApiError(res.status, code, message, body);
102
112
  }
103
113
  return body;
104
114
  }
@@ -176,7 +186,7 @@ export async function gatewayFetch(ctx, path, init = {}) {
176
186
  if (!res.ok) {
177
187
  const body = await parseBody(res.clone());
178
188
  const { code, message } = extractError(res.status, body);
179
- throw new FartherShoreApiError(res.status, code, message, body);
189
+ throw makeApiError(res.status, code, message, body);
180
190
  }
181
191
  return res;
182
192
  }
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,8 +4,11 @@ export type { FartherShoreConfig, FsRuntimeConfig, TokenProvider, FetchLike, } f
4
4
  export { readRuntimeConfig } from "./config.js";
5
5
  /** Shape of a generic authenticated Core call — see {@link FartherShoreClient.core}. */
6
6
  export type { CoreRequest } from "./http.js";
7
- export { FartherShoreError, FartherShoreApiError, FartherShoreNetworkError, FartherShoreAbortError, FartherShoreNotReadyError, FartherShoreConfigError, } from "./errors.js";
8
- export type { Branding, ProductAppearance, Product, Meter, AuthStrategy, EnvironmentInfo, FrontendComponent, FrontendComponentId, FrontendGateMode, FrontendManifest, FrontendNavItem, FrontendPage, Bootstrap, Plan, PlanMeter, PlanLimit, Grant, Subscriber, Session, ApiKey, CreatedApiKey, UsageSummary, UsageEvent, UsageBillingBasis, UsageSnapshot, Subscription, SignInResult, GatewayContextToken, SubscriberDetail, SubscriberContext, SubscriptionContext, SubscriptionContextsResult, TeamRole, TeamMember, TeamListResult, AuditLogEntry, AuditLogPage, OnboardingResult, CancelSubscriptionResult, ChangePlanResult, } from "./types.js";
7
+ export { FartherShoreError, FartherShoreApiError, FartherShoreNetworkError, FartherShoreAbortError, FartherShoreNotReadyError, FartherShoreConfigError, LimitExceededError, parseLimitDescriptor, makeApiError, } from "./errors.js";
8
+ export type { LimitDescriptor } from "./errors.js";
9
+ export type { ApiResource, ApiRequestInit } from "./resources/api.js";
10
+ export type { ResourcesResource, ResourceRecord, } from "./resources/resources.js";
11
+ export type { Branding, ProductAppearance, Product, Meter, AuthStrategy, EnvironmentInfo, FrontendComponent, FrontendComponentId, FrontendGateMode, FrontendManifest, FrontendNavItem, FrontendPage, Bootstrap, Plan, PlanMeter, PlanLimit, Grant, CreditPolicy, Subscriber, Session, ApiKey, CreatedApiKey, UsageSummary, UsageEvent, UsageBillingBasis, UsageSnapshot, Subscription, SignInResult, GatewayContextToken, SubscriberDetail, SubscriberContext, SubscriptionContext, SubscriptionContextsResult, TeamRole, TeamMember, TeamListResult, AuditLogEntry, AuditLogPage, OnboardingResult, CancelSubscriptionResult, ChangePlanResult, } from "./types.js";
9
12
  export type { ProductResource } from "./resources/product.js";
10
13
  export type { AuthResource } from "./resources/auth.js";
11
14
  export type { KeysResource } from "./resources/keys.js";
@@ -16,5 +19,5 @@ export type { AccountSurface, OrganizationsResource, TeamResource, AuditLogsReso
16
19
  export type { EntitlementSnapshot, EntitlementsResource, FeaturesResource, } from "./resources/entitlements.js";
17
20
  export type { FeatureHandle, GatewayRequestInit } from "./resources/feature.js";
18
21
  export { classifyPlan, isFreePlan, isPayAsYouGoPlan, formatPlanPrice, formatCents, formatPriceFromMicros, summarizeMeterPricing, formatMinimumSpend, entitlementBullets, synthesizePlanFeatures, effectiveGrants, buildGrantRows, quotaForDimension, computeProgressBar, buildMeterUsageRows, } from "./catalog.js";
19
- export type { PlanKind, GrantRow, MeterUsageRow } from "./catalog.js";
22
+ export type { PlanKind, GrantRow, GrantRowKind, MeterUsageRow, } from "./catalog.js";
20
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,wFAAwF;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,KAAK,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,EACL,UAAU,EACV,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,QAAQ,EACR,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAKhF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,wFAAwF;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EACV,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,KAAK,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,UAAU,EACV,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,QAAQ,EACR,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAKhF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@
11
11
  // const forecast = await fs.feature("weather").json("/forecast?city=NYC");
12
12
  export { createFartherShoreClient, createServerClient } from "./client.js";
13
13
  export { readRuntimeConfig } from "./config.js";
14
- export { FartherShoreError, FartherShoreApiError, FartherShoreNetworkError, FartherShoreAbortError, FartherShoreNotReadyError, FartherShoreConfigError, } from "./errors.js";
14
+ export { FartherShoreError, FartherShoreApiError, FartherShoreNetworkError, FartherShoreAbortError, FartherShoreNotReadyError, FartherShoreConfigError, LimitExceededError, parseLimitDescriptor, makeApiError, } from "./errors.js";
15
15
  // Pure catalog/pricing display helpers (plan classification, price/grant/quota
16
16
  // formatting) — port of the SSR portal's renderers so any frontend renders the
17
17
  // catalog identically without re-deriving the math.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,EAAE;AACF,8EAA8E;AAC9E,uFAAuF;AACvF,8CAA8C;AAC9C,uCAAuC;AACvC,6EAA6E;AAE7E,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAS3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAoErB,+EAA+E;AAC/E,+EAA+E;AAC/E,oDAAoD;AACpD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,EAAE;AACF,8EAA8E;AAC9E,uFAAuF;AACvF,8CAA8C;AAC9C,uCAAuC;AACvC,6EAA6E;AAE7E,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAS3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,GACb,MAAM,aAAa,CAAC;AA2ErB,+EAA+E;AAC/E,+EAA+E;AAC/E,oDAAoD;AACpD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ApiKey, AuditLogPage, Bootstrap, CancelSubscriptionResult, ChangePlanResult, CreatedApiKey, CreditBalance, FeatureHandle, OnboardingResult, Plan, Product, Session, SubscribeInput, SubscribeResult, SubscriberContext, Subscription, SubscriptionContextsResult, TeamListResult, TeamMember, TeamRole, UsageBillingBasis, UsageEvent, UsageSummary } from "../index.js";
1
+ import type { ApiKey, AuditLogPage, Bootstrap, CancelSubscriptionResult, ChangePlanResult, CreatedApiKey, CreditBalance, FeatureHandle, OnboardingResult, Plan, Product, ResourceRecord, Session, SubscribeInput, SubscribeResult, SubscriberContext, Subscription, SubscriptionContextsResult, TeamListResult, TeamMember, TeamRole, UsageBillingBasis, UsageEvent, UsageSummary } from "../index.js";
2
2
  import { type AsyncResult } from "./use-async.js";
3
3
  export declare function useBootstrap(): AsyncResult<Bootstrap>;
4
4
  export declare function useProduct(): AsyncResult<Product>;
@@ -91,4 +91,18 @@ export declare function useAuditLogs(filters?: {
91
91
  export declare function useCreditBalance(): AsyncResult<CreditBalance | null>;
92
92
  /** A stable handle to a builder feature (routed through the Gateway). */
93
93
  export declare function useFeature(name: string): FeatureHandle;
94
+ export interface ResourcesListResult<T = unknown> extends AsyncResult<ResourceRecord<T>[]> {
95
+ /** Create a record — throws `LimitExceededError` at the plan cap. */
96
+ create(payload: T): Promise<ResourceRecord<T>>;
97
+ /** Replace a record's payload. */
98
+ update(id: string, payload: T): Promise<ResourceRecord<T>>;
99
+ /** Delete a record (frees one unit of the quota). */
100
+ remove(id: string): Promise<void>;
101
+ }
102
+ /**
103
+ * List + mutate a product-declared, quota-counted resource (rides the gateway,
104
+ * which diverts to core). Refreshes the list after each mutation. `create`
105
+ * surfaces `LimitExceededError` at the cap — pair with `<UpgradePrompt>`.
106
+ */
107
+ export declare function useResourcesList<T = unknown>(name: string): ResourcesListResult<T>;
94
108
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
@@ -135,4 +135,30 @@ export function useFeature(name) {
135
135
  const fs = useFartherShore();
136
136
  return useMemo(() => fs.feature(name), [fs, name]);
137
137
  }
138
+ /**
139
+ * List + mutate a product-declared, quota-counted resource (rides the gateway,
140
+ * which diverts to core). Refreshes the list after each mutation. `create`
141
+ * surfaces `LimitExceededError` at the cap — pair with `<UpgradePrompt>`.
142
+ */
143
+ export function useResourcesList(name) {
144
+ const fs = useFartherShore();
145
+ const state = useAsync((signal) => fs.resources(name).list({ signal }), [fs, name]);
146
+ return {
147
+ ...state,
148
+ async create(payload) {
149
+ const record = await fs.resources(name).create(payload);
150
+ state.refresh();
151
+ return record;
152
+ },
153
+ async update(id, payload) {
154
+ const record = await fs.resources(name).update(id, payload);
155
+ state.refresh();
156
+ return record;
157
+ },
158
+ async remove(id) {
159
+ await fs.resources(name).delete(id);
160
+ state.refresh();
161
+ },
162
+ };
163
+ }
138
164
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ export type { FartherShoreProviderProps } from "./provider.js";
3
3
  export { useAsync } from "./use-async.js";
4
4
  export type { AsyncState, AsyncResult } from "./use-async.js";
5
5
  export { FartherShoreAbortError } from "../errors.js";
6
- export { useBootstrap, useProduct, useSession, useApiKeys, useUsage, useBilling, usePlans, useCreditBalance, useFeature, useMe, useSubscriptionContexts, useTeam, useAuditLogs, } from "./hooks.js";
7
- export type { SessionResult, ApiKeysResult, UsageData, BillingResult, PlansResult, TeamResult, } from "./hooks.js";
6
+ export { useBootstrap, useProduct, useSession, useApiKeys, useUsage, useBilling, usePlans, useCreditBalance, useFeature, useMe, useSubscriptionContexts, useTeam, useAuditLogs, useResourcesList, } from "./hooks.js";
7
+ export type { SessionResult, ApiKeysResult, UsageData, BillingResult, PlansResult, TeamResult, ResourcesListResult, } from "./hooks.js";
8
+ export { useUpgrade, resolveUpgrade, useResourceCap } from "./use-upgrade.js";
9
+ export type { UpgradeTarget, UseUpgradeResult } from "./use-upgrade.js";
8
10
  export type * from "../types.js";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,uBAAuB,EACvB,OAAO,EACP,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,aAAa,EACb,aAAa,EACb,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAKpB,mBAAmB,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,uBAAuB,EACvB,OAAO,EACP,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,aAAa,EACb,aAAa,EACb,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACV,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKxE,mBAAmB,aAAa,CAAC"}
@@ -10,5 +10,6 @@ export { useAsync } from "./use-async.js";
10
10
  // `instanceof FartherShoreAbortError` (e.g. to ignore a cancelled read) without
11
11
  // also reaching into the core entry.
12
12
  export { FartherShoreAbortError } from "../errors.js";
13
- export { useBootstrap, useProduct, useSession, useApiKeys, useUsage, useBilling, usePlans, useCreditBalance, useFeature, useMe, useSubscriptionContexts, useTeam, useAuditLogs, } from "./hooks.js";
13
+ export { useBootstrap, useProduct, useSession, useApiKeys, useUsage, useBilling, usePlans, useCreditBalance, useFeature, useMe, useSubscriptionContexts, useTeam, useAuditLogs, useResourcesList, } from "./hooks.js";
14
+ export { useUpgrade, resolveUpgrade, useResourceCap } from "./use-upgrade.js";
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4FAA4F;AAC5F,EAAE;AACF,kFAAkF;AAClF,+EAA+E;AAE/E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,gFAAgF;AAChF,gFAAgF;AAChF,qCAAqC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,uBAAuB,EACvB,OAAO,EACP,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4FAA4F;AAC5F,EAAE;AACF,kFAAkF;AAClF,+EAA+E;AAE/E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,gFAAgF;AAChF,gFAAgF;AAChF,qCAAqC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,uBAAuB,EACvB,OAAO,EACP,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { Plan } from "../types.js";
2
+ import type { LimitExceededError } from "../errors.js";
3
+ export interface UpgradeTarget {
4
+ /** The plan to upgrade to (pass `plan.id` to `billing.changePlan`). */
5
+ plan: Plan;
6
+ /** The new cap for the offending dimension, or null when unlimited/unknown. */
7
+ raisesTo: number | null;
8
+ }
9
+ /**
10
+ * Pick the cheapest upgrade for a limit. With a known dimension, the cheapest
11
+ * more-expensive plan that ACTUALLY RAISES that dimension's cap — never a plan
12
+ * whose cap equals or undercuts the current one (that would be a false "raise
13
+ * to N" promise). Returns null when no costlier plan raises the dimension, so
14
+ * the UI can render a neutral "contact support" message instead. The next-tier
15
+ * fallback (with raisesTo:null) is reserved for the compiled-ordinal case where
16
+ * the dimension can't be named.
17
+ */
18
+ export declare function resolveUpgrade(error: Pick<LimitExceededError, "dimension" | "currentCapacity">, currentPlan: Plan | null, plans: Plan[]): UpgradeTarget | null;
19
+ export interface UseUpgradeResult {
20
+ loading: boolean;
21
+ resolve(error: Pick<LimitExceededError, "dimension" | "currentCapacity">): UpgradeTarget | null;
22
+ }
23
+ /**
24
+ * The current plan's cap for a dimension (capability limit or quota), or null
25
+ * when unknown / unlimited. Drives the `n / max` display in `<ResourcesPanel>`.
26
+ */
27
+ export declare function useResourceCap(dimension: string): number | null;
28
+ /** Catalog-aware upgrade resolver. `resolve(error)` is stable once loaded. */
29
+ export declare function useUpgrade(): UseUpgradeResult;
30
+ //# sourceMappingURL=use-upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-upgrade.d.ts","sourceRoot":"","sources":["../../src/react/use-upgrade.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,IAAI,EAAE,IAAI,CAAC;IACX,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAaD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,iBAAiB,CAAC,EAChE,WAAW,EAAE,IAAI,GAAG,IAAI,EACxB,KAAK,EAAE,IAAI,EAAE,GACZ,aAAa,GAAG,IAAI,CA6BtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CACL,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,iBAAiB,CAAC,GAC/D,aAAa,GAAG,IAAI,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW/D;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,IAAI,gBAAgB,CAa7C"}