@farthershore/farthershore-js 0.1.5 → 0.1.6
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/dist/boot-primer.d.ts +2 -0
- package/dist/boot-primer.d.ts.map +1 -0
- package/dist/boot-primer.js +35 -0
- package/dist/boot-primer.js.map +1 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +11 -6
- package/dist/bootstrap.js.map +1 -1
- package/dist/cache.d.ts +9 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +34 -0
- package/dist/cache.js.map +1 -0
- package/dist/client.d.ts +24 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +31 -3
- package/dist/client.js.map +1 -1
- package/dist/components/auth.d.ts.map +1 -1
- package/dist/components/auth.js +11 -6
- package/dist/components/auth.js.map +1 -1
- package/dist/components/root.d.ts.map +1 -1
- package/dist/components/root.js +2 -1
- package/dist/components/root.js.map +1 -1
- package/dist/components/theme.d.ts.map +1 -1
- package/dist/components/theme.js +7 -2
- package/dist/components/theme.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/resources/account.d.ts.map +1 -1
- package/dist/resources/account.js +36 -25
- package/dist/resources/account.js.map +1 -1
- package/dist/resources/auth.d.ts.map +1 -1
- package/dist/resources/auth.js +5 -0
- package/dist/resources/auth.js.map +1 -1
- package/dist/resources/billing.d.ts.map +1 -1
- package/dist/resources/billing.js +46 -37
- package/dist/resources/billing.js.map +1 -1
- package/dist/resources/keys.d.ts.map +1 -1
- package/dist/resources/keys.js +14 -6
- package/dist/resources/keys.js.map +1 -1
- package/dist/resources/usage.d.ts.map +1 -1
- package/dist/resources/usage.js +13 -10
- package/dist/resources/usage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-primer.d.ts","sourceRoot":"","sources":["../src/boot-primer.ts"],"names":[],"mappings":"AAkBA,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAiBzB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// The HTML boot primer. A host page may start the resolve round-trip in an
|
|
2
|
+
// inline <script> BEFORE the app bundle is even parsed, and stash it as
|
|
3
|
+
//
|
|
4
|
+
// window.__FS_BOOT__ = { host, response /* Promise<Response|null> */ }
|
|
5
|
+
//
|
|
6
|
+
// `resolveBootstrap` adopts it (once) when `host` matches the client's
|
|
7
|
+
// portalHost — collapsing the HTML → JS → resolve waterfall into parallel
|
|
8
|
+
// work. Anything off (host mismatch, non-OK status, JSON error) falls back
|
|
9
|
+
// to the normal fetch: the primer can only ever make boot FASTER, never
|
|
10
|
+
// different. The dev-portal-template's index.html ships the canonical
|
|
11
|
+
// primer script; any host page (including apps not served by the platform)
|
|
12
|
+
// can do the same.
|
|
13
|
+
export async function consumePrimedResolve(portalHost) {
|
|
14
|
+
if (typeof window === "undefined")
|
|
15
|
+
return null;
|
|
16
|
+
const w = window;
|
|
17
|
+
const primed = w.__FS_BOOT__;
|
|
18
|
+
if (!primed || typeof primed.host !== "string" || !primed.response) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
// Consume once — a retry after a failed boot must hit the network for real.
|
|
22
|
+
w.__FS_BOOT__ = undefined;
|
|
23
|
+
if (primed.host.toLowerCase() !== portalHost)
|
|
24
|
+
return null;
|
|
25
|
+
try {
|
|
26
|
+
const res = await primed.response;
|
|
27
|
+
if (!res || !res.ok)
|
|
28
|
+
return null;
|
|
29
|
+
return (await res.json());
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=boot-primer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-primer.js","sourceRoot":"","sources":["../src/boot-primer.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,wEAAwE;AACxE,EAAE;AACF,yEAAyE;AACzE,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,sEAAsE;AACtE,2EAA2E;AAC3E,mBAAmB;AAOnB,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB;IAElB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAsC,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4EAA4E;IAC5E,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC;IAC1B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAEV,SAAS,EASV,MAAM,YAAY,CAAC;AA8LpB;kDACkD;AAClD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAsC7E"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// managed frontend can render plans/pricing/quotas/credit/docs/legal and a
|
|
11
11
|
// subscribe flow — not just an account dashboard.
|
|
12
12
|
import { coreFetch } from "./http.js";
|
|
13
|
+
import { consumePrimedResolve } from "./boot-primer.js";
|
|
13
14
|
import { FartherShoreNotReadyError } from "./errors.js";
|
|
14
15
|
// ── Mappers ───────────────────────────────────────────────────────────────
|
|
15
16
|
function mapMeter(m) {
|
|
@@ -120,12 +121,16 @@ export async function resolveBootstrap(ctx) {
|
|
|
120
121
|
if (!ctx.portalHost) {
|
|
121
122
|
throw new FartherShoreNotReadyError("no portalHost to bootstrap from — set config.portalHost (or run in a browser).");
|
|
122
123
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
// An HTML boot primer may have started this exact round-trip before the
|
|
125
|
+
// bundle parsed (see boot-primer.ts) — adopt it; else fetch normally.
|
|
126
|
+
const primed = (await consumePrimedResolve(ctx.portalHost));
|
|
127
|
+
const raw = primed ??
|
|
128
|
+
(await coreFetch(ctx, {
|
|
129
|
+
method: "GET",
|
|
130
|
+
path: "/portal/public/resolve",
|
|
131
|
+
query: { host: ctx.portalHost },
|
|
132
|
+
auth: "none",
|
|
133
|
+
}));
|
|
129
134
|
const product = mapProduct(raw.product);
|
|
130
135
|
const environment = raw.environment ? mapEnv(raw.environment) : null;
|
|
131
136
|
const plans = (raw.plans ?? []).map(mapPlan);
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,iFAAiF;AACjF,gFAAgF;AAChF,sCAAsC;AACtC,EAAE;AACF,8EAA8E;AAC9E,uEAAuE;AACvE,gFAAgF;AAChF,6EAA6E;AAC7E,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ClientContext } from "./config.js";
|
|
2
|
+
export interface ReadCacheEntry {
|
|
3
|
+
at: number;
|
|
4
|
+
promise: Promise<unknown>;
|
|
5
|
+
}
|
|
6
|
+
export declare function cachedRead<T>(ctx: ClientContext, parts: ReadonlyArray<string | null | undefined>, fn: () => Promise<T>): Promise<T>;
|
|
7
|
+
/** Drop every cached read — after any mutation, auth change, or org switch. */
|
|
8
|
+
export declare function bustReadCache(ctx: ClientContext): void;
|
|
9
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAC/C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEtD"}
|
package/dist/cache.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Session-scoped read-through cache — the prefetch foundation.
|
|
2
|
+
//
|
|
3
|
+
// Reads backing the portal's hot pages share one short-lived entry per
|
|
4
|
+
// (endpoint, args, org): an in-flight promise is joined (dedupe) and a fresh
|
|
5
|
+
// value is reused within the TTL, so `fs.prefetch.*` fired on nav hover /
|
|
6
|
+
// route intent makes the destination page's own hook ADOPT the same request
|
|
7
|
+
// instead of issuing a second one. Failures are never cached (entries evict
|
|
8
|
+
// on rejection), and every client mutation busts the whole cache — a small
|
|
9
|
+
// read surface kept always-correct beats fine-grained invalidation here.
|
|
10
|
+
//
|
|
11
|
+
// Callers' AbortSignals deliberately do NOT cancel shared reads (one
|
|
12
|
+
// unmounting component must not poison the entry for everyone else); the
|
|
13
|
+
// short TTL bounds staleness instead.
|
|
14
|
+
const READ_TTL_MS = 15_000;
|
|
15
|
+
export function cachedRead(ctx, parts, fn) {
|
|
16
|
+
const key = [...parts, ctx.organizationId ?? ""].join("|");
|
|
17
|
+
const now = Date.now();
|
|
18
|
+
const hit = ctx.readCache.get(key);
|
|
19
|
+
if (hit && now - hit.at < READ_TTL_MS)
|
|
20
|
+
return hit.promise;
|
|
21
|
+
const promise = fn();
|
|
22
|
+
ctx.readCache.set(key, { at: now, promise });
|
|
23
|
+
promise.catch(() => {
|
|
24
|
+
if (ctx.readCache.get(key)?.promise === promise) {
|
|
25
|
+
ctx.readCache.delete(key);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return promise;
|
|
29
|
+
}
|
|
30
|
+
/** Drop every cached read — after any mutation, auth change, or org switch. */
|
|
31
|
+
export function bustReadCache(ctx) {
|
|
32
|
+
ctx.readCache.clear();
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,EAAE;AACF,qEAAqE;AACrE,yEAAyE;AACzE,sCAAsC;AAItC,MAAM,WAAW,GAAG,MAAM,CAAC;AAO3B,MAAM,UAAU,UAAU,CACxB,GAAkB,EAClB,KAA+C,EAC/C,EAAoB;IAEpB,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,WAAW;QAAE,OAAO,GAAG,CAAC,OAAqB,CAAC;IACxE,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC;IACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;YAChD,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,GAAkB;IAC9C,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -9,6 +9,28 @@ import { type PlansResource } from "./resources/plans.js";
|
|
|
9
9
|
import { type AuditLogsResource, type OrganizationsResource, type TeamResource } from "./resources/account.js";
|
|
10
10
|
import { type FeatureHandle, type GatewayRequestInit } from "./resources/feature.js";
|
|
11
11
|
import type { Bootstrap, SubscriberContext } from "./types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Fire-and-forget cache warmers for navigation intent (sidebar hover/focus,
|
|
14
|
+
* route preload). Each starts the same read-through-cached request the
|
|
15
|
+
* destination page will make, so the page's hooks join the in-flight promise
|
|
16
|
+
* instead of paying a fresh round-trip after the route renders. Bootstrap is
|
|
17
|
+
* ensured first; all errors are swallowed — a hover is a hint, and the page's
|
|
18
|
+
* own read surfaces any real failure.
|
|
19
|
+
*/
|
|
20
|
+
export interface PrefetchSurface {
|
|
21
|
+
/** Warm the host→product resolve (joins the memoized bootstrap). */
|
|
22
|
+
boot(): void;
|
|
23
|
+
/** Warm `GET /me` (subscriber context) for dashboard/account surfaces. */
|
|
24
|
+
me(): void;
|
|
25
|
+
/** Warm the default usage snapshot (what `<UsageCard>`/the usage page read). */
|
|
26
|
+
usage(): void;
|
|
27
|
+
/** Warm the API-key list. */
|
|
28
|
+
apiKeys(): void;
|
|
29
|
+
/** Warm the subscription read (billing surfaces). */
|
|
30
|
+
subscription(): void;
|
|
31
|
+
/** Warm the credit-balance read (billing surfaces). */
|
|
32
|
+
creditBalance(): void;
|
|
33
|
+
}
|
|
12
34
|
export interface FartherShoreClient {
|
|
13
35
|
/** Resolve + cache the product/env/gateway for the current portal host. Safe
|
|
14
36
|
* to call repeatedly (memoized). */
|
|
@@ -49,6 +71,8 @@ export interface FartherShoreClient {
|
|
|
49
71
|
readonly team: TeamResource;
|
|
50
72
|
/** The subscriber-side audit log (cursor-paged). */
|
|
51
73
|
readonly auditLogs: AuditLogsResource;
|
|
74
|
+
/** Navigation-intent data warmers — see {@link PrefetchSurface}. */
|
|
75
|
+
readonly prefetch: PrefetchSurface;
|
|
52
76
|
/** A handle to a builder-defined feature, routed through the Gateway. */
|
|
53
77
|
feature(name: string): FeatureHandle;
|
|
54
78
|
/** Generic Gateway call (alias for `feature("…").fetch`). */
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,kBAAkB,EAGxB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// vs Gateway, auth, host/env scoping.
|
|
5
5
|
import { buildContext, } from "./config.js";
|
|
6
6
|
import { resolveBootstrap } from "./bootstrap.js";
|
|
7
|
+
import { bustReadCache } from "./cache.js";
|
|
7
8
|
import { coreFetch, gatewayFetch } from "./http.js";
|
|
8
9
|
import { createProductResource, } from "./resources/product.js";
|
|
9
10
|
import { createAuthResource, primePersistedPersona, } from "./resources/auth.js";
|
|
@@ -86,6 +87,27 @@ export function createFartherShoreClient(config) {
|
|
|
86
87
|
return inflight;
|
|
87
88
|
}
|
|
88
89
|
const account = createAccountSurface(ctx);
|
|
90
|
+
const keys = createKeysResource(ctx);
|
|
91
|
+
const usage = createUsageResource(ctx);
|
|
92
|
+
const billing = createBillingResource(ctx);
|
|
93
|
+
// Navigation-intent warmers: ensure bootstrap, start the cached read, drop
|
|
94
|
+
// the result. cachedRead dedupes in-flight requests, so the destination
|
|
95
|
+
// page's hook joins this request instead of re-issuing it.
|
|
96
|
+
function warm(read) {
|
|
97
|
+
void ensureBootstrap()
|
|
98
|
+
.then(read)
|
|
99
|
+
.catch(() => { });
|
|
100
|
+
}
|
|
101
|
+
const prefetch = {
|
|
102
|
+
boot: () => {
|
|
103
|
+
void ensureBootstrap().catch(() => { });
|
|
104
|
+
},
|
|
105
|
+
me: () => warm(() => account.me()),
|
|
106
|
+
usage: () => warm(() => usage.snapshot()),
|
|
107
|
+
apiKeys: () => warm(() => keys.list()),
|
|
108
|
+
subscription: () => warm(() => billing.subscription()),
|
|
109
|
+
creditBalance: () => warm(() => billing.creditBalance()),
|
|
110
|
+
};
|
|
89
111
|
return {
|
|
90
112
|
bootstrap: ensureBootstrap,
|
|
91
113
|
setApiKey(key) {
|
|
@@ -93,23 +115,29 @@ export function createFartherShoreClient(config) {
|
|
|
93
115
|
},
|
|
94
116
|
setSessionToken(token) {
|
|
95
117
|
ctx.sessionToken = token;
|
|
118
|
+
// Possibly a new identity — never serve another session's reads.
|
|
119
|
+
bustReadCache(ctx);
|
|
96
120
|
},
|
|
97
121
|
setTokenProvider(provider) {
|
|
98
122
|
ctx.tokenProvider = provider;
|
|
123
|
+
bustReadCache(ctx);
|
|
99
124
|
},
|
|
100
125
|
setOrganizationId(organizationId) {
|
|
101
126
|
ctx.organizationId = organizationId;
|
|
127
|
+
// Rescoping changes what every /me read returns.
|
|
128
|
+
bustReadCache(ctx);
|
|
102
129
|
},
|
|
103
130
|
product: createProductResource(ensureBootstrap),
|
|
104
131
|
auth: createAuthResource(ctx),
|
|
105
|
-
keys
|
|
106
|
-
usage
|
|
107
|
-
billing
|
|
132
|
+
keys,
|
|
133
|
+
usage,
|
|
134
|
+
billing,
|
|
108
135
|
plans: createPlansResource(ctx, ensureBootstrap),
|
|
109
136
|
me: account.me,
|
|
110
137
|
organizations: account.organizations,
|
|
111
138
|
team: account.team,
|
|
112
139
|
auditLogs: account.auditLogs,
|
|
140
|
+
prefetch,
|
|
113
141
|
feature: (name) => createFeature(ctx, name),
|
|
114
142
|
invoke: (path, init) => gatewayFetch(ctx, path, init),
|
|
115
143
|
core: (req) => coreFetch(ctx, req),
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,sCAAsC;AAEtC,OAAO,EAGL,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAoB,MAAM,WAAW,CAAC;AACtE,OAAO,EACL,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,oBAAoB,GAKrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,GAGd,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/components/auth.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/components/auth.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;;+EAG+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB;qFACiF;IACjF,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAC;IACd,sEAAsE;IACtE,OAAO,IAAI,IAAI,CAAC;CACjB;AAID,wBAAgB,SAAS,IAAI,MAAM,CAQlC;AAED;0EAC0E;AAC1E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAID,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,kDAG7D;AAED;oCACoC;AACpC,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,kDAG9D;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,kDAGhE;AAED;;mEAEmE;AACnE,wBAAgB,cAAc,CAAC,EAC7B,SAA2C,EAC3C,QAAoB,GACrB,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAOA;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,EAC9B,SAA+C,EAC/C,QAAqB,GACtB,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAWA;AAwPD;iFACiF;AACjF,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAWA;AAID;;0EAE0E;AAC1E,wBAAgB,YAAY,mDA0B3B"}
|
package/dist/components/auth.js
CHANGED
|
@@ -17,13 +17,15 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
17
17
|
// the strategy (Clerk's avatar menu, or nothing in persona mode — persona
|
|
18
18
|
// chrome is host-specific).
|
|
19
19
|
import { createContext, useContext, useEffect, useMemo, useState, } from "react";
|
|
20
|
+
import { FartherShoreConfigError } from "../errors.js";
|
|
20
21
|
import { useFartherShore, useSession } from "../react/index.js";
|
|
21
22
|
import { useFsTheme } from "./theme.js";
|
|
22
23
|
const Ctx = createContext(null);
|
|
23
24
|
export function useFsAuth() {
|
|
24
25
|
const ctx = useContext(Ctx);
|
|
25
|
-
if (!ctx)
|
|
26
|
-
throw new
|
|
26
|
+
if (!ctx) {
|
|
27
|
+
throw new FartherShoreConfigError("useFsAuth must be used within <FartherShoreRoot>");
|
|
28
|
+
}
|
|
27
29
|
return ctx;
|
|
28
30
|
}
|
|
29
31
|
/** Like {@link useFsAuth} but null outside the managed auth layer — lets
|
|
@@ -63,8 +65,7 @@ export function FsSignOutButton({ className = "fs-btn fs-btn--outline fs-btn--sm
|
|
|
63
65
|
let clerkModulePromise = null;
|
|
64
66
|
function loadClerk() {
|
|
65
67
|
if (!clerkModulePromise) {
|
|
66
|
-
clerkModulePromise = import(
|
|
67
|
-
/* @vite-ignore */ "@clerk/clerk-react").then((m) => m, () => {
|
|
68
|
+
clerkModulePromise = import(/* @vite-ignore */ "@clerk/clerk-react").then((m) => m, () => {
|
|
68
69
|
console.warn("[farthershore] Clerk-strategy environment but @clerk/clerk-react is not installed — sign-in disabled. `npm i @clerk/clerk-react` to enable it.");
|
|
69
70
|
return null;
|
|
70
71
|
});
|
|
@@ -177,7 +178,9 @@ function ClerkAuth({ config, children, }) {
|
|
|
177
178
|
? { isSatellite: true, domain, signInUrl: config.signInUrl }
|
|
178
179
|
: {};
|
|
179
180
|
const Provider = mod.ClerkProvider;
|
|
180
|
-
return (_jsxs(Provider, { publishableKey: config.publishableKey, appearance: {
|
|
181
|
+
return (_jsxs(Provider, { publishableKey: config.publishableKey, appearance: {
|
|
182
|
+
baseTheme: mode === "dark" && darkTheme ? darkTheme : undefined,
|
|
183
|
+
}, ...satelliteProps, children: [_jsx(SatelliteAutoSync, { clerk: mod }), _jsx(ClerkAuthBridge, { clerk: mod, children: children })] }));
|
|
181
184
|
}
|
|
182
185
|
/* ── Persona (SDK-managed sessions) ────────────────────────────── */
|
|
183
186
|
function PersonaAuth({ children }) {
|
|
@@ -190,7 +193,9 @@ function PersonaAuth({ children }) {
|
|
|
190
193
|
signIn: () => {
|
|
191
194
|
// Persona sign-in is a form (an access key) — hosts render FsSignIn /
|
|
192
195
|
// their own form and call useSession().signIn. Scroll to it if present.
|
|
193
|
-
document
|
|
196
|
+
document
|
|
197
|
+
.getElementById("signin")
|
|
198
|
+
?.scrollIntoView({ behavior: "smooth" });
|
|
194
199
|
},
|
|
195
200
|
signOut: async () => {
|
|
196
201
|
await session.signOut();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/components/auth.tsx"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,gFAAgF;AAChF,6BAA6B;AAC7B,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,gEAAgE;AAChE,yEAAyE;AACzE,8DAA8D;AAC9D,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,0EAA0E;AAC1E,4BAA4B;AAE5B,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GAGT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2BxC,MAAM,GAAG,GAAG,aAAa,CAAgB,IAAI,CAAC,CAAC;AAE/C,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/components/auth.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/components/root.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/components/root.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B;gEAC4D;IAC5D,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;2CACuC;IACvC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IAC1C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAOD;gEACgE;AAChE,wBAAgB,OAAO,IAAI,SAAS,CAQnC;AA6CD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,2CAM1E"}
|
package/dist/components/root.js
CHANGED
|
@@ -12,6 +12,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
|
12
12
|
// branding), and the auth layer (Clerk satellite or persona — picked from the
|
|
13
13
|
// environment's auth strategy automatically). No host glue.
|
|
14
14
|
import { createContext, useContext } from "react";
|
|
15
|
+
import { FartherShoreConfigError } from "../errors.js";
|
|
15
16
|
import { FartherShoreProvider, useBootstrap } from "../react/index.js";
|
|
16
17
|
import { FsThemeProvider } from "./theme.js";
|
|
17
18
|
import { FsAuthProvider } from "./auth.js";
|
|
@@ -24,7 +25,7 @@ const BootCtx = createContext(null);
|
|
|
24
25
|
export function useBoot() {
|
|
25
26
|
const boot = useContext(BootCtx);
|
|
26
27
|
if (!boot) {
|
|
27
|
-
throw new
|
|
28
|
+
throw new FartherShoreConfigError("useBoot must be used inside <FartherShoreRoot>");
|
|
28
29
|
}
|
|
29
30
|
return boot;
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/components/root.tsx"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,sDAAsD;AACtD,8DAA8D;AAC9D,kFAAkF;AAClF,wBAAwB;AACxB,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,4DAA4D;AAE5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,cAAc,EAAsB,MAAM,WAAW,CAAC;AAiB/D,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,OAAO,GAAG,aAAa,CAAmB,IAAI,CAAC,CAAC;AAEtD;gEACgE;AAChE,MAAM,UAAU,OAAO;IACrB,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/components/root.tsx"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,sDAAsD;AACtD,8DAA8D;AAC9D,kFAAkF;AAClF,wBAAwB;AACxB,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,4DAA4D;AAE5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,cAAc,EAAsB,MAAM,WAAW,CAAC;AAiB/D,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,OAAO,GAAG,aAAa,CAAmB,IAAI,CAAC,CAAC;AAEtD;gEACgE;AAChE,MAAM,UAAU,OAAO;IACrB,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,uBAAuB,CAC/B,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,KAAK,EAAqB;IACjD,OAAO,cAAK,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAO,CAAC;AACzD,CAAC;AAED,SAAS,IAAI,CAAC,EACZ,UAAU,EACV,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,GAC8B;IACtC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,4BAAG,MAAM,IAAI,KAAC,aAAa,IAAC,KAAK,EAAC,eAAU,GAAG,GAAI,CAAC;IAC7E,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1D,OAAO,CACL,4BACG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAC,aAAa,IAAC,KAAK,EAAE,GAAG,CAAC,OAAO,GAAI,GACtE,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,SAAS;QACxD,GAAG,UAAU;KACd,CAAC;IAEF,yEAAyE;IACzE,yCAAyC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,IAAI,OAAO,CAAC;IAEhE,OAAO,CACL,KAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,CAAC,IAAI,YAChC,KAAC,eAAe,IAAC,UAAU,EAAE,MAAM,YACjC,KAAC,cAAc,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,YAC7C,QAAQ,GACM,GACD,GACD,CACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAyB;IACzE,OAAO,CACL,KAAC,oBAAoB,IAAC,MAAM,EAAE,MAAM,YAClC,KAAC,IAAI,OAAK,IAAI,GAAI,GACG,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/components/theme.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/components/theme.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAID,wBAAgB,UAAU,IAAI,cAAc,CAQ3C;AAqBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,QAAQ,GACT,EAAE;IACD,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAmDA"}
|
package/dist/components/theme.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext, useMemo, useState, } from "react";
|
|
3
|
+
import { FartherShoreConfigError } from "../errors.js";
|
|
3
4
|
const ThemeCtx = createContext(null);
|
|
4
5
|
export function useFsTheme() {
|
|
5
6
|
const ctx = useContext(ThemeCtx);
|
|
6
7
|
if (!ctx) {
|
|
7
|
-
throw new
|
|
8
|
+
throw new FartherShoreConfigError("useFsTheme must be used within <FsThemeProvider>");
|
|
8
9
|
}
|
|
9
10
|
return ctx;
|
|
10
11
|
}
|
|
@@ -30,7 +31,11 @@ function readStored() {
|
|
|
30
31
|
*/
|
|
31
32
|
export function FsThemeProvider({ appearance, children, }) {
|
|
32
33
|
const [preference, setPreferenceState] = useState(() => readStored() ?? appearance?.theme ?? "light");
|
|
33
|
-
const mode = preference === "auto"
|
|
34
|
+
const mode = preference === "auto"
|
|
35
|
+
? systemPrefersDark()
|
|
36
|
+
? "dark"
|
|
37
|
+
: "light"
|
|
38
|
+
: preference;
|
|
34
39
|
const ctx = useMemo(() => ({
|
|
35
40
|
mode,
|
|
36
41
|
preference,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/components/theme.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,OAAO,EACP,QAAQ,GAGT,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/components/theme.tsx"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export interface ClientContext {
|
|
|
38
38
|
productId: string | null;
|
|
39
39
|
environmentId: string | null;
|
|
40
40
|
organizationId: string | null;
|
|
41
|
+
/** Read-through cache backing `fs.prefetch.*` (see cache.ts). */
|
|
42
|
+
readCache: Map<string, import("./cache.js").ReadCacheEntry>;
|
|
41
43
|
gatewayUrl: string | null;
|
|
42
44
|
apiKey: string | null;
|
|
43
45
|
/** SDK-managed session token (set by `fs.auth.signIn`), falling back to the
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC;AAErC;+EAC+E;AAC/E,MAAM,MAAM,aAAa,GAAG,MACxB,MAAM,GACN,IAAI,GACJ,SAAS,GACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IACjC;oEACgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB;qDACiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;uBACmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;4CACwC;IACxC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;qDACiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;+CAC2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;kEAE8D;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,iFAAiF;IACjF,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;8EAC8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;0CACsC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;uDAEmD;IACnD,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,SAAS,CAAC;CAClB;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC;AAErC;+EAC+E;AAC/E,MAAM,MAAM,aAAa,GAAG,MACxB,MAAM,GACN,IAAI,GACJ,SAAS,GACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IACjC;oEACgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB;qDACiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;uBACmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;4CACwC;IACxC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;qDACiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;+CAC2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;kEAE8D;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,iFAAiF;IACjF,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;8EAC8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iEAAiE;IACjE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,cAAc,CAAC,CAAC;IAC5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;0CACsC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;uDAEmD;IACnD,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,SAAS,CAAC;CAClB;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,CAoCtE;AAED;;6CAE6C;AAC7C,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAe7E"}
|
package/dist/config.js
CHANGED
|
@@ -25,6 +25,7 @@ export function buildContext(config) {
|
|
|
25
25
|
return {
|
|
26
26
|
coreUrl: trimTrailingSlash(config.coreUrl),
|
|
27
27
|
portalHost: portalHost ? portalHost.toLowerCase() : null,
|
|
28
|
+
readCache: new Map(),
|
|
28
29
|
productId: config.productId ?? null,
|
|
29
30
|
environmentId: config.environmentId ?? null,
|
|
30
31
|
organizationId: config.organizationId ?? null,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,2CAA2C;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,2CAA2C;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAgEtD,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,uBAAuB,CAC/B,iDAAiD,CAClD,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GACd,MAAM,CAAC,UAAU;QACjB,CAAC,OAAO,UAAU,KAAK,WAAW;YACjC,UAA+C,CAAC,QAAQ,EAAE,IAAI;YAC7D,CAAC,CAAE,UAA6C,CAAC,QAAQ,CAAC,IAAI;YAC9D,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,SAAS,GACb,MAAM,CAAC,KAAK;QACZ,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,uBAAuB,CAC/B,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QACxD,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;QACnC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;QAC3C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3E,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED;;6CAE6C;AAC7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAkB;IACnD,IAAI,GAAG,CAAC,YAAY;QAAE,OAAO,GAAG,CAAC,YAAY,CAAC;IAC9C,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;QAC5E,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/resources/account.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/resources/account.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,EACd,UAAU,EACV,QAAQ,EACT,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,qBAAqB;IACpC;;iDAE6C;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B;;6BAEyB;IACzB,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/D,GAAG,CAAC,KAAK,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7E,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC;iEAC6D;IAC7D,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B;;6EAEyE;IACzE,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACvE,aAAa,EAAE,qBAAqB,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,CAgIvE"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// graceful degradation (a transient Core error degrades a card, never crashes
|
|
6
6
|
// the page).
|
|
7
7
|
import { coreFetch } from "../http.js";
|
|
8
|
+
import { cachedRead } from "../cache.js";
|
|
8
9
|
import { FartherShoreApiError } from "../errors.js";
|
|
9
10
|
import { mePath, requireProductId } from "./_shared.js";
|
|
10
11
|
function isAuthOrMissing(err) {
|
|
@@ -13,30 +14,32 @@ function isAuthOrMissing(err) {
|
|
|
13
14
|
}
|
|
14
15
|
export function createAccountSurface(ctx) {
|
|
15
16
|
return {
|
|
16
|
-
async me(
|
|
17
|
+
async me() {
|
|
18
|
+
// Read-through cached (cache.ts) — see keys.list for the contract.
|
|
17
19
|
const productId = requireProductId(ctx);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
20
|
+
return cachedRead(ctx, ["account.me", productId], async () => {
|
|
21
|
+
try {
|
|
22
|
+
const raw = await coreFetch(ctx, {
|
|
23
|
+
method: "GET",
|
|
24
|
+
path: mePath(productId),
|
|
25
|
+
});
|
|
26
|
+
if (!raw)
|
|
27
|
+
return null;
|
|
28
|
+
const s = (raw.subscriber ?? null);
|
|
29
|
+
return {
|
|
30
|
+
subscriber: s,
|
|
31
|
+
availablePlans: Array.isArray(raw.availablePlans)
|
|
32
|
+
? raw.availablePlans
|
|
33
|
+
: [],
|
|
34
|
+
raw,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (isAuthOrMissing(err))
|
|
39
|
+
return null;
|
|
40
|
+
throw err;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
40
43
|
},
|
|
41
44
|
organizations: {
|
|
42
45
|
async contexts(opts) {
|
|
@@ -72,12 +75,20 @@ export function createAccountSurface(ctx) {
|
|
|
72
75
|
signal: opts?.signal,
|
|
73
76
|
});
|
|
74
77
|
if (!raw || !Array.isArray(raw.members)) {
|
|
75
|
-
return {
|
|
78
|
+
return {
|
|
79
|
+
ok: false,
|
|
80
|
+
members: [],
|
|
81
|
+
error: "Team access could not be loaded.",
|
|
82
|
+
};
|
|
76
83
|
}
|
|
77
84
|
return { ok: true, members: raw.members };
|
|
78
85
|
}
|
|
79
86
|
catch {
|
|
80
|
-
return {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
members: [],
|
|
90
|
+
error: "Team access could not be loaded.",
|
|
91
|
+
};
|
|
81
92
|
}
|
|
82
93
|
},
|
|
83
94
|
async add(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/resources/account.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,aAAa;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/resources/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AAgBrE,MAAM,WAAW,YAAY;IAC3B;wEACoE;IACpE,UAAU,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D;;;;iCAI6B;IAC7B,MAAM,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzD;8BAC0B;IAC1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC;0CACsC;IACtC,WAAW,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5D;AA4CD;gEACgE;AAChE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAc9D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,CA+EnE"}
|
package/dist/resources/auth.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { coreFetch } from "../http.js";
|
|
2
|
+
import { bustReadCache } from "../cache.js";
|
|
2
3
|
import { FartherShoreApiError } from "../errors.js";
|
|
3
4
|
import { mePath, requireProductId } from "./_shared.js";
|
|
4
5
|
// ── Self-managed persona persistence (browser only) ────────────────────────
|
|
@@ -55,6 +56,7 @@ export function primePersistedPersona(ctx) {
|
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
57
58
|
ctx.sessionToken = token;
|
|
59
|
+
bustReadCache(ctx); // new identity → cached reads are someone else's
|
|
58
60
|
}
|
|
59
61
|
catch {
|
|
60
62
|
/* storage unavailable */
|
|
@@ -96,6 +98,7 @@ export function createAuthResource(ctx) {
|
|
|
96
98
|
auth: "none",
|
|
97
99
|
});
|
|
98
100
|
ctx.sessionToken = raw.sessionToken;
|
|
101
|
+
bustReadCache(ctx); // new identity → cached reads are someone else's
|
|
99
102
|
// Self-managed persistence: survive reloads with zero host wiring.
|
|
100
103
|
const s = storage();
|
|
101
104
|
try {
|
|
@@ -123,11 +126,13 @@ export function createAuthResource(ctx) {
|
|
|
123
126
|
}
|
|
124
127
|
finally {
|
|
125
128
|
ctx.sessionToken = null;
|
|
129
|
+
bustReadCache(ctx); // signed out → drop the session's cached reads
|
|
126
130
|
clearPersistedPersona();
|
|
127
131
|
}
|
|
128
132
|
},
|
|
129
133
|
setToken(token) {
|
|
130
134
|
ctx.sessionToken = token;
|
|
135
|
+
bustReadCache(ctx); // new identity → cached reads are someone else's
|
|
131
136
|
},
|
|
132
137
|
personaView: readPersistedView,
|
|
133
138
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAmCxD,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AAExE,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AACrD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAE9C,SAAS,OAAO;IACd,IAAI,CAAC;QACH,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyC,CAAC;QACrE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5C,qBAAqB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;gEACgE;AAChE,MAAM,UAAU,qBAAqB,CAAC,GAAkB;IACtD,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACzB,qBAAqB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QACzB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAkB;IACnD,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,IAAI;YACnB,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAuB,GAAG,EAAE;oBACrD,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;oBACvB,MAAM,EAAE,IAAI,EAAE,MAAM;iBACrB,CAAC,CAAC;gBACH,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;gBACzB,MAAM,UAAU,GAAsB,CAAC;oBACrC,CAAC,CAAC;wBACE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;wBACxB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;wBAC1B,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;qBACzC;oBACH,CAAC,CAAC,IAAI,CAAC;gBACT,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IACE,GAAG,YAAY,oBAAoB;oBACnC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,EAC1C,CAAC;oBACD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACpD,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAoB,GAAG,EAAE;gBAClD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;gBAC9B,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YACH,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;YACpC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD;YACrE,mEAAmE;YACnE,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,CAAC,EAAE,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBAChD,CAAC,EAAE,OAAO,CACR,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAC7D,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,GAAG,CAAC,YAAY;gBACvB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,OAAO;YACX,IAAI,CAAC;gBACH,MAAM,SAAS,CAAO,GAAG,EAAE;oBACzB,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,6BAA6B;iBACpC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,gEAAgE;YAClE,CAAC;oBAAS,CAAC;gBACT,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,+CAA+C;gBACnE,qBAAqB,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,KAAK;YACZ,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;YACzB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD;QACvE,CAAC;QAED,WAAW,EAAE,iBAAiB;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/resources/billing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/resources/billing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAC;AA+BrB;;4BAE4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC5E;8EAC0E;IAC1E,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E;;uCAEmC;IACnC,aAAa,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC9E;2EACuE;IACvE,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACxD,iEAAiE;IACjE,mBAAmB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjD;yEACqE;IACrE,UAAU,CAAC,KAAK,EAAE;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B;4EACwE;IACxE,mBAAmB,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,CA8HzE"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { coreFetch } from "../http.js";
|
|
2
|
+
import { bustReadCache, cachedRead } from "../cache.js";
|
|
2
3
|
import { FartherShoreApiError } from "../errors.js";
|
|
3
4
|
import { mePath, requireProductId } from "./_shared.js";
|
|
4
5
|
export function createBillingResource(ctx) {
|
|
5
6
|
return {
|
|
6
|
-
async subscription(
|
|
7
|
+
async subscription() {
|
|
8
|
+
// Read-through cached (cache.ts) — see keys.list for the contract.
|
|
7
9
|
const productId = requireProductId(ctx);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
return cachedRead(ctx, ["billing.subscription", productId], async () => {
|
|
11
|
+
const raw = await coreFetch(ctx, {
|
|
12
|
+
method: "GET",
|
|
13
|
+
path: mePath(productId, "/subscription"),
|
|
14
|
+
});
|
|
15
|
+
if (!raw)
|
|
16
|
+
return null;
|
|
17
|
+
return {
|
|
18
|
+
id: raw.subscriptionId ?? raw.id ?? "",
|
|
19
|
+
status: raw.status ?? raw.subscriptionLifecycle ?? raw.lifecycle ?? "",
|
|
20
|
+
planKey: raw.planKey ?? raw.plan?.planKey ?? null,
|
|
21
|
+
planName: raw.planName ?? raw.plan?.displayName ?? raw.plan?.planName ?? null,
|
|
22
|
+
raw,
|
|
23
|
+
};
|
|
12
24
|
});
|
|
13
|
-
if (!raw)
|
|
14
|
-
return null;
|
|
15
|
-
return {
|
|
16
|
-
id: raw.subscriptionId ?? raw.id ?? "",
|
|
17
|
-
status: raw.status ?? raw.subscriptionLifecycle ?? raw.lifecycle ?? "",
|
|
18
|
-
planKey: raw.planKey ?? raw.plan?.planKey ?? null,
|
|
19
|
-
planName: raw.planName ?? raw.plan?.displayName ?? raw.plan?.planName ?? null,
|
|
20
|
-
raw,
|
|
21
|
-
};
|
|
22
25
|
},
|
|
23
26
|
async openBillingPortal(input = {}) {
|
|
24
27
|
const productId = requireProductId(ctx);
|
|
@@ -29,31 +32,33 @@ export function createBillingResource(ctx) {
|
|
|
29
32
|
});
|
|
30
33
|
return { url: raw.url };
|
|
31
34
|
},
|
|
32
|
-
async creditBalance(
|
|
35
|
+
async creditBalance() {
|
|
36
|
+
// Read-through cached (cache.ts) — see keys.list for the contract.
|
|
33
37
|
const productId = requireProductId(ctx);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
// No subscription / no credit grant on file → degrade to null so the
|
|
50
|
-
// portal still renders the rest of the billing surface.
|
|
51
|
-
if (err instanceof FartherShoreApiError &&
|
|
52
|
-
(err.status === 404 || err.status === 401 || err.status === 403)) {
|
|
53
|
-
return null;
|
|
38
|
+
return cachedRead(ctx, ["billing.creditBalance", productId], async () => {
|
|
39
|
+
try {
|
|
40
|
+
const raw = await coreFetch(ctx, {
|
|
41
|
+
method: "GET",
|
|
42
|
+
path: mePath(productId, "/credit-balance"),
|
|
43
|
+
});
|
|
44
|
+
if (!raw.balance)
|
|
45
|
+
return null;
|
|
46
|
+
return {
|
|
47
|
+
availableCents: raw.balance.availableCents,
|
|
48
|
+
ledgerCents: raw.balance.ledgerCents,
|
|
49
|
+
currency: raw.balance.currency,
|
|
50
|
+
};
|
|
54
51
|
}
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
catch (err) {
|
|
53
|
+
// No subscription / no credit grant on file → degrade to null so the
|
|
54
|
+
// portal still renders the rest of the billing surface.
|
|
55
|
+
if (err instanceof FartherShoreApiError &&
|
|
56
|
+
(err.status === 404 || err.status === 401 || err.status === 403)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
57
62
|
},
|
|
58
63
|
async cancelSubscription() {
|
|
59
64
|
const productId = requireProductId(ctx);
|
|
@@ -61,6 +66,7 @@ export function createBillingResource(ctx) {
|
|
|
61
66
|
method: "POST",
|
|
62
67
|
path: mePath(productId, "/cancel"),
|
|
63
68
|
});
|
|
69
|
+
bustReadCache(ctx);
|
|
64
70
|
return {
|
|
65
71
|
subscription: raw?.subscription,
|
|
66
72
|
portalRedirect: raw?.portalRedirect ?? null,
|
|
@@ -73,6 +79,7 @@ export function createBillingResource(ctx) {
|
|
|
73
79
|
method: "POST",
|
|
74
80
|
path: mePath(productId, "/restore"),
|
|
75
81
|
});
|
|
82
|
+
bustReadCache(ctx);
|
|
76
83
|
return { raw };
|
|
77
84
|
},
|
|
78
85
|
async changePlan(input) {
|
|
@@ -86,6 +93,7 @@ export function createBillingResource(ctx) {
|
|
|
86
93
|
cancelUrl: input.cancelUrl,
|
|
87
94
|
},
|
|
88
95
|
});
|
|
96
|
+
bustReadCache(ctx);
|
|
89
97
|
return {
|
|
90
98
|
subscription: raw?.subscription,
|
|
91
99
|
checkoutUrl: raw?.checkoutUrl ??
|
|
@@ -106,6 +114,7 @@ export function createBillingResource(ctx) {
|
|
|
106
114
|
cancelUrl: input.cancelUrl,
|
|
107
115
|
},
|
|
108
116
|
});
|
|
117
|
+
bustReadCache(ctx);
|
|
109
118
|
return { url: raw.checkoutUrl ?? raw.url ?? "" };
|
|
110
119
|
},
|
|
111
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/resources/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/resources/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/resources/keys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/resources/keys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmCzD,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,yDAAyD;IACzD,MAAM,CAAC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E,sCAAsC;IACtC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,8EAA8E;IAC9E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/C;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,CAiDnE"}
|
package/dist/resources/keys.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { coreFetch } from "../http.js";
|
|
2
|
+
import { bustReadCache, cachedRead } from "../cache.js";
|
|
2
3
|
import { mePath, requireProductId } from "./_shared.js";
|
|
3
4
|
function mapKey(k) {
|
|
4
5
|
return {
|
|
@@ -18,14 +19,18 @@ function withSecret(k) {
|
|
|
18
19
|
}
|
|
19
20
|
export function createKeysResource(ctx) {
|
|
20
21
|
return {
|
|
21
|
-
async list(
|
|
22
|
+
async list() {
|
|
23
|
+
// Read-through cached (cache.ts): a hover-prefetch and the page's own
|
|
24
|
+
// hook share one request. The cache owns the fetch lifecycle, so the
|
|
25
|
+
// caller's AbortSignal is deliberately not threaded through.
|
|
22
26
|
const productId = requireProductId(ctx);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
return cachedRead(ctx, ["keys.list", productId], async () => {
|
|
28
|
+
const raw = await coreFetch(ctx, {
|
|
29
|
+
method: "GET",
|
|
30
|
+
path: mePath(productId, "/api-keys"),
|
|
31
|
+
});
|
|
32
|
+
return raw.map(mapKey);
|
|
27
33
|
});
|
|
28
|
-
return raw.map(mapKey);
|
|
29
34
|
},
|
|
30
35
|
async create(input = {}) {
|
|
31
36
|
const productId = requireProductId(ctx);
|
|
@@ -34,6 +39,7 @@ export function createKeysResource(ctx) {
|
|
|
34
39
|
path: mePath(productId, "/api-keys"),
|
|
35
40
|
body: { label: input.label, scopes: input.scopes },
|
|
36
41
|
});
|
|
42
|
+
bustReadCache(ctx);
|
|
37
43
|
return withSecret(raw);
|
|
38
44
|
},
|
|
39
45
|
async revoke(keyId) {
|
|
@@ -42,6 +48,7 @@ export function createKeysResource(ctx) {
|
|
|
42
48
|
method: "DELETE",
|
|
43
49
|
path: mePath(productId, `/api-keys/${encodeURIComponent(keyId)}`),
|
|
44
50
|
});
|
|
51
|
+
bustReadCache(ctx);
|
|
45
52
|
},
|
|
46
53
|
async rotate(keyId) {
|
|
47
54
|
const productId = requireProductId(ctx);
|
|
@@ -49,6 +56,7 @@ export function createKeysResource(ctx) {
|
|
|
49
56
|
method: "POST",
|
|
50
57
|
path: mePath(productId, `/api-keys/${encodeURIComponent(keyId)}/rotate`),
|
|
51
58
|
});
|
|
59
|
+
bustReadCache(ctx);
|
|
52
60
|
return withSecret(raw);
|
|
53
61
|
},
|
|
54
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/resources/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/resources/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/resources/usage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/resources/usage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,aAAa,CAAC;AAsBrB,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,OAAO,CACL,KAAK,CAAC,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,8DAA8D;IAC9D,MAAM,CACJ,KAAK,CAAC,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzB;sEACkE;IAClE,QAAQ,CACN,KAAK,CAAC,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAmDrE"}
|
package/dist/resources/usage.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { coreFetch } from "../http.js";
|
|
2
|
+
import { cachedRead } from "../cache.js";
|
|
2
3
|
import { mePath, requireProductId } from "./_shared.js";
|
|
3
4
|
export function createUsageResource(ctx) {
|
|
4
|
-
async function fetchUsage(range
|
|
5
|
+
async function fetchUsage(range) {
|
|
6
|
+
// Read-through cached per range (cache.ts): summary/events/snapshot all
|
|
7
|
+
// share it, and a hover-prefetch warms the page's exact request. The
|
|
8
|
+
// cache owns the fetch lifecycle (no per-caller AbortSignal).
|
|
5
9
|
const productId = requireProductId(ctx);
|
|
6
|
-
return coreFetch(ctx, {
|
|
10
|
+
return cachedRead(ctx, ["usage", productId, range?.from ?? "", range?.to ?? ""], () => coreFetch(ctx, {
|
|
7
11
|
method: "GET",
|
|
8
12
|
path: mePath(productId, "/usage"),
|
|
9
13
|
query: { from: range?.from, to: range?.to },
|
|
10
|
-
|
|
11
|
-
});
|
|
14
|
+
}));
|
|
12
15
|
}
|
|
13
16
|
function toEvent(i) {
|
|
14
17
|
return {
|
|
@@ -25,14 +28,14 @@ export function createUsageResource(ctx) {
|
|
|
25
28
|
};
|
|
26
29
|
}
|
|
27
30
|
return {
|
|
28
|
-
async summary(range
|
|
29
|
-
return (await fetchUsage(range
|
|
31
|
+
async summary(range) {
|
|
32
|
+
return (await fetchUsage(range)).summary;
|
|
30
33
|
},
|
|
31
|
-
async events(range
|
|
32
|
-
return (await fetchUsage(range
|
|
34
|
+
async events(range) {
|
|
35
|
+
return (await fetchUsage(range)).items.map(toEvent);
|
|
33
36
|
},
|
|
34
|
-
async snapshot(range
|
|
35
|
-
const raw = await fetchUsage(range
|
|
37
|
+
async snapshot(range) {
|
|
38
|
+
const raw = await fetchUsage(range);
|
|
36
39
|
return {
|
|
37
40
|
summary: raw.summary,
|
|
38
41
|
events: raw.items.map(toEvent),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/resources/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/resources/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA6CxD,MAAM,UAAU,mBAAmB,CAAC,GAAkB;IACpD,KAAK,UAAU,UAAU,CAAC,KAAkB;QAC1C,wEAAwE;QACxE,qEAAqE;QACrE,8DAA8D;QAC9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,UAAU,CACf,GAAG,EACH,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EACxD,GAAG,EAAE,CACH,SAAS,CAAW,GAAG,EAAE;YACvB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;YACjC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SAC5C,CAAC,CACL,CAAC;IACJ,CAAC;IAED,SAAS,OAAO,CAAC,CAAe;QAC9B,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;YACjD,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;YAChC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;SACzB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,KAAK;YAClB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC9B,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,UAAU;aAC7C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farthershore/farthershore-js",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Farther Shore Frontend SDK — the browser integration layer between static frontends and the Farther Shore platform (Core + Gateway).",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|