opencode-qwen-oauth 2.2.0 → 2.3.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.
package/dist/index.js CHANGED
@@ -5,17 +5,48 @@
5
5
  *
6
6
  * @packageDocumentation
7
7
  */
8
- const PLUGIN_VERSION = "2.2.0";
8
+ const PLUGIN_VERSION = "2.3.0";
9
+ const QWEN_CODE_VERSION = "0.10.3";
10
+ const TOKEN_CACHE_DURATION = 5 * 60 * 1000;
11
+ const REFRESH_BEFORE_EXPIRY_MS = 5 * 60 * 1000;
12
+ let cachedToken = null;
13
+ let cachedTokenExpiry = 0;
14
+ let lastRefreshTime = 0;
9
15
  import { QWEN_API_BASE_URL } from "./constants.js";
10
- import { debugLog, warnLog } from "./logger.js";
11
16
  import { openBrowser } from "./browser.js";
12
17
  import { authorizeDevice, pollForToken, refreshAccessToken } from "./oauth.js";
13
18
  import { Mutex } from "./mutex.js";
14
19
  import { getConfig } from "./config.js";
20
+ import { requestQueue } from "./request-queue.js";
21
+ import { saveCredentials, loadCredentials } from "./credentials.js";
15
22
  const authorizationMutex = new Mutex();
16
23
  const tokenRefreshMutex = new Mutex();
17
24
  let cachedAuth = null;
