@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.
- package/README.md +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +1 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/catalog.d.ts +14 -5
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +90 -76
- package/dist/catalog.js.map +1 -1
- package/dist/client.d.ts +15 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/resources-panel.d.ts +15 -0
- package/dist/components/resources-panel.d.ts.map +1 -0
- package/dist/components/resources-panel.js +52 -0
- package/dist/components/resources-panel.js.map +1 -0
- package/dist/components/upgrade-prompt.d.ts +16 -0
- package/dist/components/upgrade-prompt.d.ts.map +1 -0
- package/dist/components/upgrade-prompt.js +65 -0
- package/dist/components/upgrade-prompt.js.map +1 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +67 -0
- package/dist/errors.js.map +1 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +16 -6
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/hooks.d.ts +15 -1
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/hooks.js +26 -0
- package/dist/react/hooks.js.map +1 -1
- package/dist/react/index.d.ts +4 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/use-upgrade.d.ts +30 -0
- package/dist/react/use-upgrade.d.ts.map +1 -0
- package/dist/react/use-upgrade.js +88 -0
- package/dist/react/use-upgrade.js.map +1 -0
- package/dist/resources/api.d.ts +20 -0
- package/dist/resources/api.d.ts.map +1 -0
- package/dist/resources/api.js +48 -0
- package/dist/resources/api.js.map +1 -0
- package/dist/resources/resources.d.ts +24 -0
- package/dist/resources/resources.d.ts.map +1 -0
- package/dist/resources/resources.js +49 -0
- package/dist/resources/resources.js.map +1 -0
- package/dist/types.d.ts +25 -21
- package/dist/types.d.ts.map +1 -1
- 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;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -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;
|
package/dist/errors.js.map
CHANGED
|
@@ -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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"}
|
package/dist/http.d.ts.map
CHANGED
|
@@ -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;
|
|
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,
|
|
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"
|
|
33
|
-
const
|
|
34
|
-
|
|
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
|
|
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
|
|
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":"AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,iEAAiE;AAEjE,OAAO,EAAsB,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,
|
|
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 {
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|
package/dist/react/hooks.d.ts
CHANGED
|
@@ -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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"}
|
package/dist/react/hooks.js
CHANGED
|
@@ -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
|
package/dist/react/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,oDAAoD;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/react/index.js
CHANGED
|
@@ -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
|
package/dist/react/index.js.map
CHANGED
|
@@ -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,
|
|
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"}
|