better-opencode-openai-codex-auth 0.1.2 → 0.1.3

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 (47) hide show
  1. package/config/README.md +19 -93
  2. package/config/opencode-modern.json +149 -42
  3. package/dist/index.d.ts +0 -12
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +195 -94
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/account-pool.d.ts +29 -3
  8. package/dist/lib/account-pool.d.ts.map +1 -1
  9. package/dist/lib/account-pool.js +210 -47
  10. package/dist/lib/account-pool.js.map +1 -1
  11. package/dist/lib/auth/auth.d.ts +55 -4
  12. package/dist/lib/auth/auth.d.ts.map +1 -1
  13. package/dist/lib/auth/auth.js +130 -6
  14. package/dist/lib/auth/auth.js.map +1 -1
  15. package/dist/lib/auth/ui/account-menu.d.ts +50 -0
  16. package/dist/lib/auth/ui/account-menu.d.ts.map +1 -0
  17. package/dist/lib/auth/ui/account-menu.js +258 -0
  18. package/dist/lib/auth/ui/account-menu.js.map +1 -0
  19. package/dist/lib/auth/ui/ansi.d.ts +23 -0
  20. package/dist/lib/auth/ui/ansi.d.ts.map +1 -0
  21. package/dist/lib/auth/ui/ansi.js +37 -0
  22. package/dist/lib/auth/ui/ansi.js.map +1 -0
  23. package/dist/lib/auth/ui/confirm.d.ts +2 -0
  24. package/dist/lib/auth/ui/confirm.d.ts.map +1 -0
  25. package/dist/lib/auth/ui/confirm.js +8 -0
  26. package/dist/lib/auth/ui/confirm.js.map +1 -0
  27. package/dist/lib/auth/ui/select.d.ts +21 -0
  28. package/dist/lib/auth/ui/select.d.ts.map +1 -0
  29. package/dist/lib/auth/ui/select.js +208 -0
  30. package/dist/lib/auth/ui/select.js.map +1 -0
  31. package/dist/lib/constants.d.ts +51 -3
  32. package/dist/lib/constants.d.ts.map +1 -1
  33. package/dist/lib/constants.js +55 -3
  34. package/dist/lib/constants.js.map +1 -1
  35. package/dist/lib/refresh-queue.d.ts +56 -0
  36. package/dist/lib/refresh-queue.d.ts.map +1 -0
  37. package/dist/lib/refresh-queue.js +148 -0
  38. package/dist/lib/refresh-queue.js.map +1 -0
  39. package/dist/lib/request/fetch-helpers.d.ts +2 -1
  40. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  41. package/dist/lib/request/fetch-helpers.js +23 -3
  42. package/dist/lib/request/fetch-helpers.js.map +1 -1
  43. package/dist/lib/types.d.ts +18 -2
  44. package/dist/lib/types.d.ts.map +1 -1
  45. package/package.json +1 -2
  46. package/scripts/install-opencode-codex-auth.js +7 -27
  47. package/config/opencode-legacy.json +0 -571
@@ -1,15 +1,21 @@
1
- import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { dirname, join } from "node:path";
5
- const STORAGE_VERSION = 1;
5
+ import { ACCOUNT_FAILURE, RATE_LIMIT_TIERS } from "./constants.js";
6
+ const STORAGE_VERSION = 2;
6
7
  const DEFAULT_COOLDOWN_MS = 60_000;
8
+ const LOCK_RETRY_MS = 25;
9
+ const LOCK_TIMEOUT_MS = 2_000;
7
10
  function storagePath() {
8
11
  if (process.env.OPENAI_CODEX_ACCOUNTS_PATH) {
9
12
  return process.env.OPENAI_CODEX_ACCOUNTS_PATH;
10
13
  }
11
14
  return join(homedir(), ".opencode", "openai-codex-accounts.json");
12
15
  }
