@cxpinsight/react-native 0.2.0 → 0.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/CHANGELOG.md +69 -0
- package/README.md +22 -0
- package/lib/CXPinsight.d.ts +24 -1
- package/lib/CXPinsight.d.ts.map +1 -1
- package/lib/CXPinsight.js +95 -5
- package/lib/CXPinsight.js.map +1 -1
- package/lib/core/consent.d.ts +21 -0
- package/lib/core/consent.d.ts.map +1 -0
- package/lib/core/consent.js +131 -0
- package/lib/core/consent.js.map +1 -0
- package/lib/core/eventQueue.d.ts.map +1 -1
- package/lib/core/eventQueue.js +7 -0
- package/lib/core/eventQueue.js.map +1 -1
- package/lib/core/mobileRecorder.d.ts +6 -0
- package/lib/core/mobileRecorder.d.ts.map +1 -1
- package/lib/core/mobileRecorder.js +54 -2
- package/lib/core/mobileRecorder.js.map +1 -1
- package/lib/core/networkCapture.d.ts +3 -0
- package/lib/core/networkCapture.d.ts.map +1 -1
- package/lib/core/networkCapture.js +40 -4
- package/lib/core/networkCapture.js.map +1 -1
- package/lib/setup/TouchPatcher.d.ts +1 -0
- package/lib/setup/TouchPatcher.d.ts.map +1 -1
- package/lib/setup/TouchPatcher.js +8 -2
- package/lib/setup/TouchPatcher.js.map +1 -1
- package/lib/survey/SurveyModal.d.ts.map +1 -1
- package/lib/survey/SurveyModal.js +7 -1
- package/lib/survey/SurveyModal.js.map +1 -1
- package/lib/survey/expressionEval.d.ts.map +1 -1
- package/lib/survey/expressionEval.js +7 -2
- package/lib/survey/expressionEval.js.map +1 -1
- package/lib/survey/questions/TextQuestion.d.ts +9 -1
- package/lib/survey/questions/TextQuestion.d.ts.map +1 -1
- package/lib/survey/questions/TextQuestion.js +15 -3
- package/lib/survey/questions/TextQuestion.js.map +1 -1
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/core/consent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,oCAAwC;AACxC,MAAY,OAAO,sCAAkB;AAIrC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,KAAK,GAAiB,IAAI,CAAC;AAC/B,IAAI,QAAQ,GAAwC,IAAI,CAAC;AAEzD,gFAAgF;AACzE,KAAK,sBAAsB,cAAwB;IACxD,QAAQ,GAAG,cAAc,KAAK,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAe,oBAAY,CAAC,OAAO,CAAC,CAAC;IACpE,KAAK,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,yEAAyE;AACzE,2BAAkC,EAAuC;IACvE,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH;IACE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AAC1C,CAAC;AAED,8EAA8E;AAC9E;IACE,OAAO,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACpC,CAAC;AAED;IACE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;IACE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;IACE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,KAAK,GAAG,SAAS,CAAC;IAClB,KAAK,OAAO,CAAC,GAAG,CAAC,oBAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC;QAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;AACjF,CAAC;AAED;IACE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO;IAC/B,KAAK,GAAG,QAAQ,CAAC;IACjB,KAAK,OAAO,CAAC,GAAG,CAAC,oBAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC;QAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACxD,CAAC;AAED,+DAA+D;AACxD,KAAK;IACV,KAAK,GAAG,IAAI,CAAC;IACb,MAAM,OAAO,CAAC,MAAM,CAAC,oBAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventQueue.d.ts","sourceRoot":"","sources":["../../src/core/eventQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"eventQueue.d.ts","sourceRoot":"","sources":["../../src/core/eventQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAuE3C,iDAAiD;AACjD,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB;AAeD,uBAAuB;AACvB,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAY/C;AAED,yCAAyC;AACzC,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAoD3C;AAED,kCAAkC;AAClC,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AAED,mCAAmC;AACnC,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAShD;AAED,+DAA+D;AAC/D,wBAAgB,UAAU,IAAI;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB,CAOA"}
|
package/lib/core/eventQueue.js
CHANGED
|
@@ -43,6 +43,7 @@ const react_native_1 = require("react-native");
|
|
|
43
43
|
const types_1 = require("../types");
|
|
44
44
|
const storage = __importStar(require("./storage"));
|
|
45
45
|
const network_1 = require("./network");
|
|
46
|
+
const consent_1 = require("./consent");
|
|
46
47
|
const DEFAULT_FLUSH_INTERVAL = 30000; // 30s
|
|
47
48
|
const DEFAULT_FLUSH_THRESHOLD = 10;
|
|
48
49
|
const MAX_BATCH_SIZE = 100;
|
|
@@ -150,6 +151,12 @@ function enqueue(event) {
|
|
|
150
151
|
async function flush() {
|
|
151
152
|
if (isFlushing || queue.length === 0)
|
|
152
153
|
return;
|
|
154
|
+
// Consent gate. Events keep accumulating (bounded by MAX_QUEUE_SIZE) but none
|
|
155
|
+
// leave the device until the host grants. This is the single choke point, so
|
|
156
|
+
// every path that produces an event — track, funnel, experiment, conversion —
|
|
157
|
+
// is covered by one check rather than four.
|
|
158
|
+
if ((0, consent_1.isPending)())
|
|
159
|
+
return;
|
|
153
160
|
if (Date.now() < nextRetryAt) {
|
|
154
161
|
log(`Backing off — next attempt in ${Math.round((nextRetryAt - Date.now()) / 1000)}s`);
|
|
155
162
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventQueue.js","sourceRoot":"","sources":["../../src/core/eventQueue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA6D;AAE7D,oCAAwC;AACxC,MAAY,OAAO,sCAAkB;AACrC,uCAAqC;
|
|
1
|
+
{"version":3,"file":"eventQueue.js","sourceRoot":"","sources":["../../src/core/eventQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** Screenshot bandwidth accounting for the current recording. */
|
|
2
|
+
export declare function shotStats(): {
|
|
3
|
+
bytesUsed: number;
|
|
4
|
+
dropped: number;
|
|
5
|
+
budget: number;
|
|
6
|
+
};
|
|
1
7
|
export declare function isRecording(): boolean;
|
|
2
8
|
export declare function startRecording(opts: {
|
|
3
9
|
sessionId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobileRecorder.d.ts","sourceRoot":"","sources":["../../src/core/mobileRecorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mobileRecorder.d.ts","sourceRoot":"","sources":["../../src/core/mobileRecorder.ts"],"names":[],"mappings":"AAsEA,iEAAiE;AACjE,wBAAgB,SAAS,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAElF;AAwCD,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAyCD,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;CACnE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DhB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAI9E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAIjF;AAKD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI,CAOhE;AA0BD,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAanD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shotStats = shotStats;
|
|
3
4
|
exports.isRecording = isRecording;
|
|
4
5
|
exports.startRecording = startRecording;
|
|
5
6
|
exports.recordFrame = recordFrame;
|
|
@@ -38,6 +39,34 @@ let maskInputs = true;
|
|
|
38
39
|
let screenshotProvider = null;
|
|
39
40
|
const SHOT_MIN_INTERVAL_MS = 1000; // throttle: at most ~1 screenshot/sec
|
|
40
41
|
let lastShotAt = 0;
|
|
42
|
+
// Screenshots are base64 JPEGs riding inside a JSON chunk, and a throttle of one
|
|
43
|
+
// per second is not a bandwidth limit — it is a rate limit. A busy screen on a
|
|
44
|
+
// metered connection could push multi-megabyte POSTs, which the customer's user
|
|
45
|
+
// pays for. These are the actual bounds.
|
|
46
|
+
//
|
|
47
|
+
// PER_SHOT: a single frame larger than this is dropped rather than shrunk — the
|
|
48
|
+
// capture provider belongs to the host app, so quality is theirs to set; the
|
|
49
|
+
// SDK's job is to refuse to ship something unreasonable.
|
|
50
|
+
// PER_RECORDING: a total budget, after which the timeline continues WITHOUT
|
|
51
|
+
// screenshots. The replay degrades to what a screenshot-less recording would
|
|
52
|
+
// have been, which is still useful, rather than the session being abandoned.
|
|
53
|
+
const SHOT_MAX_BYTES = 400 * 1024; // ~400 KB per frame
|
|
54
|
+
const SHOT_BUDGET_BYTES = 8 * 1024 * 1024; // ~8 MB per recording
|
|
55
|
+
let shotBytesUsed = 0;
|
|
56
|
+
let shotsDropped = 0;
|
|
57
|
+
let budgetNotified = false;
|
|
58
|
+
/** base64 length → decoded byte count, without allocating the buffer. */
|
|
59
|
+
function b64Bytes(b64) {
|
|
60
|
+
const n = b64.length;
|
|
61
|
+
if (!n)
|
|
62
|
+
return 0;
|
|
63
|
+
const pad = b64.endsWith('==') ? 2 : b64.endsWith('=') ? 1 : 0;
|
|
64
|
+
return Math.floor((n * 3) / 4) - pad;
|
|
65
|
+
}
|
|
66
|
+
/** Screenshot bandwidth accounting for the current recording. */
|
|
67
|
+
function shotStats() {
|
|
68
|
+
return { bytesUsed: shotBytesUsed, dropped: shotsDropped, budget: SHOT_BUDGET_BYTES };
|
|
69
|
+
}
|
|
41
70
|
/** Best-effort screenshot → a 'screenshot' frame (base64 jpg). Deferred so the new
|
|
42
71
|
* screen has painted before we snapshot it. Throttled to bound size/bandwidth. */
|
|
43
72
|
function captureShot(reason) {
|
|
@@ -52,8 +81,28 @@ function captureShot(reason) {
|
|
|
52
81
|
if (!recordingId || !provider)
|
|
53
82
|
return;
|
|
54
83
|
Promise.resolve().then(() => provider())
|
|
55
|
-
.then((b64) => {
|
|
56
|
-
|
|
84
|
+
.then((b64) => {
|
|
85
|
+
if (!recordingId || !b64)
|
|
86
|
+
return;
|
|
87
|
+
const bytes = b64Bytes(b64);
|
|
88
|
+
if (bytes > SHOT_MAX_BYTES) {
|
|
89
|
+
shotsDropped += 1;
|
|
90
|
+
return; // one oversized frame, skipped
|
|
91
|
+
}
|
|
92
|
+
if (shotBytesUsed + bytes > SHOT_BUDGET_BYTES) {
|
|
93
|
+
shotsDropped += 1;
|
|
94
|
+
if (!budgetNotified) {
|
|
95
|
+
budgetNotified = true;
|
|
96
|
+
if ((0, network_1.getConfig)()?.debug) {
|
|
97
|
+
console.warn(`[CXPinsight:Recorder] Screenshot budget of ${Math.round(SHOT_BUDGET_BYTES / 1024 / 1024)}MB reached — ` +
|
|
98
|
+
'continuing this recording as a timeline without screenshots.');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
shotBytesUsed += bytes;
|
|
104
|
+
recordFrame('screenshot', { image: b64, format: 'jpg', reason });
|
|
105
|
+
})
|
|
57
106
|
.catch(() => { });
|
|
58
107
|
}, 350);
|
|
59
108
|
}
|
|
@@ -122,6 +171,9 @@ async function startRecording(opts) {
|
|
|
122
171
|
maskInputs = opts.maskInputs !== false;
|
|
123
172
|
screenshotProvider = opts.captureScreen ?? null;
|
|
124
173
|
lastShotAt = 0;
|
|
174
|
+
shotBytesUsed = 0;
|
|
175
|
+
shotsDropped = 0;
|
|
176
|
+
budgetNotified = false;
|
|
125
177
|
currentScreen = opts.screen ?? null;
|
|
126
178
|
try {
|
|
127
179
|
const res = await (0, network_1.sdkFetch)('POST', '/api/engagement/recordings/start', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobileRecorder.js","sourceRoot":"","sources":["../../src/core/mobileRecorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mobileRecorder.js","sourceRoot":"","sources":["../../src/core/mobileRecorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,9 @@ type ApiCall = {
|
|
|
16
16
|
success: boolean;
|
|
17
17
|
};
|
|
18
18
|
type EmitFn = (call: ApiCall) => void;
|
|
19
|
+
declare function scrubPath(p: string): string;
|
|
20
|
+
/** Exported for tests. */
|
|
21
|
+
export declare const __scrubPath: typeof scrubPath;
|
|
19
22
|
export declare function startNetworkCapture(base: string, emitFn: EmitFn): void;
|
|
20
23
|
export declare function stopNetworkCapture(): void;
|
|
21
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkCapture.d.ts","sourceRoot":"","sources":["../../src/core/networkCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;CACtD,CAAC;AACF,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"networkCapture.d.ts","sourceRoot":"","sources":["../../src/core/networkCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;CACtD,CAAC;AACF,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AA2BtC,iBAAS,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpC;AAoBD,0BAA0B;AAC1B,eAAO,MAAM,WAAW,kBAAY,CAAC;AAcrC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAuCtE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__scrubPath = void 0;
|
|
3
4
|
exports.startNetworkCapture = startNetworkCapture;
|
|
4
5
|
exports.stopNetworkCapture = stopNetworkCapture;
|
|
5
6
|
let emit = null;
|
|
@@ -7,7 +8,37 @@ let apiBase = '';
|
|
|
7
8
|
let origFetch = null;
|
|
8
9
|
let origXhrOpen = null;
|
|
9
10
|
let origXhrSend = null;
|
|
10
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Replace identifier-shaped path segments with a placeholder.
|
|
13
|
+
*
|
|
14
|
+
* Stripping the query string was never enough: REST paths carry identity
|
|
15
|
+
* directly — /customers/user@example.com/orders, /users/5f3a.../invoices — so
|
|
16
|
+
* the personal data simply moved one delimiter left. Collapsing them also makes
|
|
17
|
+
* the captured routes far more useful, because /orders/:id aggregates where
|
|
18
|
+
* thousands of distinct literal paths do not.
|
|
19
|
+
*/
|
|
20
|
+
function scrubSegment(seg) {
|
|
21
|
+
if (!seg)
|
|
22
|
+
return seg;
|
|
23
|
+
if (seg.indexOf('@') !== -1)
|
|
24
|
+
return ':id'; // email or handle
|
|
25
|
+
if (/^\d+$/.test(seg))
|
|
26
|
+
return ':id'; // numeric id
|
|
27
|
+
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(seg))
|
|
28
|
+
return ':id'; // uuid
|
|
29
|
+
if (/^[0-9a-f]{24,}$/i.test(seg))
|
|
30
|
+
return ':id'; // ObjectId / hex token
|
|
31
|
+
if (seg.length >= 20 && /^[A-Za-z0-9_\-.]+$/.test(seg) && /\d/.test(seg))
|
|
32
|
+
return ':id'; // opaque token
|
|
33
|
+
return seg;
|
|
34
|
+
}
|
|
35
|
+
function scrubPath(p) {
|
|
36
|
+
if (!p || p === '/')
|
|
37
|
+
return p || '/';
|
|
38
|
+
return p.split('/').map(scrubSegment).join('/');
|
|
39
|
+
}
|
|
40
|
+
/** Strip query/hash, scrub identifiers out of the path, split host+path, and
|
|
41
|
+
* drop the SDK's own backend calls. */
|
|
11
42
|
function sanitize(rawUrl) {
|
|
12
43
|
try {
|
|
13
44
|
if (!rawUrl)
|
|
@@ -18,14 +49,19 @@ function sanitize(rawUrl) {
|
|
|
18
49
|
return null;
|
|
19
50
|
const noQuery = rawUrl.split('?')[0].split('#')[0];
|
|
20
51
|
const m = noQuery.match(/^https?:\/\/([^/]+)(\/.*)?$/i);
|
|
21
|
-
if (m)
|
|
22
|
-
|
|
23
|
-
|
|
52
|
+
if (m) {
|
|
53
|
+
const p = scrubPath(m[2] || '/');
|
|
54
|
+
return { host: m[1], path: p, url: `https://${m[1]}${p}` };
|
|
55
|
+
}
|
|
56
|
+
const rel = scrubPath(noQuery);
|
|
57
|
+
return { host: '', path: rel, url: rel }; // relative URL
|
|
24
58
|
}
|
|
25
59
|
catch {
|
|
26
60
|
return null;
|
|
27
61
|
}
|
|
28
62
|
}
|
|
63
|
+
/** Exported for tests. */
|
|
64
|
+
exports.__scrubPath = scrubPath;
|
|
29
65
|
function report(method, rawUrl, status, durationMs) {
|
|
30
66
|
if (!emit)
|
|
31
67
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkCapture.js","sourceRoot":"","sources":["../../src/core/networkCapture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"networkCapture.js","sourceRoot":"","sources":["../../src/core/networkCapture.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import type { ElementInfo } from './ElementIdentifier';
|
|
|
12
12
|
* This is the same technique used by Heap, FullStory, and Datadog RUM SDKs.
|
|
13
13
|
*/
|
|
14
14
|
type TapListener = (element: ElementInfo) => void;
|
|
15
|
+
export declare function setTouchPatcherDebug(on: boolean): void;
|
|
15
16
|
/**
|
|
16
17
|
* Start observing all touches. Call when setup mode activates.
|
|
17
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchPatcher.d.ts","sourceRoot":"","sources":["../../src/setup/TouchPatcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;;;;;;;;GAWG;AAEH,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TouchPatcher.d.ts","sourceRoot":"","sources":["../../src/setup/TouchPatcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;;;;;;;;GAWG;AAEH,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;AAKlD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAoB;AAM3E;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAa1D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAapC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAgCD,wBAAgB,kBAAkB,IAAI,IAAI,CAwCzC;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C"}
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.setTouchPatcherDebug = setTouchPatcherDebug;
|
|
6
7
|
exports.startObserving = startObserving;
|
|
7
8
|
exports.stopObserving = stopObserving;
|
|
8
9
|
exports.isObserving = isObserving;
|
|
@@ -12,6 +13,9 @@ const react_1 = __importDefault(require("react"));
|
|
|
12
13
|
const react_native_1 = require("react-native");
|
|
13
14
|
const ElementIdentifier_1 = require("./ElementIdentifier");
|
|
14
15
|
let tapListener = null;
|
|
16
|
+
// Gated so the SDK does not write into customers' production logs.
|
|
17
|
+
let debugMode = false;
|
|
18
|
+
function setTouchPatcherDebug(on) { debugMode = on; }
|
|
15
19
|
let patched = false;
|
|
16
20
|
// Store originals so we can unpatch
|
|
17
21
|
const originals = new Map();
|
|
@@ -29,7 +33,8 @@ function startObserving(listener) {
|
|
|
29
33
|
patchComponent(react_native_1.Button, 'Button', 'button');
|
|
30
34
|
patchComponent(react_native_1.TextInput, 'TextInput', 'text_input');
|
|
31
35
|
patched = true;
|
|
32
|
-
|
|
36
|
+
if (debugMode)
|
|
37
|
+
console.log('[CXPinsight:TouchPatcher] Started observing touches');
|
|
33
38
|
}
|
|
34
39
|
/**
|
|
35
40
|
* Stop observing. Call when setup mode ends.
|
|
@@ -45,7 +50,8 @@ function stopObserving() {
|
|
|
45
50
|
originals.clear();
|
|
46
51
|
tapListener = null;
|
|
47
52
|
patched = false;
|
|
48
|
-
|
|
53
|
+
if (debugMode)
|
|
54
|
+
console.log('[CXPinsight:TouchPatcher] Stopped observing touches');
|
|
49
55
|
}
|
|
50
56
|
function isObserving() {
|
|
51
57
|
return patched;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchPatcher.js","sourceRoot":"","sources":["../../src/setup/TouchPatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TouchPatcher.js","sourceRoot":"","sources":["../../src/setup/TouchPatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SurveyModal.d.ts","sourceRoot":"","sources":["../../src/survey/SurveyModal.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;AA+BjE,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IAIjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjF,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAgCD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"SurveyModal.d.ts","sourceRoot":"","sources":["../../src/survey/SurveyModal.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;AA+BjE,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IAIjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjF,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAgCD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAmnD1E"}
|
|
@@ -512,7 +512,13 @@ function SurveyModal({ survey, visible, onSubmit, onDismiss }) {
|
|
|
512
512
|
case 'text':
|
|
513
513
|
case 'email':
|
|
514
514
|
case 'number':
|
|
515
|
-
return ((0, jsx_runtime_1.jsx)(TextQuestion_1.TextQuestion, { value: val ?? '', onChange: (v) => updateResponse(key, v), placeholder: question.placeholder, multiline: false, contract: contract
|
|
515
|
+
return ((0, jsx_runtime_1.jsx)(TextQuestion_1.TextQuestion, { value: val ?? '', onChange: (v) => updateResponse(key, v), placeholder: question.placeholder, multiline: false, contract: contract,
|
|
516
|
+
// Two shapes reach here and both must produce the right keyboard:
|
|
517
|
+
// the legacy one where the TYPE is 'email'/'number', and the current
|
|
518
|
+
// one the builder emits — type 'text' with inputType set by its
|
|
519
|
+
// "Answer format" picker. Fall back to the type so the legacy shape
|
|
520
|
+
// keeps working.
|
|
521
|
+
inputType: question.inputType ?? (question.type === 'text' ? undefined : question.type) }));
|
|
516
522
|
case 'radio':
|
|
517
523
|
case 'radiogroup':
|
|
518
524
|
case 'dropdown':
|