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.
- package/README.md +10 -1
- package/dist/core/device.d.ts +14 -0
- package/dist/core/device.d.ts.map +1 -0
- package/dist/core/device.js +46 -27
- package/dist/core/device.js.map +1 -0
- package/dist/core/sanitize.d.ts +16 -0
- package/dist/core/sanitize.d.ts.map +1 -0
- package/dist/core/sanitize.js +96 -49
- package/dist/core/sanitize.js.map +1 -0
- package/dist/core/session.d.ts +0 -1
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +12 -27
- package/dist/core/session.js.map +1 -1
- package/dist/index.d.ts +6 -40
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -164
- package/dist/index.js.map +1 -1
- package/dist/interceptors/axios.d.ts.map +1 -1
- package/dist/interceptors/axios.js +5 -4
- package/dist/interceptors/axios.js.map +1 -1
- package/dist/interceptors/console.d.ts.map +1 -1
- package/dist/interceptors/console.js +112 -67
- package/dist/interceptors/console.js.map +1 -1
- package/dist/interceptors/errors.d.ts.map +1 -1
- package/dist/interceptors/errors.js +4 -3
- package/dist/interceptors/errors.js.map +1 -1
- package/dist/interceptors/fetch.d.ts +1 -1
- package/dist/interceptors/fetch.d.ts.map +1 -1
- package/dist/interceptors/fetch.js +99 -96
- package/dist/interceptors/fetch.js.map +1 -1
- package/dist/interceptors/metro.d.ts +4 -0
- package/dist/interceptors/metro.d.ts.map +1 -0
- package/dist/interceptors/metro.js +174 -94
- package/dist/interceptors/metro.js.map +1 -0
- package/dist/interceptors/runtime.d.ts.map +1 -1
- package/dist/interceptors/runtime.js +55 -31
- package/dist/interceptors/runtime.js.map +1 -1
- package/dist/transport/websocket.d.ts +3 -2
- package/dist/transport/websocket.d.ts.map +1 -1
- package/dist/transport/websocket.js +16 -4
- package/dist/transport/websocket.js.map +1 -1
- package/dist/types/index.d.ts +66 -31
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +30 -7
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setupConsoleInterceptor =
|
|
3
|
+
exports.setupConsoleInterceptor = setupConsoleInterceptor;
|
|
4
4
|
const session_1 = require("../core/session");
|
|
5
|
-
|
|
5
|
+
// Guardamos referencia a los métodos originales ANTES de sobrescribir
|
|
6
6
|
const originalConsole = {
|
|
7
7
|
log: console.log.bind(console),
|
|
8
8
|
warn: console.warn.bind(console),
|
|
@@ -10,88 +10,133 @@ const originalConsole = {
|
|
|
10
10
|
info: console.info.bind(console),
|
|
11
11
|
debug: console.debug.bind(console),
|
|
12
12
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Patrones que identifican logs internos de React Native
|
|
15
|
+
* para clasificarlos correctamente en el dashboard.
|
|
16
|
+
*/
|
|
17
|
+
const RN_WARNING_PATTERNS = [
|
|
18
|
+
'Warning:',
|
|
19
|
+
'VirtualizedList',
|
|
20
|
+
'Each child in a list',
|
|
21
|
+
'componentWillMount',
|
|
22
|
+
'componentWillReceiveProps',
|
|
23
|
+
'componentWillUpdate',
|
|
24
|
+
'findDOMNode',
|
|
25
|
+
'ReactDOM.render',
|
|
26
|
+
'key prop',
|
|
27
|
+
'unique "key"',
|
|
28
|
+
'Maximum update depth',
|
|
29
|
+
];
|
|
30
|
+
const RN_ERROR_PATTERNS = [
|
|
31
|
+
'Invariant Violation',
|
|
32
|
+
'Text strings must be rendered',
|
|
33
|
+
'Cannot update a component',
|
|
34
|
+
'Element type is invalid',
|
|
35
|
+
'Objects are not valid as a React child',
|
|
36
|
+
'TypeError',
|
|
37
|
+
'ReferenceError',
|
|
38
|
+
'Cannot read property',
|
|
39
|
+
'Cannot read properties',
|
|
40
|
+
'is not a function',
|
|
41
|
+
'undefined is not an object',
|
|
42
|
+
'null is not an object',
|
|
43
|
+
];
|
|
44
|
+
const METRO_ERROR_PATTERNS = [
|
|
45
|
+
'Unable to resolve module',
|
|
46
|
+
'Module not found',
|
|
47
|
+
'SyntaxError',
|
|
48
|
+
'TransformError',
|
|
49
|
+
'bundling failed',
|
|
50
|
+
'Metro Bundler',
|
|
51
|
+
'Error: Metro',
|
|
52
|
+
];
|
|
53
|
+
const THIRD_PARTY_PATTERNS = [
|
|
54
|
+
'[react-navigation]',
|
|
55
|
+
'[react-query]',
|
|
56
|
+
'[redux]',
|
|
57
|
+
'[mobx]',
|
|
58
|
+
'[zustand]',
|
|
59
|
+
'Reanimated',
|
|
60
|
+
'Gesture Handler',
|
|
61
|
+
'SafeAreaProvider',
|
|
62
|
+
];
|
|
19
63
|
function classifyConsoleMessage(message) {
|
|
20
|
-
if (METRO_ERROR_PATTERNS.some(p => message.includes(p)))
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
64
|
+
if (METRO_ERROR_PATTERNS.some(p => message.includes(p)))
|
|
65
|
+
return 'rn_error';
|
|
66
|
+
if (RN_ERROR_PATTERNS.some(p => message.includes(p)))
|
|
67
|
+
return 'rn_error';
|
|
68
|
+
if (RN_WARNING_PATTERNS.some(p => message.includes(p)))
|
|
69
|
+
return 'rn_warning';
|
|
70
|
+
if (THIRD_PARTY_PATTERNS.some(p => message.includes(p)))
|
|
71
|
+
return 'third_party';
|
|
24
72
|
return 'user_log';
|
|
25
73
|
}
|
|
26
|
-
|
|
27
74
|
function serializeArg(arg) {
|
|
28
|
-
|
|
29
|
-
if (arg ===
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
75
|
+
var _a;
|
|
76
|
+
if (arg === null)
|
|
77
|
+
return 'null';
|
|
78
|
+
if (arg === undefined)
|
|
79
|
+
return 'undefined';
|
|
80
|
+
if (typeof arg === 'string')
|
|
81
|
+
return arg;
|
|
82
|
+
if (typeof arg === 'number' || typeof arg === 'boolean')
|
|
83
|
+
return String(arg);
|
|
84
|
+
if (arg instanceof Error)
|
|
85
|
+
return `${arg.name}: ${arg.message}\n${(_a = arg.stack) !== null && _a !== void 0 ? _a : ''}`;
|
|
86
|
+
try {
|
|
87
|
+
return JSON.stringify(arg, null, 2);
|
|
88
|
+
}
|
|
89
|
+
catch (_b) {
|
|
90
|
+
return String(arg);
|
|
91
|
+
}
|
|
34
92
|
}
|
|
35
|
-
|
|
36
93
|
function shouldCapture(message, config) {
|
|
37
|
-
|
|
38
|
-
if (config
|
|
94
|
+
var _a;
|
|
95
|
+
if (!config)
|
|
96
|
+
return true;
|
|
97
|
+
// Ignorar si matchea algún patrón de exclusión
|
|
98
|
+
if ((_a = config.ignorePatterns) === null || _a === void 0 ? void 0 : _a.some(p => message.includes(p)))
|
|
99
|
+
return false;
|
|
100
|
+
// Si hay patrones de inclusión, solo capturar si matchea alguno
|
|
39
101
|
if (config.includePatterns && config.includePatterns.length > 0) {
|
|
40
102
|
return config.includePatterns.some(p => message.includes(p));
|
|
41
103
|
}
|
|
42
104
|
return true;
|
|
43
105
|
}
|
|
44
|
-
|
|
45
|
-
// FLAG para prevenir loops de recursión
|
|
46
|
-
let _isSending = false;
|
|
47
|
-
|
|
48
106
|
function setupConsoleInterceptor(transport, config, getCurrentScreen) {
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
107
|
+
var _a;
|
|
108
|
+
const consoleConfig = (_a = config.console) !== null && _a !== void 0 ? _a : {};
|
|
109
|
+
const { captureLogs = true, captureWarnings = true, captureErrors = true, } = consoleConfig;
|
|
52
110
|
function intercept(level, eventType, originalFn) {
|
|
53
111
|
return (...args) => {
|
|
54
|
-
|
|
112
|
+
var _a;
|
|
113
|
+
// Siempre llamar al original primero — Metro sigue mostrando todo
|
|
55
114
|
originalFn(...args);
|
|
56
|
-
|
|
57
|
-
// Evitar loop recursivo — si ya estamos enviando, no volver a entrar
|
|
58
|
-
if (_isSending) return;
|
|
59
|
-
|
|
60
115
|
const serializedArgs = args.map(serializeArg);
|
|
61
116
|
const message = serializedArgs.join(' ');
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
screen: getCurrentScreen(),
|
|
83
|
-
sessionId: (0, session_1.getSessionId)(),
|
|
84
|
-
};
|
|
85
|
-
transport.send(event);
|
|
86
|
-
config.onEvent?.(event);
|
|
87
|
-
} catch {
|
|
88
|
-
// Nunca romper la app por un error del interceptor
|
|
89
|
-
} finally {
|
|
90
|
-
_isSending = false;
|
|
91
|
-
}
|
|
117
|
+
if (!shouldCapture(message, consoleConfig))
|
|
118
|
+
return;
|
|
119
|
+
// Evitar loop infinito si QALink mismo hace console logs en debug mode
|
|
120
|
+
// Ejemplos: [QALink]..., [QALink Transport]...
|
|
121
|
+
if (message.startsWith('[QALink'))
|
|
122
|
+
return;
|
|
123
|
+
const category = classifyConsoleMessage(message);
|
|
124
|
+
const event = {
|
|
125
|
+
id: (0, session_1.generateId)(),
|
|
126
|
+
type: eventType,
|
|
127
|
+
level,
|
|
128
|
+
message,
|
|
129
|
+
args: serializedArgs,
|
|
130
|
+
category,
|
|
131
|
+
timestamp: Date.now(),
|
|
132
|
+
screen: getCurrentScreen(),
|
|
133
|
+
sessionId: (0, session_1.getSessionId)(),
|
|
134
|
+
};
|
|
135
|
+
transport.send(event);
|
|
136
|
+
(_a = config.onEvent) === null || _a === void 0 ? void 0 : _a.call(config, event);
|
|
92
137
|
};
|
|
93
138
|
}
|
|
94
|
-
|
|
139
|
+
// Sobrescribir métodos de consola
|
|
95
140
|
if (captureLogs) {
|
|
96
141
|
console.log = intercept('log', 'console_log', originalConsole.log);
|
|
97
142
|
console.info = intercept('info', 'console_log', originalConsole.info);
|
|
@@ -103,7 +148,7 @@ function setupConsoleInterceptor(transport, config, getCurrentScreen) {
|
|
|
103
148
|
if (captureErrors) {
|
|
104
149
|
console.error = intercept('error', 'console_error', originalConsole.error);
|
|
105
150
|
}
|
|
106
|
-
|
|
151
|
+
// Cleanup: restaurar consola original
|
|
107
152
|
return () => {
|
|
108
153
|
console.log = originalConsole.log;
|
|
109
154
|
console.warn = originalConsole.warn;
|
|
@@ -112,4 +157,4 @@ function setupConsoleInterceptor(transport, config, getCurrentScreen) {
|
|
|
112
157
|
console.debug = originalConsole.debug;
|
|
113
158
|
};
|
|
114
159
|
}
|
|
115
|
-
|
|
160
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/interceptors/console.ts"],"names":[],"mappings":";;AAyGA,
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/interceptors/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/interceptors/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/interceptors/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAO5D,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,YAAY,GACnB,MAAM,IAAI,CAkDZ"}
|
|
@@ -38,10 +38,11 @@ function setupErrorHandlers(transport, config) {
|
|
|
38
38
|
transport.send(jsEvent);
|
|
39
39
|
(_b = config.onEvent) === null || _b === void 0 ? void 0 : _b.call(config, jsEvent);
|
|
40
40
|
};
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const g = globalThis;
|
|
42
|
+
if (g === null || g === void 0 ? void 0 : g.addEventListener) {
|
|
43
|
+
g.addEventListener('unhandledrejection', unhandledRejectionHandler);
|
|
43
44
|
cleanups.push(() => {
|
|
44
|
-
|
|
45
|
+
g.removeEventListener('unhandledrejection', unhandledRejectionHandler);
|
|
45
46
|
});
|
|
46
47
|
}
|
|
47
48
|
return () => cleanups.forEach(fn => fn());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/interceptors/errors.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/interceptors/errors.ts"],"names":[],"mappings":";;AASA,gDAqDC;AA7DD,6CAA2D;AAQ3D,SAAgB,kBAAkB,CAChC,SAA6B,EAC7B,MAAoB;IAEpB,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,MAAM,oBAAoB,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAE3D,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAY,EAAE,OAAiB,EAAE,EAAE;;QAC9D,MAAM,KAAK,GAAiB;YAC1B,EAAE,EAAE,IAAA,oBAAU,GAAE;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,MAAM,CAAC,KAAK,CAAC;YACxC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAA,sBAAY,GAAE;SAC1B,CAAC;QAEF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,MAAA,MAAM,CAAC,OAAO,uDAAG,KAAK,CAAC,CAAC;QACxB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;QACjB,UAAU,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,CAAC,KAAU,EAAE,EAAE;;QAC/C,MAAM,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC;QAC5B,MAAM,OAAO,GAAiB;YAC5B,EAAE,EAAE,IAAA,oBAAU,GAAE;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,6BAA6B;YACxD,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAA,sBAAY,GAAE;SAC1B,CAAC;QAEF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,MAAA,MAAM,CAAC,OAAO,uDAAG,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,UAAiB,CAAC;IAC5B,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,gBAAgB,EAAE,CAAC;QACxB,CAAC,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;YACjB,CAAC,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { QALinkConfig } from '../types';
|
|
2
2
|
import { WebSocketTransport } from '../transport/websocket';
|
|
3
|
-
export declare function setupFetchInterceptor(transport: WebSocketTransport, config: QALinkConfig): () => void;
|
|
3
|
+
export declare function setupFetchInterceptor(transport: WebSocketTransport, config: QALinkConfig, getDeviceId: () => string): () => void;
|
|
4
4
|
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/interceptors/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/interceptors/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAItD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,MAAM,GACxB,MAAM,IAAI,CAyGZ"}
|
|
@@ -1,108 +1,111 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setupFetchInterceptor =
|
|
3
|
+
exports.setupFetchInterceptor = setupFetchInterceptor;
|
|
4
4
|
const classifier_1 = require("../core/classifier");
|
|
5
|
-
const session_1
|
|
6
|
-
const sanitize_1
|
|
7
|
-
|
|
5
|
+
const session_1 = require("../core/session");
|
|
6
|
+
const sanitize_1 = require("../core/sanitize");
|
|
8
7
|
const originalFetch = global.fetch;
|
|
9
|
-
|
|
10
8
|
function setupFetchInterceptor(transport, config, getDeviceId) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
response = await originalFetch(input, init);
|
|
26
|
-
statusCode = response.status;
|
|
27
|
-
|
|
28
|
-
if (config.logNetworkBodies) {
|
|
9
|
+
global.fetch = async (input, init) => {
|
|
10
|
+
var _a, _b, _c, _d, _e;
|
|
11
|
+
const requestId = (0, session_1.generateId)();
|
|
12
|
+
const startTime = Date.now();
|
|
13
|
+
const method = (_b = (_a = init === null || init === void 0 ? void 0 : init.method) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== null && _b !== void 0 ? _b : 'GET';
|
|
14
|
+
const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
|
|
15
|
+
// Ignorar URLs sensibles configuradas manualmente
|
|
16
|
+
if (shouldIgnoreUrl(url, (_c = config.sensitiveUrlPatterns) !== null && _c !== void 0 ? _c : [])) {
|
|
17
|
+
return originalFetch(input, init);
|
|
18
|
+
}
|
|
19
|
+
let response;
|
|
20
|
+
let responseBody;
|
|
21
|
+
let statusCode;
|
|
22
|
+
const isAuth = (0, sanitize_1.isAuthUrl)(url);
|
|
29
23
|
try {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
24
|
+
response = await originalFetch(input, init);
|
|
25
|
+
statusCode = response.status;
|
|
26
|
+
if (config.logNetworkBodies) {
|
|
27
|
+
try {
|
|
28
|
+
const cloned = response.clone();
|
|
29
|
+
responseBody = await cloned.json().catch(() => cloned.text());
|
|
30
|
+
}
|
|
31
|
+
catch (_f) {
|
|
32
|
+
responseBody = '[could not read body]';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Sanitizar request body
|
|
36
|
+
let reqBody = init === null || init === void 0 ? void 0 : init.body;
|
|
37
|
+
let sanitizedFlag = false;
|
|
38
|
+
if (reqBody && config.logNetworkBodies) {
|
|
39
|
+
if (isAuth) {
|
|
40
|
+
// Endpoint de auth — redactar body completo
|
|
41
|
+
reqBody = '[REDACTED - auth endpoint]';
|
|
42
|
+
sanitizedFlag = true;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const { sanitized, hadSensitiveData } = (0, sanitize_1.sanitizePayload)(reqBody, config.sensitiveBodyFields);
|
|
46
|
+
reqBody = sanitized;
|
|
47
|
+
sanitizedFlag = hadSensitiveData;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
reqBody = '[body omitted - enable logNetworkBodies]';
|
|
52
|
+
}
|
|
53
|
+
// Sanitizar response body
|
|
54
|
+
let resBody = responseBody;
|
|
55
|
+
if (resBody && config.logNetworkBodies) {
|
|
56
|
+
const { sanitized } = (0, sanitize_1.sanitizePayload)(resBody, config.sensitiveBodyFields);
|
|
57
|
+
resBody = sanitized;
|
|
58
|
+
}
|
|
59
|
+
else if (!config.logNetworkBodies) {
|
|
60
|
+
resBody = '[body omitted - enable logNetworkBodies]';
|
|
61
|
+
}
|
|
62
|
+
const event = {
|
|
63
|
+
id: requestId,
|
|
64
|
+
type: statusCode >= 400 ? 'network_error' : 'network_request',
|
|
65
|
+
method,
|
|
66
|
+
url,
|
|
67
|
+
statusCode,
|
|
68
|
+
requestHeaders: (0, sanitize_1.sanitizeHeaders)(headersToObject(new Headers(init === null || init === void 0 ? void 0 : init.headers)), config.sensitiveHeaders),
|
|
69
|
+
requestBody: reqBody,
|
|
70
|
+
responseBody: resBody,
|
|
71
|
+
durationMs: Date.now() - startTime,
|
|
72
|
+
timestamp: Date.now(),
|
|
73
|
+
source: (0, classifier_1.classifyErrorSource)(statusCode),
|
|
74
|
+
sessionId: (0, session_1.getSessionId)(),
|
|
75
|
+
deviceId: getDeviceId(),
|
|
76
|
+
};
|
|
77
|
+
transport.send(event);
|
|
78
|
+
(_d = config.onEvent) === null || _d === void 0 ? void 0 : _d.call(config, event);
|
|
79
|
+
return response;
|
|
45
80
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
source: (0, classifier_1.classifyErrorSource)(statusCode),
|
|
68
|
-
sessionId: (0, session_1.getSessionId)(),
|
|
69
|
-
deviceId: getDeviceId(),
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
transport.send(event);
|
|
73
|
-
config.onEvent?.(event);
|
|
74
|
-
return response;
|
|
75
|
-
|
|
76
|
-
} catch (error) {
|
|
77
|
-
const event = {
|
|
78
|
-
id: requestId,
|
|
79
|
-
type: 'network_error',
|
|
80
|
-
method, url,
|
|
81
|
-
statusCode: undefined,
|
|
82
|
-
requestHeaders: (0, sanitize_1.sanitizeHeaders)(headersToObject(new Headers(init?.headers)), config.sensitiveHeaders),
|
|
83
|
-
requestBody: '[body omitted on error]',
|
|
84
|
-
durationMs: Date.now() - startTime,
|
|
85
|
-
timestamp: Date.now(),
|
|
86
|
-
source: (0, classifier_1.classifyErrorSource)(undefined, error),
|
|
87
|
-
sessionId: (0, session_1.getSessionId)(),
|
|
88
|
-
deviceId: getDeviceId(),
|
|
89
|
-
};
|
|
90
|
-
transport.send(event);
|
|
91
|
-
config.onEvent?.(event);
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
return () => { global.fetch = originalFetch; };
|
|
81
|
+
catch (error) {
|
|
82
|
+
const event = {
|
|
83
|
+
id: requestId,
|
|
84
|
+
type: 'network_error',
|
|
85
|
+
method,
|
|
86
|
+
url,
|
|
87
|
+
statusCode: undefined,
|
|
88
|
+
requestHeaders: (0, sanitize_1.sanitizeHeaders)(headersToObject(new Headers(init === null || init === void 0 ? void 0 : init.headers)), config.sensitiveHeaders),
|
|
89
|
+
requestBody: '[body omitted on error]',
|
|
90
|
+
durationMs: Date.now() - startTime,
|
|
91
|
+
timestamp: Date.now(),
|
|
92
|
+
source: (0, classifier_1.classifyErrorSource)(undefined, error),
|
|
93
|
+
sessionId: (0, session_1.getSessionId)(),
|
|
94
|
+
deviceId: getDeviceId(),
|
|
95
|
+
};
|
|
96
|
+
transport.send(event);
|
|
97
|
+
(_e = config.onEvent) === null || _e === void 0 ? void 0 : _e.call(config, event);
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
return () => { global.fetch = originalFetch; };
|
|
97
102
|
}
|
|
98
|
-
exports.setupFetchInterceptor = setupFetchInterceptor;
|
|
99
|
-
|
|
100
103
|
function headersToObject(headers) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
const result = {};
|
|
105
|
+
headers.forEach((value, key) => { result[key] = value; });
|
|
106
|
+
return result;
|
|
104
107
|
}
|
|
105
|
-
|
|
106
108
|
function shouldIgnoreUrl(url, patterns) {
|
|
107
|
-
|
|
109
|
+
return patterns.some(pattern => url.includes(pattern));
|
|
108
110
|
}
|
|
111
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/interceptors/fetch.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/interceptors/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { QALinkConfig } from '../types';
|
|
2
|
+
import { WebSocketTransport } from '../transport/websocket';
|
|
3
|
+
export declare function setupMetroInterceptor(transport: WebSocketTransport, config: QALinkConfig, getDeviceId: () => string): () => void;
|
|
4
|
+
//# sourceMappingURL=metro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../../src/interceptors/metro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AA2E5D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,MAAM,GACxB,MAAM,IAAI,CAyHZ"}
|