@nebulr-group/bridge-auth-core 0.6.1 → 0.7.0-beta.1
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/bridge-auth.d.ts +13 -0
- package/dist/bridge-auth.d.ts.map +1 -1
- package/dist/bridge-auth.js +30 -20
- package/dist/bridge-auth.js.map +1 -1
- package/dist/errors.d.ts +35 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +53 -2
- package/dist/errors.js.map +1 -1
- package/dist/flags/index.d.ts +2 -2
- package/dist/flags/index.d.ts.map +1 -1
- package/dist/flags/index.js +1 -1
- package/dist/flags/index.js.map +1 -1
- package/dist/flags/realtime.d.ts +205 -3
- package/dist/flags/realtime.d.ts.map +1 -1
- package/dist/flags/realtime.js +847 -41
- package/dist/flags/realtime.js.map +1 -1
- package/dist/http.d.ts +2 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +32 -1
- package/dist/http.js.map +1 -1
- package/dist/i18n/messages.d.ts +2 -0
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/messages.js +12 -0
- package/dist/i18n/messages.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/management/branding.service.d.ts +8 -1
- package/dist/management/branding.service.d.ts.map +1 -1
- package/dist/management/branding.service.js +8 -1
- package/dist/management/branding.service.js.map +1 -1
- package/dist/management/workflows.d.ts +38 -4
- package/dist/management/workflows.d.ts.map +1 -1
- package/dist/management/workflows.js +122 -36
- package/dist/management/workflows.js.map +1 -1
- package/dist/management-types.d.ts +95 -15
- package/dist/management-types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/flags/realtime.d.ts
CHANGED
|
@@ -32,6 +32,35 @@ export interface RealtimeClientConfig {
|
|
|
32
32
|
* Falls back to apiKey when this is undefined or returns undefined.
|
|
33
33
|
*/
|
|
34
34
|
getAuthToken?: () => string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* The host SDK's token refresh (TBP-643). Called at most once per refused
|
|
37
|
+
* connection episode; must resolve to the NEW access token (or undefined if
|
|
38
|
+
* the session could not be refreshed). The client reconnects immediately
|
|
39
|
+
* with the returned token instead of waiting out the backoff.
|
|
40
|
+
*
|
|
41
|
+
* Without it, a refused session is diagnosed and parked in `'unauthorized'`
|
|
42
|
+
* until `reauthorize()` is called or the token changes.
|
|
43
|
+
*/
|
|
44
|
+
refreshAuthToken?: () => Promise<string | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* When a refusal can't be explained client-side, ask Bridge why — once per
|
|
47
|
+
* episode — via `POST <apiBaseUrl>/realtime/diagnose`. Default true.
|
|
48
|
+
*/
|
|
49
|
+
diagnose?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Base URL of the realtime error docs; each reason is an anchor on it.
|
|
52
|
+
* Default {@link REALTIME_DOCS_BASE_URL}.
|
|
53
|
+
*/
|
|
54
|
+
docsBaseUrl?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Tell Bridge how this app's realtime connection is doing, so the admin UI
|
|
57
|
+
* can show per-app live-update health (TBP-645). Fire-and-forget
|
|
58
|
+
* `POST <apiBaseUrl>/account/auth/realtime-status` with `x-app-id`, sent
|
|
59
|
+
* when the connection opens (at most once per 10 minutes) and once per
|
|
60
|
+
* refused/degraded episode. Never awaited, never throws, carries no token.
|
|
61
|
+
* Default true; set false to opt out.
|
|
62
|
+
*/
|
|
63
|
+
reportStatus?: boolean;
|
|
35
64
|
/**
|
|
36
65
|
* Optional logger. Defaults to a non-debug logger, which still emits
|
|
37
66
|
* `error` — deliberate: a rejected subscription means realtime is silently
|
|
@@ -39,6 +68,42 @@ export interface RealtimeClientConfig {
|
|
|
39
68
|
*/
|
|
40
69
|
logger?: Logger;
|
|
41
70
|
}
|
|
71
|
+
export declare const REALTIME_DOCS_BASE_URL = "https://thebridge.dev/docs/live-updates/troubleshooting/";
|
|
72
|
+
/**
|
|
73
|
+
* The AppSync `Authorization` value a signed-out session presents. Must be
|
|
74
|
+
* non-empty (AppSync rejects '' before the authorizer runs) and must match
|
|
75
|
+
* what the bridge-api authorizer recognises as "no token" byte for byte.
|
|
76
|
+
*/
|
|
77
|
+
export declare const REALTIME_ANONYMOUS_TOKEN = "anonymous";
|
|
78
|
+
/**
|
|
79
|
+
* What the realtime connection is doing right now, and — when it is not
|
|
80
|
+
* working — why, whose move it is (`side`), and whether it is still trying.
|
|
81
|
+
*
|
|
82
|
+
* `side` exists because the same symptom ("no live updates") has owners who
|
|
83
|
+
* need opposite actions: `app` = the host app's session/token handling,
|
|
84
|
+
* `config` = the app's Bridge settings disagree with the session, `bridge` =
|
|
85
|
+
* Bridge refused a token that checks out (nothing to change in the app),
|
|
86
|
+
* `network` = transient transport trouble the client is retrying through.
|
|
87
|
+
*/
|
|
88
|
+
export interface RealtimeStatus {
|
|
89
|
+
state: ConnectionState;
|
|
90
|
+
/** Machine-readable reason, also the anchor on `docsUrl`. */
|
|
91
|
+
reason?: string;
|
|
92
|
+
side?: 'app' | 'bridge' | 'config' | 'network';
|
|
93
|
+
/** True while the client will keep trying on its own. */
|
|
94
|
+
retrying: boolean;
|
|
95
|
+
docsUrl?: string;
|
|
96
|
+
/**
|
|
97
|
+
* One sentence naming the fix, when the client knows it — e.g. for
|
|
98
|
+
* `origin_not_allowed`, the origin and where to add it in Bridge admin
|
|
99
|
+
* (TBP-669).
|
|
100
|
+
*/
|
|
101
|
+
hint?: string;
|
|
102
|
+
/** Per-episode correlation id, shown in the console line. Client-side only (TBP-669). */
|
|
103
|
+
ref?: string;
|
|
104
|
+
/** `Date.now()` at the last state/reason change. */
|
|
105
|
+
since: number;
|
|
106
|
+
}
|
|
42
107
|
/** Minimal WebSocket surface the client uses. */
|
|
43
108
|
export interface WebSocketLike {
|
|
44
109
|
readyState: number;
|
|
@@ -215,7 +280,7 @@ export interface FlagChange {
|
|
|
215
280
|
* Before this state existed such a connection reported `open`, which is how a
|
|
216
281
|
* dead realtime transport passed for healthy in production for months.
|
|
217
282
|
*/
|
|
218
|
-
export type ConnectionState = 'idle' | 'connecting' | 'open' | 'degraded' | 'closed';
|
|
283
|
+
export type ConnectionState = 'idle' | 'connecting' | 'open' | 'degraded' | 'closed' | 'unauthorized';
|
|
219
284
|
export declare class RealtimeClient {
|
|
220
285
|
private readonly cfg;
|
|
221
286
|
private ws?;
|
|
@@ -247,7 +312,56 @@ export declare class RealtimeClient {
|
|
|
247
312
|
private ackedChannels;
|
|
248
313
|
private failedChannels;
|
|
249
314
|
private subscribeAckTimer?;
|
|
315
|
+
private status;
|
|
316
|
+
private onStatusChangeHook?;
|
|
317
|
+
/** The current run of trouble, if any — see FaultEpisode. */
|
|
318
|
+
private episode?;
|
|
319
|
+
/** Set while parked in 'unauthorized'. */
|
|
320
|
+
private refusal?;
|
|
321
|
+
/**
|
|
322
|
+
* token|reason|side of the last refusal we logged. A resume (tab refocus,
|
|
323
|
+
* `online`) that ends in the identical refusal is the same news — it goes
|
|
324
|
+
* to debug, not another console error.
|
|
325
|
+
*/
|
|
326
|
+
private lastRefusalKey?;
|
|
327
|
+
/**
|
|
328
|
+
* TBP-669 — Bridge's verdict on a channel refused at SUBSCRIBE on the
|
|
329
|
+
* current connection. AppSync accepts the CONNECT and refuses the channel
|
|
330
|
+
* with a bare "not authorized"; the reason (e.g. the page's origin is not
|
|
331
|
+
* in the app's allowed origins) only comes from `/realtime/diagnose`.
|
|
332
|
+
*/
|
|
333
|
+
private channelRefusal?;
|
|
334
|
+
/** Channels already sent to diagnose on the current connection. */
|
|
335
|
+
private diagnosedChannels;
|
|
336
|
+
/** channel|reason|side of the last channel refusal logged — same dedupe as lastRefusalKey. */
|
|
337
|
+
private lastChannelRefusalKey?;
|
|
338
|
+
/**
|
|
339
|
+
* Token handed back by `refreshAuthToken`, used while the host's
|
|
340
|
+
* `getAuthToken()` still returns the token it replaced (`staleToken`). Hosts
|
|
341
|
+
* may not have updated their store by the time the refresh resolves.
|
|
342
|
+
*/
|
|
343
|
+
private freshToken?;
|
|
344
|
+
private staleToken?;
|
|
345
|
+
/** A socket we closed on purpose (setUserId & co.) — its close is not a fault. */
|
|
346
|
+
private expectedCloseWs?;
|
|
347
|
+
private resumeListenersInstalled;
|
|
348
|
+
/** Runs only while parked — see startParkedTokenCheck. */
|
|
349
|
+
private parkedTokenTimer?;
|
|
350
|
+
/** `Date.now()` of the last 'open' report — see STATUS_REPORT_OPEN_INTERVAL_MS. */
|
|
351
|
+
private lastOpenReportAt?;
|
|
250
352
|
constructor(cfg: RealtimeClientConfig);
|
|
353
|
+
/**
|
|
354
|
+
* Current connection status with the reason, whose side a fault is on, and
|
|
355
|
+
* whether the client is still retrying (TBP-643). `getState()` is the same
|
|
356
|
+
* `state` without the explanation.
|
|
357
|
+
*/
|
|
358
|
+
getStatus(): RealtimeStatus;
|
|
359
|
+
/**
|
|
360
|
+
* Register a hook fired on every status change (state, reason, side or
|
|
361
|
+
* retrying). Use it to drive a "live updates off" indicator. Hook errors are
|
|
362
|
+
* swallowed, like every other hook here.
|
|
363
|
+
*/
|
|
364
|
+
setOnStatusChange(hook: (status: RealtimeStatus) => void): void;
|
|
251
365
|
/** Attach to a BridgeFlags instance — flag updates auto-apply to its cache. */
|
|
252
366
|
attach(bridge: BridgeFlags): void;
|
|
253
367
|
/** Register a hook for per-user channel messages. */
|
|
@@ -406,11 +520,20 @@ export declare class RealtimeClient {
|
|
|
406
520
|
* `appsync-events.adapter.ts:87` and `appsync-authorizer.handler.ts:59`).
|
|
407
521
|
*
|
|
408
522
|
* Anonymous flow: `getAuthToken()` returns undefined → Authorization sent as
|
|
409
|
-
*
|
|
410
|
-
*
|
|
523
|
+
* the marker `REALTIME_ANONYMOUS_TOKEN` (see buildAppSyncAuthHeader for why
|
|
524
|
+
* it can't be empty). The Lambda authorizer treats exactly that value as "no
|
|
525
|
+
* token": CONNECT allowed, `app:<appId>` channels origin-checked against the
|
|
526
|
+
* app's allowedOrigins, everything else denied `no_token`.
|
|
411
527
|
*/
|
|
412
528
|
private openAppSyncWebSocket;
|
|
413
529
|
private resetSubscribeTracking;
|
|
530
|
+
/**
|
|
531
|
+
* TBP-669 — explain a channel AppSync refused at SUBSCRIBE. The connection
|
|
532
|
+
* stays up (see `subscribe_error`); this only attaches Bridge's reason to
|
|
533
|
+
* the status and logs it once, with the fix when the client knows it.
|
|
534
|
+
*/
|
|
535
|
+
private diagnoseChannelRefusal;
|
|
536
|
+
private formatChannelRefusal;
|
|
414
537
|
private clearSubscribeAckTimer;
|
|
415
538
|
/**
|
|
416
539
|
* Connected, handshaken, and subscribed to nothing. Deliberately does NOT
|
|
@@ -424,6 +547,85 @@ export declare class RealtimeClient {
|
|
|
424
547
|
private emitFlagChange;
|
|
425
548
|
private handleMessage;
|
|
426
549
|
private scheduleReconnect;
|
|
550
|
+
private fireReconnect;
|
|
551
|
+
private setState;
|
|
552
|
+
private publishStatus;
|
|
553
|
+
private statusDetail;
|
|
554
|
+
/** The token to present — see `freshToken`. */
|
|
555
|
+
private currentToken;
|
|
556
|
+
/** The transport is usable. Closes any episode, logging recovery if we logged the fault. */
|
|
557
|
+
private markOpen;
|
|
558
|
+
/** Called from onclose of the CURRENT socket: an unplanned close starts a transient episode. */
|
|
559
|
+
private noteClose;
|
|
560
|
+
/**
|
|
561
|
+
* Open a transient episode if none is running, and log its start ONCE.
|
|
562
|
+
* Server-reported errors log at `error` (they used to, and they are real
|
|
563
|
+
* faults); plain drops and fetch failures log at `warn` — sleep/wake and
|
|
564
|
+
* wifi changes cause them constantly and they fix themselves, so they must
|
|
565
|
+
* not paint every end-user console red.
|
|
566
|
+
*/
|
|
567
|
+
private beginTransient;
|
|
568
|
+
/** Drop a socket without letting its onclose schedule a reconnect. */
|
|
569
|
+
private detachSocket;
|
|
570
|
+
/**
|
|
571
|
+
* Bridge refused `token` (TBP-643). Policy, in order:
|
|
572
|
+
* a. client-side pre-checks on the token — cheap, and they name the fix;
|
|
573
|
+
* b. one host refresh + an immediate reconnect, if the host gave us a hook;
|
|
574
|
+
* c. if still refused and the pre-checks found nothing, ask Bridge once;
|
|
575
|
+
* d. park in 'unauthorized', stop reconnecting, log ONE message.
|
|
576
|
+
* Resumes on reauthorize(), a changed token on start(), `online`, or the
|
|
577
|
+
* tab becoming visible.
|
|
578
|
+
*/
|
|
579
|
+
private handleAuthRefusal;
|
|
580
|
+
/** Explain a refusal from the token alone. Decodes without verifying — this is diagnosis, not auth. */
|
|
581
|
+
private precheckToken;
|
|
582
|
+
/**
|
|
583
|
+
* Ask Bridge why it refused (contract: `POST /realtime/diagnose` →
|
|
584
|
+
* `{ ok, reason, side }`, sharing the authorizer's classifier). The endpoint
|
|
585
|
+
* may not exist yet — any failure returns undefined and the caller falls
|
|
586
|
+
* back to 'refused'.
|
|
587
|
+
*/
|
|
588
|
+
private diagnoseRefusal;
|
|
589
|
+
private enterUnauthorized;
|
|
590
|
+
/**
|
|
591
|
+
* TBP-645 — fire-and-forget health report. Returns whether a report was
|
|
592
|
+
* dispatched (false when opted out, or there is no appId to attribute it
|
|
593
|
+
* to). Never awaited by the caller and never throws: this runs on the
|
|
594
|
+
* connect path, and telemetry must not be able to hurt the connection. The
|
|
595
|
+
* endpoint may not exist yet — every response, 404 included, is ignored.
|
|
596
|
+
*/
|
|
597
|
+
private sendStatusReport;
|
|
598
|
+
private postStatusReport;
|
|
599
|
+
private clearRefusal;
|
|
600
|
+
/**
|
|
601
|
+
* A parked client must resume when the host's token changes — most
|
|
602
|
+
* importantly when a signed-out session signs in (undefined → token).
|
|
603
|
+
* Framework SDKs only call reauthorize() when one token REPLACES another
|
|
604
|
+
* (TBP-644 fixes that), so auth-core can't rely on being told.
|
|
605
|
+
*
|
|
606
|
+
* Chosen over a `notifyAuthTokenChanged()` API because it needs no host
|
|
607
|
+
* change — the missing host call is the bug. It is cheap and bounded: it
|
|
608
|
+
* runs only while parked, calls the synchronous `getAuthToken()` getter (no
|
|
609
|
+
* network), and resumes only on a token DIFFERENT from the refused one, so
|
|
610
|
+
* an unchanged session can never turn it into a reconnect loop.
|
|
611
|
+
*/
|
|
612
|
+
private startParkedTokenCheck;
|
|
613
|
+
/**
|
|
614
|
+
* The one message a developer gets per refused episode. Product terms, whose
|
|
615
|
+
* side it is, what still works, one next step, a docs link and a ref.
|
|
616
|
+
*/
|
|
617
|
+
private formatRefusal;
|
|
618
|
+
private readonly onOnline;
|
|
619
|
+
private readonly onVisibilityChange;
|
|
620
|
+
private installResumeListeners;
|
|
621
|
+
private removeResumeListeners;
|
|
622
|
+
/**
|
|
623
|
+
* The network came back or the user returned to the tab: the conditions
|
|
624
|
+
* behind a refusal may have changed (host refreshed the session, clock
|
|
625
|
+
* caught up), so a parked client gets one new episode; a client waiting out
|
|
626
|
+
* a backoff tries now instead.
|
|
627
|
+
*/
|
|
628
|
+
private nudge;
|
|
427
629
|
}
|
|
428
630
|
/**
|
|
429
631
|
* Translate internal channel name (`<ns>:<id>`) to the AppSync wire form
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/flags/realtime.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/flags/realtime.ts"],"names":[],"mappings":"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"}
|