@fanvue/builder-sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +284 -0
  2. package/dist/bridge/index.d.ts +1 -1
  3. package/dist/bridge/index.js +2 -2
  4. package/dist/{bridge-CGVtI3hr.js → bridge-QnF7P4Co.js} +2 -2
  5. package/dist/{bridge-CGVtI3hr.js.map → bridge-QnF7P4Co.js.map} +1 -1
  6. package/dist/core/index.d.ts +2 -2
  7. package/dist/core/index.js +3 -3
  8. package/dist/{core-BqdYUMrJ.js → core-BhKiA55a.js} +1318 -9
  9. package/dist/core-BhKiA55a.js.map +1 -0
  10. package/dist/index-C3CXrRiw.d.ts +1412 -0
  11. package/dist/index-C3CXrRiw.d.ts.map +1 -0
  12. package/dist/{index-BRDYLBlc.d.ts → index-CEFYZtlb.d.ts} +2 -2
  13. package/dist/{index-BRDYLBlc.d.ts.map → index-CEFYZtlb.d.ts.map} +1 -1
  14. package/dist/{index-Dr-mZ0qP.d.ts → index-cf3ZMnLJ.d.ts} +26 -2
  15. package/dist/index-cf3ZMnLJ.d.ts.map +1 -0
  16. package/dist/index-v_6Z4Q0u.d.ts +84 -0
  17. package/dist/index-v_6Z4Q0u.d.ts.map +1 -0
  18. package/dist/{schemas-DbyHF7Xi.js → index.cjs-teGsk6HB.js} +1058 -977
  19. package/dist/index.cjs-teGsk6HB.js.map +1 -0
  20. package/dist/nextjs/embedded-app/index.d.ts +2 -2
  21. package/dist/nextjs/embedded-app/index.js +3 -3
  22. package/dist/nextjs/off-platform/index.d.ts +3 -3
  23. package/dist/nextjs/off-platform/index.d.ts.map +1 -1
  24. package/dist/nextjs/off-platform/index.js +4 -4
  25. package/dist/nextjs/off-platform/index.js.map +1 -1
  26. package/dist/nextjs-CvVhtMdb.js +144 -0
  27. package/dist/nextjs-CvVhtMdb.js.map +1 -0
  28. package/dist/react/index.d.ts +2 -2
  29. package/dist/react/index.js +3 -3
  30. package/package.json +1 -1
  31. package/dist/core-BqdYUMrJ.js.map +0 -1
  32. package/dist/index-C4ewLil3.d.ts +0 -48
  33. package/dist/index-C4ewLil3.d.ts.map +0 -1
  34. package/dist/index-ClbZoV_Z.d.ts +0 -420
  35. package/dist/index-ClbZoV_Z.d.ts.map +0 -1
  36. package/dist/index-Dr-mZ0qP.d.ts.map +0 -1
  37. package/dist/nextjs-B5Tqgt_n.js +0 -80
  38. package/dist/nextjs-B5Tqgt_n.js.map +0 -1
  39. package/dist/schemas-DbyHF7Xi.js.map +0 -1
