huntr-cli 1.0.9

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 (117) hide show
  1. package/.env.example +7 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
  5. package/.github/labels.json +92 -0
  6. package/.github/pull_request_template.md +64 -0
  7. package/.github/workflows/ci.yml +87 -0
  8. package/.github/workflows/labels.yml +27 -0
  9. package/.github/workflows/manual-publish.yml +105 -0
  10. package/.github/workflows/publish.yml +57 -0
  11. package/.github/workflows/release.yml +124 -0
  12. package/.github/workflows/security-audit.yml +44 -0
  13. package/.husky/pre-commit +12 -0
  14. package/.husky/pre-push +27 -0
  15. package/.lintstagedrc.json +3 -0
  16. package/AGENTS.md +449 -0
  17. package/CHANGELOG.md +38 -0
  18. package/CHANGES.md +259 -0
  19. package/LICENSE +15 -0
  20. package/PUBLISHING.md +191 -0
  21. package/README.md +385 -0
  22. package/ROADMAP.md +158 -0
  23. package/SETUP-COMPLETE.md +446 -0
  24. package/WORKFLOW-SUMMARY.md +368 -0
  25. package/completions/_huntr +168 -0
  26. package/completions/huntr.1 +266 -0
  27. package/completions/huntr.bash +91 -0
  28. package/dist/api/client.d.ts +14 -0
  29. package/dist/api/client.d.ts.map +1 -0
  30. package/dist/api/client.js +74 -0
  31. package/dist/api/client.js.map +1 -0
  32. package/dist/api/personal/activities.d.ts +20 -0
  33. package/dist/api/personal/activities.d.ts.map +1 -0
  34. package/dist/api/personal/activities.js +50 -0
  35. package/dist/api/personal/activities.js.map +1 -0
  36. package/dist/api/personal/boards.d.ts +9 -0
  37. package/dist/api/personal/boards.d.ts.map +1 -0
  38. package/dist/api/personal/boards.js +16 -0
  39. package/dist/api/personal/boards.js.map +1 -0
  40. package/dist/api/personal/index.d.ts +17 -0
  41. package/dist/api/personal/index.d.ts.map +1 -0
  42. package/dist/api/personal/index.js +37 -0
  43. package/dist/api/personal/index.js.map +1 -0
  44. package/dist/api/personal/jobs.d.ts +13 -0
  45. package/dist/api/personal/jobs.d.ts.map +1 -0
  46. package/dist/api/personal/jobs.js +31 -0
  47. package/dist/api/personal/jobs.js.map +1 -0
  48. package/dist/api/personal/user.d.ts +8 -0
  49. package/dist/api/personal/user.d.ts.map +1 -0
  50. package/dist/api/personal/user.js +13 -0
  51. package/dist/api/personal/user.js.map +1 -0
  52. package/dist/cli.d.ts +3 -0
  53. package/dist/cli.d.ts.map +1 -0
  54. package/dist/cli.js +501 -0
  55. package/dist/cli.js.map +1 -0
  56. package/dist/commands/capture-session.d.ts +10 -0
  57. package/dist/commands/capture-session.d.ts.map +1 -0
  58. package/dist/commands/capture-session.js +478 -0
  59. package/dist/commands/capture-session.js.map +1 -0
  60. package/dist/config/clerk-session-manager.d.ts +44 -0
  61. package/dist/config/clerk-session-manager.d.ts.map +1 -0
  62. package/dist/config/clerk-session-manager.js +232 -0
  63. package/dist/config/clerk-session-manager.js.map +1 -0
  64. package/dist/config/config-manager.d.ts +15 -0
  65. package/dist/config/config-manager.d.ts.map +1 -0
  66. package/dist/config/config-manager.js +51 -0
  67. package/dist/config/config-manager.js.map +1 -0
  68. package/dist/config/keychain-manager.d.ts +6 -0
  69. package/dist/config/keychain-manager.d.ts.map +1 -0
  70. package/dist/config/keychain-manager.js +37 -0
  71. package/dist/config/keychain-manager.js.map +1 -0
  72. package/dist/config/token-capture.d.ts +11 -0
  73. package/dist/config/token-capture.d.ts.map +1 -0
  74. package/dist/config/token-capture.js +252 -0
  75. package/dist/config/token-capture.js.map +1 -0
  76. package/dist/config/token-manager.d.ts +38 -0
  77. package/dist/config/token-manager.d.ts.map +1 -0
  78. package/dist/config/token-manager.js +153 -0
  79. package/dist/config/token-manager.js.map +1 -0
  80. package/dist/lib/list-options.d.ts +69 -0
  81. package/dist/lib/list-options.d.ts.map +1 -0
  82. package/dist/lib/list-options.js +299 -0
  83. package/dist/lib/list-options.js.map +1 -0
  84. package/dist/types/personal.d.ts +113 -0
  85. package/dist/types/personal.d.ts.map +1 -0
  86. package/dist/types/personal.js +4 -0
  87. package/dist/types/personal.js.map +1 -0
  88. package/docs/AUTOMATIC-PUBLISHING.md +520 -0
  89. package/docs/CHANGELOG-AUTOMATION.md +418 -0
  90. package/docs/CI-CD-SETUP.md +582 -0
  91. package/docs/DEV-SETUP.md +512 -0
  92. package/docs/ENHANCEMENT-PLAN.md +204 -0
  93. package/docs/ENTITY-TYPES.md +462 -0
  94. package/docs/GITHUB-ACTIONS-GUIDE.md +367 -0
  95. package/docs/NPM-PUBLISHING.md +324 -0
  96. package/docs/OUTPUT-EXAMPLES.md +414 -0
  97. package/docs/OUTPUT-FORMATS.md +299 -0
  98. package/docs/TESTING.md +216 -0
  99. package/eslint.config.js +68 -0
  100. package/package.json +64 -0
  101. package/src/api/client.ts +88 -0
  102. package/src/api/personal/activities.ts +66 -0
  103. package/src/api/personal/boards.ts +14 -0
  104. package/src/api/personal/index.ts +25 -0
  105. package/src/api/personal/jobs.ts +33 -0
  106. package/src/api/personal/user.ts +10 -0
  107. package/src/cli.ts +487 -0
  108. package/src/commands/capture-session.ts +582 -0
  109. package/src/config/clerk-session-manager.ts +263 -0
  110. package/src/config/config-manager.ts +56 -0
  111. package/src/config/keychain-manager.ts +30 -0
  112. package/src/config/token-capture.ts +233 -0
  113. package/src/config/token-manager.ts +139 -0
  114. package/src/lib/list-options.ts +370 -0
  115. package/src/types/personal.ts +114 -0
  116. package/tests/example.test.ts +130 -0
  117. package/tsconfig.json +19 -0
