react-native-qalink 0.3.0 → 0.3.2

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 (44) hide show
  1. package/README.md +10 -1
  2. package/dist/core/device.d.ts +14 -0
  3. package/dist/core/device.d.ts.map +1 -0
  4. package/dist/core/device.js +46 -27
  5. package/dist/core/device.js.map +1 -0
  6. package/dist/core/sanitize.d.ts +16 -0
  7. package/dist/core/sanitize.d.ts.map +1 -0
  8. package/dist/core/sanitize.js +96 -49
  9. package/dist/core/sanitize.js.map +1 -0
  10. package/dist/core/session.d.ts +0 -1
  11. package/dist/core/session.d.ts.map +1 -1
  12. package/dist/core/session.js +12 -27
  13. package/dist/core/session.js.map +1 -1
  14. package/dist/index.d.ts +6 -40
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +196 -164
  17. package/dist/index.js.map +1 -1
  18. package/dist/interceptors/axios.d.ts.map +1 -1
  19. package/dist/interceptors/axios.js +5 -4
  20. package/dist/interceptors/axios.js.map +1 -1
  21. package/dist/interceptors/console.d.ts.map +1 -1
  22. package/dist/interceptors/console.js +112 -67
  23. package/dist/interceptors/console.js.map +1 -1
  24. package/dist/interceptors/errors.d.ts.map +1 -1
  25. package/dist/interceptors/errors.js +4 -3
  26. package/dist/interceptors/errors.js.map +1 -1
  27. package/dist/interceptors/fetch.d.ts +1 -1
  28. package/dist/interceptors/fetch.d.ts.map +1 -1
  29. package/dist/interceptors/fetch.js +99 -96
  30. package/dist/interceptors/fetch.js.map +1 -1
  31. package/dist/interceptors/metro.d.ts +4 -0
  32. package/dist/interceptors/metro.d.ts.map +1 -0
  33. package/dist/interceptors/metro.js +174 -94
  34. package/dist/interceptors/metro.js.map +1 -0
  35. package/dist/interceptors/runtime.d.ts.map +1 -1
  36. package/dist/interceptors/runtime.js +55 -31
  37. package/dist/interceptors/runtime.js.map +1 -1
  38. package/dist/transport/websocket.d.ts +3 -2
  39. package/dist/transport/websocket.d.ts.map +1 -1
  40. package/dist/transport/websocket.js +16 -4
  41. package/dist/transport/websocket.js.map +1 -1
  42. package/dist/types/index.d.ts +66 -31
  43. package/dist/types/index.d.ts.map +1 -1
  44. package/package.json +30 -7
@@ -1,109 +1,189 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupMetroInterceptor = void 0;
3
+ exports.setupMetroInterceptor = setupMetroInterceptor;
4
4
  const session_1 = require("../core/session");
