@alwaysmeticulous/record 2.106.0 → 2.108.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/record/record-login-flow.d.ts +1 -1
- package/dist/record/record-login-flow.js +5 -5
- package/dist/record/record-login-flow.js.map +1 -1
- package/dist/record/record.d.ts +1 -1
- package/dist/record/record.js +3 -3
- package/dist/record/record.js.map +1 -1
- package/dist/record/record.utils.d.ts +2 -2
- package/dist/record/record.utils.js +4 -31
- package/dist/record/record.utils.js.map +1 -1
- package/dist/record/utils/__tests__/wrap-in-should-record-condition.spec.d.ts +1 -0
- package/dist/record/utils/__tests__/wrap-in-should-record-condition.spec.js +19 -0
- package/dist/record/utils/__tests__/wrap-in-should-record-condition.spec.js.map +1 -0
- package/dist/record/utils/wrap-in-should-record-condition.d.ts +11 -0
- package/dist/record/utils/wrap-in-should-record-condition.js +84 -0
- package/dist/record/utils/wrap-in-should-record-condition.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/package.json +23 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RecordLoginFlowOptions } from "../types";
|
|
2
2
|
export declare const LOGIN_FLOW_SESSION_RECORDING_SOURCE = "cli-login-flow";
|
|
3
3
|
export declare const LOGIN_FLOW_DATA_SESSION_RECORDING_SOURCE = "cli-login-flow-application-storage";
|
|
4
|
-
export declare const recordLoginFlowSession: ({ recordingToken, devTools, bypassCSP,
|
|
4
|
+
export declare const recordLoginFlowSession: ({ recordingToken, devTools, bypassCSP, recordingSnippet, width, height, uploadIntervalMs, captureHttpOnlyCookies, appUrl, }: RecordLoginFlowOptions) => Promise<void>;
|
|
@@ -15,7 +15,7 @@ const inject_finish_recording_frame_1 = require("./utils/inject-finish-recording
|
|
|
15
15
|
const print_warning_1 = require("./utils/print-warning");
|
|
16
16
|
exports.LOGIN_FLOW_SESSION_RECORDING_SOURCE = "cli-login-flow";
|
|
17
17
|
exports.LOGIN_FLOW_DATA_SESSION_RECORDING_SOURCE = "cli-login-flow-application-storage";
|
|
18
|
-
const bootstrapLoginFlowRecordingPage = async ({ page, recordingToken,
|
|
18
|
+
const bootstrapLoginFlowRecordingPage = async ({ page, recordingToken, recordingSnippet, uploadIntervalMs, captureHttpOnlyCookies, recordingSource, bypassCSP, }) => {
|
|
19
19
|
page.setDefaultNavigationTimeout(constants_1.DEFAULT_NAVIGATION_TIMEOUT_MS); // 2 minutes
|
|
20
20
|
if (bypassCSP) {
|
|
21
21
|
await page.setBypassCSP(true);
|
|
@@ -24,13 +24,13 @@ const bootstrapLoginFlowRecordingPage = async ({ page, recordingToken, recording
|
|
|
24
24
|
page,
|
|
25
25
|
recordingToken,
|
|
26
26
|
appCommitHash: "unknown",
|
|
27
|
-
|
|
27
|
+
recordingSnippet,
|
|
28
28
|
uploadIntervalMs: uploadIntervalMs || constants_1.DEFAULT_UPLOAD_INTERVAL_MS,
|
|
29
29
|
captureHttpOnlyCookies: captureHttpOnlyCookies !== null && captureHttpOnlyCookies !== void 0 ? captureHttpOnlyCookies : true,
|
|
30
30
|
recordingSource,
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
|
-
const recordLoginFlowSession = async ({ recordingToken, devTools, bypassCSP,
|
|
33
|
+
const recordLoginFlowSession = async ({ recordingToken, devTools, bypassCSP, recordingSnippet, width, height, uploadIntervalMs, captureHttpOnlyCookies, appUrl, }) => {
|
|
34
34
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
35
35
|
logger.info("Opening browser...");
|
|
36
36
|
const defaultViewport = width && height ? { width, height } : null;
|
|
@@ -83,7 +83,7 @@ const recordLoginFlowSession = async ({ recordingToken, devTools, bypassCSP, rec
|
|
|
83
83
|
await bootstrapLoginFlowRecordingPage({
|
|
84
84
|
page: loginDataPage,
|
|
85
85
|
recordingToken,
|
|
86
|
-
|
|
86
|
+
recordingSnippet,
|
|
87
87
|
uploadIntervalMs: uploadIntervalMs,
|
|
88
88
|
captureHttpOnlyCookies: captureHttpOnlyCookies,
|
|
89
89
|
bypassCSP,
|
|
@@ -109,7 +109,7 @@ const recordLoginFlowSession = async ({ recordingToken, devTools, bypassCSP, rec
|
|
|
109
109
|
await bootstrapLoginFlowRecordingPage({
|
|
110
110
|
page: loginFlowPage,
|
|
111
111
|
recordingToken,
|
|
112
|
-
|
|
112
|
+
recordingSnippet,
|
|
113
113
|
uploadIntervalMs,
|
|
114
114
|
captureHttpOnlyCookies,
|
|
115
115
|
bypassCSP,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-login-flow.js","sourceRoot":"","sources":["../../src/record/record-login-flow.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAyE;AACzE,kDAA0B;AAC1B,wDAAuC;AACvC,yCAAkD;AAElD,2CAMqB;AACrB,iDAA+C;AAC/C,yFAAmF;AACnF,yFAAmF;AACnF,yDAG+B;AAQlB,QAAA,mCAAmC,GAAG,gBAAgB,CAAC;AACvD,QAAA,wCAAwC,GACnD,oCAAoC,CAAC;AAEvC,MAAM,+BAA+B,GAAG,KAAK,EAAE,EAC7C,IAAI,EACJ,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"record-login-flow.js","sourceRoot":"","sources":["../../src/record/record-login-flow.ts"],"names":[],"mappings":"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"}
|
package/dist/record/record.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { RecordSessionOptions } from "../types";
|
|
2
|
-
export declare const recordSession: ({ recordingToken, appCommitHash, devTools, bypassCSP,
|
|
2
|
+
export declare const recordSession: ({ recordingToken, appCommitHash, devTools, bypassCSP, recordingSnippet, width, height, uploadIntervalMs, incognito, cookieDir, debugLogger, onDetectedSession, captureHttpOnlyCookies, appUrl, }: RecordSessionOptions) => Promise<void>;
|
package/dist/record/record.js
CHANGED
|
@@ -35,7 +35,7 @@ const puppeteer_1 = __importStar(require("puppeteer"));
|
|
|
35
35
|
const constants_1 = require("./constants");
|
|
36
36
|
const record_utils_1 = require("./record.utils");
|
|
37
37
|
const COOKIE_FILENAME = "cookies.json";
|
|
38
|
-
const recordSession = async ({ recordingToken, appCommitHash, devTools, bypassCSP,
|
|
38
|
+
const recordSession = async ({ recordingToken, appCommitHash, devTools, bypassCSP, recordingSnippet, width, height, uploadIntervalMs, incognito, cookieDir, debugLogger, onDetectedSession, captureHttpOnlyCookies, appUrl, }) => {
|
|
39
39
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
40
40
|
logger.info("Opening browser...");
|
|
41
41
|
debugLogger === null || debugLogger === void 0 ? void 0 : debugLogger.log("recordSession options:");
|
|
@@ -44,7 +44,7 @@ const recordSession = async ({ recordingToken, appCommitHash, devTools, bypassCS
|
|
|
44
44
|
appCommitHash,
|
|
45
45
|
devTools,
|
|
46
46
|
bypassCSP,
|
|
47
|
-
|
|
47
|
+
recordingSnippet,
|
|
48
48
|
width,
|
|
49
49
|
height,
|
|
50
50
|
uploadIntervalMs,
|
|
@@ -104,7 +104,7 @@ const recordSession = async ({ recordingToken, appCommitHash, devTools, bypassCS
|
|
|
104
104
|
page,
|
|
105
105
|
recordingToken,
|
|
106
106
|
appCommitHash,
|
|
107
|
-
|
|
107
|
+
recordingSnippet,
|
|
108
108
|
uploadIntervalMs: uploadIntervalMs || constants_1.DEFAULT_UPLOAD_INTERVAL_MS,
|
|
109
109
|
captureHttpOnlyCookies: captureHttpOnlyCookies !== null && captureHttpOnlyCookies !== void 0 ? captureHttpOnlyCookies : true,
|
|
110
110
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/record/record.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAyD;AACzD,+BAA4B;AAC5B,qDAAkE;AAClE,wDAA2B;AAC3B,uDAAsE;AAEtE,2CAKqB;AACrB,iDAA+C;AAE/C,MAAM,eAAe,GAAG,cAAc,CAAC;AAEhC,MAAM,aAAa,GAAG,KAAK,EAAE,EAClC,cAAc,EACd,aAAa,EACb,QAAQ,EACR,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/record/record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Page } from "puppeteer";
|
|
2
|
-
export declare function bootstrapPage({ page, recordingToken, appCommitHash,
|
|
2
|
+
export declare function bootstrapPage({ page, recordingToken, appCommitHash, recordingSnippet, uploadIntervalMs, captureHttpOnlyCookies, recordingSource, }: {
|
|
3
3
|
page: Page;
|
|
4
4
|
recordingToken: string;
|
|
5
5
|
appCommitHash: string;
|
|
6
|
-
|
|
6
|
+
recordingSnippet: string;
|
|
7
7
|
uploadIntervalMs: number | null;
|
|
8
8
|
captureHttpOnlyCookies: boolean;
|
|
9
9
|
recordingSource?: string;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bootstrapPage = void 0;
|
|
4
4
|
const promises_1 = require("fs/promises");
|
|
5
|
-
const constants_1 = require("./constants");
|
|
6
5
|
const provide_cookie_access_1 = require("./utils/provide-cookie-access");
|
|
6
|
+
const wrap_in_should_record_condition_1 = require("./utils/wrap-in-should-record-condition");
|
|
7
7
|
// Setup Meticulous recording
|
|
8
|
-
async function bootstrapPage({ page, recordingToken, appCommitHash,
|
|
9
|
-
const recordingSnippetFile = await (0, promises_1.readFile)(
|
|
8
|
+
async function bootstrapPage({ page, recordingToken, appCommitHash, recordingSnippet, uploadIntervalMs, captureHttpOnlyCookies, recordingSource = "cli", }) {
|
|
9
|
+
const recordingSnippetFile = await (0, promises_1.readFile)(recordingSnippet, "utf8");
|
|
10
10
|
await page.evaluateOnNewDocument(({ recordingToken, appCommitHash, recordingSource, uploadIntervalMs }) => {
|
|
11
11
|
const recorderWindow = window;
|
|
12
12
|
recorderWindow["METICULOUS_RECORDING_TOKEN"] = recordingToken;
|
|
@@ -18,37 +18,10 @@ async function bootstrapPage({ page, recordingToken, appCommitHash, recordingSni
|
|
|
18
18
|
recorderWindow["METICULOUS_UPLOAD_INTERVAL_MS"] = uploadIntervalMs;
|
|
19
19
|
}
|
|
20
20
|
}, { recordingToken, appCommitHash, recordingSource, uploadIntervalMs });
|
|
21
|
-
await page.evaluateOnNewDocument(recordingSnippetFile);
|
|
22
21
|
if (captureHttpOnlyCookies) {
|
|
23
22
|
await (0, provide_cookie_access_1.provideCookieAccess)(page);
|
|
24
23
|
}
|
|
25
|
-
await page.evaluateOnNewDocument((
|
|
26
|
-
var _a;
|
|
27
|
-
/**
|
|
28
|
-
* The recorder crashes if it tries to initialize on a chrome-error page
|
|
29
|
-
* (Chrome e.g. uses this page for HTTP basic auth popups before the user has authenticated)
|
|
30
|
-
*
|
|
31
|
-
* This is because the recorder tries inserting an iframe into the head, and this crashes Chrome
|
|
32
|
-
* if done on a chrome-error page.
|
|
33
|
-
*/
|
|
34
|
-
const FORBIDDEN_PROTOCOLS = ["chrome://", "chrome-error://"];
|
|
35
|
-
const url = window.document.location.toString();
|
|
36
|
-
// We only record in the root frame (not in sub-iframes), and we don't record on the built in start pages,
|
|
37
|
-
// or on chrome:// and chrome-error:// pages
|
|
38
|
-
if (window === window.parent &&
|
|
39
|
-
!forbiddenUrls.includes(url) &&
|
|
40
|
-
!FORBIDDEN_PROTOCOLS.some((protocol) => url.startsWith(protocol))) {
|
|
41
|
-
const initRecorder = (_a = window.__meticulous) === null || _a === void 0 ? void 0 : _a.initialiseRecorder;
|
|
42
|
-
if (!initRecorder) {
|
|
43
|
-
throw new Error("window.__meticulous.initialiseRecorder is null or undefined: cannot record session on page");
|
|
44
|
-
}
|
|
45
|
-
initRecorder();
|
|
46
|
-
}
|
|
47
|
-
}, [
|
|
48
|
-
constants_1.INITIAL_METICULOUS_RECORD_DOCS_URL,
|
|
49
|
-
constants_1.INITIAL_METICULOUS_RECORD_LOGIN_FLOW_DOCS_URL,
|
|
50
|
-
constants_1.METICULOUS_RECORD_LOGIN_FLOW_SAVING_DOCS_URL,
|
|
51
|
-
]);
|
|
24
|
+
await page.evaluateOnNewDocument((0, wrap_in_should_record_condition_1.wrapInShouldRecordCondition)(recordingSnippetFile));
|
|
52
25
|
}
|
|
53
26
|
exports.bootstrapPage = bootstrapPage;
|
|
54
27
|
//# sourceMappingURL=record.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.utils.js","sourceRoot":"","sources":["../../src/record/record.utils.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"record.utils.js","sourceRoot":"","sources":["../../src/record/record.utils.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;AAEvC,yEAAoE;AACpE,6FAAsF;AAetF,6BAA6B;AACtB,KAAK,UAAU,aAAa,CAAC,EAClC,IAAI,EACJ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,GAAG,KAAK,GASxB;IACC,MAAM,oBAAoB,GAAG,MAAM,IAAA,mBAAQ,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAEtE,MAAM,IAAI,CAAC,qBAAqB,CAC9B,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,EAAE,EAAE;QACvE,MAAM,cAAc,GAAG,MAAkC,CAAC;QAC1D,cAAc,CAAC,4BAA4B,CAAC,GAAG,cAAc,CAAC;QAC9D,cAAc,CAAC,4BAA4B,CAAC,GAAG,aAAa,CAAC;QAC7D,cAAc,CAAC,4BAA4B,CAAC,GAAG,IAAI,CAAC;QACpD,cAAc,CAAC,6BAA6B,CAAC,GAAG,eAAe,CAAC;QAChE,cAAc,CAAC,0CAA0C,CAAC,GAAG,IAAI,CAAC;QAElE,IAAI,gBAAgB,IAAI,IAAI,EAAE;YAC5B,cAAc,CAAC,+BAA+B,CAAC,GAAG,gBAAgB,CAAC;SACpE;IACH,CAAC,EACD,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,CACrE,CAAC;IAEF,IAAI,sBAAsB,EAAE;QAC1B,MAAM,IAAA,2CAAmB,EAAC,IAAI,CAAC,CAAC;KACjC;IAED,MAAM,IAAI,CAAC,qBAAqB,CAC9B,IAAA,6DAA2B,EAAC,oBAAoB,CAAC,CAClD,CAAC;AACJ,CAAC;AA1CD,sCA0CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const wrap_in_should_record_condition_1 = require("../wrap-in-should-record-condition");
|
|
4
|
+
describe("wrapInShouldRecordCondition", () => {
|
|
5
|
+
it("adds the desired condition and keeps the source map comment as the last line", () => {
|
|
6
|
+
expect((0, wrap_in_should_record_condition_1.wrapInShouldRecordCondition)([
|
|
7
|
+
"console.log('Hello World')",
|
|
8
|
+
"//# sourceMappingURL=main.bundle.js.map",
|
|
9
|
+
"",
|
|
10
|
+
].join("\n"))).toMatchInlineSnapshot(`
|
|
11
|
+
"if (window === window.parent && ![\\"https://app.meticulous.ai/docs/recording-a-test\\",\\"https://app.meticulous.ai/docs/recording-a-login-flow\\",\\"https://app.meticulous.ai/docs/recording-a-login-flow-saving\\"].includes(window.document.location.toString()) && ![\\"chrome://\\",\\"chrome-error://\\"].some((protocol) => window.document.location.toString().startsWith(protocol))) {
|
|
12
|
+
console.log('Hello World')
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=main.bundle.js.map
|
|
15
|
+
"
|
|
16
|
+
`);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=wrap-in-should-record-condition.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-in-should-record-condition.spec.js","sourceRoot":"","sources":["../../../../src/record/utils/__tests__/wrap-in-should-record-condition.spec.ts"],"names":[],"mappings":";;AAAA,wFAAiF;AAEjF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,CACJ,IAAA,6DAA2B,EACzB;YACE,4BAA4B;YAC5B,yCAAyC;YACzC,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACF,CAAC,qBAAqB,CAAC;;;;;;KAMvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PollyJS seems to have some logic that is outside of a function body, and so executed
|
|
3
|
+
* as soon as the script is loaded. This causes Aw Snap errors in Chrome when the script
|
|
4
|
+
* is injected too early inside certain iFrames. To avoid this we wrap the script in a condition to
|
|
5
|
+
* prevent it executing at all in certain contexts.
|
|
6
|
+
*
|
|
7
|
+
* This isn't ideal, but unfortunately there's not a way to run page.evaluateOnNewDocument conditionally
|
|
8
|
+
* (we could listen for frames being attached, and then inject the script, though this has
|
|
9
|
+
* some complexities)
|
|
10
|
+
*/
|
|
11
|
+
export declare const wrapInShouldRecordCondition: (recorderCode: string) => string;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wrapInShouldRecordCondition = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
/**
|
|
6
|
+
* PollyJS seems to have some logic that is outside of a function body, and so executed
|
|
7
|
+
* as soon as the script is loaded. This causes Aw Snap errors in Chrome when the script
|
|
8
|
+
* is injected too early inside certain iFrames. To avoid this we wrap the script in a condition to
|
|
9
|
+
* prevent it executing at all in certain contexts.
|
|
10
|
+
*
|
|
11
|
+
* This isn't ideal, but unfortunately there's not a way to run page.evaluateOnNewDocument conditionally
|
|
12
|
+
* (we could listen for frames being attached, and then inject the script, though this has
|
|
13
|
+
* some complexities)
|
|
14
|
+
*/
|
|
15
|
+
const wrapInShouldRecordCondition = (recorderCode) => wrapScriptInCondition(recorderCode, constructShouldRecordCondition());
|
|
16
|
+
exports.wrapInShouldRecordCondition = wrapInShouldRecordCondition;
|
|
17
|
+
const constructShouldRecordCondition = () => {
|
|
18
|
+
// We don't record on the built in start pages
|
|
19
|
+
const FORBIDDEN_URLS = [
|
|
20
|
+
constants_1.INITIAL_METICULOUS_RECORD_DOCS_URL,
|
|
21
|
+
constants_1.INITIAL_METICULOUS_RECORD_LOGIN_FLOW_DOCS_URL,
|
|
22
|
+
constants_1.METICULOUS_RECORD_LOGIN_FLOW_SAVING_DOCS_URL,
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* The recorder crashes if it tries to initialize on a chrome-error page
|
|
26
|
+
* (Chrome e.g. uses this page for HTTP basic auth popups before the user has authenticated)
|
|
27
|
+
*
|
|
28
|
+
* This is because the recorder tries inserting an iframe into the head, and this crashes Chrome
|
|
29
|
+
* if done on a chrome-error page.
|
|
30
|
+
*/
|
|
31
|
+
const FORBIDDEN_PROTOCOLS = ["chrome://", "chrome-error://"];
|
|
32
|
+
const shouldRecordFrame =
|
|
33
|
+
// We only record in the root frame (not in sub-iframes)
|
|
34
|
+
`window === window.parent` +
|
|
35
|
+
` && !${JSON.stringify(FORBIDDEN_URLS)}.includes(window.document.location.toString())` +
|
|
36
|
+
` && !${JSON.stringify(FORBIDDEN_PROTOCOLS)}.some((protocol) => window.document.location.toString().startsWith(protocol))`;
|
|
37
|
+
return shouldRecordFrame;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Wraps the script in a condition while preserving the
|
|
41
|
+
* source map comment at the end of the file if it exists.
|
|
42
|
+
*/
|
|
43
|
+
const wrapScriptInCondition = (scriptContents, condition) => {
|
|
44
|
+
const lines = scriptContents.split("\n");
|
|
45
|
+
const { nonEmptyLines, trailingEmptyLines } = splitOutTrailingEmptyLines(lines);
|
|
46
|
+
const initialLines = nonEmptyLines.slice(0, -1);
|
|
47
|
+
const lastNonEmptyLine = nonEmptyLines[nonEmptyLines.length - 1];
|
|
48
|
+
if (lastNonEmptyLine === null || lastNonEmptyLine === void 0 ? void 0 : lastNonEmptyLine.startsWith("//#")) {
|
|
49
|
+
// This is the source map comment, we want to keep it at the end
|
|
50
|
+
return [
|
|
51
|
+
`if (${condition}) {`,
|
|
52
|
+
...initialLines,
|
|
53
|
+
`}`,
|
|
54
|
+
lastNonEmptyLine,
|
|
55
|
+
...trailingEmptyLines,
|
|
56
|
+
].join("\n");
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return [
|
|
60
|
+
`if (${condition}) {`,
|
|
61
|
+
...initialLines,
|
|
62
|
+
lastNonEmptyLine,
|
|
63
|
+
`}`,
|
|
64
|
+
...trailingEmptyLines,
|
|
65
|
+
].join("\n");
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const splitOutTrailingEmptyLines = (lines) => {
|
|
69
|
+
const trailingEmptyLines = [];
|
|
70
|
+
const nonEmptyLines = [];
|
|
71
|
+
[...lines.reverse()].forEach((line) => {
|
|
72
|
+
if (line.trim() === "" && nonEmptyLines.length === 0) {
|
|
73
|
+
trailingEmptyLines.push(line);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
nonEmptyLines.push(line);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
nonEmptyLines: nonEmptyLines.reverse(),
|
|
81
|
+
trailingEmptyLines: trailingEmptyLines.reverse(),
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=wrap-in-should-record-condition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-in-should-record-condition.js","sourceRoot":"","sources":["../../../src/record/utils/wrap-in-should-record-condition.ts"],"names":[],"mappings":";;;AAAA,4CAIsB;AAEtB;;;;;;;;;GASG;AACI,MAAM,2BAA2B,GAAG,CAAC,YAAoB,EAAE,EAAE,CAClE,qBAAqB,CAAC,YAAY,EAAE,8BAA8B,EAAE,CAAC,CAAC;AAD3D,QAAA,2BAA2B,+BACgC;AAExE,MAAM,8BAA8B,GAAG,GAAG,EAAE;IAC1C,8CAA8C;IAC9C,MAAM,cAAc,GAAG;QACrB,8CAAkC;QAClC,yDAA6C;QAC7C,wDAA4C;KAC7C,CAAC;IAEF;;;;;;OAMG;IACH,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAE7D,MAAM,iBAAiB;IACrB,wDAAwD;IACxD,0BAA0B;QAC1B,QAAQ,IAAI,CAAC,SAAS,CACpB,cAAc,CACf,gDAAgD;QACjD,QAAQ,IAAI,CAAC,SAAS,CACpB,mBAAmB,CACpB,+EAA+E,CAAC;IAEnF,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,qBAAqB,GAAG,CAAC,cAAsB,EAAE,SAAiB,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,GACzC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjE,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,UAAU,CAAC,KAAK,CAAC,EAAE;QACvC,gEAAgE;QAChE,OAAO;YACL,OAAO,SAAS,KAAK;YACrB,GAAG,YAAY;YACf,GAAG;YACH,gBAAgB;YAChB,GAAG,kBAAkB;SACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACd;SAAM;QACL,OAAO;YACL,OAAO,SAAS,KAAK;YACrB,GAAG,YAAY;YACf,gBAAgB;YAChB,GAAG;YACH,GAAG,kBAAkB;SACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACd;AACH,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,KAAe,EAAE,EAAE;IACrD,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YACpD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;aAAM;YACL,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE;QACtC,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE;KACjD,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface RecordSessionOptions {
|
|
|
4
4
|
appCommitHash: string;
|
|
5
5
|
devTools?: boolean | null | undefined;
|
|
6
6
|
bypassCSP?: boolean | null | undefined;
|
|
7
|
-
|
|
7
|
+
recordingSnippet: string;
|
|
8
8
|
width?: number | null | undefined;
|
|
9
9
|
height?: number | null | undefined;
|
|
10
10
|
uploadIntervalMs?: number | null | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwaysmeticulous/record",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.108.0",
|
|
4
4
|
"description": "The Meticulous toolkit to record user sessions",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
"lint": "eslint src --ext=ts,tsx,js --cache",
|
|
17
17
|
"lint:commit": "eslint --cache $(git diff --relative --name-only --diff-filter=ACMRTUXB master | grep -E \"(.js$|.ts$|.tsx$)\")",
|
|
18
18
|
"lint:fix": "eslint src --ext=ts,tsx,js --cache --fix",
|
|
19
|
-
"depcheck": "depcheck --ignore-patterns=dist"
|
|
19
|
+
"depcheck": "depcheck --ignore-patterns=dist",
|
|
20
|
+
"test": "jest"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"@alwaysmeticulous/api": "^2.
|
|
23
|
-
"@alwaysmeticulous/common": "^2.
|
|
23
|
+
"@alwaysmeticulous/api": "^2.108.0",
|
|
24
|
+
"@alwaysmeticulous/common": "^2.108.0",
|
|
24
25
|
"chalk": "^4.1.2",
|
|
25
26
|
"loglevel": "^1.8.0",
|
|
26
27
|
"puppeteer": "21.9.0"
|
|
@@ -42,5 +43,22 @@
|
|
|
42
43
|
"bugs": {
|
|
43
44
|
"url": "https://github.com/alwaysmeticulous/meticulous-sdk/issues"
|
|
44
45
|
},
|
|
45
|
-
"
|
|
46
|
+
"jest": {
|
|
47
|
+
"moduleFileExtensions": [
|
|
48
|
+
"js",
|
|
49
|
+
"json",
|
|
50
|
+
"ts"
|
|
51
|
+
],
|
|
52
|
+
"rootDir": "src",
|
|
53
|
+
"testRegex": ".*\\.spec\\.ts$",
|
|
54
|
+
"transform": {
|
|
55
|
+
"^.+\\.(t|j)s$": "ts-jest"
|
|
56
|
+
},
|
|
57
|
+
"collectCoverageFrom": [
|
|
58
|
+
"**/*.(t|j)s"
|
|
59
|
+
],
|
|
60
|
+
"coverageDirectory": "../coverage",
|
|
61
|
+
"testEnvironment": "node"
|
|
62
|
+
},
|
|
63
|
+
"gitHead": "6ebfdd576b48150f0587afb269c3d5c14a0e68bb"
|
|
46
64
|
}
|