@@ -1,420 +0,0 @@
1
- import { _ as $strip, c as ZodNumber, f as ZodString, g as $loose, i as ZodDefault, l as ZodObject, r as ZodBoolean, s as ZodNullable, t as Result, u as ZodOptional } from "./index-Dr-mZ0qP.js";
2
-
3
- //#region src/core/constants.d.ts
4
- /** The `Bearer ` token prefix (includes trailing space). */
5
- declare const BEARER_PREFIX: "Bearer ";
6
- /** Response header carrying a refreshed session JWT back to the client. */
7
- declare const HEADER_UPDATED_SESSION: "X-Updated-Session";
8
- //#endregion
9
- //#region src/core/defaults.d.ts
10
- /** Default OAuth scopes requested during authorization. */
11
- declare const DEFAULT_SCOPES: "openid offline_access offline";
12
- /** Default OAuth issuer URL for Fanvue authentication. */
13
- declare const DEFAULT_ISSUER_URL: "https://auth.fanvue.com";
14
- /** Default base URL for the Fanvue API. */
15
- declare const DEFAULT_API_BASE_URL: "https://api.fanvue.com";
16
- /** Default base URL for the Fanvue platform (embedded authorize-on-behalf). */
17
- declare const DEFAULT_PLATFORM_URL: "https://www.fanvue.com";
18
- /** The Fanvue API version header value sent with every request. */
19
- declare const API_VERSION: "2025-06-26";
20
- /**
21
- * Validates that a URL belongs to the `fanvue.com` domain.
22
- *
23
- * @param url - The URL string to validate.
24
- * @throws If the URL is malformed or its hostname is not `fanvue.com`
25
- * (or a subdomain of it).
26
- */
27
- declare function assertFanvueDomain(url: string): void;
28
- //#endregion
29
- //#region src/core/types.d.ts
30
- /**
31
- * Configuration for the OAuth client.
32
- *
33
- * @property clientId - The OAuth client ID.
34
- * @property clientSecret - The OAuth client secret.
35
- * @property redirectUri - The URI to redirect to after authentication.
36
- * @property issuerUrl - The OAuth issuer URL, or `null` to use the default.
37
- * @property apiBaseUrl - The Fanvue API base URL, or `null` to use the default.
38
- * @property scopes - Additional OAuth scopes to request beyond the defaults, or `null` for defaults only.
39
- * @property responseMode - The OAuth response mode (e.g., `fragment`), or `null` to omit.
40
- * @property prompt - The OAuth prompt parameter (e.g., `consent`), or `null` to omit.
41
- */
42
- interface OAuthConfig {
43
- clientId: string;
44
- clientSecret: string;
45
- redirectUri: string;
46
- issuerUrl: string | null;
47
- apiBaseUrl: string | null;
48
- scopes: string | null;
49
- responseMode: string | null;
50
- prompt: string | null;
51
- }
52
- /**
53
- * The raw token response returned by the OAuth token endpoint.
54
- *
55
- * @property access_token - The access token issued by the authorization server.
56
- * @property refresh_token - The refresh token, or `null` if not provided.
57
- * @property expires_in - The lifetime in seconds of the access token.
58
- * @property token_type - The type of the token (e.g., `Bearer`).
59
- * @property scope - The scope of the access token, or `null` if not provided.
60
- * @property id_token - The ID token, or `null` if not provided.
61
- */
62
- interface TokenResponse {
63
- access_token: string;
64
- refresh_token: string | null;
65
- expires_in: number;
66
- token_type: string;
67
- scope: string | null;
68
- id_token: string | null;
69
- }
70
- /**
71
- * The payload stored inside the encrypted session JWT.
72
- *
73
- * @property accessToken - The OAuth access token.
74
- * @property refreshToken - The OAuth refresh token, or `null` if unavailable.
75
- * @property expiresAt - The timestamp (in milliseconds) when the access token expires.
76
- * @property tokenType - The type of the token (e.g., `Bearer`), or `null` if unavailable.
77
- * @property scope - The granted scope, or `null` if unavailable.
78
- * @property idToken - The ID token, or `null` if unavailable.
79
- * @property userUuid - The unique identifier of the authenticated user.
80
- * @property handle - The user's handle/username.
81
- * @property displayName - The user's display name.
82
- * @property isCreator - Whether the user is a creator.
83
- * @property avatarUrl - The URL of the user's avatar, or `null` if not set.
84
- */
85
- interface SessionPayload {
86
- accessToken: string;
87
- refreshToken: string | null;
88
- expiresAt: number;
89
- tokenType: string | null;
90
- scope: string | null;
91
- idToken: string | null;
92
- userUuid: string;
93
- handle: string;
94
- displayName: string;
95
- isCreator: boolean;
96
- avatarUrl: string | null;
97
- }
98
- /**
99
- * A Fanvue user profile as returned by the API.
100
- *
101
- * @property uuid - The unique identifier of the user.
102
- * @property email - The user's email address.
103
- * @property handle - The user's handle/username.
104
- * @property displayName - The user's display name.
105
- * @property isCreator - Whether the user is a creator.
106
- * @property avatarUrl - The URL of the user's avatar, or `null` if not set.
107
- * @property bannerUrl - The URL of the user's banner, or `null` if not set.
108
- * @property createdAt - The ISO 8601 timestamp of when the user was created.
109
- * @property updatedAt - The ISO 8601 timestamp of when the user was last updated, or `null`.
110
- */
111
- interface FanvueUser {
112
- uuid: string;
113
- email: string;
114
- handle: string;
115
- displayName: string;
116
- isCreator: boolean;
117
- avatarUrl: string | null;
118
- bannerUrl: string | null;
119
- createdAt: string;
120
- updatedAt: string | null;
121
- }
122
- /**
123
- * Configuration for the embedded-app (delegated authorize-on-behalf) flow.
124
- *
125
- * Extends {@link OAuthConfig} with the Fanvue platform base URL that hosts
126
- * the `authorize-on-behalf` endpoint.
127
- *
128
- * @property platformUrl - The Fanvue platform base URL, or `null` to use the default.
129
- */
130
- interface EmbeddedAuthConfig extends OAuthConfig {
131
- platformUrl: string | null;
132
- }
133
- /** Error type for JSON parsing failures. */
134
- type JsonParseError = {
135
- code: 'JSON_PARSE_ERROR';
136
- rawText: string;
137
- message: string;
138
- };
139
- /** Error type for OAuth operations (token exchange, refresh). */
140
- type OAuthError = {
141
- code: 'TOKEN_EXCHANGE_FAILED';
142
- statusCode: number;
143
- message: string;
144
- } | {
145
- code: 'TOKEN_REFRESH_FAILED';
146
- statusCode: number;
147
- message: string;
148
- } | {
149
- code: 'OAUTH_JSON_PARSE_ERROR';
150
- rawText: string;
151
- message: string;
152
- } | {
153
- code: 'OAUTH_VALIDATION_ERROR';
154
- message: string;
155
- };
156
- /** Error type for Fanvue API requests. */
157
- type ApiError = {
158
- code: 'API_REQUEST_FAILED';
159
- statusCode: number;
160
- message: string;
161
- } | {
162
- code: 'API_JSON_PARSE_ERROR';
163
- rawText: string;
164
- message: string;
165
- } | {
166
- code: 'API_VALIDATION_ERROR';
167
- message: string;
168
- };
169
- /** Error type for session JWT verification. */
170
- type SessionVerifyError = {
171
- code: 'JWT_VERIFY_FAILED';
172
- message: string;
173
- } | {
174
- code: 'SESSION_VALIDATION_ERROR';
175
- message: string;
176
- };
177
- /**
178
- * Error type for the embedded authorize-on-behalf step.
179
- *
180
- * - `SESSION_TOKEN_REJECTED` — the platform rejected the session token
181
- * (missing, malformed, or expired — they live ~60 seconds). The user must
182
- * reopen the embedded surface to receive a fresh one.
183
- * - `CONSENT_REQUIRED` — the creator has not approved (or has revoked) the
184
- * in-platform consent for this app. Consent is granted in the Fanvue UI;
185
- * the app cannot create it.
186
- * - `AUTHORIZE_ON_BEHALF_FAILED` — any other failure (network error,
187
- * unexpected status). `statusCode` is `0` for network errors.
188
- * - `AUTHORIZE_STATE_MISMATCH` — the returned `state` did not match the one
189
- * sent; the response must not be trusted.
190
- */
191
- type EmbeddedAuthError = {
192
- code: 'SESSION_TOKEN_REJECTED';
193
- statusCode: number;
194
- message: string;
195
- } | {
196
- code: 'CONSENT_REQUIRED';
197
- statusCode: number;
198
- message: string;
199
- } | {
200
- code: 'AUTHORIZE_ON_BEHALF_FAILED';
201
- statusCode: number;
202
- message: string;
203
- } | {
204
- code: 'AUTHORIZE_STATE_MISMATCH';
205
- message: string;
206
- } | {
207
- code: 'EMBEDDED_JSON_PARSE_ERROR';
208
- rawText: string;
209
- message: string;
210
- } | {
211
- code: 'EMBEDDED_VALIDATION_ERROR';
212
- message: string;
213
- };
214
- //#endregion
215
- //#region src/core/oauth.d.ts
216
- /**
217
- * Builds an OAuth 2.0 authorization URL with PKCE parameters.
218
- *
219
- * @param config - The OAuth configuration.
220
- * @param opts - Optional overrides. Pass `state` to use a deterministic state value.
221
- * @returns The authorization URL, the PKCE code verifier, and the state parameter.
222
- */
223
- declare function createAuthorizationUrl(config: OAuthConfig, opts?: {
224
- state: string | null;
225
- } | null): Promise<{
226
- url: URL;
227
- codeVerifier: string;
228
- state: string;
229
- }>;
230
- /**
231
- * Exchanges an authorization code for tokens using the OAuth token endpoint.
232
- *
233
- * @param config - The OAuth configuration.
234
- * @param opts - The authorization code, PKCE code verifier, and optional redirect URI override.
235
- * @returns A `Result` containing `TokenResponse` on success or `OAuthError` on failure.
236
- */
237
- declare function exchangeCodeForToken(config: OAuthConfig, opts: {
238
- code: string;
239
- codeVerifier: string;
240
- redirectUri: string | null;
241
- }): Promise<Result<TokenResponse, OAuthError>>;
242
- /**
243
- * Refreshes an access token using a refresh token.
244
- *
245
- * @param config - The OAuth configuration.
246
- * @param refreshToken - The refresh token to use.
247
- * @returns A `Result` containing `TokenResponse` on success or `OAuthError` on failure.
248
- */
249
- declare function refreshAccessToken(config: OAuthConfig, refreshToken: string): Promise<Result<TokenResponse, OAuthError>>;
250
- //#endregion
251
- //#region src/core/session.d.ts
252
- /**
253
- * Creates a signed JWT containing the given session payload.
254
- *
255
- * @param secret - The secret key used to sign the JWT.
256
- * @param payload - The session data to embed in the token.
257
- * @param expiresIn - How long until the token expires (e.g., `"30d"`), or `null` for the default (`"30d"`).
258
- * @returns The signed JWT string.
259
- */
260
- declare function createSessionJwt(secret: string, payload: SessionPayload, expiresIn?: string | null): Promise<string>;
261
- /**
262
- * Verifies a session JWT and returns the validated session payload.
263
- *
264
- * @param secret - The secret key used to verify the JWT signature.
265
- * @param token - The JWT string to verify.
266
- * @returns A {@link Result} containing the validated {@link SessionPayload}, or a {@link SessionVerifyError}.
267
- */
268
- declare function verifySessionJwt(secret: string, token: string): Promise<Result<SessionPayload, SessionVerifyError>>;
269
- //#endregion
270
- //#region src/core/embedded.d.ts
271
- /**
272
- * The creator's active colour scheme, as resolved by Fanvue.
273
- *
274
- * Fanvue resolves a creator's "system" preference to the scheme actually being
275
- * rendered, so this is always a definite value — never `'system'`.
276
- */
277
- type FanvueTheme = 'light' | 'dark';
278
- /**
279
- * Extracts the embedded session token from a URL.
280
- *
281
- * When Fanvue opens an embedded app, it loads the app's embed URL with a
282
- * short-lived session token appended as a `?token=` query parameter.
283
- *
284
- * @param url - The URL to read the token from (e.g. `window.location.href`).
285
- * @returns The session token, or `null` when absent or the URL is malformed.
286
- */
287
- declare function getSessionTokenFromUrl(url: string | URL): string | null;
288
- /**
289
- * Extracts the creator's active colour scheme from a URL.
290
- *
291
- * When Fanvue opens an embedded app, it appends the creator's resolved colour
292
- * scheme as a `?theme=` query parameter (`light` or `dark`), letting the app
293
- * theme-match Fanvue.
294
- *
295
- * @param url - The URL to read the theme from (e.g. `window.location.href`).
296
- * @returns The {@link FanvueTheme}, or `null` when absent, unrecognised, or the
297
- * URL is malformed (e.g. the app was opened outside Fanvue).
298
- */
299
- declare function getThemeFromUrl(url: string | URL): FanvueTheme | null;
300
- /**
301
- * Requests an authorization code from the Fanvue platform on behalf of the
302
- * creator currently using the embedded app.
303
- *
304
- * This is the "authorize" half of the delegated flow: the platform verifies
305
- * the session token, runs the OAuth authorize as the creator, and returns the
306
- * resulting authorization code. The PKCE verifier and client secret never
307
- * leave the caller — only the challenge is sent.
308
- *
309
- * Most apps should use {@link exchangeSessionToken}, which composes this with
310
- * the code exchange.
311
- *
312
- * @param config - The embedded auth configuration.
313
- * @param sessionToken - The short-lived session token received in the iframe.
314
- * @param opts - The PKCE code challenge and state to bind the code to.
315
- * @returns A `Result` containing the authorization code on success or
316
- * {@link EmbeddedAuthError} on failure.
317
- */
318
- declare function requestAuthorizationCodeOnBehalf(config: EmbeddedAuthConfig, sessionToken: string, opts: {
319
- codeChallenge: string;
320
- state: string;
321
- }): Promise<Result<{
322
- code: string;
323
- }, EmbeddedAuthError>>;
324
- /**
325
- * Exchanges an embedded session token for OAuth access and refresh tokens.
326
- *
327
- * Runs the complete delegated authorize-on-behalf flow:
328
- *
329
- * 1. Generates a PKCE verifier/challenge pair and a random `state`.
330
- * 2. Asks the Fanvue platform to authorize as the creator
331
- * ({@link requestAuthorizationCodeOnBehalf}).
332
- * 3. Exchanges the returned code at the token endpoint using the client
333
- * secret and PKCE verifier.
334
- *
335
- * Must run server-side: it uses the client secret. The session token should
336
- * be used promptly — it expires after ~60 seconds.
337
- *
338
- * @param config - The embedded auth configuration. `redirectUri` must be a
339
- * redirect URI registered on the OAuth client (it is never visited; it only
340
- * binds the authorization code).
341
- * @param sessionToken - The short-lived session token received in the iframe.
342
- * @returns A `Result` containing {@link TokenResponse} on success or an
343
- * {@link EmbeddedAuthError} / {@link OAuthError} on failure.
344
- */
345
- declare function exchangeSessionToken(config: EmbeddedAuthConfig, sessionToken: string): Promise<Result<TokenResponse, EmbeddedAuthError | OAuthError>>;
346
- //#endregion
347
- //#region src/core/json.d.ts
348
- /**
349
- * Safely parses a JSON string, returning a `Result` instead of throwing.
350
- *
351
- * @param text - The raw text to parse as JSON.
352
- * @returns `ok(parsed)` on success, or `err({ code, rawText, message })` on failure.
353
- */
354
- declare function safeJsonParse(text: string): Result<unknown, JsonParseError>;
355
- //#endregion
356
- //#region src/core/schemas.d.ts
357
- /** Zod schema for the raw token response from the OAuth token endpoint. */
358
- declare const TokenResponseSchema: ZodObject<{
359
- access_token: ZodString;
360
- refresh_token: ZodDefault<ZodOptional<ZodNullable<ZodString>>>;
361
- expires_in: ZodNumber;
362
- token_type: ZodString;
363
- scope: ZodDefault<ZodOptional<ZodNullable<ZodString>>>;
364
- id_token: ZodDefault<ZodOptional<ZodNullable<ZodString>>>;
365
- }, $strip>;
366
- /** Zod schema for a Fanvue user profile. */
367
- declare const FanvueUserSchema: ZodObject<{
368
- uuid: ZodString;
369
- email: ZodString;
370
- handle: ZodString;
371
- displayName: ZodString;
372
- isCreator: ZodBoolean;
373
- avatarUrl: ZodNullable<ZodString>;
374
- bannerUrl: ZodNullable<ZodString>;
375
- createdAt: ZodString;
376
- updatedAt: ZodNullable<ZodString>;
377
- }, $strip>;
378
- /** Zod schema for the authorize-on-behalf response from the Fanvue platform. */
379
- declare const AuthorizeOnBehalfResponseSchema: ZodObject<{
380
- code: ZodString;
381
- state: ZodString;
382
- }, $strip>;
383
- /** Zod schema for the session JWT payload. */
384
- declare const SessionPayloadSchema: ZodObject<{
385
- accessToken: ZodString;
386
- refreshToken: ZodNullable<ZodString>;
387
- expiresAt: ZodNumber;
388
- tokenType: ZodNullable<ZodString>;
389
- scope: ZodNullable<ZodString>;
390
- idToken: ZodNullable<ZodString>;
391
- userUuid: ZodString;
392
- handle: ZodString;
393
- displayName: ZodString;
394
- isCreator: ZodBoolean;
395
- avatarUrl: ZodNullable<ZodString>;
396
- }, $loose>;
397
- //#endregion
398
- //#region src/core/client.d.ts
399
- /**
400
- * A client for making authenticated requests to the Fanvue API.
401
- */
402
- interface FanvueClient {
403
- /**
404
- * Fetches the currently authenticated user's profile.
405
- *
406
- * @returns A `Result` containing the {@link FanvueUser} on success or `ApiError` on failure.
407
- */
408
- getCurrentUser(): Promise<Result<FanvueUser, ApiError>>;
409
- }
410
- /**
411
- * Creates a new {@link FanvueClient} for making authenticated requests to the Fanvue API.
412
- *
413
- * @param accessToken - The OAuth access token to authenticate requests.
414
- * @param apiBaseUrl - The base URL for the Fanvue API, or `null` to use the default.
415
- * @returns A {@link FanvueClient} instance.
416
- */
417
- declare function createFanvueClient(accessToken: string, apiBaseUrl: string | null): FanvueClient;
418
- //#endregion
419
- export { DEFAULT_ISSUER_URL as A, OAuthConfig as C, TokenResponse as D, SessionVerifyError as E, HEADER_UPDATED_SESSION as F, DEFAULT_SCOPES as M, assertFanvueDomain as N, API_VERSION as O, BEARER_PREFIX as P, JsonParseError as S, SessionPayload as T, refreshAccessToken as _, SessionPayloadSchema as a, EmbeddedAuthError as b, FanvueTheme as c, getThemeFromUrl as d, requestAuthorizationCodeOnBehalf as f, exchangeCodeForToken as g, createAuthorizationUrl as h, FanvueUserSchema as i, DEFAULT_PLATFORM_URL as j, DEFAULT_API_BASE_URL as k, exchangeSessionToken as l, verifySessionJwt as m, createFanvueClient as n, TokenResponseSchema as o, createSessionJwt as p, AuthorizeOnBehalfResponseSchema as r, safeJsonParse as s, FanvueClient as t, getSessionTokenFromUrl as u, ApiError as v, OAuthError as w, FanvueUser as x, EmbeddedAuthConfig as y };
420
- //# sourceMappingURL=index-ClbZoV_Z.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-ClbZoV_Z.d.ts","names":[],"sources":["../src/core/constants.ts","../src/core/defaults.ts","../src/core/types.ts","../src/core/oauth.ts","../src/core/session.ts","../src/core/embedded.ts","../src/core/json.ts","../src/core/schemas.ts","../src/core/client.ts"],"mappings":"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"}