16
+ function lockPath(path) {
17
+ return `${path}.lock`;
18
+ }
13
19
  function clampIndex(index, size) {
14
20
  if (!Number.isFinite(index) || size <= 0)
15
21
  return 0;
@@ -35,8 +41,73 @@ function normalizeEntry(entry) {
35
41
  email: entry.email,
36
42
  lastUsed: entry.lastUsed,
37
43
  rateLimitedUntil: entry.rateLimitedUntil,
44
+ // Preserve failure-tracking fields across save/load
45
+ coolingDownUntil: entry.coolingDownUntil,
46
+ consecutiveFailures: entry.consecutiveFailures,
47
+ lastFailureAt: entry.lastFailureAt,
48
+ };
49
+ }
50
+ function mergeAccountEntries(existing, incoming) {
51
+ const incomingIsOlder = incoming.expires < existing.expires;
52
+ const nextAccess = incomingIsOlder ? existing.access : incoming.access;
53
+ const nextRefresh = incomingIsOlder ? existing.refresh : incoming.refresh;
54
+ const nextExpires = incomingIsOlder ? existing.expires : incoming.expires;
55
+ return {
56
+ ...existing,
57
+ ...incoming,
58
+ access: nextAccess,
59
+ refresh: nextRefresh,
60
+ expires: nextExpires,
61
+ rateLimitedUntil: Math.max(existing.rateLimitedUntil ?? 0, incoming.rateLimitedUntil ?? 0) || undefined,
62
+ coolingDownUntil: Math.max(existing.coolingDownUntil ?? 0, incoming.coolingDownUntil ?? 0) || undefined,
63
+ consecutiveFailures: Math.max(existing.consecutiveFailures ?? 0, incoming.consecutiveFailures ?? 0) || undefined,
64
+ lastFailureAt: Math.max(existing.lastFailureAt ?? 0, incoming.lastFailureAt ?? 0) || undefined,
65
+ lastUsed: Math.max(existing.lastUsed ?? 0, incoming.lastUsed ?? 0) || undefined,
66
+ email: existing.email ?? incoming.email,
38
67
  };
39
68
  }