@@ -0,0 +1,478 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Session capture via Chrome DevTools Protocol (CDP).
5
+ * - Connects to a Chrome instance started with --remote-debugging-port.
6
+ * - Reads required Huntr/Clerk cookies from the active huntr.co tab.
7
+ * - Verifies refresh with Clerk and stores session data in macOS Keychain.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.captureSession = captureSession;
14
+ exports.checkCdpSession = checkCdpSession;
15
+ const fs_1 = require("fs");
16
+ const os_1 = require("os");
17
+ const path_1 = require("path");
18
+ const child_process_1 = require("child_process");
19
+ const net_1 = __importDefault(require("net"));
20
+ const clerk_session_manager_1 = require("../config/clerk-session-manager");
21
+ const CDP_PORT = 9222;
22
+ const CDP_USER_DATA_DIR = (0, path_1.join)((0, os_1.tmpdir)(), 'huntr-cdp-profile');
23
+ const HUNTR_APP_URL = 'https://huntr.co/home';
24
+ const HUNTR_COOKIE_URLS = ['https://huntr.co/', HUNTR_APP_URL, 'https://clerk.huntr.co/'];
25
+ const CAPTURED_COOKIE_NAMES = new Set(['__session', '__client_uat', '__client', '__cf_bm', '_cfuvid']);
26
+ const TAB_WAIT_TIMEOUT_MS = 45000;
27
+ const TOKEN_WAIT_TIMEOUT_MS = 120000;
28
+ const POLL_INTERVAL_MS = 1500;
29
+ const CLERK_SESSION_ID_EVAL_EXPRESSION = `(() => {
30
+ const sid = window.Clerk?.session?.id;
31
+ return typeof sid === 'string' ? sid : '';
32
+ })()`;
33
+ async function captureSession() {
34
+ console.log('\nConnecting to Chrome via DevTools Protocol…');
35
+ // Step 1: Check if Chrome is already running with remote debugging
36
+ let tabs = await getChromeTabs().catch(() => null);
37
+ if (!tabs) {
38
+ console.log(' Chrome not running with --remote-debugging-port. Launching…');
39
+ await launchChromeWithDebugging();
40
+ // Give it a moment to start
41
+ await new Promise(r => setTimeout(r, 2000));
42
+ tabs = await getChromeTabs().catch(() => null);
43
+ }
44
+ if (!tabs) {
45
+ throw new Error('Could not connect to Chrome DevTools Protocol.\n' +
46
+ 'Please quit Chrome and re-run this command, or start Chrome manually with:\n' +
47
+ ` /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --remote-debugging-port=${CDP_PORT} --user-data-dir=${CDP_USER_DATA_DIR} ${HUNTR_APP_URL}\n` +
48
+ ' (If this is your first run, sign in to huntr.co in that profile once.)\n' +
49
+ 'Then run: huntr config capture-session');
50
+ }
51
+ // Step 2: Find the huntr.co tab
52
+ let huntrTab = findBestHuntrTab(tabs);
53
+ if (!huntrTab) {
54
+ console.log(` Opening ${HUNTR_APP_URL} in debug profile…`);
55
+ await openHuntrAppInDebugProfile();
56
+ }
57
+ console.log(' Waiting for huntr.co tab to become available…');
58
+ huntrTab = await waitForHuntrTab(TAB_WAIT_TIMEOUT_MS);
59
+ if (!huntrTab || !huntrTab.webSocketDebuggerUrl) {
60
+ throw new Error('No huntr.co tab found in Chrome DevTools.\n' +
61
+ `Please open ${HUNTR_APP_URL} in Chrome (in the debug profile) and re-run.`);
62
+ }
63
+ console.log(` Found huntr.co tab: ${huntrTab.title}`);
64
+ const mgr = new clerk_session_manager_1.ClerkSessionManager();
65
+ console.log(' Waiting for login and extracting Clerk session cookie…');
66
+ // Step 3: Poll until we have a cookie pair that actually refreshes via Clerk
67
+ const cookieWait = await waitForValidHuntrSessionCookie(mgr, TOKEN_WAIT_TIMEOUT_MS);
68
+ if (!cookieWait.sessionCookie) {
69
+ const details = [
70
+ `Last tab URL: ${cookieWait.tab?.url ?? '(none)'}`,
71
+ cookieWait.lastValueDescription ? `Last cookie value: ${cookieWait.lastValueDescription}` : '',
72
+ cookieWait.lastError ? `Last eval error: ${cookieWait.lastError}` : '',
73
+ ].filter(Boolean).join('\n');
74
+ throw new Error('Timed out waiting for authenticated huntr session.\n' +
75
+ 'Please finish signing in on the opened Chrome window, then re-run.\n' +
76
+ details);
77
+ }
78
+ const sessionCookie = cookieWait.sessionCookie;
79
+ const sessionId = cookieWait.sessionId;
80
+ const clientUat = cookieWait.clientUat;
81
+ const extraCookies = cookieWait.extraCookies ?? {};
82
+ if (!sessionId) {
83
+ throw new Error('Could not extract session ID from session cookie.');
84
+ }
85
+ console.log(` Session ID: ${sessionId}`);
86
+ await mgr.saveSession(sessionCookie, sessionId, clientUat ?? undefined, extraCookies);
87
+ console.log(' Saved to macOS Keychain.');
88
+ // Step 5: Immediately test the refresh endpoint
89
+ process.stdout.write(' Testing auto-refresh… ');
90
+ await mgr.getFreshToken();
91
+ console.log('✓');
92
+ console.log('\n✓ Session captured and verified!');
93
+ console.log(' Tokens will auto-refresh before every command.');
94
+ console.log(' Run: node dist/cli.js activities week-csv 68bf9e33f871e5004a5eb58e');
95
+ }
96
+ async function checkCdpSession() {
97
+ console.log('\nChecking Chrome DevTools session visibility…');
98
+ const tabs = await getChromeTabs().catch(() => null);
99
+ if (!tabs) {
100
+ throw new Error('Could not connect to Chrome DevTools Protocol.\n' +
101
+ 'Start Chrome with:\n' +
102
+ ` /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --remote-debugging-port=${CDP_PORT} --user-data-dir=${CDP_USER_DATA_DIR} ${HUNTR_APP_URL}`);
103
+ }
104
+ const huntrTab = findBestHuntrTab(tabs);
105
+ if (!huntrTab?.webSocketDebuggerUrl) {
106
+ throw new Error('No huntr.co page tab found. Open huntr.co in the debug-profile Chrome and retry.');
107
+ }
108
+ console.log(` Using tab: ${huntrTab.title ?? '(untitled)'}`);
109
+ console.log(` URL: ${huntrTab.url ?? '(unknown)'}`);
110
+ const snapshot = await getSessionSnapshotInTab(huntrTab.webSocketDebuggerUrl, huntrTab.url);
111
+ if (!snapshot?.sessionCookie) {
112
+ throw new Error('CDP connected, but __session cookie is not visible yet.\n' +
113
+ 'Finish login in that tab, wait for the app page to load, then retry.');
114
+ }
115
+ const sessionId = clerk_session_manager_1.ClerkSessionManager.extractSessionId(snapshot.sessionCookie) ??
116
+ snapshot.clerkSessionId ??
117
+ undefined;
118
+ if (!sessionId || !sessionId.startsWith('sess_')) {
119
+ throw new Error('Found __session cookie, but could not derive a valid Clerk session ID.');
120
+ }
121
+ const visibleCookies = [
122
+ '__session',
123
+ snapshot.clientUat ? '__client_uat' : null,
124
+ ...Object.keys(snapshot.extraCookies),
125
+ ].filter(Boolean);
126
+ console.log(` Visible cookies: ${visibleCookies.sort().join(', ')}`);
127
+ const mgr = new clerk_session_manager_1.ClerkSessionManager();
128
+ process.stdout.write(' Testing Clerk refresh with visible cookies… ');
129
+ const fresh = await mgr.refreshFromProvidedSession(snapshot.sessionCookie, sessionId, snapshot.clientUat, snapshot.extraCookies);
130
+ console.log('✓');
131
+ console.log(` Session ID: ${sessionId}`);
132
+ console.log(` Refresh token preview: ${fresh.substring(0, 20)}…`);
133
+ }
134
+ async function getChromeTabs() {
135
+ const response = await fetch(`http://127.0.0.1:${CDP_PORT}/json`);
136
+ if (!response.ok)
137
+ throw new Error(`CDP returned ${response.status}`);
138
+ const json = await response.json();
139
+ if (!Array.isArray(json))
140
+ throw new Error('Unexpected CDP /json response');
141
+ return json;
142
+ }
143
+ async function launchChromeWithDebugging() {
144
+ // Chrome requires an explicit user-data-dir when remote debugging is enabled.
145
+ (0, fs_1.mkdirSync)(CDP_USER_DATA_DIR, { recursive: true });
146
+ const chromePath = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
147
+ (0, child_process_1.spawn)(chromePath, [
148
+ `--remote-debugging-port=${CDP_PORT}`,
149
+ `--user-data-dir=${CDP_USER_DATA_DIR}`,
150
+ '--no-first-run',
151
+ '--no-default-browser-check',
152
+ HUNTR_APP_URL,
153
+ ], { detached: true, stdio: 'ignore' }).unref();
154
+ }
155
+ async function openHuntrAppInDebugProfile() {
156
+ // Launching again with the same user-data-dir opens a tab in that profile.
157
+ await launchChromeWithDebugging();
158
+ }
159
+ async function waitForHuntrTab(timeoutMs) {
160
+ const deadline = Date.now() + timeoutMs;
161
+ while (Date.now() < deadline) {
162
+ const tabs = await getChromeTabs().catch(() => null);
163
+ const tab = tabs ? findBestHuntrTab(tabs) : undefined;
164
+ if (tab?.webSocketDebuggerUrl)
165
+ return tab;
166
+ await sleep(POLL_INTERVAL_MS);
167
+ }
168
+ return undefined;
169
+ }
170
+ async function waitForValidHuntrSessionCookie(mgr, timeoutMs) {
171
+ const deadline = Date.now() + timeoutMs;
172
+ let lastTab;
173
+ let lastValueDescription;
174
+ let lastError;
175
+ let printedHint = false;
176
+ while (Date.now() < deadline) {
177
+ const tabs = await getChromeTabs().catch(() => null);
178
+ const huntrTabs = tabs ? findHuntrTabs(tabs) : [];
179
+ for (const tab of huntrTabs) {
180
+ if (!tab.webSocketDebuggerUrl)
181
+ continue;
182
+ lastTab = tab;
183
+ try {
184
+ const snapshot = await getSessionSnapshotInTab(tab.webSocketDebuggerUrl, tab.url);
185
+ lastValueDescription = describeValue(snapshot);
186
+ if (!snapshot?.sessionCookie || snapshot.sessionCookie.split('.').length !== 3) {
187
+ continue;
188
+ }
189
+ const sessionId = clerk_session_manager_1.ClerkSessionManager.extractSessionId(snapshot.sessionCookie) ??
190
+ snapshot.clerkSessionId ??
191
+ undefined;
192
+ if (!sessionId || !sessionId.startsWith('sess_')) {
193
+ continue;
194
+ }
195
+ const freshToken = await mgr.refreshFromProvidedSession(snapshot.sessionCookie, sessionId, snapshot.clientUat, snapshot.extraCookies);
196
+ if (freshToken && freshToken.split('.').length === 3) {
197
+ return {
198
+ sessionCookie: snapshot.sessionCookie,
199
+ sessionId,
200
+ clientUat: snapshot.clientUat,
201
+ extraCookies: snapshot.extraCookies,
202
+ freshToken,
203
+ tab,
204
+ lastValueDescription,
205
+ lastError,
206
+ };
207
+ }
208
+ }
209
+ catch (e) {
210
+ lastError = e instanceof Error ? e.message : String(e);
211
+ }
212
+ }
213
+ if (!printedHint && huntrTabs.length > 0) {
214
+ console.log(' Waiting for you to finish signing into huntr.co in that Chrome window…');
215
+ printedHint = true;
216
+ }
217
+ await sleep(POLL_INTERVAL_MS);
218
+ }
219
+ return { sessionCookie: null, tab: lastTab, lastValueDescription, lastError };
220
+ }
221
+ function isHuntrAppTab(tab) {
222
+ if (!tab.url || tab.type !== 'page')
223
+ return false;
224
+ try {
225
+ const parsed = new URL(tab.url);
226
+ if (!parsed.hostname.endsWith('huntr.co'))
227
+ return false;
228
+ return parsed.pathname !== '/' && parsed.pathname.length > 1;
229
+ }
230
+ catch {
231
+ return false;
232
+ }
233
+ }
234
+ function isHuntrTab(tab) {
235
+ if (!tab.url || tab.type !== 'page')
236
+ return false;
237
+ try {
238
+ const parsed = new URL(tab.url);
239
+ return parsed.hostname.endsWith('huntr.co');
240
+ }
241
+ catch {
242
+ return false;
243
+ }
244
+ }
245
+ function findHuntrTabs(tabs) {
246
+ const huntrTabs = tabs.filter(isHuntrTab);
247
+ const appTabs = huntrTabs.filter(isHuntrAppTab);
248
+ return appTabs.length > 0 ? appTabs : huntrTabs;
249
+ }
250
+ function findBestHuntrTab(tabs) {
251
+ return findHuntrTabs(tabs)[0];
252
+ }
253
+ async function sleep(ms) {
254
+ await new Promise(resolve => setTimeout(resolve, ms));
255
+ }
256
+ async function getSessionSnapshotInTab(wsUrl, pageUrl) {
257
+ const cookies = await getCookiesInTab(wsUrl, pageUrl);
258
+ const sessionCookie = cookies.__session ?? null;
259
+ if (!sessionCookie)
260
+ return null;
261
+ const clerkSessionIdRaw = await evaluateInTab(wsUrl, CLERK_SESSION_ID_EVAL_EXPRESSION).catch(() => '');
262
+ const clerkSessionId = typeof clerkSessionIdRaw === 'string' && clerkSessionIdRaw.startsWith('sess_')
263
+ ? clerkSessionIdRaw
264
+ : null;
265
+ return {
266
+ sessionCookie,
267
+ clientUat: cookies.__client_uat ?? null,
268
+ extraCookies: Object.fromEntries(Object.entries(cookies).filter(([name]) => name !== '__session' && name !== '__client_uat')),
269
+ clerkSessionId,
270
+ };
271
+ }
272
+ async function getCookiesInTab(wsUrl, pageUrl) {
273
+ try {
274
+ await cdpRequestInTab(wsUrl, 'Network.enable');
275
+ }
276
+ catch {
277
+ // Not all targets require/allow Network.enable first.
278
+ }
279
+ const urls = pageUrl ? Array.from(new Set([pageUrl, ...HUNTR_COOKIE_URLS])) : HUNTR_COOKIE_URLS;
280
+ const result = await cdpRequestInTab(wsUrl, 'Network.getCookies', { urls });
281
+ const cookies = result?.cookies;
282
+ const out = {};
283
+ if (!Array.isArray(cookies))
284
+ return out;
285
+ for (const cookie of cookies) {
286
+ if (!cookie || typeof cookie !== 'object')
287
+ continue;
288
+ const c = cookie;
289
+ const name = c.name;
290
+ const value = c.value;
291
+ const domain = c.domain;
292
+ if (typeof name !== 'string' || typeof value !== 'string')
293
+ continue;
294
+ if (typeof domain === 'string' && !domain.includes('huntr.co'))
295
+ continue;
296
+ if (CAPTURED_COOKIE_NAMES.has(name)) {
297
+ out[name] = value;
298
+ }
299
+ }
300
+ return out;
301
+ }
302
+ async function evaluateInTab(wsUrl, expression) {
303
+ const result = await cdpRequestInTab(wsUrl, 'Runtime.evaluate', {
304
+ expression,
305
+ awaitPromise: true,
306
+ returnByValue: true,
307
+ });
308
+ const evalResult = (result ?? {});
309
+ const exceptionDetails = evalResult.exceptionDetails;
310
+ if (exceptionDetails) {
311
+ const text = typeof exceptionDetails.text === 'string' ? exceptionDetails.text : 'Runtime.evaluate failed';
312
+ throw new Error(text);
313
+ }
314
+ const runtimeResult = evalResult.result;
315
+ if (!runtimeResult || !Object.prototype.hasOwnProperty.call(runtimeResult, 'value'))
316
+ return undefined;
317
+ return runtimeResult.value;
318
+ }
319
+ function cdpRequestInTab(wsUrl, method, params = {}) {
320
+ return new Promise((resolve, reject) => {
321
+ // Use Node's built-in WebSocket (Node 22+) or fall back to a raw WS handshake
322
+ const WebSocketImpl = globalThis.WebSocket;
323
+ if (WebSocketImpl) {
324
+ connectWithWebSocket(wsUrl, WebSocketImpl, method, params, resolve, reject);
325
+ }
326
+ else {
327
+ // Node < 22: implement minimal WS client over net/tls
328
+ connectWithRawWS(wsUrl, method, params, resolve, reject);
329
+ }
330
+ });
331
+ }
332
+ function connectWithWebSocket(wsUrl, WS, method, params, resolve, reject) {
333
+ const ws = new WS(wsUrl);
334
+ const id = 1;
335
+ ws.onopen = () => {
336
+ ws.send(JSON.stringify({
337
+ id,
338
+ method,
339
+ params,
340
+ }));
341
+ };
342
+ ws.onmessage = async (evt) => {
343
+ try {
344
+ const raw = await wsDataToText(evt.data);
345
+ const msg = JSON.parse(raw);
346
+ if (msg.id !== id)
347
+ return;
348
+ if (msg.error) {
349
+ ws.close();
350
+ reject(new Error(msg.error?.message ?? `CDP ${method} failed`));
351
+ return;
352
+ }
353
+ ws.close();
354
+ resolve(msg.result);
355
+ }
356
+ catch (e) {
357
+ ws.close();
358
+ reject(e instanceof Error ? e : new Error(String(e)));
359
+ }
360
+ };
361
+ ws.onerror = () => reject(new Error('WebSocket connection to Chrome DevTools failed'));
362
+ setTimeout(() => { ws.close(); reject(new Error('Timeout waiting for Chrome response')); }, 10000);
363
+ }
364
+ async function wsDataToText(data) {
365
+ if (typeof data === 'string')
366
+ return data;
367
+ if (typeof Buffer !== 'undefined' && Buffer.isBuffer(data))
368
+ return data.toString('utf8');
369
+ if (data instanceof ArrayBuffer)
370
+ return Buffer.from(data).toString('utf8');
371
+ if (typeof Blob !== 'undefined' && data instanceof Blob)
372
+ return await data.text();
373
+ return String(data);
374
+ }
375
+ function connectWithRawWS(wsUrl, method, params, resolve, reject) {
376
+ // Parse ws://host:port/path
377
+ const match = wsUrl.match(/^ws:\/\/([^/:]+):(\d+)(\/.*)?$/);
378
+ if (!match) {
379
+ reject(new Error(`Cannot parse WS URL: ${wsUrl}`));
380
+ return;
381
+ }
382
+ const host = match[1];
383
+ const port = parseInt(match[2], 10);
384
+ const path = match[3] ?? '/';
385
+ const socket = net_1.default.createConnection(port, host);
386
+ const key = Buffer.from(Math.random().toString(36)).toString('base64');
387
+ let buffer = '';
388
+ let handshakeDone = false;
389
+ const msgId = 1;
390
+ socket.on('connect', () => {
391
+ socket.write(`GET ${path} HTTP/1.1\r\n` +
392
+ `Host: ${host}:${port}\r\n` +
393
+ 'Upgrade: websocket\r\n' +
394
+ 'Connection: Upgrade\r\n' +
395
+ `Sec-WebSocket-Key: ${key}\r\n` +
396
+ 'Sec-WebSocket-Version: 13\r\n\r\n');
397
+ });
398
+ socket.on('data', (data) => {
399
+ if (!handshakeDone) {
400
+ buffer += data.toString();
401
+ if (buffer.includes('\r\n\r\n')) {
402
+ handshakeDone = true;
403
+ // Send the evaluate command
404
+ const payload = JSON.stringify({
405
+ id: msgId,
406
+ method,
407
+ params,
408
+ });
409
+ socket.write(encodeWsFrame(payload));
410
+ }
411
+ return;
412
+ }
413
+ // Parse WebSocket frame
414
+ try {
415
+ const msg = decodeWsFrame(data);
416
+ if (msg) {
417
+ const parsed = JSON.parse(msg);
418
+ if (parsed.id !== msgId)
419
+ return;
420
+ if (parsed.error) {
421
+ socket.destroy();
422
+ reject(new Error(parsed.error?.message ?? `CDP ${method} failed`));
423
+ return;
424
+ }
425
+ socket.destroy();
426
+ resolve(parsed.result);
427
+ }
428
+ }
429
+ catch {
430
+ // partial frame, wait for more data
431
+ }
432
+ });
433
+ socket.on('error', (e) => reject(e));
434
+ setTimeout(() => { socket.destroy(); reject(new Error('Timeout')); }, 10000);
435
+ }
436
+ function describeValue(value) {
437
+ if (value === null)
438
+ return 'null';
439
+ if (value === undefined)
440
+ return 'undefined';
441
+ if (typeof value === 'string')
442
+ return `string, ${value.length} chars`;
443
+ if (Array.isArray(value))
444
+ return `array, ${value.length} items`;
445
+ if (typeof value === 'object') {
446
+ const keys = Object.keys(value);
447
+ return `object, keys: ${keys.slice(0, 6).join(', ') || '(none)'}`;
448
+ }
449
+ return typeof value;
450
+ }
451
+ function encodeWsFrame(payload) {
452
+ const data = Buffer.from(payload, 'utf8');
453
+ const len = data.length;
454
+ const mask = Buffer.from([
455
+ Math.random() * 256, Math.random() * 256,
456
+ Math.random() * 256, Math.random() * 256,
457
+ ].map(Math.floor));
458
+ const header = len < 126
459
+ ? Buffer.from([0x81, 0x80 | len])
460
+ : len < 65536
461
+ ? Buffer.from([0x81, 0xfe, len >> 8, len & 0xff])
462
+ : Buffer.from([0x81, 0xff, 0, 0, 0, 0, (len >> 24) & 0xff, (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff]);
463
+ const masked = Buffer.alloc(len);
464
+ for (let i = 0; i < len; i++)
465
+ masked[i] = data[i] ^ mask[i % 4];
466
+ return Buffer.concat([header, mask, masked]);
467
+ }
468
+ function decodeWsFrame(buf) {
469
+ if (buf.length < 2)
470
+ return null;
471
+ const len = buf[1] & 0x7f;
472
+ let offset = 2;
473
+ const payloadLen = len < 126 ? len : len === 126 ? (buf.readUInt16BE(2), offset += 2, buf.readUInt16BE(2)) : null;
474
+ if (payloadLen === null)
475
+ return null;
476
+ return buf.slice(offset, offset + payloadLen).toString('utf8');
477
+ }
478
+ //# sourceMappingURL=capture-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-session.js","sourceRoot":"","sources":["../../src/commands/capture-session.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;AA+CH,wCA+EC;AAED,0CAsDC;AApLD,2BAA+B;AAC/B,2BAA4B;AAC5B,+BAA4B;AAC5B,iDAAsC;AACtC,8CAAsB;AACtB,2EAAsE;AAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,iBAAiB,GAAG,IAAA,WAAI,EAAC,IAAA,WAAM,GAAE,EAAE,mBAAmB,CAAC,CAAC;AAC9D,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAC;AAC1F,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AACvG,MAAM,mBAAmB,GAAG,KAAM,CAAC;AACnC,MAAM,qBAAqB,GAAG,MAAO,CAAC;AACtC,MAAM,gBAAgB,GAAG,IAAK,CAAC;AAC/B,MAAM,gCAAgC,GAAG;;;KAGpC,CAAC;AA2BC,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE7D,mEAAmE;IACnE,IAAI,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,MAAM,yBAAyB,EAAE,CAAC;QAClC,4BAA4B;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,kDAAkD;YAClD,8EAA8E;YAC9E,8FAA8F,QAAQ,oBAAoB,iBAAiB,IAAI,aAAa,IAAI;YAChK,4EAA4E;YAC5E,wCAAwC,CACzC,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,oBAAoB,CAAC,CAAC;QAC5D,MAAM,0BAA0B,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,QAAQ,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,6CAA6C;YAC7C,eAAe,aAAa,+CAA+C,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,2CAAmB,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAExE,6EAA6E;IAC7E,MAAM,UAAU,GAAG,MAAM,8BAA8B,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IACpF,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG;YACd,iBAAiB,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,EAAE;YAClD,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE;YAC9F,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;SACvE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sDAAsD;YACtD,sEAAsE;YACtE,OAAO,CACR,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;IAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvC,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAE1C,MAAM,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,EAAE,YAAY,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,gDAAgD;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjD,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;AACtF,CAAC;AAEM,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,kDAAkD;YAClD,sBAAsB;YACtB,8FAA8F,QAAQ,oBAAoB,iBAAiB,IAAI,aAAa,EAAE,CAC/J,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5F,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,2DAA2D;YAC3D,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GACb,2CAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5D,QAAQ,CAAC,cAAc;QACvB,SAAS,CAAC;IACZ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,WAAW;QACX,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;QAC1C,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;KACtC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,sBAAsB,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtE,MAAM,GAAG,GAAG,IAAI,2CAAmB,EAAE,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,0BAA0B,CAChD,QAAQ,CAAC,aAAa,EACtB,SAAS,EACT,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,YAAY,CACtB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,QAAQ,OAAO,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC3E,OAAO,IAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,8EAA8E;IAC9E,IAAA,cAAS,EAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,8DAA8D,CAAC;IAClF,IAAA,qBAAK,EAAC,UAAU,EAAE;QAChB,2BAA2B,QAAQ,EAAE;QACrC,mBAAmB,iBAAiB,EAAE;QACtC,gBAAgB;QAChB,4BAA4B;QAC5B,aAAa;KACd,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,0BAA0B;IACvC,2EAA2E;IAC3E,MAAM,yBAAyB,EAAE,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,IAAI,GAAG,EAAE,oBAAoB;YAAE,OAAO,GAAG,CAAC;QAC1C,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,GAAwB,EACxB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,OAA8B,CAAC;IACnC,IAAI,oBAAwC,CAAC;IAC7C,IAAI,SAA6B,CAAC;IAClC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,oBAAoB;gBAAE,SAAS;YACxC,OAAO,GAAG,GAAG,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClF,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAE/C,IAAI,CAAC,QAAQ,EAAE,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/E,SAAS;gBACX,CAAC;gBAED,MAAM,SAAS,GACb,2CAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC5D,QAAQ,CAAC,cAAc;oBACvB,SAAS,CAAC;gBAEZ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjD,SAAS;gBACX,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,0BAA0B,CACrD,QAAQ,CAAC,aAAa,EACtB,SAAS,EACT,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,YAAY,CACtB,CAAC;gBACF,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrD,OAAO;wBACL,aAAa,EAAE,QAAQ,CAAC,aAAa;wBACrC,SAAS;wBACT,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,UAAU;wBACV,GAAG;wBACH,oBAAoB;wBACpB,SAAS;qBACV,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,SAAS,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;YACxF,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,GAAc;IACnC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACxD,OAAO,MAAM,CAAC,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAc;IAChC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAiB;IACzC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,KAAa,EAAE,OAAgB;IACpE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAChD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,iBAAiB,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvG,MAAM,cAAc,GAClB,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5E,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,aAAa;QACb,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;QACvC,YAAY,EAAE,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,cAAc,CAAC,CAC5F;QACD,cAAc;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,OAAgB;IAC5D,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAChG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAI,MAAyC,EAAE,OAAO,CAAC;IACpE,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,CAAC;IAExC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACpD,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAExB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACpE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QACzE,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,UAAkB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE;QAC9D,UAAU;QACV,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;IAC7D,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAuD,CAAC;IAC5F,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,OAAO,gBAAgB,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC;QAC3G,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAA6C,CAAC;IAC/E,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACtG,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CACtB,KAAa,EACb,MAAc,EACd,SAAkC,EAAE;IAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,8EAA8E;QAC9E,MAAM,aAAa,GAAI,UAAkB,CAAC,SAAS,CAAC;QAEpD,IAAI,aAAa,EAAE,CAAC;YAClB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAa,EACb,EAAoB,EACpB,MAAc,EACd,MAA+B,EAC/B,OAA6B,EAC7B,MAA0B;IAE1B,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,CAAC;IAEb,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;QACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,EAAE;YACF,MAAM;YACN,MAAM;SACP,CAAC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,EAAE,CAAC,SAAS,GAAG,KAAK,EAAE,GAAiB,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO;YAC1B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,MAAM,SAAS,CAAC,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YAED,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,MAAiB,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;IAEF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAEvF,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAM,CAAC,CAAC;AACtG,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAa;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzF,IAAI,IAAI,YAAY,WAAW;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,YAAY,IAAI;QAAE,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAClF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAa,EACb,MAAc,EACd,MAA+B,EAC/B,OAA6B,EAC7B,MAA0B;IAE1B,4BAA4B;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAE3E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAE7B,MAAM,MAAM,GAAG,aAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,CAAC,CAAC;IAEhB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,KAAK,CACV,OAAO,IAAI,eAAe;YAC1B,SAAS,IAAI,IAAI,IAAI,MAAM;YAC3B,wBAAwB;YACxB,yBAAyB;YACzB,sBAAsB,GAAG,MAAM;YAC/B,mCAAmC,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACjC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,aAAa,GAAG,IAAI,CAAC;gBACrB,4BAA4B;gBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC7B,EAAE,EAAE,KAAK;oBACT,MAAM;oBACN,MAAM;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK;oBAAE,OAAO;gBAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,MAAM,SAAS,CAAC,CAAC,CAAC;oBACnE,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,MAAM,CAAC,MAAiB,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,UAAU,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAM,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,WAAW,KAAK,CAAC,MAAM,QAAQ,CAAC;IACtE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,KAAK,CAAC,MAAM,QAAQ,CAAC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;QAC3D,OAAO,iBAAiB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,OAAO,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;QACxC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;KACzC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnB,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG;QACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,GAAG,GAAG,KAAK;YACb,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YACjD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;IAEjH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClH,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAI,UAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Manages Clerk session-based JWT refresh for the Huntr CLI.
3
+ *
4
+ * Modern Clerk architecture (v5+):
5
+ * - __session cookie : stores the short-lived session JWT (60s exp).
6
+ * The cookie itself has a long expiry (1 year);
7
+ * Clerk JS updates its *value* via FAPI silently.
8
+ * - __client_uat : Unix timestamp of last client update — not a credential.
9
+ *
10
+ * To refresh from outside a browser, we POST the __session value to Clerk's
11
+ * FAPI tokens endpoint. Clerk validates the session and returns a fresh JWT.
12
+ *
13
+ * Endpoint:
14
+ * POST https://clerk.huntr.co/v1/client/sessions/{sessionId}/tokens
15
+ * Cookie: __session=<value>
16
+ * Response: { jwt: "ey..." }
17
+ *
18
+ * The __session value must be re-extracted from the browser periodically
19
+ * (roughly every few weeks, when Clerk rotates the underlying session).
20
+ * For daily use it persists fine.
21
+ */
22
+ export declare class ClerkSessionManager {
23
+ saveSession(sessionCookieValue: string, sessionId: string, clientUat?: string, extraCookies?: Record<string, string>): Promise<void>;
24
+ getSessionCookie(): Promise<string | null>;
25
+ getSessionId(): Promise<string | null>;
26
+ getClientUat(): Promise<string | null>;
27
+ getExtraCookies(): Promise<Record<string, string>>;
28
+ clearSession(): Promise<void>;
29
+ hasSession(): Promise<boolean>;
30
+ /**
31
+ * Returns a fresh Clerk JWT by POSTing to the Clerk FAPI tokens endpoint
32
+ * using the stored __session cookie value.
33
+ */
34
+ getFreshToken(): Promise<string>;
35
+ refreshFromProvidedSession(sessionCookieValue: string, sessionId: string, clientUat?: string | null, extraCookies?: Record<string, string>): Promise<string>;
36
+ private fetchToken;
37
+ private persistRotatedSessionCookie;
38
+ /**
39
+ * Extracts the Clerk session ID (sess_...) from a __session JWT value.
40
+ * The __session cookie value IS a JWT; its payload contains `sid`.
41
+ */
42
+ static extractSessionId(sessionJwt: string): string | null;
43
+ }
44
+ //# sourceMappingURL=clerk-session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk-session-manager.d.ts","sourceRoot":"","sources":["../../src/config/clerk-session-manager.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAmB;IAGxB,WAAW,CACf,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAWV,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI1C,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAItC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAItC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAelD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAQpC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBhC,0BAA0B,CAC9B,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC;IAIlB,OAAO,CAAC,UAAU;YAmFJ,2BAA2B;IAmCzC;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAiB3D"}