25
+ function resetTokenCache() {
26
+ cachedToken = null;
27
+ cachedTokenExpiry = 0;
28
+ lastRefreshTime = 0;
29
+ }
18
30
  export const QwenOAuthPlugin = async ({ project, client, directory, worktree, }) => {
31
+ const log = async (level, message, data) => {
32
+ try {
33
+ await client.app.log({
34
+ body: {
35
+ service: "qwen-oauth",
36
+ level,
37
+ message,
38
+ extra: data,
39
+ },
40
+ });
41
+ }
42
+ catch {
43
+ // Fallback to console if client.app.log fails
44
+ console.log(`[${level}] ${message}`, data || "");
45
+ }
46
+ };
47
+ const debugLog = (message, data) => log("debug", message, data);
48
+ const infoLog = (message, data) => log("info", message, data);
49
+ const warnLog = (message, data) => log("warn", message, data);
19
50
  debugLog("Plugin initialized", {
20
51
  directory,
21
52
  worktree,
@@ -26,28 +57,128 @@ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, })
26
57
  auth: {
27
58
  provider: "qwen",
28
59
  async loader(getAuth, provider) {
29
- const auth = await getAuth();
60
+ // First try to get auth from OpenCode runtime
61
+ let auth = await getAuth();
62
+ // If no valid runtime auth, try loading from file
63
+ if (!auth || auth.type !== "oauth" || !auth.access || !auth.refresh) {
64
+ console.log("[Qwen] No runtime auth, trying to load from file...");
65
+ const fileCredentials = loadCredentials();
66
+ if (fileCredentials && fileCredentials.accessToken && fileCredentials.refreshToken) {
67
+ console.log("[Qwen] Loaded credentials from file", {
68
+ hasAccess: !!fileCredentials.accessToken,
69
+ hasRefresh: !!fileCredentials.refreshToken,
70
+ expiryDate: fileCredentials.expiryDate,
71
+ });
72
+ // Use file credentials as fallback
73
+ auth = {
74
+ type: "oauth",
75
+ access: fileCredentials.accessToken,
76
+ refresh: fileCredentials.refreshToken,
77
+ expires: fileCredentials.expiryDate,
78
+ };
79
+ }
80
+ }
81
+ debugLog("Auth loader called", {
82
+ hasAuth: !!auth,
83
+ authType: auth?.type,
84
+ hasAccess: !!auth?.access,
85
+ hasAccessToken: !!auth?.access_token,
86
+ hasAccessTokenCamel: !!auth?.accessToken,
87
+ hasRefresh: !!auth?.refresh,
88
+ hasRefreshToken: !!auth?.refresh_token,
89
+ hasRefreshTokenCamel: !!auth?.refreshToken,
90
+ expires: auth?.expires,
91
+ expiresAt: auth?.expires_at,
92
+ });
30
93
  if (!auth || auth.type !== "oauth") {
31
94
  return {};
32
95
  }
33
- cachedAuth = auth;
96
+ // Handle multiple field name formats:
97
+ // - OpenCode uses camelCase: accessToken, refreshToken
98
+ // - OAuth spec uses snake_case: access_token, refresh_token
99
+ // - Plugin internal uses short names: access, refresh
100
+ // - Qwen-specific: apiKey or api_key for API endpoint access
101
+ const normalizedAuth = {
102
+ type: "oauth",
103
+ access: auth.access || auth.access_token || auth.accessToken || "",
104
+ refresh: auth.refresh || auth.refresh_token || auth.refreshToken || "",
105
+ expires: auth.expires || auth.expires_at || 0,
106
+ apiKey: auth.apiKey || auth.api_key || undefined,
107
+ };
108
+ // Defensive check: ensure we actually have tokens
109
+ if (!normalizedAuth.access || !normalizedAuth.refresh) {
110
+ warnLog("Empty tokens after normalization - authentication may have failed", {
111
+ hasAccess: !!normalizedAuth.access,
112
+ hasRefresh: !!normalizedAuth.refresh,
113
+ authKeys: Object.keys(auth),
114
+ authValue: JSON.stringify(auth).substring(0, 200), // First 200 chars for debugging
115
+ });
116
+ return {};
117
+ }
118
+ // Check if token is already expired
119
+ const now = Date.now();
120
+ const isExpired = normalizedAuth.expires && normalizedAuth.expires <= now;
121
+ const timeUntilExpiry = normalizedAuth.expires ? normalizedAuth.expires - now : 0;
122
+ debugLog("Auth successfully normalized", {
123
+ hasAccess: !!normalizedAuth.access,
124
+ hasRefresh: !!normalizedAuth.refresh,
125
+ hasApiKey: !!normalizedAuth.apiKey,
126
+ expiresAt: normalizedAuth.expires ? new Date(normalizedAuth.expires).toISOString() : "never",
127
+ expiresIn: timeUntilExpiry > 0 ? Math.round(timeUntilExpiry / 1000) + "s" : "EXPIRED",
128
+ isExpired,
129
+ });
130
+ // Log which token will be used for API calls
131
+ if (normalizedAuth.apiKey) {
132
+ infoLog("Using separate API key for Qwen API calls (different from OAuth access token)");
133
+ }
134
+ if (isExpired) {
135
+ warnLog("Token is already expired, will refresh on first request", {
136
+ expiredAt: normalizedAuth.expires ? new Date(normalizedAuth.expires).toISOString() : "unknown",
137
+ expiredAgo: Math.round((now - (normalizedAuth.expires || now)) / 1000) + " seconds ago",
138
+ });
139
+ }
140
+ else {
141
+ infoLog("Auth loader: Tokens loaded successfully", {
142
+ expiresIn: normalizedAuth.expires ? Math.round((normalizedAuth.expires - Date.now()) / 1000 / 60) + " minutes" : "unknown",
143
+ hasApiKey: !!normalizedAuth.apiKey,
144
+ });
145
+ }
146
+ cachedAuth = normalizedAuth;
34
147
  const refreshTokenIfNeeded = async () => {
148
+ const now = Date.now();
149
+ if (cachedToken && now < cachedTokenExpiry && now - lastRefreshTime < TOKEN_CACHE_DURATION) {
150
+ if (cachedAuth) {
151
+ return cachedAuth;
152
+ }
153
+ }
35
154
  if (!cachedAuth) {
36
155
  throw new Error("No authentication available");
37
156
  }
38
- const now = Date.now();
39
157
  const expiresAt = cachedAuth.expires || 0;
40
158
  const timeUntilExpiry = expiresAt - now;
159
+ const hasValidExpiry = expiresAt > now;
41
160
  const shouldRefresh = !cachedAuth.access ||
42
- timeUntilExpiry < config.refreshThreshold;
43
- if (!shouldRefresh) {
161
+ !hasValidExpiry ||
162
+ timeUntilExpiry < REFRESH_BEFORE_EXPIRY_MS;
163
+ debugLog("Token refresh check", {
164
+ hasAccess: !!cachedAuth.access,
165
+ expiresAt: expiresAt > 0 ? new Date(expiresAt).toISOString() : "not set",
166
+ timeUntilExpiry: timeUntilExpiry > 0 ? Math.round(timeUntilExpiry / 1000) + "s" : "EXPIRED",
167
+ hasValidExpiry,
168
+ refreshThreshold: REFRESH_BEFORE_EXPIRY_MS,
169
+ shouldRefresh,
170
+ cachedToken: !!cachedToken,
171
+ cacheValid: !!(cachedToken && now < cachedTokenExpiry),
172
+ });
173
+ if (!shouldRefresh && cachedToken) {
174
+ debugLog("Token is still valid (cached), no refresh needed");
44
175
  return cachedAuth;
45
176
  }
46
- debugLog("Token refresh needed", {
47
- hasAccess: !!cachedAuth.access,
48
- expiresAt: new Date(expiresAt).toISOString(),
49
- timeUntilExpiry,
50
- refreshThreshold: config.refreshThreshold,
177
+ infoLog("Token refresh needed - attempting refresh", {
178
+ reason: !cachedAuth.access ? "no access token" :
179
+ !hasValidExpiry ? "token expired" :
180
+ "token expires soon",
181
+ timeUntilExpiry: timeUntilExpiry > 0 ? Math.round(timeUntilExpiry / 1000) + "s" : "EXPIRED",
51
182
  });
52
183
  return tokenRefreshMutex.runExclusive(async () => {
53
184
  const currentAuth = cachedAuth;
@@ -56,13 +187,29 @@ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, })
56
187
  }
57
188
  const result = await refreshAccessToken(currentAuth.refresh);
58
189
  if (result.success && result.access_token) {
190
+ const expiresIn = result.expires_in || 0;
191
+ // Only update expiry if valid (> 0), otherwise use 1 hour default
192
+ const newExpires = expiresIn > 0
193
+ ? Date.now() + expiresIn * 1000
194
+ : Date.now() + 3600 * 1000; // Default: 1 hour from now
59
195
  const newAuth = {
60
196
  type: "oauth",
61
197
  refresh: result.refresh_token || currentAuth.refresh,
62
198
  access: result.access_token,
63
- expires: Date.now() + (result.expires_in || 0) * 1000,
199
+ expires: newExpires,
200
+ apiKey: result.api_key || currentAuth.apiKey, // Preserve or update API key
64
201
  };
65
202
  cachedAuth = newAuth;
203
+ cachedToken = newAuth.access;
204
+ cachedTokenExpiry = newExpires;
205
+ lastRefreshTime = Date.now();
206
+ // Save refreshed credentials to file
207
+ saveCredentials({
208
+ accessToken: newAuth.access,
209
+ refreshToken: newAuth.refresh,
210
+ expiryDate: newExpires,
211
+ tokenType: "Bearer",
212
+ });
66
213
  try {
67
214
  await client.auth.set({
68
215
  path: { id: "qwen" },
@@ -86,74 +233,167 @@ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, })
86
233
  return {
87
234
  apiKey: "",
88
235
  async fetch(input, init) {
89
- let auth = await refreshTokenIfNeeded();
90
- const maxRetries = 2;
91
- let lastResponse = null;
92
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
93
- let url;
94
- if (typeof input === "string") {
95
- url = input;
96
- }
97
- else if (input instanceof URL) {
98
- url = input.toString();
99
- }
100
- else {
101
- url = input.url;
102
- }
103
- const headers = new Headers(init?.headers);
104
- if (auth.access) {
105
- headers.set("Authorization", `Bearer ${auth.access}`);
106
- }
107
- const response = await fetch(url, {
108
- ...init,
109
- headers,
236
+ let auth;
237
+ try {
238
+ auth = await refreshTokenIfNeeded();
239
+ }
240
+ catch (refreshError) {
241
+ warnLog("Failed to refresh token before API call", {
242
+ error: String(refreshError),
110
243
  });
111
- lastResponse = response;
112
- if (response.status === 401 && attempt < maxRetries) {
113
- debugLog("Received 401, attempting token refresh", { attempt });
114
- const refreshedAuth = await tokenRefreshMutex.runExclusive(async () => {
115
- const currentAuth = cachedAuth;
116
- if (!currentAuth || !currentAuth.refresh) {
117
- throw new Error("No refresh token available");
118
- }
119
- const result = await refreshAccessToken(currentAuth.refresh);
120
- if (result.success && result.access_token) {
121
- const newAuth = {
122
- type: "oauth",
123
- refresh: result.refresh_token || currentAuth.refresh,
124
- access: result.access_token,
125
- expires: Date.now() + (result.expires_in || 0) * 1000,
126
- };
127
- cachedAuth = newAuth;
128
- try {
129
- await client.auth.set({
130
- path: { id: "qwen" },
131
- body: newAuth,
132
- });
244
+ // Return a clear error response
245
+ return new Response(JSON.stringify({
246
+ error: {
247
+ code: "token_refresh_failed",
248
+ message: "Failed to refresh your Qwen authentication token. Please run '/connect' in OpenCode to re-authenticate.",
249
+ type: "auth_error",
250
+ details: refreshError instanceof Error ? refreshError.message : String(refreshError)
251
+ }
252
+ }), {
253
+ status: 401,
254
+ headers: { "Content-Type": "application/json" },
255
+ });
256
+ }
257
+ const userAgent = `QwenCode/${QWEN_CODE_VERSION} (${process.platform}; ${process.arch})`;
258
+ return requestQueue.enqueue(async () => {
259
+ for (let attempt = 0; attempt <= 2; attempt++) {
260
+ let url;
261
+ if (typeof input === "string") {
262
+ url = input;
263
+ }
264
+ else if (input instanceof URL) {
265
+ url = input.toString();
266
+ }
267
+ else {
268
+ url = input.url;
269
+ }
270
+ const headers = new Headers(init?.headers);
271
+ const tokenToUse = auth.apiKey || auth.access;
272
+ if (tokenToUse) {
273
+ headers.set("Authorization", `Bearer ${tokenToUse}`);
274
+ headers.set("User-Agent", userAgent);
275
+ headers.set("X-DashScope-CacheControl", "enable");
276
+ headers.set("X-DashScope-UserAgent", userAgent);
277
+ headers.set("X-DashScope-AuthType", "qwen-oauth");
278
+ debugLog("Making API request with token", {
279
+ url,
280
+ attempt,
281
+ tokenType: auth.apiKey ? "API Key" : "OAuth Access Token",
282
+ tokenLength: tokenToUse.length,
283
+ tokenPrefix: tokenToUse.substring(0, 20) + "...",
284
+ hasExpiry: !!auth.expires,
285
+ expiresAt: auth.expires ? new Date(auth.expires).toISOString() : "not set",
286
+ isExpired: auth.expires ? auth.expires <= Date.now() : "unknown",
287
+ });
288
+ }
289
+ else {
290
+ warnLog("No access token or API key available for API request", { url });
291
+ }
292
+ const response = await fetch(url, {
293
+ ...init,
294
+ headers,
295
+ });
296
+ debugLog("API response received", {
297
+ url,
298
+ status: response.status,
299
+ statusText: response.statusText,
300
+ attempt,
301
+ });
302
+ if (response.status === 429) {
303
+ const retryAfter = response.headers.get("Retry-After") || "60";
304
+ const waitTimeMs = Number.parseInt(retryAfter, 10) * 1000;
305
+ warnLog("Rate limited (429), waiting and retrying", {
306
+ retryAfter,
307
+ waitTimeMs,
308
+ url,
309
+ });
310
+ await new Promise(resolve => setTimeout(resolve, waitTimeMs));
311
+ continue;
312
+ }
313
+ if (response.status === 401 || response.status === 403) {
314
+ const errorBody = await response.clone().json().catch(() => ({}));
315
+ warnLog("Received 401/403 Unauthorized from Qwen API", {
316
+ attempt,
317
+ url,
318
+ error: errorBody.error || errorBody.message,
319
+ });
320
+ const refreshedAuth = await tokenRefreshMutex.runExclusive(async () => {
321
+ const currentAuth = cachedAuth;
322
+ if (!currentAuth || !currentAuth.refresh) {
323
+ throw new Error("No refresh token available");
133
324
  }
134
- catch (storeError) {
135
- debugLog("Failed to store refreshed token after 401", {
136
- error: String(storeError),
325
+ const result = await refreshAccessToken(currentAuth.refresh);
326
+ if (result.success && result.access_token) {
327
+ const expiresIn = result.expires_in || 0;
328
+ const newExpires = expiresIn > 0
329
+ ? Date.now() + expiresIn * 1000
330
+ : Date.now() + 3600 * 1000;
331
+ const newAuth = {
332
+ type: "oauth",
333
+ refresh: result.refresh_token || currentAuth.refresh,
334
+ access: result.access_token,
335
+ expires: newExpires,
336
+ apiKey: result.api_key || currentAuth.apiKey,
337
+ };
338
+ cachedAuth = newAuth;
339
+ // Save refreshed credentials to file
340
+ saveCredentials({
341
+ accessToken: newAuth.access,
342
+ refreshToken: newAuth.refresh,
343
+ expiryDate: newExpires,
344
+ tokenType: "Bearer",
137
345
  });
346
+ try {
347
+ await client.auth.set({
348
+ path: { id: "qwen" },
349
+ body: newAuth,
350
+ });
351
+ }
352
+ catch (storeError) {
353
+ debugLog("Failed to store refreshed token after 401", {
354
+ error: String(storeError),
355
+ });
356
+ }
357
+ return newAuth;
138
358
  }
139
- return newAuth;
359
+ debugLog("Token refresh failed after 401", { error: result.error });
360
+ return null;
361
+ });
362
+ if (refreshedAuth) {
363
+ auth = refreshedAuth;
364
+ debugLog("Retrying request with refreshed token", { attempt: attempt + 1 });
365
+ continue;
366
+ }
367
+ else {
368
+ warnLog("Authentication failed - please re-authenticate", {
369
+ url,
370
+ suggestion: "Run '/connect' in OpenCode to re-authenticate with Qwen"
371
+ });
372
+ return new Response(JSON.stringify({
373
+ error: {
374
+ code: "authentication_required",
375
+ message: "Your Qwen authentication has expired. Please run '/connect' in OpenCode and re-authenticate.",
376
+ type: "auth_error"
377
+ }
378
+ }), {
379
+ status: 401,
380
+ headers: { "Content-Type": "application/json" },
381
+ });
140
382
  }
141
- debugLog("Token refresh failed after 401", { error: result.error });
142
- return null;
143
- });
144
- if (refreshedAuth) {
145
- auth = refreshedAuth;
146
- debugLog("Retrying request with refreshed token", { attempt: attempt + 1 });
147
- continue;
148
- }
149
- else {
150
- debugLog("Token refresh failed, returning 401");
151
- break;
152
383
  }
384
+ return response;
153
385
  }
154
- return response;
155
- }
156
- return lastResponse;
386
+ return new Response(JSON.stringify({
387
+ error: {
388
+ code: "max_retries_exceeded",
389
+ message: "Maximum retry attempts exceeded",
390
+ type: "server_error"
391
+ }
392
+ }), {
393
+ status: 500,
394
+ headers: { "Content-Type": "application/json" },
395
+ });
396
+ });
157
397
  },
158
398
  };
159
399
  },
@@ -185,22 +425,43 @@ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, })
185
425
  debugLog("Polling for OAuth token...");
186
426
  const result = await pollForToken(device.device_code, device.verifier, device.interval, device.expires_in);
187
427
  if (result.success) {
428
+ const expiresIn = result.expires_in || 0;
429
+ // Default to 6 hours (21600s) if not provided, matching Qwen's typical expiry
430
+ const expires = expiresIn > 0
431
+ ? Date.now() + expiresIn * 1000
432
+ : Date.now() + 21600 * 1000;
188
433
  const authResult = {
189
434
  type: "oauth",
190
- refresh: result.refresh_token,
435
+ refresh: result.refresh_token || "",
191
436
  access: result.access_token || "",
192
- expires: Date.now() + (result.expires_in || 0) * 1000,
437
+ expires,
438
+ apiKey: result.api_key,
193
439
  };
194
440
  cachedAuth = authResult;
441
+ // Save credentials to file for persistence across sessions
442
+ console.log("[Qwen] Saving credentials after OAuth...");
443
+ saveCredentials({
444
+ accessToken: result.access_token || "",
445
+ refreshToken: result.refresh_token,
446
+ expiryDate: expires,
447
+ tokenType: "Bearer",
448
+ });
449
+ console.log("[Qwen] Credentials saved to ~/.qwen/oauth_creds.json");
195
450
  debugLog("Qwen authentication successful!", {
196
451
  expires_in: result.expires_in,
197
452
  has_refresh: !!result.refresh_token,
453
+ has_api_key: !!result.api_key,
198
454
  });
455
+ if (result.api_key) {
456
+ infoLog("Received separate API key for Qwen API - will use for API calls");
457
+ }
199
458
  return {
200
459
  type: "success",
201
- refresh: result.refresh_token,
202
- access: result.access_token,
203
- expires: Date.now() + result.expires_in * 1000,
460
+ refresh: result.refresh_token || "",
461
+ access: result.access_token || "",
462
+ expires: expires || 0,
463
+ apiKey: result.api_key, // Qwen-specific API key
464
+ api_key: result.api_key, // Also include snake_case version for compatibility
204
465
  };
205
466
  }
206
467
  debugLog(`Authentication failed: ${result.error}`);
@@ -222,13 +483,17 @@ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, })
222
483
  baseURL: QWEN_API_BASE_URL,
223
484
  },
224
485
  models: {
225
- "qwen3-coder-plus": {
226
- id: "qwen3-coder-plus",
227
- name: "Qwen3 Coder Plus",
486
+ "coder-model": {
487
+ id: "coder-model",
488
+ name: "Qwen Coder",
489
+ limit: { context: 1048576, output: 65536 },
490
+ modalities: { input: ["text"], output: ["text"] },
228
491
  },
229
- "qwen3-vl-plus": {
230
- id: "qwen3-vl-plus",
231
- name: "Qwen3 VL Plus",
492
+ "vision-model": {
493
+ id: "vision-model",
494
+ name: "Qwen Vision",
495
+ limit: { context: 131072, output: 32768 },
496
+ modalities: { input: ["text", "image"], output: ["text"] },
232
497
  attachment: true,
233
498
  },
234
499
  },
@@ -249,17 +514,23 @@ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, })
249
514
  }
250
515
  },
251
516
  "chat.headers": async (input, output) => {
252
- if (input.provider.info.id === "qwen") {
517
+ const providerId = input.provider?.info?.id || input.provider?.id;
518
+ if (providerId === "qwen" || providerId === "qwen-code") {
253
519
  debugLog("Adding custom headers for Qwen request", {
254
520
  model: input.model.id,
255
521
  session: input.sessionID,
522
+ providerId,
256
523
  });
257
- output.headers["X-Qwen-Client"] = "OpenCode";
258
- output.headers["X-Qwen-Plugin-Version"] = PLUGIN_VERSION;
524
+ const userAgent = `QwenCode/${QWEN_CODE_VERSION} (${process.platform}; ${process.arch})`;
525
+ output.headers["User-Agent"] = userAgent;
526
+ output.headers["X-DashScope-CacheControl"] = "enable";
527
+ output.headers["X-DashScope-UserAgent"] = userAgent;
528
+ output.headers["X-DashScope-AuthType"] = "qwen-oauth";
259
529
  }
260
530
  },
261
531
  "chat.params": async (input, output) => {
262
- if (input.provider.info.id === "qwen") {
532
+ const providerId = input.provider?.info?.id || input.provider?.id;
533
+ if (providerId === "qwen" || providerId === "qwen-code") {
263
534
  debugLog("Customizing parameters for Qwen model", {
264
535
  model: input.model.id,
265
536
  current_temp: output.temperature,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE/C,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;AAKxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUpE,MAAM,kBAAkB,GAAG,IAAI,KAAK,EAAE,CAAC;AACvC,MAAM,iBAAiB,GAAG,IAAI,KAAK,EAAE,CAAC;AAEtC,IAAI,UAAU,GAA4B,IAAI,CAAC;AAE/C,SAAS,eAAe;IACtB,WAAW,GAAG,IAAI,CAAC;IACnB,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,GAAG,CAAC,CAAC;AACtB,CAAC;AAID,MAAM,CAAC,MAAM,eAAe,GAAW,KAAK,EAAE,EAC5C,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,GACI,EAAE,EAAE;IAChB,MAAM,GAAG,GAAG,KAAK,EAAE,KAA0C,EAAE,OAAe,EAAE,IAA8B,EAAE,EAAE;QAChH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBACnB,IAAI,EAAE;oBACJ,OAAO,EAAE,YAAY;oBACrB,KAAK;oBACL,OAAO;oBACP,KAAK,EAAE,IAAI;iBACZ;aACF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClG,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAEhG,QAAQ,CAAC,oBAAoB,EAAE;QAC7B,SAAS;QACT,QAAQ;QACR,OAAO,EAAG,OAAe,EAAE,IAAI,IAAI,KAAK;KACzC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,OAAO;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,MAAM;YAChB,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,QAAQ;gBACrC,8CAA8C;gBAC9C,IAAI,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;gBAE3B,kDAAkD;gBAClD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;oBACnE,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;oBAC1C,IAAI,eAAe,IAAI,eAAe,CAAC,WAAW,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;wBACnF,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE;4BACjD,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,WAAW;4BACxC,UAAU,EAAE,CAAC,CAAC,eAAe,CAAC,YAAY;4BAC1C,UAAU,EAAE,eAAe,CAAC,UAAU;yBACvC,CAAC,CAAC;wBACH,mCAAmC;wBACnC,IAAI,GAAG;4BACL,IAAI,EAAE,OAAO;4BACb,MAAM,EAAE,eAAe,CAAC,WAAW;4BACnC,OAAO,EAAE,eAAe,CAAC,YAAY;4BACrC,OAAO,EAAE,eAAe,CAAC,UAAU;yBACpC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,QAAQ,CAAC,oBAAoB,EAAE;oBAC7B,OAAO,EAAE,CAAC,CAAC,IAAI;oBACf,QAAQ,EAAE,IAAI,EAAE,IAAI;oBACpB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM;oBACzB,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY;oBACpC,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW;oBACxC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO;oBAC3B,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa;oBACtC,oBAAoB,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY;oBAC1C,OAAO,EAAE,IAAI,EAAE,OAAO;oBACtB,SAAS,EAAE,IAAI,EAAE,UAAU;iBAC5B,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACnC,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,sCAAsC;gBACtC,uDAAuD;gBACvD,4DAA4D;gBAC5D,sDAAsD;gBACtD,6DAA6D;gBAC7D,MAAM,cAAc,GAAqB;oBACvC,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE;oBAClE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;oBACtE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;oBAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS;iBACjD,CAAC;gBAEF,kDAAkD;gBAClD,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBACtD,OAAO,CAAC,mEAAmE,EAAE;wBAC3E,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM;wBAClC,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO;wBACpC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,gCAAgC;qBACpF,CAAC,CAAC;oBACH,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,oCAAoC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,IAAI,GAAG,CAAC;gBAC1E,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAElF,QAAQ,CAAC,8BAA8B,EAAE;oBACvC,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM;oBAClC,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO;oBACpC,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM;oBAClC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO;oBAC5F,SAAS,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS;oBACrF,SAAS;iBACV,CAAC,CAAC;gBAEH,6CAA6C;gBAC7C,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC1B,OAAO,CAAC,+EAA+E,CAAC,CAAC;gBAC3F,CAAC;gBAED,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,CAAC,yDAAyD,EAAE;wBACjE,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;wBAC9F,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,cAAc;qBACxF,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,yCAAyC,EAAE;wBACjD,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS;wBAC1H,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM;qBACnC,CAAC,CAAC;gBACL,CAAC;gBAED,UAAU,GAAG,cAAc,CAAC;gBAE5B,MAAM,oBAAoB,GAAG,KAAK,IAA+B,EAAE;oBACjE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAEvB,IAAI,WAAW,IAAI,GAAG,GAAG,iBAAiB,IAAI,GAAG,GAAG,eAAe,GAAG,oBAAoB,EAAE,CAAC;wBAC3F,IAAI,UAAU,EAAE,CAAC;4BACf,OAAO,UAAU,CAAC;wBACpB,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBACjD,CAAC;oBAED,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;oBAC1C,MAAM,eAAe,GAAG,SAAS,GAAG,GAAG,CAAC;oBAExC,MAAM,cAAc,GAAG,SAAS,GAAG,GAAG,CAAC;oBACvC,MAAM,aAAa,GACjB,CAAC,UAAU,CAAC,MAAM;wBAClB,CAAC,cAAc;wBACf,eAAe,GAAG,wBAAwB,CAAC;oBAE7C,QAAQ,CAAC,qBAAqB,EAAE;wBAC9B,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM;wBAC9B,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;wBACxE,eAAe,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS;wBAC3F,cAAc;wBACd,gBAAgB,EAAE,wBAAwB;wBAC1C,aAAa;wBACb,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,GAAG,iBAAiB,CAAC;qBACvD,CAAC,CAAC;oBAEH,IAAI,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC;wBAClC,QAAQ,CAAC,kDAAkD,CAAC,CAAC;wBAC7D,OAAO,UAAU,CAAC;oBACpB,CAAC;oBAED,OAAO,CAAC,2CAA2C,EAAE;wBACnD,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;4BACxC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gCACnC,oBAAoB;wBAC5B,eAAe,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS;qBAC5F,CAAC,CAAC;oBAEH,OAAO,iBAAiB,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;wBAC/C,MAAM,WAAW,GAAG,UAAU,CAAC;wBAC/B,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;4BACzC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;wBAChD,CAAC;wBAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBAEvD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;4BAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;4BACzC,kEAAkE;4BAClE,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC;gCAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI;gCAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;4BAEzD,MAAM,OAAO,GAAqB;gCAChC,IAAI,EAAE,OAAO;gCACb,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,WAAW,CAAC,OAAO;gCACpD,MAAM,EAAE,MAAM,CAAC,YAAY;gCAC3B,OAAO,EAAE,UAAU;gCACnB,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,6BAA6B;6BAC5E,CAAC;4BAER,UAAU,GAAG,OAAO,CAAC;4BAErB,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;4BAC7B,iBAAiB,GAAG,UAAU,CAAC;4BAC/B,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAE7B,qCAAqC;4BACrC,eAAe,CAAC;gCACd,WAAW,EAAE,OAAO,CAAC,MAAM;gCAC3B,YAAY,EAAE,OAAO,CAAC,OAAO;gCAC7B,UAAU,EAAE,UAAU;gCACtB,SAAS,EAAE,QAAQ;6BACpB,CAAC,CAAC;4BAEH,IAAI,CAAC;gCACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;oCACpB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;oCACpB,IAAI,EAAE,OAAc;iCACrB,CAAC,CAAC;gCACH,QAAQ,CAAC,4BAA4B,EAAE;oCACrC,OAAO,EAAE,OAAO,CAAC,OAAO;iCACzB,CAAC,CAAC;4BACL,CAAC;4BAAC,OAAO,UAAU,EAAE,CAAC;gCACpB,QAAQ,CAAC,iCAAiC,EAAE;oCAC1C,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;iCAC1B,CAAC,CAAC;4BACL,CAAC;4BAED,OAAO,OAAO,CAAC;wBACjB,CAAC;wBAED,QAAQ,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC1D,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,KAAK,CAAC,KAAK,CACT,KAAsB,EACtB,IAAkB;wBAElB,IAAI,IAAsB,CAAC;wBAE3B,IAAI,CAAC;4BACH,IAAI,GAAG,MAAM,oBAAoB,EAAE,CAAC;wBACtC,CAAC;wBAAC,OAAO,YAAY,EAAE,CAAC;4BACtB,OAAO,CAAC,yCAAyC,EAAE;gCACjD,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;6BAC5B,CAAC,CAAC;4BAEH,gCAAgC;4BAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gCACjC,KAAK,EAAE;oCACL,IAAI,EAAE,sBAAsB;oCAC5B,OAAO,EAAE,yGAAyG;oCAClH,IAAI,EAAE,YAAY;oCAClB,OAAO,EAAE,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iCACrF;6BACF,CAAC,EAAE;gCACF,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;6BAChD,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,SAAS,GAAG,YAAY,iBAAiB,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC;wBAEzF,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;4BACrC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;gCAC9C,IAAI,GAAW,CAAC;gCAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oCAC9B,GAAG,GAAG,KAAK,CAAC;gCACd,CAAC;qCAAM,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;oCAChC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gCACzB,CAAC;qCAAM,CAAC;oCACN,GAAG,GAAI,KAAiB,CAAC,GAAG,CAAC;gCAC/B,CAAC;gCAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gCAE3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;gCAE9C,IAAI,UAAU,EAAE,CAAC;oCACf,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,UAAU,EAAE,CAAC,CAAC;oCACrD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oCACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;oCAClD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;oCAChD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;oCAElD,QAAQ,CAAC,+BAA+B,EAAE;wCACxC,GAAG;wCACH,OAAO;wCACP,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;wCACzD,WAAW,EAAE,UAAU,CAAC,MAAM;wCAC9B,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;wCAChD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;wCACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;wCAC1E,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;qCACjE,CAAC,CAAC;gCACL,CAAC;qCAAM,CAAC;oCACN,OAAO,CAAC,sDAAsD,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gCAC3E,CAAC;gCAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oCAChC,GAAG,IAAI;oCACP,OAAO;iCACR,CAAC,CAAC;gCAEH,QAAQ,CAAC,uBAAuB,EAAE;oCAChC,GAAG;oCACH,MAAM,EAAE,QAAQ,CAAC,MAAM;oCACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oCAC/B,OAAO;iCACR,CAAC,CAAC;gCAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oCAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;oCAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;oCAC1D,OAAO,CAAC,0CAA0C,EAAE;wCAClD,UAAU;wCACV,UAAU;wCACV,GAAG;qCACJ,CAAC,CAAC;oCACH,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;oCAC9D,SAAS;gCACX,CAAC;gCAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oCACvD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;oCAC7F,OAAO,CAAC,6CAA6C,EAAE;wCACrD,OAAO;wCACP,GAAG;wCACH,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO;qCAC5C,CAAC,CAAC;oCAEH,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;wCACpE,MAAM,WAAW,GAAG,UAAU,CAAC;wCAC/B,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;4CACzC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;wCAChD,CAAC;wCAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wCAE7D,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;4CAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;4CACzC,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC;gDAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI;gDAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;4CAE7B,MAAM,OAAO,GAAqB;gDAChC,IAAI,EAAE,OAAO;gDACb,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,WAAW,CAAC,OAAO;gDACpD,MAAM,EAAE,MAAM,CAAC,YAAY;gDAC3B,OAAO,EAAE,UAAU;gDACnB,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM;6CAC7C,CAAC;4CAEF,UAAU,GAAG,OAAO,CAAC;4CAErB,qCAAqC;4CACrC,eAAe,CAAC;gDACd,WAAW,EAAE,OAAO,CAAC,MAAM;gDAC3B,YAAY,EAAE,OAAO,CAAC,OAAO;gDAC7B,UAAU,EAAE,UAAU;gDACtB,SAAS,EAAE,QAAQ;6CACpB,CAAC,CAAC;4CAEH,IAAI,CAAC;gDACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;oDACpB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;oDACpB,IAAI,EAAE,OAAc;iDACrB,CAAC,CAAC;4CACL,CAAC;4CAAC,OAAO,UAAU,EAAE,CAAC;gDACpB,QAAQ,CAAC,2CAA2C,EAAE;oDACpD,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;iDAC1B,CAAC,CAAC;4CACL,CAAC;4CAED,OAAO,OAAO,CAAC;wCACjB,CAAC;wCAED,QAAQ,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;wCACpE,OAAO,IAAI,CAAC;oCACd,CAAC,CAAC,CAAC;oCAEH,IAAI,aAAa,EAAE,CAAC;wCAClB,IAAI,GAAG,aAAa,CAAC;wCACrB,QAAQ,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;wCAC5E,SAAS;oCACX,CAAC;yCAAM,CAAC;wCACN,OAAO,CAAC,gDAAgD,EAAE;4CACxD,GAAG;4CACH,UAAU,EAAE,yDAAyD;yCACtE,CAAC,CAAC;wCACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;4CACjC,KAAK,EAAE;gDACL,IAAI,EAAE,yBAAyB;gDAC/B,OAAO,EAAE,8FAA8F;gDACvG,IAAI,EAAE,YAAY;6CACnB;yCACF,CAAC,EAAE;4CACF,MAAM,EAAE,GAAG;4CACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;yCAChD,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;gCAED,OAAO,QAAQ,CAAC;4BAClB,CAAC;4BAED,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gCACjC,KAAK,EAAE;oCACL,IAAI,EAAE,sBAAsB;oCAC5B,OAAO,EAAE,iCAAiC;oCAC1C,IAAI,EAAE,cAAc;iCACrB;6BACF,CAAC,EAAE;gCACF,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;6BAChD,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,2BAA2B;oBAClC,SAAS,EAAE,KAAK,IAAI,EAAE;wBACpB,IAAI,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC;4BAClC,OAAO,CAAC,mCAAmC,CAAC,CAAC;4BAC7C,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;wBACJ,CAAC;wBAED,OAAO,kBAAkB,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;4BAChD,QAAQ,CAAC,oCAAoC,CAAC,CAAC;4BAE/C,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;4BACvC,MAAM,GAAG,GACP,MAAM,CAAC,yBAAyB,IAAI,MAAM,CAAC,gBAAgB,CAAC;4BAE9D,WAAW,CAAC,GAAG,CAAC,CAAC;4BAEjB,QAAQ,CAAC,+BAA+B,EAAE;gCACxC,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gCACzC,UAAU,EAAE,MAAM,CAAC,UAAU;gCAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;6BAC1B,CAAC,CAAC;4BAEH,OAAO;gCACL,GAAG;gCACH,YAAY,EAAE,eAAe,MAAM,CAAC,SAAS,EAAE;gCAC/C,MAAM,EAAE,MAAM;gCACd,QAAQ,EAAE,KAAK,IAAI,EAAE;oCACnB,QAAQ,CAAC,4BAA4B,CAAC,CAAC;oCACvC,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,CAAC;oCAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wCACnB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;wCACzC,8EAA8E;wCAC9E,MAAM,OAAO,GAAG,SAAS,GAAG,CAAC;4CAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI;4CAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC;wCAE9B,MAAM,UAAU,GAAqB;4CACnC,IAAI,EAAE,OAAO;4CACb,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;4CACnC,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;4CACjC,OAAO;4CACP,MAAM,EAAE,MAAM,CAAC,OAAO;yCACvB,CAAC;wCAEF,UAAU,GAAG,UAAU,CAAC;wCAExB,2DAA2D;wCAC3D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;wCACxD,eAAe,CAAC;4CACd,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;4CACtC,YAAY,EAAE,MAAM,CAAC,aAAa;4CAClC,UAAU,EAAE,OAAO;4CACnB,SAAS,EAAE,QAAQ;yCACpB,CAAC,CAAC;wCACH,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;wCAEpE,QAAQ,CAAC,iCAAiC,EAAE;4CAC1C,UAAU,EAAE,MAAM,CAAC,UAAU;4CAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa;4CACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;yCAC9B,CAAC,CAAC;wCAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;4CACnB,OAAO,CAAC,iEAAiE,CAAC,CAAC;wCAC7E,CAAC;wCAED,OAAO;4CACL,IAAI,EAAE,SAAS;4CACf,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;4CACnC,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;4CACjC,OAAO,EAAE,OAAO,IAAI,CAAC;4CACrB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,wBAAwB;4CAChD,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,oDAAoD;yCACvE,CAAC;oCACX,CAAC;oCAED,QAAQ,CAAC,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oCACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAM,EAAE,CAAC;gCAClD,CAAC;6BACF,CAAC;wBACJ,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF;aACF;SACF;QACD,MAAM,EAAE,KAAK,EAAE,MAA+B,EAAE,EAAE;YAChD,MAAM,SAAS,GACZ,MAAM,CAAC,QAEN,IAAI,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC5B,SAAS,CAAC,MAAM,CAAC,GAAG;gBAClB,GAAG,EAAE,2BAA2B;gBAChC,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,OAAO,EAAE,iBAAiB;iBAC3B;gBACD,MAAM,EAAE;oBACN,aAAa,EAAE;wBACb,EAAE,EAAE,aAAa;wBACjB,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;wBAC1C,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;qBAClD;oBACD,cAAc,EAAE;wBACd,EAAE,EAAE,cAAc;wBAClB,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;wBACzC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;wBAC1D,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACnC,QAAQ,CAAC,wBAAwB,EAAE;oBACjC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACrC,QAAQ,CAAC,qBAAqB,EAAE;oBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,UAAU,GAAI,KAAK,CAAC,QAAgB,EAAE,IAAI,EAAE,EAAE,IAAK,KAAK,CAAC,QAAgB,EAAE,EAAE,CAAC;YACpF,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBACxD,QAAQ,CAAC,wCAAwC,EAAE;oBACjD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;oBACrB,OAAO,EAAE,KAAK,CAAC,SAAS;oBACxB,UAAU;iBACX,CAAC,CAAC;gBAEH,MAAM,SAAS,GAAG,YAAY,iBAAiB,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC;gBACzF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;gBACzC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,QAAQ,CAAC;gBACtD,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;gBACpD,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,YAAY,CAAC;YACxD,CAAC;QACH,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,UAAU,GAAI,KAAK,CAAC,QAAgB,EAAE,IAAI,EAAE,EAAE,IAAK,KAAK,CAAC,QAAgB,EAAE,EAAE,CAAC;YACpF,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBACxD,QAAQ,CAAC,uCAAuC,EAAE;oBAChD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;oBACrB,YAAY,EAAE,MAAM,CAAC,WAAW;iBACjC,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;gBAC3B,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,QAAQ,CAAC,8BAA8B,EAAE;gBACvC,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS;aAC9B,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAoED,eAAO,MAAM,KAAK,SAEoB,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE9E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7E;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE9E"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AA2DD,eAAO,MAAM,KAAK,SAEoB,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE9E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7E;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE9E"}
package/dist/logger.js CHANGED
@@ -45,13 +45,6 @@ function getCurrentLogLevel() {
45
45
  }
46
46
  function writeLog(level, message, data) {
47
47
  try {
48
- // Only proceed if debug logging is explicitly enabled
49
- const isDebugEnabled = process.env.QWEN_OAUTH_DEBUG === "true" ||
50
- process.env.QWEN_OAUTH_DEBUG === "1";
51
- // Only write to file when debug is explicitly enabled
52
- if (!isDebugEnabled) {
53
- return; // Don't write logs to file unless explicitly enabled
54
- }
55
48
  const currentLevel = getCurrentLogLevel();
56
49
  if (level < currentLevel) {
57
50
  return; // Skip logs below current level