@pageloop/client 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 (70) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +97 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/.tsbuildinfo.preact +1 -0
  5. package/dist/.tsbuildinfo.react +1 -0
  6. package/dist/.tsbuildinfo.solid +1 -0
  7. package/dist/ApiClient.d.ts +121 -0
  8. package/dist/ApiClient.d.ts.map +1 -0
  9. package/dist/ApiClient.js +512 -0
  10. package/dist/ApiClient.js.map +1 -0
  11. package/dist/CommentEngine.d.ts +111 -0
  12. package/dist/CommentEngine.d.ts.map +1 -0
  13. package/dist/CommentEngine.js +277 -0
  14. package/dist/CommentEngine.js.map +1 -0
  15. package/dist/EventBus.d.ts +122 -0
  16. package/dist/EventBus.d.ts.map +1 -0
  17. package/dist/EventBus.js +34 -0
  18. package/dist/EventBus.js.map +1 -0
  19. package/dist/IdbCache.d.ts +22 -0
  20. package/dist/IdbCache.d.ts.map +1 -0
  21. package/dist/IdbCache.js +79 -0
  22. package/dist/IdbCache.js.map +1 -0
  23. package/dist/PageLoop.d.ts +424 -0
  24. package/dist/PageLoop.d.ts.map +1 -0
  25. package/dist/PageLoop.js +1092 -0
  26. package/dist/PageLoop.js.map +1 -0
  27. package/dist/PageTracker.d.ts +32 -0
  28. package/dist/PageTracker.d.ts.map +1 -0
  29. package/dist/PageTracker.js +105 -0
  30. package/dist/PageTracker.js.map +1 -0
  31. package/dist/UIRenderer.d.ts +218 -0
  32. package/dist/UIRenderer.d.ts.map +1 -0
  33. package/dist/UIRenderer.js +2 -0
  34. package/dist/UIRenderer.js.map +1 -0
  35. package/dist/auth/resolveInitialToken.d.ts +49 -0
  36. package/dist/auth/resolveInitialToken.d.ts.map +1 -0
  37. package/dist/auth/resolveInitialToken.js +97 -0
  38. package/dist/auth/resolveInitialToken.js.map +1 -0
  39. package/dist/errorCode.d.ts +12 -0
  40. package/dist/errorCode.d.ts.map +1 -0
  41. package/dist/errorCode.js +21 -0
  42. package/dist/errorCode.js.map +1 -0
  43. package/dist/index.d.ts +20 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +18 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/notifications/BrowserNotifications.d.ts +68 -0
  48. package/dist/notifications/BrowserNotifications.d.ts.map +1 -0
  49. package/dist/notifications/BrowserNotifications.js +147 -0
  50. package/dist/notifications/BrowserNotifications.js.map +1 -0
  51. package/dist/preact/index.d.ts +37 -0
  52. package/dist/preact/index.d.ts.map +1 -0
  53. package/dist/preact/index.js +150 -0
  54. package/dist/preact/index.js.map +1 -0
  55. package/dist/preact/style.css +12 -0
  56. package/dist/react/index.d.ts +52 -0
  57. package/dist/react/index.d.ts.map +1 -0
  58. package/dist/react/index.js +165 -0
  59. package/dist/react/index.js.map +1 -0
  60. package/dist/react/style.css +12 -0
  61. package/dist/safeStorage.d.ts +26 -0
  62. package/dist/safeStorage.d.ts.map +1 -0
  63. package/dist/safeStorage.js +78 -0
  64. package/dist/safeStorage.js.map +1 -0
  65. package/dist/solid/index.d.ts +40 -0
  66. package/dist/solid/index.d.ts.map +1 -0
  67. package/dist/solid/index.jsx +134 -0
  68. package/dist/solid/index.jsx.map +1 -0
  69. package/dist/solid/style.css +12 -0
  70. package/package.json +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageLoop.js","sourceRoot":"","sources":["../src/PageLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { EventBus } from './EventBus.js';