69
+ function dedupeAccounts(entries) {
70
+ const deduped = [];
71
+ for (const entry of entries) {
72
+ const normalized = normalizeEntry(entry);
73
+ if (!normalized)
74
+ continue;
75
+ const idx = deduped.findIndex((existing) => existing.accountId === normalized.accountId ||
76
+ (!!existing.email && !!normalized.email && existing.email === normalized.email));
77
+ if (idx >= 0) {
78
+ const existing = deduped[idx];
79
+ if (!existing)
80
+ continue;
81
+ deduped[idx] = mergeAccountEntries(existing, normalized);
82
+ }
83
+ else {
84
+ deduped.push(normalized);
85
+ }
86
+ }
87
+ return deduped;
88
+ }
89
+ function acquireLock(path) {
90
+ const target = lockPath(path);
91
+ const started = Date.now();
92
+ while (true) {
93
+ try {
94
+ mkdirSync(target);
95
+ return () => {
96
+ try {
97
+ rmSync(target, { recursive: true, force: true });
98
+ }
99
+ catch { }
100
+ };
101
+ }
102
+ catch {
103
+ if (Date.now() - started >= LOCK_TIMEOUT_MS) {
104
+ throw new Error(`Timed out acquiring account-pool lock: ${target}`);
105
+ }
106
+ const waitUntil = Date.now() + LOCK_RETRY_MS;
107
+ while (Date.now() < waitUntil) { }
108
+ }
109
+ }
110
+ }
40
111
  function parseStorage(raw) {
41
112
  let parsed;
42
113
  try {
@@ -53,10 +124,11 @@ function parseStorage(raw) {
53
124
  .map((e) => normalizeEntry(e))
54
125
  .filter((e) => e !== null)
55
126
  : [];
127
+ const dedupedAccounts = dedupeAccounts(accounts);
56
128
  return {
57
129
  version: STORAGE_VERSION,
58
- activeIndex: clampIndex(Number(obj.activeIndex ?? 0), accounts.length || 1),
59
- accounts,
130
+ activeIndex: clampIndex(Number(obj.activeIndex ?? 0), dedupedAccounts.length || 1),
131
+ accounts: dedupedAccounts,
60
132
  };
61
133
  }
62
134
  function normalizeCooldown(cooldownMs) {
@@ -94,6 +166,23 @@ function retryAfterFromHeaders(headers, fallbackMs) {
94
166
  }
95
167
  return fallbackMs;
96
168
  }
169
+ /**
170
+ * Resolve the cooldown duration for a rate-limited account.
171
+ *
172
+ * Priority:
173
+ * 1. Tiered duration from known ChatGPT error codes (#10)
174
+ * 2. Server-supplied retry-after header
175
+ * 3. Plugin-configured default or built-in 60s default
176
+ */
177
+ function resolveCooldownMs(errorCode, headers, configDefault) {
178
+ // Tiered duration for known ChatGPT quota/plan error codes
179
+ if (errorCode && RATE_LIMIT_TIERS[errorCode] !== undefined) {
180
+ return RATE_LIMIT_TIERS[errorCode];
181
+ }
182
+ // Server-supplied header takes precedence over plugin default
183
+ const fallback = normalizeCooldown(configDefault);
184
+ return retryAfterFromHeaders(headers, fallback);
185
+ }
97
186
  export class AccountPool {
98
187
  accounts = [];
99
188
  activeIndex = 0;
@@ -121,26 +210,47 @@ export class AccountPool {
121
210
  if (!existsSync(dir)) {
122
211
  mkdirSync(dir, { recursive: true });
123
212
  }
124
- const payload = {
125
- version: STORAGE_VERSION,
126
- activeIndex: clampIndex(this.activeIndex, this.accounts.length || 1),
127
- accounts: this.accounts,
128
- };
129
- const tempPath = `${path}.tmp.${process.pid}.${Date.now()}.${randomUUID()}`;
130
- writeFileSync(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
131
- encoding: "utf8",
132
- mode: 0o600,
133
- });
134
- renameSync(tempPath, path);
213
+ const releaseLock = acquireLock(path);
135
214
  try {
136
- chmodSync(path, 0o600);
137
- }
138
- catch (chmodErr) {
139
- // chmod may fail on some platforms (e.g., Windows) - file was already created with 0o600 mode
140
- if (process.platform !== "win32") {
141
- console.warn(`[openai-codex-plugin] Failed to chmod ${path}:`, chmodErr);
215
+ let latestAccounts = [];
216
+ let latestActiveIndex = 0;
217
+ if (existsSync(path)) {
218
+ try {
219
+ const raw = readFileSync(path, "utf8");
220
+ const parsed = parseStorage(raw);
221
+ if (parsed) {
222
+ latestAccounts = parsed.accounts;
223
+ latestActiveIndex = parsed.activeIndex;
224
+ }
225
+ }
226
+ catch { }
227
+ }
228
+ const mergedAccounts = dedupeAccounts([...latestAccounts, ...this.accounts]);
229
+ this.accounts = mergedAccounts;
230
+ this.activeIndex = clampIndex(Math.max(this.activeIndex, latestActiveIndex), mergedAccounts.length || 1);
231
+ const payload = {
232
+ version: STORAGE_VERSION,
233
+ activeIndex: clampIndex(this.activeIndex, this.accounts.length || 1),
234
+ accounts: this.accounts,
235
+ };
236
+ const tempPath = `${path}.tmp.${process.pid}.${Date.now()}.${randomUUID()}`;
237
+ writeFileSync(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
238
+ encoding: "utf8",
239
+ mode: 0o600,
240
+ });
241
+ renameSync(tempPath, path);
242
+ try {
243
+ chmodSync(path, 0o600);
244
+ }
245
+ catch (chmodErr) {
246
+ if (process.platform !== "win32") {
247
+ console.warn(`[openai-codex-plugin] Failed to chmod ${path}:`, chmodErr);
248
+ }
142
249
  }
143
250
  }
251
+ finally {
252
+ releaseLock();
253
+ }
144
254
  }
145
255
  upsert(entry) {
146
256
  const normalized = normalizeEntry(entry);
@@ -155,22 +265,12 @@ export class AccountPool {
155
265
  const existing = this.accounts[idx];
156
266
  if (!existing)
157
267
  return;
158
- const incomingIsOlder = normalized.expires < existing.expires;
159
- const nextAccess = incomingIsOlder ? existing.access : normalized.access;
160
- const nextRefresh = incomingIsOlder ? existing.refresh : normalized.refresh;
161
- const nextExpires = incomingIsOlder ? existing.expires : normalized.expires;
162
- this.accounts[idx] = {
163
- ...existing,
164
- ...normalized,
165
- access: nextAccess,
166
- refresh: nextRefresh,
167
- expires: nextExpires,
168
- rateLimitedUntil: existing.rateLimitedUntil,
169
- };
268
+ this.accounts[idx] = mergeAccountEntries(existing, normalized);
170
269
  }
171
270
  else {
172
271
  this.accounts.push(normalized);
173
272
  }
273
+ this.accounts = dedupeAccounts(this.accounts);
174
274
  this.activeIndex = clampIndex(this.activeIndex, this.accounts.length || 1);
175
275
  }
176
276
  count() {
@@ -178,36 +278,84 @@ export class AccountPool {
178
278
  }
179
279
  getAvailableCount() {
180
280
  const t = now();
181
- return this.accounts.filter((a) => !a.rateLimitedUntil || a.rateLimitedUntil <= t).length;
281
+ return this.accounts.filter((a) => (!a.rateLimitedUntil || a.rateLimitedUntil <= t) &&
282
+ (!a.coolingDownUntil || a.coolingDownUntil <= t)).length;
182
283
  }
183
284
  getMinRetryAfterMs() {
184
285
  const t = now();
185
286
  let min = null;
186
287
  for (const account of this.accounts) {
187
- if (!account.rateLimitedUntil || account.rateLimitedUntil <= t)
188
- continue;
189
- const remaining = account.rateLimitedUntil - t;
190
- if (min === null || remaining < min) {
288
+ const limitRemaining = account.rateLimitedUntil && account.rateLimitedUntil > t
289
+ ? account.rateLimitedUntil - t
290
+ : null;
291
+ const coolRemaining = account.coolingDownUntil && account.coolingDownUntil > t
292
+ ? account.coolingDownUntil - t
293
+ : null;
294
+ // The soonest this account will be usable
295
+ const remaining = limitRemaining !== null || coolRemaining !== null
296
+ ? Math.min(limitRemaining ?? Infinity, coolRemaining ?? Infinity)
297
+ : null;
298
+ if (remaining !== null && (min === null || remaining < min)) {
191
299
  min = remaining;
192
300
  }
193
301
  }
194
302
  return min;
195
303
  }
196
- markRateLimited(accountId, headers, cooldownMs) {
304
+ /**
305
+ * Mark an account as rate-limited.
306
+ * Applies tiered cooldown based on the ChatGPT error code (#10):
307
+ * - usage_limit_reached → 4 hours
308
+ * - usage_not_included → 24 hours
309
+ * - rate_limit_exceeded → 60 seconds
310
+ * - unknown / no code → retry-after header or configured default
311
+ */
312
+ markRateLimited(accountId, headers, cooldownMs, errorCode) {
313
+ const account = this.accounts.find((a) => a.accountId === accountId);
314
+ if (!account)
315
+ return;
316
+ const duration = resolveCooldownMs(errorCode, headers, cooldownMs);
317
+ account.rateLimitedUntil = now() + duration;
318
+ }
319
+ /**
320
+ * Record an auth/token-refresh failure for an account (#9).
321
+ *
322
+ * Increments consecutiveFailures with a 2-hour TTL reset. After
323
+ * MAX_FAILURES consecutive failures the account is placed in cooldown
324
+ * for COOLDOWN_MS — during which it is skipped by next().
325
+ */
326
+ markAuthFailure(accountId) {
197
327
  const account = this.accounts.find((a) => a.accountId === accountId);
198
328
  if (!account)
199
329
  return;
200
- const fallback = normalizeCooldown(cooldownMs);
201
- const retryAfter = retryAfterFromHeaders(headers, fallback);
202
- account.rateLimitedUntil = now() + retryAfter;
330
+ const t = now();
331
+ const withinWindow = account.lastFailureAt !== undefined &&
332
+ t - account.lastFailureAt < ACCOUNT_FAILURE.FAILURE_RESET_MS;
333
+ const failures = withinWindow ? (account.consecutiveFailures ?? 0) + 1 : 1;
334
+ account.consecutiveFailures = failures;
335
+ account.lastFailureAt = t;
336
+ if (failures >= ACCOUNT_FAILURE.MAX_FAILURES) {
337
+ account.coolingDownUntil = t + ACCOUNT_FAILURE.COOLDOWN_MS;
338
+ account.consecutiveFailures = 0; // reset so next cooldown window starts fresh
339
+ }
340
+ }
341
+ /**
342
+ * Clear the failure counter and cooldown for an account (called on success).
343
+ */
344
+ clearAuthFailures(accountId) {
345
+ const account = this.accounts.find((a) => a.accountId === accountId);
346
+ if (!account)
347
+ return;
348
+ account.consecutiveFailures = 0;
349
+ account.lastFailureAt = undefined;
350
+ account.coolingDownUntil = undefined;
203
351
  }
204
352
  next(strategy) {
205
353
  if (this.accounts.length === 0)
206
354
  return null;
207
- this.clearExpiredLimits();
355
+ this.clearExpiredStates();
208
356
  if (strategy === "sticky") {
209
357
  const current = this.accounts[this.activeIndex];
210
- if (current && !this.isLimited(current)) {
358
+ if (current && !this.isUnavailable(current)) {
211
359
  current.lastUsed = now();
212
360
  return current;
213
361
  }
@@ -216,7 +364,7 @@ export class AccountPool {
216
364
  for (let i = 0; i < this.accounts.length; i++) {
217
365
  const idx = (start + i) % this.accounts.length;
218
366
  const candidate = this.accounts[idx];
219
- if (!candidate || this.isLimited(candidate))
367
+ if (!candidate || this.isUnavailable(candidate))
220
368
  continue;
221
369
  this.activeIndex = idx;
222
370
  candidate.lastUsed = now();
@@ -232,15 +380,30 @@ export class AccountPool {
232
380
  account.refresh = refresh;
233
381
  account.expires = expires;
234
382
  }
235
- isLimited(account) {
383
+ /** Returns all accounts (for use by ProactiveRefreshQueue) */
384
+ getAccounts() {
385
+ return this.accounts;
386
+ }
387
+ /** True if account is rate-limited OR in auth-failure cooldown */
388
+ isUnavailable(account) {
389
+ return this.isRateLimited(account) || this.isCoolingDown(account);
390
+ }
391
+ isRateLimited(account) {
236
392
  return !!account.rateLimitedUntil && account.rateLimitedUntil > now();
237
393
  }
238
- clearExpiredLimits() {
394
+ isCoolingDown(account) {
395
+ return !!account.coolingDownUntil && account.coolingDownUntil > now();
396
+ }
397
+ /** Clear expired rate-limit and cooldown timestamps */
398
+ clearExpiredStates() {
239
399
  const t = now();
240
400
  for (const account of this.accounts) {
241
401
  if (account.rateLimitedUntil && account.rateLimitedUntil <= t) {
242
402
  delete account.rateLimitedUntil;
243
403
  }
404
+ if (account.coolingDownUntil && account.coolingDownUntil <= t) {
405
+ delete account.coolingDownUntil;
406
+ }
244
407
  }
245
408
  }
246
409
  }
@@ -1 +1 @@
1
- {"version":3,"file":"account-pool.js","sourceRoot":"","sources":["../../lib/account-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-pool.js","sourceRoot":"","sources":["../../lib/account-pool.ts"],"names":[],"mappings":"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"}
@@ -16,11 +16,14 @@ export declare function createState(): string;
16
16
  */
17
17
  export declare function parseAuthorizationInput(input: string): ParsedAuthInput;
18
18
  /**
19
- * Exchange authorization code for access and refresh tokens
19
+ * Exchange authorization code for access and refresh tokens.
20
+ * Captures id_token when returned — it contains chatgpt_account_id as a
21
+ * dedicated JWT claim, making account-ID extraction more reliable.
22
+ *
20
23
  * @param code - Authorization code from OAuth flow
21
24
  * @param verifier - PKCE verifier
22
25
  * @param redirectUri - OAuth redirect URI
23
- * @returns Token result
26
+ * @returns Token result (includes id_token when available)
24
27
  */
25
28
  export declare function exchangeAuthorizationCode(code: string, verifier: string, redirectUri?: string): Promise<TokenResult>;
26
29
  /**
@@ -30,14 +33,62 @@ export declare function exchangeAuthorizationCode(code: string, verifier: string
30
33
  */
31
34
  export declare function decodeJWT(token: string): JWTPayload | null;
32
35
  /**
33
- * Refresh access token using refresh token
36
+ * Extract the ChatGPT account ID from a JWT token string.
37
+ * Checks (in priority order, matching first-party opencode CodexAuthPlugin):
38
+ * 1. Root-level chatgpt_account_id claim
39
+ * 2. Nested https://api.openai.com/auth.chatgpt_account_id claim
40
+ * 3. organizations[0].id fallback
41
+ *
42
+ * @param token - JWT string (id_token or access_token)
43
+ * @returns Account ID or undefined if not found
44
+ */
45
+ export declare function extractAccountIdFromToken(token: string): string | undefined;
46
+ /**
47
+ * Extract account ID from a token-response object.
48
+ * Tries id_token first (more authoritative), then access_token.
49
+ *
50
+ * @param tokens - Object with access_token and optional id_token
51
+ * @returns Account ID or undefined
52
+ */
53
+ export declare function extractAccountId(tokens: {
54
+ access_token: string;
55
+ id_token?: string;
56
+ }): string | undefined;
57
+ /**
58
+ * Refresh access token using refresh token.
59
+ * Captures id_token when returned by the server.
60
+ *
34
61
  * @param refreshToken - Refresh token
35
62
  * @returns Token result
36
63
  */
37
64
  export declare function refreshAccessToken(refreshToken: string): Promise<TokenResult>;
65
+ export declare function refreshAccessTokenShared(accountKey: string, refreshToken: string): Promise<TokenResult>;
38
66
  /**
39
- * Create OAuth authorization flow
67
+ * Create OAuth authorization flow (browser PKCE)
40
68
  * @returns Authorization flow details
41
69
  */
42
70
  export declare function createAuthorizationFlow(): Promise<AuthorizationFlow>;
71
+ /**
72
+ * Device authorization flow result
73
+ */
74
+ export interface DeviceAuthorizationFlow {
75
+ /** URL the user visits to enter the code */
76
+ activateUrl: string;
77
+ /** Short code the user types on the device page */
78
+ userCode: string;
79
+ /** Poll interval in milliseconds (server-controlled + safety margin) */
80
+ pollIntervalMs: number;
81
+ /** Poll for completion and exchange for tokens */
82
+ poll: () => Promise<TokenResult>;
83
+ }
84
+ /**
85
+ * Create a headless/device-code authorization flow.
86
+ *
87
+ * This flow requires no browser on the machine running opencode. The user
88
+ * visits a URL on any device and enters a short code to authenticate.
89
+ * Matches the "headless" method in the first-party opencode CodexAuthPlugin.
90
+ *
91
+ * @returns Device authorization flow details
92
+ */
93
+ export declare function createDeviceAuthorizationFlow(): Promise<DeviceAuthorizationFlow>;
43
94
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../lib/auth/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzG,eAAO,MAAM,SAAS,iCAAiC,CAAC;AACxD,eAAO,MAAM,aAAa,4CAA4C,CAAC;AACvE,eAAO,MAAM,SAAS,wCAAwC,CAAC;AAC/D,eAAO,MAAM,YAAY,wCAAwC,CAAC;AAClE,eAAO,MAAM,KAAK,wCAAwC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwBtE;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAqB,GAChC,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAiB1D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+CnF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAiB1E"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../lib/auth/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzG,eAAO,MAAM,SAAS,iCAAiC,CAAC;AACxD,eAAO,MAAM,aAAa,4CAA4C,CAAC;AACvE,eAAO,MAAM,SAAS,wCAAwC,CAAC;AAC/D,eAAO,MAAM,YAAY,wCAAwC,CAAC;AAClE,eAAO,MAAM,KAAK,wCAAwC,CAAC;AAI3D;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwBtE;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAqB,GAChC,OAAO,CAAC,WAAW,CAAC,CAsCtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAkB1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB3E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDnF;AAED,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAkB1E;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAmEtF"}