5
-
5
+ /**
6
+ * Cómo crashea Metro y cómo lo capturamos:
7
+ *
8
+ * 1. SYNTAX ERRORS — cuando hay un error de sintaxis en un archivo JS/TS
9
+ * Metro llama a console.error con un mensaje que contiene "SyntaxError"
10
+ * y la ruta del archivo. Lo capturamos interceptando console.error.
11
+ *
12
+ * 2. MODULE NOT FOUND — cuando un import no puede resolverse
13
+ * Genera un mensaje "Unable to resolve module 'X' from 'Y'"
14
+ * También pasa por console.error.
15
+ *
16
+ * 3. TRANSFORM ERRORS — cuando Babel/TypeScript falla al compilar
17
+ * Mensaje: "TransformError" con ruta del archivo y línea.
18
+ *
19
+ * 4. BUNDLING FAILED — error general del bundler
20
+ * Mensaje: "bundling failed" o "Metro Bundler"
21
+ *
22
+ * 5. HOT RELOAD ERRORS — errores durante HMR
23
+ * Pasan por el global error handler de RN.
24
+ *
25
+ * Todos estos patrones los detectamos y clasificamos en metro_error
26
+ * separado de los console_error normales para que el dashboard los
27
+ * muestre diferenciado y el QA pueda identificarlos rápido.
28
+ */
29
+ // Patrones exactos que indican un error de Metro Bundler
6
30
  const METRO_PATTERNS = [
7
- { pattern: /Unable to resolve module ['"]([^'"]+)['"]\s+from\s+['"]([^'"]+)['"]/i, type: 'module_not_found' },
8
- { pattern: /SyntaxError:.+\((\d+):(\d+)\)/i, type: 'syntax_error' },
9
- { pattern: /TransformError/i, type: 'transform_error' },
10
- { pattern: /bundling failed/i, type: 'bundling_failed' },
11
- { pattern: /Metro(?:\s+Bundler)?:/i, type: 'metro_generic' },
12
- { pattern: /error: .+\.(?:js|ts|tsx|jsx):\s*\d+:\d+/i, type: 'build_error' },
13
- { pattern: /Requiring unknown module/i, type: 'module_not_found'},
14
- { pattern: /Module not found/i, type: 'module_not_found'},
15
- { pattern: /cannot find module/i, type: 'module_not_found'},
16
- { pattern: /ENOENT:.+require/i, type: 'module_not_found'},
31
+ { pattern: /Unable to resolve module ['"]([^'"]+)['"]\s+from\s+['"]([^'"]+)['"]/i, type: 'module_not_found' },
32
+ { pattern: /SyntaxError:.+\((\d+):(\d+)\)/i, type: 'syntax_error' },
33
+ { pattern: /TransformError/i, type: 'transform_error' },
34
+ { pattern: /bundling failed/i, type: 'bundling_failed' },
35
+ { pattern: /Metro(?:\s+Bundler)?:/i, type: 'metro_generic' },
36
+ { pattern: /error: .+\.(?:js|ts|tsx|jsx):\s*\d+:\d+/i, type: 'build_error' },
37
+ { pattern: /Requiring unknown module/i, type: 'module_not_found' },
38
+ { pattern: /Module not found/i, type: 'module_not_found' },
39
+ { pattern: /cannot find module/i, type: 'module_not_found' },
40
+ { pattern: /ENOENT:.+require/i, type: 'module_not_found' },
17
41
  ];