2
+ /**
3
+ * Watches the browser's URL — across hashchange, pushState, popstate, and
4
+ * link clicks — and emits `page:change` whenever the canonical URL changes.
5
+ * Normalization (trailing slash, lowercase host, drop tracking params) is
6
+ * mirrored from the server's expected page-key format.
7
+ */
8
+ export declare class PageTracker {
9
+ private readonly bus;
10
+ private currentUrl;
11
+ private offHandlers;
12
+ constructor(bus: EventBus);
13
+ start(): void;
14
+ stop(): void;
15
+ /**
16
+ * Stable identity for the page being commented on. Order:
17
+ *
18
+ * 1. `<meta name="pageloop:page-key" content="…">` — preferred. Lets a
19
+ * file keep the same key whether served from `file://`, localhost,
20
+ * or a public domain, and across machines that have the same docs
21
+ * repo checked out at different paths. `pageloop setup --inject`
22
+ * stamps each .html with one (the relative path under --root).
23
+ * 2. The user-supplied `PageLoopConfig.pageKey` override (rare —
24
+ * intended for SPA hosts that compute their own identity).
25
+ * 3. The normalised current URL — original behaviour, kept as the
26
+ * last-resort fallback for pages without a meta tag.
27
+ */
28
+ pageKey(): string;
29
+ private maybeEmit;
30
+ }
31
+ export declare function normalizeUrl(href: string): string;
32
+ //# sourceMappingURL=PageTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageTracker.d.ts","sourceRoot":"","sources":["../src/PageTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,qBAAa,WAAW;IAIX,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAyB;gBAEf,GAAG,EAAE,QAAQ;IAE1C,KAAK,IAAI,IAAI;IA4Bb,IAAI,IAAI,IAAI;IAKZ;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,MAAM;IAOjB,OAAO,CAAC,SAAS;CAMjB;AAiBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAejD"}
@@ -0,0 +1,105 @@
1
+ import { EventBus } from './EventBus.js';
2
+ /**
3
+ * Watches the browser's URL — across hashchange, pushState, popstate, and
4
+ * link clicks — and emits `page:change` whenever the canonical URL changes.
5
+ * Normalization (trailing slash, lowercase host, drop tracking params) is
6
+ * mirrored from the server's expected page-key format.
7
+ */
8
+ export class PageTracker {
9
+ bus;
10
+ currentUrl = null;
11
+ offHandlers = [];
12
+ constructor(bus) {
13
+ this.bus = bus;
14
+ }
15
+ start() {
16
+ this.maybeEmit();
17
+ const onChange = () => this.maybeEmit();
18
+ window.addEventListener('popstate', onChange);
19
+ window.addEventListener('hashchange', onChange);
20
+ // Patch pushState/replaceState so SPA route changes notify us.
21
+ const origPush = history.pushState;
22
+ const origReplace = history.replaceState;
23
+ history.pushState = function (...args) {
24
+ origPush.apply(this, args);
25
+ onChange();
26
+ };
27
+ history.replaceState = function (...args) {
28
+ origReplace.apply(this, args);
29
+ onChange();
30
+ };
31
+ this.offHandlers = [
32
+ () => window.removeEventListener('popstate', onChange),
33
+ () => window.removeEventListener('hashchange', onChange),
34
+ () => {
35
+ history.pushState = origPush;
36
+ history.replaceState = origReplace;
37
+ },
38
+ ];
39
+ }
40
+ stop() {
41
+ for (const off of this.offHandlers)
42
+ off();
43
+ this.offHandlers = [];
44
+ }
45
+ /**
46
+ * Stable identity for the page being commented on. Order:
47
+ *
48
+ * 1. `<meta name="pageloop:page-key" content="…">` — preferred. Lets a
49
+ * file keep the same key whether served from `file://`, localhost,
50
+ * or a public domain, and across machines that have the same docs
51
+ * repo checked out at different paths. `pageloop setup --inject`
52
+ * stamps each .html with one (the relative path under --root).
53
+ * 2. The user-supplied `PageLoopConfig.pageKey` override (rare —
54
+ * intended for SPA hosts that compute their own identity).
55
+ * 3. The normalised current URL — original behaviour, kept as the
56
+ * last-resort fallback for pages without a meta tag.
57
+ */
58
+ pageKey() {
59
+ const meta = document.querySelector('meta[name="pageloop:page-key"]');
60
+ const explicit = meta?.getAttribute('content')?.trim();
61
+ if (explicit)
62
+ return explicit;
63
+ return normalizeUrl(window.location.href);
64
+ }
65
+ maybeEmit() {
66
+ const next = this.pageKey();
67
+ if (next === this.currentUrl)
68
+ return;
69
+ this.currentUrl = next;
70
+ this.bus.emit('page:change', { url: window.location.href, key: next });
71
+ }
72
+ }
73
+ const TRACKING_PARAMS = new Set([
74
+ 'utm_source',
75
+ 'utm_medium',
76
+ 'utm_campaign',
77
+ 'utm_term',
78
+ 'utm_content',
79
+ 'gclid',
80
+ 'fbclid',
81
+ 'mc_cid',
82
+ 'mc_eid',
83
+ // PageLoop-internal toggles. Stripping these keeps reload-with-?pageloop-debug=1
84
+ // from fragmenting page identity into separate tracked-page rows.
85
+ 'pageloop-debug',
86
+ ]);
87
+ export function normalizeUrl(href) {
88
+ try {
89
+ const u = new URL(href);
90
+ u.host = u.host.toLowerCase();
91
+ u.hash = '';
92
+ if (u.pathname !== '/' && u.pathname.endsWith('/')) {
93
+ u.pathname = u.pathname.slice(0, -1);
94
+ }
95
+ for (const k of Array.from(u.searchParams.keys())) {
96
+ if (TRACKING_PARAMS.has(k))
97
+ u.searchParams.delete(k);
98
+ }
99
+ return u.toString();
100
+ }
101
+ catch {
102
+ return href;
103
+ }
104
+ }
105
+ //# sourceMappingURL=PageTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageTracker.js","sourceRoot":"","sources":["../src/PageTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ import type { Comment, TrackedPage, Project, User, Anchor, ProjectThemeId } from '@pageloop/shared';
2
+ import type { ApiClient } from './ApiClient.js';
3
+ import type { CommentEngine } from './CommentEngine.js';
4
+ import type { EventBus } from './EventBus.js';
5
+ /**
6
+ * Abstract surface every framework wrapper implements. The Vanilla, React,
7
+ * Preact, and Solid wrappers each provide one. Replacing the renderer is
8
+ * the only required change to retarget the SDK to a different framework.
9
+ */
10
+ export interface UIRenderer {
11
+ mount(deps: UIRendererDeps): Promise<{
12
+ toolbar: ToolbarHandle;
13
+ sidebar: SidebarHandle;
14
+ }>;
15
+ unmount(): Promise<void>;
16
+ /** Re-render bubble overlays for the given comments. */
17
+ renderBubbles(comments: Comment[]): void;
18
+ /** Update sidebar with the canonical comment list. */
19
+ renderSidebar(state: SidebarState): void;
20
+ /**
21
+ * Reposition existing bubbles against their anchors without
22
+ * rebuilding the list. Optional hook for renderers that paint
23
+ * bubbles over host content; renderers without a positioned
24
+ * overlay can no-op. Called by `PageLoop.reflowBubbles()` so a
25
+ * host can request a recalculation after a layout change it
26
+ * caused (route swap, accordion expand, narrow/full toggle).
27
+ */
28
+ reflowBubbles?(): void;
29
+ /**
30
+ * Hide or show the bubble overlay programmatically — orthogonal to
31
+ * the user's toolbar toggle. Hosts call this while the page is in
32
+ * a transient non-anchorable state (raw editor textarea, lazy
33
+ * viewer hydrating) and again to restore. Renderers without an
34
+ * overlay layer can no-op.
35
+ *
36
+ * `animationMs` overrides the fade duration for this transition
37
+ * (default 150ms). Pass `0` for instant hide/show — useful when
38
+ * the host page itself is mid-animation and the bubbles would
39
+ * otherwise visibly cross-fade through unrelated motion.
40
+ */
41
+ setBubblesHidden?(hidden: boolean, animationMs?: number): void;
42
+ }
43
+ export interface UIRendererDeps {
44
+ bus: EventBus;
45
+ api: ApiClient;
46
+ comments: CommentEngine;
47
+ /** Browser OS-notifications surface. Renderers expose a "Grant
48
+ * permission" toggle in their settings UI that calls
49
+ * `notifications.requestPermission()`; the grant auto-wires the
50
+ * bus subscription so subsequent `notification.show` events
51
+ * surface real OS notifications. Optional — pre-mount or
52
+ * environments without `window.Notification` won't surface it. */
53
+ notifications?: import('./notifications/BrowserNotifications.js').BrowserNotifications;
54
+ /** Current page (or null until resolved). */
55
+ page: () => TrackedPage | null;
56
+ project: () => Project;
57
+ /**
58
+ * Currently authenticated user, or null when anonymous. Renderers use this
59
+ * to gate per-comment action menus (author can edit/delete own; otherwise
60
+ * editor+ moderation is required — the renderer asks `role()` for that).
61
+ */
62
+ user: () => User | null;
63
+ /**
64
+ * Current user's role in the project: 'owner' / 'editor' / 'commenter' /
65
+ * 'viewer' / 'anonymous'. Renderers use this to show or hide moderation
66
+ * affordances; the server is still the source of truth on enforcement.
67
+ */
68
+ role: () => 'owner' | 'editor' | 'commenter' | 'viewer' | 'anonymous';
69
+ /**
70
+ * The signed-in user's preferred bubble colour (`#rrggbb`), as resolved
71
+ * by the server at bootstrap from their account `appearance` settings —
72
+ * or null when anonymous or unset. Renderers tint their bubble surface
73
+ * to this on mount and expose a colour picker (signed-in only) that
74
+ * persists changes back via `me.settings.update`. Kept fresh by PageLoop
75
+ * when the user recolours mid-session (see `bubbles:recolor`).
76
+ */
77
+ bubbleColor: () => string | null;
78
+ /**
79
+ * Apply a freshly-obtained session token (e.g. from the sign-in modal's
80
+ * email/password login) without a host-page reload: sets the bearer,
81
+ * persists it, and re-resolves identity + page state via bootstrap, then
82
+ * emits `auth:changed` so the toolbar/mini repaint. Pass null to sign out.
83
+ */
84
+ applyToken: (token: string | null) => Promise<void>;
85
+ /**
86
+ * Remove ALL PageLoop UI from the page — toolbar/mini, sidebar, bubbles,
87
+ * tooltips, chat, toasts — until the next page load. Nothing is persisted;
88
+ * a refresh re-initializes the widget normally. Intended for screenshots
89
+ * or temporarily clearing the page. The toolbar + mini both expose an "X"
90
+ * that calls this.
91
+ */
92
+ dismiss: () => void;
93
+ /**
94
+ * Static UI options the host passed to `PageLoop.init({ ui: ... })`.
95
+ * Renderers read positioning, theming, etc. from here.
96
+ */
97
+ ui: () => {
98
+ /** Widget display mode. `'docked'` (default) renders the full
99
+ * toolbar pinned to the top/bottom edge; `'mini'` renders a
100
+ * corner bubble that expands on click into an action row. */
101
+ widgetMode?: 'docked' | 'mini';
102
+ /** Which corner the mini widget docks to. Ignored when
103
+ * `widgetMode !== 'mini'`. */
104
+ widgetCorner?: 'lower-right' | 'lower-left' | 'upper-right' | 'upper-left';
105
+ toolbarPosition?: 'top' | 'bottom';
106
+ /** Where the sidebar mounts. New code reads this; `sidebarSide` is
107
+ * the deprecated legacy alias, preserved for one or two more
108
+ * releases. */
109
+ sidebarPosition?: 'left' | 'right' | 'top' | 'bottom';
110
+ /** @deprecated — use `sidebarPosition`. */
111
+ sidebarSide?: 'left' | 'right';
112
+ sidebarDisplayMode?: 'flyout' | 'in-page';
113
+ /** Project's default theme (built-in or recipe). The widget's own
114
+ * per-user override still wins over this. */
115
+ theme?: ProjectThemeId;
116
+ /** Comment-tooltip inline-reply switch (project ui config). */
117
+ allowInlineCommenting?: boolean;
118
+ /** Hover delay for comment-tooltip in ms. */
119
+ tooltipDelayMs?: number;
120
+ /** When true, bubbles continuously track their anchor
121
+ * elements through animations + layout shifts. Default false. */
122
+ bubbleFollowAnimations?: boolean;
123
+ /** Base CSS z-index for the bubble layer. Renderers apply this
124
+ * to `--pl-z-bubbles` so host-page modals can be layered above
125
+ * or below the bubbles. Floating (hovered) bubbles derive from
126
+ * `value + 1`. */
127
+ bubbleZIndex?: number;
128
+ /** OAuth sign-in transport.
129
+ * - `'auto'` (default) — full-page redirect when the PageLoop
130
+ * endpoint is same-origin with the host page, popup +
131
+ * postMessage when cross-origin. Matches the admin SPA's
132
+ * flow for same-origin embedders.
133
+ * - `'redirect'` — force redirect. Only works same-origin.
134
+ * - `'popup'` — force popup. Required for `file://` hosts and
135
+ * cross-origin embedders. */
136
+ signInMode?: 'auto' | 'popup' | 'redirect';
137
+ };
138
+ /**
139
+ * Register the current URL as a tracked page if it isn't already.
140
+ * Returns the page (existing or newly-created), or null if registration
141
+ * failed (insufficient permissions, network error). Renderers call this
142
+ * before creating a comment when `page()` returns null.
143
+ */
144
+ registerCurrentPage: () => Promise<TrackedPage | null>;
145
+ /**
146
+ * Canonical key for the current URL — same value the PageTracker
147
+ * would use when registering. Always defined (synthesised from
148
+ * `window.location` for hosts that haven't called register yet),
149
+ * so renderers can pass it to `pages.trackCurrent` without first
150
+ * round-tripping a register call.
151
+ */
152
+ pageKey: () => string;
153
+ /** Optional debug logger; no-op when debug is off. */
154
+ debug: (...args: unknown[]) => void;
155
+ /**
156
+ * Booted-bundle release info (CR-7), threaded from `PageLoopConfig`.
157
+ * `version` is the running bundle's version (from the auto-update
158
+ * loader's manifest); `notesUrl` links the release notes. Both may be
159
+ * undefined when the embedder doesn't supply them — the renderer's
160
+ * "What's new" pill stays silent in that case.
161
+ */
162
+ release: () => {
163
+ version?: string;
164
+ notesUrl?: string;
165
+ };
166
+ }
167
+ export interface SidebarState {
168
+ page: TrackedPage | null;
169
+ comments: Comment[];
170
+ /** Currently focused comment id (sidebar selection / scroll target). */
171
+ focusedCommentId?: string | null;
172
+ /** Set of comment ids to highlight simultaneously. Used when the
173
+ * bubble layer routes a click on a stacked bubble — every comment
174
+ * at that anchor highlights together so the viewer can see the
175
+ * full group at a glance. Always a superset (or equal) of the
176
+ * scroll target in `focusedCommentId`. */
177
+ focusedCommentIds?: ReadonlySet<string>;
178
+ /** Comment ids whose anchor couldn't be resolved against the
179
+ * CURRENT page DOM. Distinct from `Comment.status === 'misaligned'`
180
+ * (which is a server-side permanent flag stamped on publish): this
181
+ * is the live "we re-tried to find your text and didn't" set,
182
+ * recomputed on every bubble repaint. The renderer surfaces it
183
+ * as a subtle "no anchor" indicator on the matching sidebar row. */
184
+ danglingCommentIds?: ReadonlySet<string>;
185
+ }
186
+ export interface ToolbarHandle {
187
+ setUnreadCount(n: number): void;
188
+ setBubblesVisible(visible: boolean): void;
189
+ }
190
+ export interface SidebarHandle {
191
+ open(): void;
192
+ close(): void;
193
+ toggle(): void;
194
+ focusComment(id: string): void;
195
+ /**
196
+ * Open the sidebar, scroll to `commentId`, expand its replies
197
+ * thread (fetching if needed), then scroll to + flash the
198
+ * specific reply. The reply id is searched inside the comment's
199
+ * `.pl-replies` block.
200
+ *
201
+ * Renderers without nested replies UI can fall back to
202
+ * `focusComment(commentId)` and ignore the reply id.
203
+ */
204
+ focusReply(commentId: string, replyId: string): void;
205
+ }
206
+ /**
207
+ * Helper for a renderer to ask the user to confirm an anchor + write a comment.
208
+ * Renderers can ignore this and implement their own UI; provided as a helper
209
+ * for the simplest implementations.
210
+ */
211
+ export interface CommentComposeRequest {
212
+ anchor: Anchor;
213
+ /** Resolved DOM range, when available, for visual confirmation. */
214
+ range: Range | null;
215
+ /** Element-picker mode? Affects the affordance label ("Comment on element" vs "Comment"). */
216
+ elementPicker?: boolean;
217
+ }
218
+ //# sourceMappingURL=UIRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIRenderer.d.ts","sourceRoot":"","sources":["../src/UIRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=UIRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIRenderer.js","sourceRoot":"","sources":["../src/UIRenderer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Bearer-token resolution for a freshly-constructed PageLoop widget.
3
+ * Extracted from PageLoop.ts so unit tests can exercise the priority
4
+ * chain directly without booting a full instance.
5
+ *
6
+ * Three sources, in priority order:
7
+ *
8
+ * 1. URL fragment `#pl_token=...&pl_project=...` — set by the server's
9
+ * OAuth callback when the user just completed sign-in. We pull it
10
+ * out, persist it under SESSION_TOKEN_KEY, and clean the URL so a
11
+ * refresh doesn't keep the token visible in the address bar (and
12
+ * so the user can copy the URL without leaking credentials).
13
+ * 2. `localStorage[SESSION_TOKEN_KEY]` — a token from a prior session
14
+ * in this browser. Survives page reloads + tab close/reopen.
15
+ * 3. The explicit `config.token` an embedder may pass in (e.g. when
16
+ * the host app has its own session and wants to forward it).
17
+ *
18
+ * SSR-safe: returns the config token when `window` is undefined.
19
+ * Private-mode-safe: catches localStorage exceptions, returns the
20
+ * captured token for the current tab even when it can't be persisted.
21
+ */
22
+ /**
23
+ * localStorage key for the widget's bearer JWT.
24
+ *
25
+ * **Renamed from `pl_token` to `pl_widget_session`** after a
26
+ * reproducible bug on Chrome where the literal key `pl_token` was
27
+ * being cleared across page refresh by something outside our code —
28
+ * almost certainly an anti-tracking extension or a Chrome heuristic
29
+ * that pattern-matches on OAuth-token-shaped storage entries. A
30
+ * localStorage-prototype tap proved no code path on the page called
31
+ * `removeItem('pl_token')`; manual `localStorage.setItem('pl_token',
32
+ * 'eyJ…')` in DevTools also vanished across refresh, while a sibling
33
+ * `xx_token` key survived. The rename defeats key-specific targeting.
34
+ *
35
+ * The URL fragment name the server emits is still `pl_token` —
36
+ * that's part of the server's contract and doesn't need renaming
37
+ * (the fragment is transient, history.replaceState'd off the URL
38
+ * before the page renders to the user). Only the persisted-storage
39
+ * key changes here.
40
+ *
41
+ * Per-origin (not per-project) so a user signed into one project
42
+ * stays signed in across widgets on the same host. Independent from
43
+ * the admin SPA's session — admin uses `pl_admin_session`. To bridge
44
+ * the two surfaces, an embedder passes the token explicitly via
45
+ * `PageLoop.init({ token })`.
46
+ */
47
+ export declare const SESSION_TOKEN_KEY = "pl_widget_session";
48
+ export declare function resolveInitialToken(configToken: string | null | undefined): string | null;
49
+ //# sourceMappingURL=resolveInitialToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveInitialToken.d.ts","sourceRoot":"","sources":["../../src/auth/resolveInitialToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA6CzF"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Bearer-token resolution for a freshly-constructed PageLoop widget.
3
+ * Extracted from PageLoop.ts so unit tests can exercise the priority
4
+ * chain directly without booting a full instance.
5
+ *
6
+ * Three sources, in priority order:
7
+ *
8
+ * 1. URL fragment `#pl_token=...&pl_project=...` — set by the server's
9
+ * OAuth callback when the user just completed sign-in. We pull it
10
+ * out, persist it under SESSION_TOKEN_KEY, and clean the URL so a
11
+ * refresh doesn't keep the token visible in the address bar (and
12
+ * so the user can copy the URL without leaking credentials).
13
+ * 2. `localStorage[SESSION_TOKEN_KEY]` — a token from a prior session
14
+ * in this browser. Survives page reloads + tab close/reopen.
15
+ * 3. The explicit `config.token` an embedder may pass in (e.g. when
16
+ * the host app has its own session and wants to forward it).
17
+ *
18
+ * SSR-safe: returns the config token when `window` is undefined.
19
+ * Private-mode-safe: catches localStorage exceptions, returns the
20
+ * captured token for the current tab even when it can't be persisted.
21
+ */
22
+ /**
23
+ * localStorage key for the widget's bearer JWT.
24
+ *
25
+ * **Renamed from `pl_token` to `pl_widget_session`** after a
26
+ * reproducible bug on Chrome where the literal key `pl_token` was
27
+ * being cleared across page refresh by something outside our code —
28
+ * almost certainly an anti-tracking extension or a Chrome heuristic
29
+ * that pattern-matches on OAuth-token-shaped storage entries. A
30
+ * localStorage-prototype tap proved no code path on the page called
31
+ * `removeItem('pl_token')`; manual `localStorage.setItem('pl_token',
32
+ * 'eyJ…')` in DevTools also vanished across refresh, while a sibling
33
+ * `xx_token` key survived. The rename defeats key-specific targeting.
34
+ *
35
+ * The URL fragment name the server emits is still `pl_token` —
36
+ * that's part of the server's contract and doesn't need renaming
37
+ * (the fragment is transient, history.replaceState'd off the URL
38
+ * before the page renders to the user). Only the persisted-storage
39
+ * key changes here.
40
+ *
41
+ * Per-origin (not per-project) so a user signed into one project
42
+ * stays signed in across widgets on the same host. Independent from
43
+ * the admin SPA's session — admin uses `pl_admin_session`. To bridge
44
+ * the two surfaces, an embedder passes the token explicitly via
45
+ * `PageLoop.init({ token })`.
46
+ */
47
+ export const SESSION_TOKEN_KEY = 'pl_widget_session';
48
+ export function resolveInitialToken(configToken) {
49
+ if (typeof window === 'undefined')
50
+ return configToken ?? null;
51
+ // 1. URL fragment from OAuth callback. The server sets pl_token +
52
+ // pl_project; only pl_token is load-bearing here (the project comes
53
+ // from the embedder's config). Match on hash to avoid colliding with
54
+ // any querystring keys the embedder's app might use.
55
+ try {
56
+ const hash = window.location.hash || '';
57
+ const params = new URLSearchParams(hash.startsWith('#') ? hash.slice(1) : hash);
58
+ const fromHash = params.get('pl_token');
59
+ if (fromHash) {
60
+ // Persist for refresh + cross-tab visibility, then strip the
61
+ // token from the visible URL via history.replaceState.
62
+ try {
63
+ localStorage.setItem(SESSION_TOKEN_KEY, fromHash);
64
+ }
65
+ catch {
66
+ /* private mode — token still works for this tab */
67
+ }
68
+ params.delete('pl_token');
69
+ params.delete('pl_project');
70
+ const remaining = params.toString();
71
+ const cleanedHash = remaining ? `#${remaining}` : '';
72
+ const url = window.location.pathname + window.location.search + cleanedHash;
73
+ try {
74
+ window.history.replaceState(null, '', url);
75
+ }
76
+ catch {
77
+ /* file:// or sandboxed iframe — ignore */
78
+ }
79
+ return fromHash;
80
+ }
81
+ }
82
+ catch {
83
+ /* malformed URLSearchParams etc — fall through */
84
+ }
85
+ // 2. Previously-persisted token from a prior session.
86
+ try {
87
+ const saved = localStorage.getItem(SESSION_TOKEN_KEY);
88
+ if (saved)
89
+ return saved;
90
+ }
91
+ catch {
92
+ /* private mode — skip */
93
+ }
94
+ // 3. Explicit embedder-supplied token (fall back).
95
+ return configToken ?? null;
96
+ }
97
+ //# sourceMappingURL=resolveInitialToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveInitialToken.js","sourceRoot":"","sources":["../../src/auth/resolveInitialToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD,MAAM,UAAU,mBAAmB,CAAC,WAAsC;IACzE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,WAAW,IAAI,IAAI,CAAC;IAE9D,kEAAkE;IAClE,oEAAoE;IACpE,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACd,6DAA6D;YAC7D,uDAAuD;YACvD,IAAI,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACR,mDAAmD;YACpD,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;YAC5E,IAAI,CAAC;gBACJ,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACR,0CAA0C;YAC3C,CAAC;YACD,OAAO,QAAQ,CAAC;QACjB,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,kDAAkD;IACnD,CAAC;IAED,sDAAsD;IACtD,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,yBAAyB;IAC1B,CAAC;IAED,mDAAmD;IACnD,OAAO,WAAW,IAAI,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Extract the machine-readable error code from an unknown thrown value.
3
+ *
4
+ * Prefers the structured `code` carried by `RpcError`/`PageLoopError` (what
5
+ * `ApiClient` now throws). Falls back to the legacy `"CODE: message"` string
6
+ * form so any path that still throws a plain `Error` keeps working — but new
7
+ * code should rely on the structured field, not the message text.
8
+ *
9
+ * Returns `null` when no code can be determined.
10
+ */
11
+ export declare function errorCode(err: unknown): string | null;
12
+ //# sourceMappingURL=errorCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorCode.d.ts","sourceRoot":"","sources":["../src/errorCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQrD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Extract the machine-readable error code from an unknown thrown value.
3
+ *
4
+ * Prefers the structured `code` carried by `RpcError`/`PageLoopError` (what
5
+ * `ApiClient` now throws). Falls back to the legacy `"CODE: message"` string
6
+ * form so any path that still throws a plain `Error` keeps working — but new
7
+ * code should rely on the structured field, not the message text.
8
+ *
9
+ * Returns `null` when no code can be determined.
10
+ */
11
+ export function errorCode(err) {
12
+ if (err && typeof err === 'object') {
13
+ const code = err.code;
14
+ if (typeof code === 'string' && code.length > 0)
15
+ return code;
16
+ }
17
+ const msg = err instanceof Error ? err.message : typeof err === 'string' ? err : '';
18
+ const m = /^([A-Z][A-Z0-9_]+):/.exec(msg);
19
+ return m ? m[1] : null;
20
+ }
21
+ //# sourceMappingURL=errorCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorCode.js","sourceRoot":"","sources":["../src/errorCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACrC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAC;QAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC"}