@intentic/browser 1.344.0 → 1.345.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -9
- package/dist/index.js.map +1 -1
- package/dist/settle.d.ts +11 -0
- package/dist/settle.d.ts.map +1 -0
- package/dist/settle.js +67 -0
- package/dist/settle.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AA8CxD,eAAO,MAAM,OAAO,QAAO,OAiH1B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { sleep } from "@intentic/base/async";
|
|
2
1
|
import { attach, listTargets, newTab } from "./cdp.js";
|
|
3
2
|
import { ensureBrowser, ownEndpoint } from "./launch.js";
|
|
4
3
|
import { refIndex, toPageState } from "./page.js";
|
|
4
|
+
import { settleAfterAction, settleAfterOpen } from "./settle.js";
|
|
5
5
|
import { SNAPSHOT_SCRIPT } from "./snapshot.js";
|
|
6
6
|
import { BrowserError } from "./types.js";
|
|
7
7
|
export { browserCandidates, ensureBrowser, ownEndpoint, profileDir } from "./launch.js";
|
|
@@ -9,6 +9,12 @@ export { SNAPSHOT_SCRIPT } from "./snapshot.js";
|
|
|
9
9
|
export { renderPage, refIndex, toPageState } from "./page.js";
|
|
10
10
|
export { BrowserError } from "./types.js";
|
|
11
11
|
const MAX_TEXT = 20_000;
|
|
12
|
+
const NAMED_KEYS = new Map([
|
|
13
|
+
["Return", { key: "Enter", code: "Enter", keyCode: 13 }],
|
|
14
|
+
["Enter", { key: "Enter", code: "Enter", keyCode: 13 }],
|
|
15
|
+
["Escape", { key: "Escape", code: "Escape", keyCode: 27 }],
|
|
16
|
+
["Tab", { key: "Tab", code: "Tab", keyCode: 9 }],
|
|
17
|
+
]);
|
|
12
18
|
const evaluate = async (session, expression) => {
|
|
13
19
|
const result = await session.send("Runtime.evaluate", {
|
|
14
20
|
expression,
|
|
@@ -20,6 +26,7 @@ const evaluate = async (session, expression) => {
|
|
|
20
26
|
}
|
|
21
27
|
return result.result?.value;
|
|
22
28
|
};
|
|
29
|
+
const inPage = (session) => async (script) => await evaluate(session, script);
|
|
23
30
|
const withElement = (ref, body) => {
|
|
24
31
|
const index = refIndex(ref);
|
|
25
32
|
return `(function () {
|
|
@@ -65,7 +72,7 @@ export const browser = () => {
|
|
|
65
72
|
targetId = target.id;
|
|
66
73
|
session?.close();
|
|
67
74
|
session = undefined;
|
|
68
|
-
await
|
|
75
|
+
await settleAfterOpen(inPage(await connect(targetId)));
|
|
69
76
|
}
|
|
70
77
|
return await snapshot();
|
|
71
78
|
},
|
|
@@ -87,13 +94,7 @@ export const browser = () => {
|
|
|
87
94
|
press: async (combo) => {
|
|
88
95
|
const live = await connect(targetId);
|
|
89
96
|
const key = combo.split("+").pop() ?? combo;
|
|
90
|
-
const
|
|
91
|
-
Return: { key: "Enter", code: "Enter", keyCode: 13 },
|
|
92
|
-
Enter: { key: "Enter", code: "Enter", keyCode: 13 },
|
|
93
|
-
Escape: { key: "Escape", code: "Escape", keyCode: 27 },
|
|
94
|
-
Tab: { key: "Tab", code: "Tab", keyCode: 9 },
|
|
95
|
-
};
|
|
96
|
-
const descriptor = named[key] ?? { key, code: `Key${key.toUpperCase()}`, keyCode: key.toUpperCase().charCodeAt(0) };
|
|
97
|
+
const descriptor = NAMED_KEYS.get(key) ?? { key, code: `Key${key.toUpperCase()}`, keyCode: key.toUpperCase().charCodeAt(0) };
|
|
97
98
|
const modifiers = (combo.includes("ctrl") ? 2 : 0) | (combo.includes("shift") ? 8 : 0) | (combo.includes("alt") ? 1 : 0);
|
|
98
99
|
for (const type of ["keyDown", "keyUp"]) {
|
|
99
100
|
await live.send("Input.dispatchKeyEvent", { type, ...descriptor, windowsVirtualKeyCode: descriptor.keyCode, modifiers });
|
|
@@ -113,6 +114,7 @@ export const browser = () => {
|
|
|
113
114
|
await session?.send("Page.bringToFront").catch(() => undefined);
|
|
114
115
|
return await snapshot();
|
|
115
116
|
},
|
|
117
|
+
settleAfterAction: async () => await settleAfterAction(inPage(await connect(targetId))),
|
|
116
118
|
disconnect: async () => {
|
|
117
119
|
session?.close();
|
|
118
120
|
session = undefined;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/settle.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const ACTION_SETTLE_MAX_MS = 500;
|
|
2
|
+
export declare const OPEN_SETTLE_MAX_MS = 600;
|
|
3
|
+
export interface SettleClock {
|
|
4
|
+
readonly now: () => number;
|
|
5
|
+
readonly sleep: (ms: number) => Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
export type RunInPage = (script: string) => Promise<PageAnswer>;
|
|
8
|
+
export type PageAnswer = string | boolean | undefined;
|
|
9
|
+
export declare const settleAfterAction: (run: RunInPage, clock?: SettleClock) => Promise<void>;
|
|
10
|
+
export declare const settleAfterOpen: (run: RunInPage, clock?: SettleClock) => Promise<void>;
|
|
11
|
+
//# sourceMappingURL=settle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settle.d.ts","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAgDtC,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAGD,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAqBtD,eAAO,MAAM,iBAAiB,QAAe,SAAS,UAAS,WAAW,KAAe,OAAO,CAAC,IAAI,CAOpG,CAAC;AAGF,eAAO,MAAM,eAAe,QAAe,SAAS,UAAS,WAAW,KAAe,OAAO,CAAC,IAAI,CAElG,CAAC"}
|
package/dist/settle.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { sleep } from "@intentic/base/async";
|
|
2
|
+
export const ACTION_SETTLE_MAX_MS = 500;
|
|
3
|
+
export const OPEN_SETTLE_MAX_MS = 600;
|
|
4
|
+
const QUIET_MS = 100;
|
|
5
|
+
const RETRY_MS = 50;
|
|
6
|
+
const quietScript = (capMs) => `(function () {
|
|
7
|
+
return new Promise(function (resolve) {
|
|
8
|
+
var leaving = false, finished = false, quietTimer;
|
|
9
|
+
function finish(how) {
|
|
10
|
+
if (finished) return;
|
|
11
|
+
finished = true;
|
|
12
|
+
observer.disconnect();
|
|
13
|
+
clearTimeout(quietTimer);
|
|
14
|
+
clearTimeout(capTimer);
|
|
15
|
+
removeEventListener('beforeunload', onLeave);
|
|
16
|
+
resolve(how);
|
|
17
|
+
}
|
|
18
|
+
function onLeave() { leaving = true; clearTimeout(quietTimer); }
|
|
19
|
+
function bump() {
|
|
20
|
+
clearTimeout(quietTimer);
|
|
21
|
+
if (!leaving) quietTimer = setTimeout(function () { finish('quiet'); }, ${QUIET_MS});
|
|
22
|
+
}
|
|
23
|
+
var capTimer = setTimeout(function () { finish(leaving ? 'left' : 'cap'); }, ${capMs});
|
|
24
|
+
addEventListener('beforeunload', onLeave);
|
|
25
|
+
if (window.navigation) {
|
|
26
|
+
window.navigation.addEventListener('navigate', function (event) {
|
|
27
|
+
if (!event.destination || !event.destination.sameDocument) onLeave();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
var observer = new MutationObserver(bump);
|
|
31
|
+
var root = document.documentElement;
|
|
32
|
+
if (root) observer.observe(root, { subtree: true, childList: true, attributes: true, characterData: true });
|
|
33
|
+
bump();
|
|
34
|
+
});
|
|
35
|
+
})()`;
|
|
36
|
+
const parsedScript = (capMs) => `(function () {
|
|
37
|
+
if (document.readyState !== 'loading') return true;
|
|
38
|
+
return new Promise(function (resolve) {
|
|
39
|
+
var capTimer = setTimeout(function () { resolve(false); }, ${capMs});
|
|
40
|
+
document.addEventListener('DOMContentLoaded', function () { clearTimeout(capTimer); resolve(true); }, { once: true });
|
|
41
|
+
});
|
|
42
|
+
})()`;
|
|
43
|
+
const realClock = { now: Date.now, sleep: async (ms) => await sleep(ms) };
|
|
44
|
+
const untilAnswered = async (run, script, capMs, clock) => {
|
|
45
|
+
const deadline = clock.now() + capMs;
|
|
46
|
+
while (clock.now() < deadline) {
|
|
47
|
+
try {
|
|
48
|
+
return await run(script(Math.max(1, deadline - clock.now())));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
await clock.sleep(Math.min(RETRY_MS, Math.max(0, deadline - clock.now())));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
};
|
|
56
|
+
export const settleAfterAction = async (run, clock = realClock) => {
|
|
57
|
+
const deadline = clock.now() + ACTION_SETTLE_MAX_MS;
|
|
58
|
+
const outcome = await untilAnswered(run, quietScript, ACTION_SETTLE_MAX_MS, clock);
|
|
59
|
+
if (outcome === "quiet" || outcome === "cap") {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
await untilAnswered(run, parsedScript, deadline - clock.now(), clock);
|
|
63
|
+
};
|
|
64
|
+
export const settleAfterOpen = async (run, clock = realClock) => {
|
|
65
|
+
await untilAnswered(run, parsedScript, OPEN_SETTLE_MAX_MS, clock);
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=settle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settle.js","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAO7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,MAAM,QAAQ,GAAG,EAAE,CAAC;AAIpB,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC;;;;;;;;;;;;;;;gFAeiC,QAAQ;;mFAEL,KAAK;;;;;;;;;;;;KAYnF,CAAC;AAGN,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC;;;iEAGiB,KAAK;;;KAGjE,CAAC;AAWN,MAAM,SAAS,GAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAKvF,MAAM,aAAa,GAAG,KAAK,EAAE,GAAc,EAAE,MAAuC,EAAE,KAAa,EAAE,KAAkB,EAAuB,EAAE;IAC5I,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IACrC,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACD,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YAEL,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAc,EAAE,KAAK,GAAgB,SAAS,EAAiB,EAAE;IACrG,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,oBAAoB,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACnF,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO;IACX,CAAC;IACD,MAAM,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,GAAc,EAAE,KAAK,GAAgB,SAAS,EAAiB,EAAE;IACnG,MAAM,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface Browser {
|
|
|
14
14
|
readonly active: boolean;
|
|
15
15
|
}[]>;
|
|
16
16
|
readonly selectTab: (id: string) => Promise<PageState>;
|
|
17
|
+
readonly settleAfterAction: () => Promise<void>;
|
|
17
18
|
readonly disconnect: () => Promise<void>;
|
|
18
19
|
}
|
|
19
20
|
export declare class BrowserError extends Error {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM3C,MAAM,WAAW,OAAO;IAEpB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC,CAAC;IAChI,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM3C,MAAM,WAAW,OAAO;IAEpB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC,CAAC;IAChI,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAGvD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAID,qBAAa,YAAa,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAIzC;CACJ"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC1B,IAAI,CAAqB;IAClC,YAAY,OAAe,EAAE,IAAa;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/browser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.345.0",
|
|
4
4
|
"description": "Drive a Chromium browser from Node over CDP — open pages, read them as structured text, click and type by element reference. No dependencies.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@intentic/base": "1.
|
|
44
|
+
"@intentic/base": "1.345.0",
|
|
45
45
|
"tslib": "2.8.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|