18
-
42
+ // Extrae nombre de archivo y línea del mensaje si los contiene
19
43
  function parseFileInfo(message) {
20
- const m1 = message.match(/([^\s:]+\.(?:js|ts|tsx|jsx)):(\d+):(\d+)/);
21
- if (m1) return { file: m1[1], lineNumber: parseInt(m1[2], 10), column: parseInt(m1[3], 10) };
22
- const m2 = message.match(/([^\s(]+\.(?:js|ts|tsx|jsx))\s*\((\d+):(\d+)\)/);
23
- if (m2) return { file: m2[1], lineNumber: parseInt(m2[2], 10), column: parseInt(m2[3], 10) };
24
- return {};
44
+ // Patrón: "path/to/file.tsx:42:10"
45
+ const fileMatch = message.match(/([^\s:]+\.(?:js|ts|tsx|jsx)):(\d+):(\d+)/);
46
+ if (fileMatch) {
47
+ return {
48
+ file: fileMatch[1],
49
+ lineNumber: parseInt(fileMatch[2], 10),
50
+ column: parseInt(fileMatch[3], 10),
51
+ };
52
+ }
53
+ // Patrón: "path/to/file.tsx (42:10)"
54
+ const fileMatch2 = message.match(/([^\s(]+\.(?:js|ts|tsx|jsx))\s*\((\d+):(\d+)\)/);
55
+ if (fileMatch2) {
56
+ return {
57
+ file: fileMatch2[1],
58
+ lineNumber: parseInt(fileMatch2[2], 10),
59
+ column: parseInt(fileMatch2[3], 10),
60
+ };
61
+ }
62
+ return {};
25
63
  }
26
-
27
64
  function isMetroMessage(message) {
28
- return METRO_PATTERNS.some(({ pattern }) => pattern.test(message));
65
+ return METRO_PATTERNS.some(({ pattern }) => pattern.test(message));
29
66
  }
30
-
31
67
  function getMetroSubtype(message) {
32
- for (const { pattern, type } of METRO_PATTERNS) {
33
- if (pattern.test(message)) return type;
34
- }
35
- return 'metro_generic';
36
- }
37
-
38
- function argsToString(args) {
39
- return args
40
- .map(a => typeof a === 'string' ? a : a instanceof Error ? `${a.message}\n${a.stack ?? ''}` : String(a))
41
- .join(' ');
68
+ for (const { pattern, type } of METRO_PATTERNS) {
69
+ if (pattern.test(message))
70
+ return type;
71
+ }
72
+ return 'metro_generic';
42
73
  }
43
-
44
74
  function setupMetroInterceptor(transport, config, getDeviceId) {
45
- const cleanups = [];
46
-
47
- // ── 1. Interceptar console.error ──────────────────────────────────────────
48
- const previousConsoleError = console.error;
49
-
50
- console.error = (...args) => {
51
- previousConsoleError(...args);
52
- if (config.captureMetroErrors === false) return;
53
- const message = argsToString(args);
54
- if (!isMetroMessage(message)) return;
55
- if (message.startsWith('[QALink]')) return;
56
-
57
- const { file, lineNumber, column } = parseFileInfo(message);
58
- const event = {
59
- id: (0, session_1.generateId)(),
60
- type: 'metro_error',
61
- metroType: getMetroSubtype(message),
62
- message: message.slice(0, 2000),
63
- file, lineNumber, column,
64
- timestamp: Date.now(),
65
- sessionId: (0, session_1.getSessionId)(),
66
- deviceId: getDeviceId(),
75
+ const cleanups = [];
76
+ // ── 1. Interceptar console.error para detectar mensajes de Metro ──────────
77
+ // Metro reporta casi todos sus errores a través de console.error.
78
+ // Nos enganchamos ANTES del interceptor de consola general para
79
+ // clasificarlos como metro_error y no como console_error.
80
+ const originalConsoleError = console.error.bind(console);
81
+ const metroConsoleError = (...args) => {
82
+ var _a;
83
+ // Llamar siempre al original
84
+ originalConsoleError(...args);
85
+ if (config.captureMetroErrors === false)
86
+ return;
87
+ const message = args
88
+ .map(a => (typeof a === 'string' ? a : a instanceof Error ? `${a.message}\n${a.stack}` : String(a)))
89
+ .join(' ');
90
+ if (!isMetroMessage(message))
91
+ return;
92
+ const { file, lineNumber, column } = parseFileInfo(message);
93
+ const event = {
94
+ id: (0, session_1.generateId)(),
95
+ type: 'metro_error',
96
+ metroType: getMetroSubtype(message),
97
+ message: message.slice(0, 2000), // limitar tamaño
98
+ file,
99
+ lineNumber,
100
+ column,
101
+ timestamp: Date.now(),
102
+ sessionId: (0, session_1.getSessionId)(),
103
+ deviceId: getDeviceId(),
104
+ };
105
+ transport.send(event);
106
+ (_a = config.onEvent) === null || _a === void 0 ? void 0 : _a.call(config, event);
107
+ };
108
+ // Sobrescribir console.error — tener en cuenta que el interceptor de
109
+ // console general también lo sobrescribe, así que guardamos referencia
110
+ // al console.error ACTUAL (que puede ya estar sobrescrito) para no
111
+ // perder la cadena de interceptores.
112
+ const previousConsoleError = console.error;
113
+ console.error = (...args) => {
114
+ var _a;
115
+ previousConsoleError(...args);
116
+ if (config.captureMetroErrors === false)
117
+ return;
118
+ const message = args
119
+ .map(a => { var _a; return (typeof a === 'string' ? a : a instanceof Error ? `${a.message}\n${(_a = a.stack) !== null && _a !== void 0 ? _a : ''}` : String(a)); })
120
+ .join(' ');
121
+ if (!isMetroMessage(message))
122
+ return;
123
+ if (message.startsWith('[QALink]'))
124
+ return;
125
+ const { file, lineNumber, column } = parseFileInfo(message);
126
+ const event = {
127
+ id: (0, session_1.generateId)(),
128
+ type: 'metro_error',
129
+ metroType: getMetroSubtype(message),
130
+ message: message.slice(0, 2000),
131
+ file,
132
+ lineNumber,
133
+ column,
134
+ timestamp: Date.now(),
135
+ sessionId: (0, session_1.getSessionId)(),
136
+ deviceId: getDeviceId(),
137
+ };
138
+ transport.send(event);
139
+ (_a = config.onEvent) === null || _a === void 0 ? void 0 : _a.call(config, event);
67
140
  };
68
- transport.send(event);
69
- config.onEvent?.(event);
70
- };
71
-
72
- cleanups.push(() => { console.error = previousConsoleError; });
73
-
74
- // ── 2. ErrorUtils — crashes fatales de Metro ──────────────────────────────
75
- try {
76
- if (typeof ErrorUtils !== 'undefined' && ErrorUtils.getGlobalHandler) {
77
- const originalHandler = ErrorUtils.getGlobalHandler();
78
-
79
- ErrorUtils.setGlobalHandler((error, isFatal) => {
80
- try {
81
- if (config.captureMetroErrors !== false && error?.message && isMetroMessage(error.message)) {
82
- const { file, lineNumber, column } = parseFileInfo(error.message);
83
- const event = {
84
- id: (0, session_1.generateId)(),
85
- type: 'metro_error',
86
- metroType: getMetroSubtype(error.message),
87
- message: error.message.slice(0, 2000),
88
- stack: error.stack,
89
- file, lineNumber, column,
90
- timestamp: Date.now(),
91
- sessionId: (0, session_1.getSessionId)(),
92
- deviceId: getDeviceId(),
93
- };
94
- transport.send(event);
95
- config.onEvent?.(event);
96
- }
97
- } catch {}
98
- originalHandler(error, isFatal);
99
- });
100
-
101
- cleanups.push(() => {
102
- try { ErrorUtils.setGlobalHandler(originalHandler); } catch {}
103
- });
141
+ cleanups.push(() => {
142
+ console.error = previousConsoleError;
143
+ });
144
+ // ── 2. ErrorUtils — capturar crashes fatales de Metro en el bridge ────────
145
+ // Algunos errores de Metro (especialmente durante HMR/hot reload)
146
+ // llegan como errores fatales al global error handler.
147
+ try {
148
+ if (typeof ErrorUtils !== 'undefined' && ErrorUtils.getGlobalHandler) {
149
+ const originalHandler = ErrorUtils.getGlobalHandler();
150
+ ErrorUtils.setGlobalHandler((error, isFatal) => {
151
+ var _a;
152
+ try {
153
+ if (config.captureMetroErrors !== false && (error === null || error === void 0 ? void 0 : error.message) && isMetroMessage(error.message)) {
154
+ const { file, lineNumber, column } = parseFileInfo(error.message);
155
+ const event = {
156
+ id: (0, session_1.generateId)(),
157
+ type: 'metro_error',
158
+ metroType: getMetroSubtype(error.message),
159
+ message: error.message.slice(0, 2000),
160
+ stack: error.stack,
161
+ file,
162
+ lineNumber,
163
+ column,
164
+ timestamp: Date.now(),
165
+ sessionId: (0, session_1.getSessionId)(),
166
+ deviceId: getDeviceId(),
167
+ };
168
+ transport.send(event);
169
+ (_a = config.onEvent) === null || _a === void 0 ? void 0 : _a.call(config, event);
170
+ }
171
+ }
172
+ catch (_b) { }
173
+ originalHandler(error, isFatal);
174
+ });
175
+ cleanups.push(() => {
176
+ try {
177
+ ErrorUtils.setGlobalHandler(originalHandler);
178
+ }
179
+ catch (_a) { }
180
+ });
181
+ }
104
182
  }
105
- } catch {}
106
-
107
- return () => cleanups.forEach(fn => { try { fn(); } catch {} });
183
+ catch (_a) { }
184
+ return () => cleanups.forEach(fn => { try {
185
+ fn();
186
+ }
187
+ catch (_a) { } });
108
188
  }
109
- exports.setupMetroInterceptor = setupMetroInterceptor;
189
+ //# sourceMappingURL=metro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metro.js","sourceRoot":"","sources":["../../src/interceptors/metro.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/interceptors/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAiD5D,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,MAAM,GAC7B,MAAM,IAAI,CA2GZ"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/interceptors/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAuB5D,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,MAAM,GAC7B,MAAM,IAAI,CAmFZ"}
@@ -1,33 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupRuntimeErrorHandler = void 0;
3
+ exports.setupRuntimeErrorHandler = setupRuntimeErrorHandler;
4
4
  const session_1 = require("../core/session");
5
-
6
5
  function classifyRuntimeError(message, isFatal) {
7
- if (isFatal) return 'red_screen';
8
- if (message.includes('NativeModule') || message.includes('Native module') || message.includes('TurboModule') || message.includes('requireNativeComponent')) return 'native_module';
9
- if (message.includes('bridge') || message.includes('JSContext') || message.includes('RCTBridge') || message.includes('JavaScriptCore')) return 'bridge';
10
- if (message.startsWith('Warning:') || message.includes('deprecated')) return 'yellow_box';
6
+ if (isFatal)
7
+ return 'red_screen';
8
+ if (message.includes('NativeModule') ||
9
+ message.includes('Native module') ||
10
+ message.includes('TurboModule') ||
11
+ message.includes('requireNativeComponent'))
12
+ return 'native_module';
13
+ if (message.includes('bridge') ||
14
+ message.includes('JSContext') ||
15
+ message.includes('RCTBridge') ||
16
+ message.includes('JavaScriptCore'))
17
+ return 'bridge';
18
+ if (message.startsWith('Warning:') || message.includes('deprecated'))
19
+ return 'yellow_box';
11
20
  return 'unknown';
12
21
  }
13
-
14
22
  function setupRuntimeErrorHandler(transport, config, getCurrentScreen) {
15
23
  const cleanups = [];
16
-
17
- // ── 1. Handler global de errores fatales ──────────────────────────────────
24
+ // ── 1. Handler global de errores fatales (pantalla roja) ──────────────────
18
25
  try {
19
26
  if (typeof ErrorUtils !== 'undefined' && ErrorUtils.getGlobalHandler) {
20
27
  const originalGlobalHandler = ErrorUtils.getGlobalHandler();
21
28
  ErrorUtils.setGlobalHandler((error, isFatal) => {
29
+ var _a, _b, _c;
22
30
  try {
23
- const fatal = isFatal ?? false;
24
- const category = classifyRuntimeError(error?.message ?? '', fatal);
31
+ const fatal = isFatal !== null && isFatal !== void 0 ? isFatal : false;
32
+ const category = classifyRuntimeError((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : '', fatal);
25
33
  const event = {
26
34
  id: (0, session_1.generateId)(),
27
35
  type: 'runtime_error',
28
36
  level: fatal ? 'fatal' : 'error',
29
- message: error?.message ?? String(error),
30
- stack: error?.stack,
37
+ message: (_b = error === null || error === void 0 ? void 0 : error.message) !== null && _b !== void 0 ? _b : String(error),
38
+ stack: error === null || error === void 0 ? void 0 : error.stack,
31
39
  isFatal: fatal,
32
40
  category,
33
41
  timestamp: Date.now(),
@@ -35,28 +43,37 @@ function setupRuntimeErrorHandler(transport, config, getCurrentScreen) {
35
43
  sessionId: (0, session_1.getSessionId)(),
36
44
  };
37
45
  transport.send(event);
38
- config.onEvent?.(event);
39
- } catch {}
46
+ (_c = config.onEvent) === null || _c === void 0 ? void 0 : _c.call(config, event);
47
+ }
48
+ catch (_d) {
49
+ // Nunca romper el handler original
50
+ }
40
51
  originalGlobalHandler(error, isFatal);
41
52
  });
42
53
  cleanups.push(() => {
43
- try { ErrorUtils.setGlobalHandler(originalGlobalHandler); } catch {}
54
+ try {
55
+ ErrorUtils.setGlobalHandler(originalGlobalHandler);
56
+ }
57
+ catch (_a) { }
44
58
  });
45
59
  }
46
- } catch {}
47
-
60
+ }
61
+ catch (_a) {
62
+ // ErrorUtils no disponible en este entorno
63
+ }
48
64
  // ── 2. Promesas rechazadas no manejadas ───────────────────────────────────
49
65
  try {
50
66
  const unhandledRejectionHandler = (event) => {
67
+ var _a, _b, _c;
51
68
  try {
52
- const error = event?.reason;
53
- const message = error?.message ?? String(error) ?? 'Unhandled Promise Rejection';
69
+ const error = event === null || event === void 0 ? void 0 : event.reason;
70
+ const message = (_b = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : String(error)) !== null && _b !== void 0 ? _b : 'Unhandled Promise Rejection';
54
71
  const runtimeEvent = {
55
72
  id: (0, session_1.generateId)(),
56
73
  type: 'runtime_error',
57
74
  level: 'error',
58
75
  message,
59
- stack: error?.stack,
76
+ stack: error === null || error === void 0 ? void 0 : error.stack,
60
77
  isFatal: false,
61
78
  category: 'unknown',
62
79
  timestamp: Date.now(),
@@ -64,20 +81,27 @@ function setupRuntimeErrorHandler(transport, config, getCurrentScreen) {
64
81
  sessionId: (0, session_1.getSessionId)(),
65
82
  };
66
83
  transport.send(runtimeEvent);
67
- config.onEvent?.(runtimeEvent);
68
- } catch {}
84
+ (_c = config.onEvent) === null || _c === void 0 ? void 0 : _c.call(config, runtimeEvent);
85
+ }
86
+ catch (_d) { }
69
87
  };
70
88
  if (typeof global !== 'undefined' && global.addEventListener) {
71
89
  global.addEventListener('unhandledrejection', unhandledRejectionHandler);
72
90
  cleanups.push(() => {
73
- try { global.removeEventListener('unhandledrejection', unhandledRejectionHandler); } catch {}
91
+ try {
92
+ global.removeEventListener('unhandledrejection', unhandledRejectionHandler);
93
+ }
94
+ catch (_a) { }
74
95
  });
75
96
  }
76
- } catch {}
77
-
78
- // NOTE: LogBox.__warn removido — causa crash en bridge nativo C++
79
- // Los warnings ya son capturados por el interceptor de console.warn
80
-
81
- return () => cleanups.forEach(fn => { try { fn(); } catch {} });
97
+ }
98
+ catch (_b) { }
99
+ // NOTE: LogBox.__warn ha sido removido — es una API interna privada de RN
100
+ // que causa crashes en el bridge nativo C++. Los warnings de RN ya son
101
+ // capturados por el interceptor de console.warn.
102
+ return () => cleanups.forEach(fn => { try {
103
+ fn();
104
+ }
105
+ catch (_a) { } });
82
106
  }
83
- exports.setupRuntimeErrorHandler = setupRuntimeErrorHandler;
107
+ //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/interceptors/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/interceptors/runtime.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@ export declare class WebSocketTransport {
9
9
  private readonly maxReconnectAttempts;
10
10
  private readonly reconnectBaseMs;
11
11
  private debug;
12
- private serverUrl;
13
- constructor(serverUrl: string, debug?: boolean);
12
+ private connectionUrl;
13
+ constructor(connectionUrl: string, debug?: boolean);
14
14
  connect(): void;
15
15
  disconnect(): void;
16
16
  send(event: QALinkEvent): void;
@@ -18,6 +18,7 @@ export declare class WebSocketTransport {
18
18
  private flushQueue;
19
19
  private scheduleReconnect;
20
20
  private log;
21
+ private maskedUrlForLogs;
21
22
  }
22
23
  export {};
23
24
  //# sourceMappingURL=websocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM,EAAE,KAAK,UAAQ;IAK5C,OAAO,IAAI,IAAI;IAoCf,UAAU,IAAI,IAAI;IAUlB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAe9B,SAAS,IAAI,eAAe;IAI5B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,GAAG;CAKZ"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,EAAE,MAAM,EAAE,KAAK,UAAQ;IAKhD,OAAO,IAAI,IAAI;IAoCf,UAAU,IAAI,IAAI;IAUlB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAe9B,SAAS,IAAI,eAAe;IAI5B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebSocketTransport = void 0;
4
4
  class WebSocketTransport {
5
- constructor(serverUrl, debug = false) {
5
+ constructor(connectionUrl, debug = false) {
6
6
  this.ws = null;
7
7
  this.queue = [];
8
8
  this.status = 'disconnected';
@@ -10,16 +10,16 @@ class WebSocketTransport {
10
10
  this.reconnectAttempts = 0;
11
11
  this.maxReconnectAttempts = 10;
12
12
  this.reconnectBaseMs = 1000;
13
- this.serverUrl = serverUrl;
13
+ this.connectionUrl = connectionUrl;
14
14
  this.debug = debug;
15
15
  }
16
16
  connect() {
17
17
  if (this.status === 'connecting' || this.status === 'connected')
18
18
  return;
19
19
  this.status = 'connecting';
20
- this.log(`Connecting to ${this.serverUrl}...`);
20
+ this.log(`Connecting to ${this.maskedUrlForLogs()}...`);
21
21
  try {
22
- this.ws = new WebSocket(this.serverUrl);
22
+ this.ws = new WebSocket(this.connectionUrl);
23
23
  this.ws.onopen = () => {
24
24
  this.status = 'connected';
25
25
  this.reconnectAttempts = 0;
@@ -99,6 +99,18 @@ class WebSocketTransport {
99
99
  console.log('[QALink Transport]', ...args);
100
100
  }
101
101
  }
102
+ maskedUrlForLogs() {
103
+ try {
104
+ const url = new URL(this.connectionUrl);
105
+ if (url.searchParams.has('apiKey')) {
106
+ url.searchParams.set('apiKey', '***');
107
+ }
108
+ return url.toString();
109
+ }
110
+ catch (_a) {
111
+ return this.connectionUrl;
112
+ }
113
+ }
102
114
  }
103
115
  exports.WebSocketTransport = WebSocketTransport;
104
116
  //# sourceMappingURL=websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}