chrome-devtools-frontend 1.0.1632065 → 1.0.1635876
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/front_end/core/host/UserMetrics.ts +5 -2
- package/front_end/core/root/ExperimentNames.ts +1 -0
- package/front_end/core/root/Runtime.ts +5 -0
- package/front_end/core/sdk/SourceMapCache.ts +13 -11
- package/front_end/core/sdk/SourceMapManager.ts +7 -3
- package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +84 -22
- package/front_end/entrypoints/main/MainImpl.ts +8 -0
- package/front_end/generated/InspectorBackendCommands.ts +3 -4
- package/front_end/generated/SupportedCSSProperties.js +272 -2
- package/front_end/generated/protocol-mapping.d.ts +0 -10
- package/front_end/generated/protocol-proxy-api.d.ts +0 -8
- package/front_end/generated/protocol.ts +5 -7
- package/front_end/models/ai_assistance/AiConversation.ts +16 -11
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +13 -2
- package/front_end/models/ai_assistance/agents/AiAgent.ts +65 -11
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +42 -2
- package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +68 -5
- package/front_end/models/ai_assistance/agents/GreenDevAgentAntigravityCliSocketClient.ts +53 -0
- package/front_end/models/ai_assistance/agents/GreenDevAgentGeminiCliSocketClient.ts +117 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +30 -1
- package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +4 -2
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +5 -2
- package/front_end/models/extensions/RecorderExtensionEndpoint.ts +9 -1
- package/front_end/models/extensions/RecorderPluginManager.ts +1 -0
- package/front_end/models/greendev/Prototypes.ts +17 -5
- package/front_end/models/trace/handlers/FramesHandler.ts +19 -13
- package/front_end/panels/ai_assistance/components/AccessibilityAgentMarkdownRenderer.ts +3 -0
- package/front_end/panels/ai_assistance/components/ChatInput.ts +4 -2
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -1
- package/front_end/panels/application/preloading/components/PreloadingString.ts +0 -8
- package/front_end/panels/common/ExtensionServer.ts +34 -11
- package/front_end/panels/elements/CSSRuleValidator.ts +37 -34
- package/front_end/panels/elements/CSSRuleValidatorHelper.ts +8 -6
- package/front_end/panels/elements/ElementsTreeElement.ts +8 -2
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +5 -5
- package/front_end/panels/js_timeline/js_timeline-meta.ts +30 -0
- package/front_end/panels/protocol_monitor/JSONEditor.ts +4 -4
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +2 -2
- package/front_end/panels/recorder/RecorderController.ts +50 -1
- package/front_end/panels/recorder/extensions/ExtensionManager.ts +1 -0
- package/front_end/panels/recorder/models/RecordingPlayer.ts +12 -3
- package/front_end/panels/recorder/testing/RecorderHelpers.ts +2 -0
- package/front_end/panels/settings/SettingsScreen.ts +3 -2
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +5 -2
- package/front_end/panels/timeline/timeline-meta.ts +10 -6
- package/front_end/panels/whats_new/ReleaseNoteText.ts +9 -9
- package/front_end/panels/whats_new/resources/WNDT.md +9 -9
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +8 -5
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +35 -33
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +0 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +8 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +8 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/injected.d.ts +2 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PuppeteerNode.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PuppeteerNode.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.d.ts +10 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.js +16 -12
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +8 -5
- package/front_end/third_party/puppeteer/package/package.json +5 -7
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +0 -1
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +0 -3
- package/front_end/third_party/puppeteer/package/src/common/Debug.ts +11 -11
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/CustomQuerySelector.ts +3 -2
- package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/Mutex.ts +17 -12
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +7 -0
- package/front_end/ui/legacy/InspectorDrawerView.ts +2 -1
- package/front_end/ui/legacy/InspectorView.ts +1 -1
- package/front_end/ui/legacy/PlusButton.ts +269 -0
- package/front_end/ui/legacy/ViewManager.ts +38 -11
- package/front_end/ui/legacy/components/source_frame/FontView.ts +11 -3
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +16 -0
- package/front_end/ui/legacy/components/source_frame/imageView.css +13 -0
- package/front_end/ui/legacy/components/utils/Linkifier.ts +1 -1
- package/front_end/ui/legacy/legacy.ts +2 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +21 -0
- package/mcp/mcp.ts +1 -1
- package/package.json +1 -10
|
@@ -245,6 +245,8 @@ export class RecorderController extends LitElement {
|
|
|
245
245
|
@state() declare private replayExtensions: Extensions.ExtensionManager.Extension[];
|
|
246
246
|
|
|
247
247
|
@state() declare private viewDescriptor?: PublicExtensions.RecorderPluginManager.ViewDescriptor;
|
|
248
|
+
#extensionViewShowRequestedListener?:
|
|
249
|
+
(event: Common.EventTarget.EventTargetEvent<PublicExtensions.RecorderPluginManager.ViewDescriptor>) => void;
|
|
248
250
|
|
|
249
251
|
#recorderSettings = new Models.RecorderSettings.RecorderSettings();
|
|
250
252
|
#shortcutHelper = new Models.RecorderShortcutHelper.RecorderShortcutHelper();
|
|
@@ -294,6 +296,13 @@ export class RecorderController extends LitElement {
|
|
|
294
296
|
if (this.currentRecordingSession) {
|
|
295
297
|
void this.currentRecordingSession.stop();
|
|
296
298
|
}
|
|
299
|
+
if (this.#extensionViewShowRequestedListener) {
|
|
300
|
+
PublicExtensions.RecorderPluginManager.RecorderPluginManager.instance().removeEventListener(
|
|
301
|
+
PublicExtensions.RecorderPluginManager.Events.SHOW_VIEW_REQUESTED,
|
|
302
|
+
this.#extensionViewShowRequestedListener,
|
|
303
|
+
);
|
|
304
|
+
this.#extensionViewShowRequestedListener = undefined;
|
|
305
|
+
}
|
|
297
306
|
}
|
|
298
307
|
|
|
299
308
|
#updateExtensions(extensions: Extensions.ExtensionManager.Extension[]): void {
|
|
@@ -482,7 +491,40 @@ export class RecorderController extends LitElement {
|
|
|
482
491
|
return;
|
|
483
492
|
}
|
|
484
493
|
const pluginManager = PublicExtensions.RecorderPluginManager.RecorderPluginManager.instance();
|
|
485
|
-
|
|
494
|
+
|
|
495
|
+
if (this.#extensionViewShowRequestedListener) {
|
|
496
|
+
pluginManager.removeEventListener(
|
|
497
|
+
PublicExtensions.RecorderPluginManager.Events.SHOW_VIEW_REQUESTED,
|
|
498
|
+
this.#extensionViewShowRequestedListener,
|
|
499
|
+
);
|
|
500
|
+
this.#extensionViewShowRequestedListener = undefined;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
let resolveView: (descriptor: PublicExtensions.RecorderPluginManager.ViewDescriptor) => void;
|
|
504
|
+
const promise = new Promise<PublicExtensions.RecorderPluginManager.ViewDescriptor>(resolve => {
|
|
505
|
+
resolveView = resolve;
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
this.#extensionViewShowRequestedListener =
|
|
509
|
+
(event: Common.EventTarget.EventTargetEvent<PublicExtensions.RecorderPluginManager.ViewDescriptor>): void => {
|
|
510
|
+
const descriptor = event.data;
|
|
511
|
+
if (descriptor.extensionOrigin === extension.getOrigin()) {
|
|
512
|
+
if (this.#extensionViewShowRequestedListener) {
|
|
513
|
+
pluginManager.removeEventListener(
|
|
514
|
+
PublicExtensions.RecorderPluginManager.Events.SHOW_VIEW_REQUESTED,
|
|
515
|
+
this.#extensionViewShowRequestedListener,
|
|
516
|
+
);
|
|
517
|
+
this.#extensionViewShowRequestedListener = undefined;
|
|
518
|
+
}
|
|
519
|
+
resolveView(descriptor);
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
pluginManager.addEventListener(
|
|
524
|
+
PublicExtensions.RecorderPluginManager.Events.SHOW_VIEW_REQUESTED,
|
|
525
|
+
this.#extensionViewShowRequestedListener,
|
|
526
|
+
);
|
|
527
|
+
|
|
486
528
|
extension.replay(this.currentRecording.flow);
|
|
487
529
|
const descriptor = await promise;
|
|
488
530
|
this.viewDescriptor = descriptor;
|
|
@@ -496,6 +538,13 @@ export class RecorderController extends LitElement {
|
|
|
496
538
|
if (this.viewDescriptor) {
|
|
497
539
|
this.viewDescriptor = undefined;
|
|
498
540
|
}
|
|
541
|
+
if (this.#extensionViewShowRequestedListener) {
|
|
542
|
+
PublicExtensions.RecorderPluginManager.RecorderPluginManager.instance().removeEventListener(
|
|
543
|
+
PublicExtensions.RecorderPluginManager.Events.SHOW_VIEW_REQUESTED,
|
|
544
|
+
this.#extensionViewShowRequestedListener,
|
|
545
|
+
);
|
|
546
|
+
this.#extensionViewShowRequestedListener = undefined;
|
|
547
|
+
}
|
|
499
548
|
if (event.extension) {
|
|
500
549
|
return await this.#onPlayViaExtension(event.extension);
|
|
501
550
|
}
|
|
@@ -43,6 +43,16 @@ function isPageTarget(target: Protocol.Target.TargetInfo): boolean {
|
|
|
43
43
|
target.type === 'background_page' || target.type === 'webview');
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
function checkNavigationUrl(url: Platform.DevToolsPath.UrlString): void {
|
|
47
|
+
const allowedSchemes = ['http:', 'https:', 'data:'];
|
|
48
|
+
const isAllowed = allowedSchemes.some(scheme => Common.ParsedURL.schemeIs(url, scheme));
|
|
49
|
+
// We allow only about:blank but any other about: pages are intentionally
|
|
50
|
+
// blocked as they may navigate to other internal pages.
|
|
51
|
+
if (!isAllowed && url !== 'about:blank') {
|
|
52
|
+
throw new Error(`Navigation to ${url} is not allowed, due to blocked schema`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
46
56
|
export class RecordingPlayer extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
47
57
|
userFlow: UserFlow;
|
|
48
58
|
speed: PlayRecordingSpeed;
|
|
@@ -273,9 +283,8 @@ export class RecordingPlayer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
273
283
|
(step.type === 'setViewport' || step.type === 'navigate')) {
|
|
274
284
|
return;
|
|
275
285
|
}
|
|
276
|
-
if (step.type === 'navigate'
|
|
277
|
-
|
|
278
|
-
throw new Error('Not allowed to replay on chrome:// URLs');
|
|
286
|
+
if (step.type === 'navigate') {
|
|
287
|
+
checkNavigationUrl(step.url as Platform.DevToolsPath.UrlString);
|
|
279
288
|
}
|
|
280
289
|
// Focus the target in case it's not focused.
|
|
281
290
|
await this.page.bringToFront();
|
|
@@ -23,7 +23,9 @@ export const installMocksForRecordingPlayer = (): void => {
|
|
|
23
23
|
}),
|
|
24
24
|
frames: () => [{
|
|
25
25
|
client: {send: sinon.stub().resolves()},
|
|
26
|
+
goto: sinon.stub().resolves(),
|
|
26
27
|
}],
|
|
28
|
+
mainFrame: () => mock.page.frames()[0],
|
|
27
29
|
evaluate: () => '',
|
|
28
30
|
url() {
|
|
29
31
|
return '';
|
|
@@ -636,7 +636,7 @@ const GREENDEV_VIEW: View = (input, _output, target) => {
|
|
|
636
636
|
<span>${i18nString(UIStrings.greenDevUnstable)}</span>
|
|
637
637
|
</div>
|
|
638
638
|
<div class="settings-experiments-block">
|
|
639
|
-
${renderPrototypeCheckboxes(input.settings, ['aiAnnotations', '
|
|
639
|
+
${renderPrototypeCheckboxes(input.settings, ['aiAnnotations', 'beyondStylingGemini', 'beyondStylingAntigravity', 'breakpointDebuggerAgent', 'emulationCapabilities'])}
|
|
640
640
|
</div>
|
|
641
641
|
</devtools-card>
|
|
642
642
|
</div>
|
|
@@ -646,7 +646,8 @@ const GREENDEV_VIEW: View = (input, _output, target) => {
|
|
|
646
646
|
|
|
647
647
|
const GREENDEV_PROTOTYPE_NAMES: Record<keyof GreenDev.GreenDevSettings, string> = {
|
|
648
648
|
aiAnnotations: 'AI auto-annotations',
|
|
649
|
-
|
|
649
|
+
beyondStylingGemini: 'Beyond Styling (Gemini CLI)',
|
|
650
|
+
beyondStylingAntigravity: 'Beyond Styling (Antigravity CLI)',
|
|
650
651
|
breakpointDebuggerAgent: 'Breakpoint Debugger Agent',
|
|
651
652
|
emulationCapabilities: 'Emulation Capabilities',
|
|
652
653
|
};
|
|
@@ -126,8 +126,11 @@ export class FilteredUISourceCodeListProvider extends QuickOpen.FilteredListWidg
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
let multiplier = 10;
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
const isSnippet = Common.ParsedURL.schemeIs(uiSourceCode.url(), 'snippet:');
|
|
130
|
+
const isUnboundLocalFile = uiSourceCode.project().type() === Workspace.Workspace.projectTypes.FileSystem &&
|
|
131
|
+
!Persistence.Persistence.PersistenceImpl.instance().binding(uiSourceCode) && !isSnippet;
|
|
132
|
+
|
|
133
|
+
if (isUnboundLocalFile) {
|
|
131
134
|
multiplier = 5;
|
|
132
135
|
}
|
|
133
136
|
|
|
@@ -329,26 +329,30 @@ Common.Settings.registerSettingExtension({
|
|
|
329
329
|
Common.Settings.registerSettingExtension({
|
|
330
330
|
category: Common.Settings.SettingCategory.PERFORMANCE,
|
|
331
331
|
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
332
|
-
title: i18nLazyString(UIStrings.
|
|
333
|
-
settingName: 'timeline-
|
|
332
|
+
title: i18nLazyString(UIStrings.timelineInvalidationTracking),
|
|
333
|
+
settingName: 'timeline-invalidation-tracking',
|
|
334
334
|
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
335
335
|
defaultValue: false,
|
|
336
336
|
});
|
|
337
337
|
|
|
338
|
+
// IMPORTANT: if you are updating this, you should also update the setting in
|
|
339
|
+
// js_timeline-meta.
|
|
338
340
|
Common.Settings.registerSettingExtension({
|
|
339
341
|
category: Common.Settings.SettingCategory.PERFORMANCE,
|
|
340
342
|
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
341
|
-
title: i18nLazyString(UIStrings.
|
|
342
|
-
settingName: 'timeline-
|
|
343
|
+
title: i18nLazyString(UIStrings.timelineShowAllEvents),
|
|
344
|
+
settingName: 'timeline-show-all-events',
|
|
343
345
|
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
344
346
|
defaultValue: false,
|
|
345
347
|
});
|
|
346
348
|
|
|
349
|
+
// IMPORTANT: if you are updating this, you should also update the setting in
|
|
350
|
+
// js_timeline-meta.
|
|
347
351
|
Common.Settings.registerSettingExtension({
|
|
348
352
|
category: Common.Settings.SettingCategory.PERFORMANCE,
|
|
349
353
|
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
350
|
-
title: i18nLazyString(UIStrings.
|
|
351
|
-
settingName: 'timeline-
|
|
354
|
+
title: i18nLazyString(UIStrings.timelineDebugMode),
|
|
355
|
+
settingName: 'timeline-debug-mode',
|
|
352
356
|
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
353
357
|
defaultValue: false,
|
|
354
358
|
});
|
|
@@ -40,22 +40,22 @@ export function getReleaseNote(): ReleaseNote {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
let releaseNote: ReleaseNote = {
|
|
43
|
-
version:
|
|
44
|
-
header: 'What
|
|
43
|
+
version: 149,
|
|
44
|
+
header: 'What’s new in DevTools 149',
|
|
45
45
|
markdownLinks: [
|
|
46
46
|
{
|
|
47
|
-
key: '
|
|
48
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
47
|
+
key: 'devtools-for-agents',
|
|
48
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/#devtools-for-agents',
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
|
-
key: '
|
|
52
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
51
|
+
key: 'ai-assistance',
|
|
52
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/#ai-assistance',
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
key: '
|
|
56
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
55
|
+
key: 'css-code-completion',
|
|
56
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/#css-code-completion',
|
|
57
57
|
}
|
|
58
58
|
],
|
|
59
59
|
videoLinks: [],
|
|
60
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
60
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/',
|
|
61
61
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
### [
|
|
1
|
+
### [DevTools for agents](devtools-for-agents)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
DevTools for agents is now stable at version 1.0, bringing support for third-party developer tools
|
|
4
|
+
provided by the inspected page, WebMCP debugging, and an improved CLI experience.
|
|
5
5
|
|
|
6
|
-
### [
|
|
6
|
+
### [AI assistance](ai-assistance)
|
|
7
7
|
|
|
8
|
-
The
|
|
9
|
-
|
|
8
|
+
The AI assistance panel now integrates with Lighthouse data and offers interactive, widget-based agent walkthroughs.
|
|
9
|
+
Supported by an upgrade to Gemini 3 and other optimizations, responses are now more concise and actionable.
|
|
10
10
|
|
|
11
|
-
### [
|
|
11
|
+
### [CSS code completion](css-code-completion)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
The Styles tab in the Elements panel now features enhanced, Gemini-powered code completion.
|
|
14
|
+
Experience smarter, real-time CSS suggestions that adapt dynamically as you type.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: Internal
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: 268971579b74f0369f828111e6c8f5bafbacd5ee
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Name: Puppeteer Core
|
|
2
2
|
Short Name: Puppeteer Core
|
|
3
3
|
URL: https://github.com/puppeteer/puppeteer/tree/main/packages/puppeteer-core
|
|
4
|
-
Version: 25.0
|
|
4
|
+
Version: 25.1.0
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License File: LICENSE
|
|
7
|
-
Revision:
|
|
7
|
+
Revision: ede66693bc0a6d9a8029f66288d13e26966173ce
|
|
8
8
|
Security Critical: no
|
|
9
9
|
Shipped: yes
|
|
10
10
|
Update Mechanism: Autoroll
|
|
@@ -1580,7 +1580,7 @@ export declare interface CookieData {
|
|
|
1580
1580
|
/**
|
|
1581
1581
|
* Cookie SameSite type.
|
|
1582
1582
|
*/
|
|
1583
|
-
sameSite?:
|
|
1583
|
+
sameSite?: CookieSameSite_2;
|
|
1584
1584
|
/**
|
|
1585
1585
|
* Cookie expiration date, session cookie if not set
|
|
1586
1586
|
*/
|
|
@@ -1641,7 +1641,7 @@ export declare interface CookieParam {
|
|
|
1641
1641
|
/**
|
|
1642
1642
|
* Cookie SameSite type.
|
|
1643
1643
|
*/
|
|
1644
|
-
sameSite?:
|
|
1644
|
+
sameSite?: CookieSameSite_2;
|
|
1645
1645
|
/**
|
|
1646
1646
|
* Cookie expiration date, session cookie if not set
|
|
1647
1647
|
*/
|
|
@@ -1704,7 +1704,8 @@ export declare type CookiePriority = 'Low' | 'Medium' | 'High';
|
|
|
1704
1704
|
*
|
|
1705
1705
|
* @public
|
|
1706
1706
|
*/
|
|
1707
|
-
|
|
1707
|
+
declare type CookieSameSite_2 = 'Strict' | 'Lax' | 'None' | 'Default';
|
|
1708
|
+
export type {CookieSameSite_2 as CookieSameSite};
|
|
1708
1709
|
|
|
1709
1710
|
/**
|
|
1710
1711
|
* Represents the source scheme of the origin that originally set the cookie. A value of
|
|
@@ -1889,6 +1890,7 @@ declare interface CustomQuerySelector {
|
|
|
1889
1890
|
|
|
1890
1891
|
/**
|
|
1891
1892
|
* This class mimics the injected {@link CustomQuerySelectorRegistry}.
|
|
1893
|
+
*
|
|
1892
1894
|
*/
|
|
1893
1895
|
declare class CustomQuerySelectorRegistry {
|
|
1894
1896
|
|
|
@@ -1900,6 +1902,7 @@ declare class CustomQuerySelectorRegistry {
|
|
|
1900
1902
|
|
|
1901
1903
|
declare namespace CustomQuerySelectors {
|
|
1902
1904
|
export type {CustomQuerySelector};
|
|
1905
|
+
export {CustomQuerySelectorRegistry};
|
|
1903
1906
|
}
|
|
1904
1907
|
|
|
1905
1908
|
/**
|
|
@@ -8249,7 +8252,7 @@ declare namespace Puppeteer_2 {
|
|
|
8249
8252
|
ConnectOptions,
|
|
8250
8253
|
ConsoleMessageLocation,
|
|
8251
8254
|
ConsoleMessageType,
|
|
8252
|
-
CookieSameSite,
|
|
8255
|
+
CookieSameSite_2 as CookieSameSite,
|
|
8253
8256
|
CookiePriority,
|
|
8254
8257
|
CookieSourceScheme,
|
|
8255
8258
|
CookiePartitionKey,
|
|
@@ -8388,7 +8391,7 @@ export declare type PuppeteerLifeCycleEvent =
|
|
|
8388
8391
|
* fetching and downloading browsers.
|
|
8389
8392
|
*
|
|
8390
8393
|
* If you're using Puppeteer in a Node environment, this is the class you'll get
|
|
8391
|
-
* when you run `
|
|
8394
|
+
* when you run `import puppeteer from 'puppeteer'`.
|
|
8392
8395
|
*
|
|
8393
8396
|
* @remarks
|
|
8394
8397
|
* The most common method to use is {@link PuppeteerNode.launch | launch}, which
|
|
@@ -10,7 +10,7 @@ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("C
|
|
|
10
10
|
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
|
11
11
|
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
|
12
12
|
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
13
|
-
var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _i2, _n, _t, _e, _s, _l, _o, _d, _p, _g, _Class4_brand, _i3, _n2, _t3, _e2, _s2, _l2
|
|
13
|
+
var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _i2, _n, _t, _e, _s, _l, _o, _d, _p, _g, _Class4_brand, _i3, _n2, _t3, _e2, _s2, _l2) {
|
|
14
14
|
'use strict';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -2922,7 +2922,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
2922
2922
|
*/
|
|
2923
2923
|
// If moved update release-please config
|
|
2924
2924
|
// x-release-please-start-version
|
|
2925
|
-
const packageVersion = '25.0
|
|
2925
|
+
const packageVersion = '25.1.0';
|
|
2926
2926
|
// x-release-please-end
|
|
2927
2927
|
|
|
2928
2928
|
/**
|
|
@@ -2939,7 +2939,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
2939
2939
|
*/
|
|
2940
2940
|
async function importDebug() {
|
|
2941
2941
|
if (!debugModule) {
|
|
2942
|
-
debugModule = (await Promise.resolve().then(() => _interopRequireWildcard(require('
|
|
2942
|
+
debugModule = (await Promise.resolve().then(() => _interopRequireWildcard(require('node:util')))).debuglog;
|
|
2943
2943
|
}
|
|
2944
2944
|
return debugModule;
|
|
2945
2945
|
}
|
|
@@ -2947,16 +2947,16 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
2947
2947
|
* A debug function that can be used in any environment.
|
|
2948
2948
|
*
|
|
2949
2949
|
* @remarks
|
|
2950
|
-
* If used in Node, it falls back to
|
|
2951
|
-
* {@link https://
|
|
2950
|
+
* If used in Node, it falls back to Node's built-in
|
|
2951
|
+
* {@link https://nodejs.org/api/util.html#utildebuglogsection-callback | util.debuglog}. In the browser it
|
|
2952
2952
|
* uses `console.log`.
|
|
2953
2953
|
*
|
|
2954
|
-
* In Node, use the `
|
|
2954
|
+
* In Node, use the `NODE_DEBUG` environment variable to control logging:
|
|
2955
2955
|
*
|
|
2956
2956
|
* ```
|
|
2957
|
-
*
|
|
2958
|
-
*
|
|
2959
|
-
*
|
|
2957
|
+
* NODE_DEBUG=* // logs all channels
|
|
2958
|
+
* NODE_DEBUG=foo // logs the `foo` channel
|
|
2959
|
+
* NODE_DEBUG=foo* // logs any channels starting with `foo`
|
|
2960
2960
|
* ```
|
|
2961
2961
|
*
|
|
2962
2962
|
* In the browser, set `window.__PUPPETEER_DEBUG` to a string:
|
|
@@ -2987,7 +2987,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
2987
2987
|
if (captureLogs) {
|
|
2988
2988
|
capturedLogs.push(prefix + logArgs);
|
|
2989
2989
|
}
|
|
2990
|
-
(await importDebug())(prefix)(logArgs);
|
|
2990
|
+
(await importDebug())(prefix)(...logArgs);
|
|
2991
2991
|
};
|
|
2992
2992
|
}
|
|
2993
2993
|
return (...logArgs) => {
|
|
@@ -4049,6 +4049,23 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
4049
4049
|
_classPrivateFieldSet(_value, this, value);
|
|
4050
4050
|
_classPrivateFieldGet(_resolve, this).call(this);
|
|
4051
4051
|
}
|
|
4052
|
+
var _mutex = /*#__PURE__*/new WeakMap();
|
|
4053
|
+
var _onRelease = /*#__PURE__*/new WeakMap();
|
|
4054
|
+
class MutexGuard {
|
|
4055
|
+
constructor(mutex, onRelease) {
|
|
4056
|
+
_classPrivateFieldInitSpec(this, _mutex, void 0);
|
|
4057
|
+
_classPrivateFieldInitSpec(this, _onRelease, void 0);
|
|
4058
|
+
_classPrivateFieldSet(_mutex, this, mutex);
|
|
4059
|
+
_classPrivateFieldSet(_onRelease, this, onRelease);
|
|
4060
|
+
}
|
|
4061
|
+
[disposeSymbol]() {
|
|
4062
|
+
_classPrivateFieldGet(_onRelease, this)?.call(this);
|
|
4063
|
+
return _classPrivateFieldGet(_mutex, this).release();
|
|
4064
|
+
}
|
|
4065
|
+
}
|
|
4066
|
+
/**
|
|
4067
|
+
* @internal
|
|
4068
|
+
*/
|
|
4052
4069
|
var _locked = /*#__PURE__*/new WeakMap();
|
|
4053
4070
|
var _acquirers = /*#__PURE__*/new WeakMap();
|
|
4054
4071
|
class Mutex {
|
|
@@ -4120,18 +4137,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
4120
4137
|
*
|
|
4121
4138
|
* @public
|
|
4122
4139
|
*/
|
|
4123
|
-
_defineProperty(Mutex, "Guard",
|
|
4124
|
-
constructor(mutex, onRelease) {
|
|
4125
|
-
_classPrivateFieldInitSpec(this, _mutex2, void 0);
|
|
4126
|
-
_classPrivateFieldInitSpec(this, _onRelease, void 0);
|
|
4127
|
-
_classPrivateFieldSet(_mutex2, this, mutex);
|
|
4128
|
-
_classPrivateFieldSet(_onRelease, this, onRelease);
|
|
4129
|
-
}
|
|
4130
|
-
[disposeSymbol]() {
|
|
4131
|
-
_classPrivateFieldGet(_onRelease, this)?.call(this);
|
|
4132
|
-
return _classPrivateFieldGet(_mutex2, this).release();
|
|
4133
|
-
}
|
|
4134
|
-
}));
|
|
4140
|
+
_defineProperty(Mutex, "Guard", MutexGuard);
|
|
4135
4141
|
var _pageScreenshotMutex = /*#__PURE__*/new WeakMap();
|
|
4136
4142
|
var _screenshotOperationsCount = /*#__PURE__*/new WeakMap();
|
|
4137
4143
|
class BrowserContext extends EventEmitter {
|
|
@@ -5121,7 +5127,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
5121
5127
|
}) => {
|
|
5122
5128
|
return cssQuerySelectorAll(element, selector);
|
|
5123
5129
|
});
|
|
5124
|
-
const source = "\"use strict\";var
|
|
5130
|
+
const source = "\"use strict\";var N=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)N(t,r,{get:e[r],enumerable:!0})},G=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of B(e))!Y.call(t,s)&&s!==r&&N(t,s,{get:()=>e[s],enumerable:!(o=X(e,s))||o.enumerable});return t};var J=t=>G(N({},\"__esModule\",{value:!0}),t);var pe={};l(pe,{default:()=>he});module.exports=J(pe);var x=class extends Error{constructor(e,r){super(e,r),this.name=this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}},p=class extends x{};var c=class t{static create(e){return new t(e)}static async race(e){let r=new Set;try{let o=e.map(s=>s instanceof t?(s.#s&&r.add(s),s.valueOrThrow()):s);return await Promise.race(o)}finally{for(let o of r)o.reject(new Error(\"Timeout cleared\"))}}#e=!1;#r=!1;#o;#t;#a=new Promise(e=>{this.#t=e});#s;#i;constructor(e){e&&e.timeout>0&&(this.#i=new p(e.message),this.#s=setTimeout(()=>{this.reject(this.#i)},e.timeout))}#l(e){clearTimeout(this.#s),this.#o=e,this.#t()}resolve(e){this.#r||this.#e||(this.#e=!0,this.#l(e))}reject(e){this.#r||this.#e||(this.#r=!0,this.#l(e))}resolved(){return this.#e}finished(){return this.#e||this.#r}value(){return this.#o}#n;valueOrThrow(){return this.#n||(this.#n=(async()=>{if(await this.#a,this.#r)throw this.#o;return this.#o})()),this.#n}};var L=new Map,W=t=>{let e=L.get(t);return e||(e=new Function(`return ${t}`)(),L.set(t,e),e)};var E={};l(E,{ariaQuerySelector:()=>z,ariaQuerySelectorAll:()=>b});var z=(t,e)=>globalThis.__ariaQuerySelector(t,e),b=async function*(t,e){yield*await globalThis.__ariaQuerySelectorAll(t,e)};var v={};l(v,{cssQuerySelector:()=>K,cssQuerySelectorAll:()=>Z});var K=(t,e)=>t.querySelector(e),Z=function(t,e){return t.querySelectorAll(e)};var A={};l(A,{CustomQuerySelectorRegistry:()=>y,customQuerySelectors:()=>P});var y=class{#e=new Map;register(e,r){if(!r.queryOne&&r.queryAll){let o=r.queryAll;r.queryOne=(s,i)=>{for(let n of o(s,i))return n;return null}}else if(r.queryOne&&!r.queryAll){let o=r.queryOne;r.queryAll=(s,i)=>{let n=o(s,i);return n?[n]:[]}}else if(!r.queryOne||!r.queryAll)throw new Error(\"At least one query method must be defined.\");this.#e.set(e,{querySelector:r.queryOne,querySelectorAll:r.queryAll})}unregister(e){this.#e.delete(e)}get(e){return this.#e.get(e)}clear(){this.#e.clear()}},P=new y;var R={};l(R,{pierceQuerySelector:()=>ee,pierceQuerySelectorAll:()=>te});var ee=(t,e)=>{let r=null,o=s=>{let i=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT);do{let n=i.currentNode;n.shadowRoot&&o(n.shadowRoot),!(n instanceof ShadowRoot)&&n!==s&&!r&&n.matches(e)&&(r=n)}while(!r&&i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r},te=(t,e)=>{let r=[],o=s=>{let i=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT);do{let n=i.currentNode;n.shadowRoot&&o(n.shadowRoot),!(n instanceof ShadowRoot)&&n!==s&&n.matches(e)&&r.push(n)}while(i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r};var u=(t,e)=>{if(!t)throw new Error(e)};var w=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=new MutationObserver(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())}),this.#o.observe(this.#r,{childList:!0,subtree:!0,attributes:!0})}async stop(){u(this.#t,\"Polling never started.\"),this.#t.finished()||this.#t.reject(new Error(\"Polling stopped\")),this.#o&&(this.#o.disconnect(),this.#o=void 0)}result(){return u(this.#t,\"Polling never started.\"),this.#t.valueOrThrow()}},T=class{#e;#r;constructor(e){this.#e=e}async start(){let e=this.#r=c.create(),r=await this.#e();if(r){e.resolve(r);return}let o=async()=>{if(e.finished())return;let s=await this.#e();if(!s){window.requestAnimationFrame(o);return}e.resolve(s),await this.stop()};window.requestAnimationFrame(o)}async stop(){u(this.#r,\"Polling never started.\"),this.#r.finished()||this.#r.reject(new Error(\"Polling stopped\"))}result(){return u(this.#r,\"Polling never started.\"),this.#r.valueOrThrow()}},S=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=setInterval(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())},this.#r)}async stop(){u(this.#t,\"Polling never started.\"),this.#t.finished()||this.#t.reject(new Error(\"Polling stopped\")),this.#o&&(clearInterval(this.#o),this.#o=void 0)}result(){return u(this.#t,\"Polling never started.\"),this.#t.valueOrThrow()}};var _={};l(_,{PCombinator:()=>H,pQuerySelector:()=>fe,pQuerySelectorAll:()=>$});var a=class{static async*map(e,r){for await(let o of e)yield await r(o)}static async*flatMap(e,r){for await(let o of e)yield*r(o)}static async collect(e){let r=[];for await(let o of e)r.push(o);return r}static async first(e){for await(let r of e)return r}};var C={};l(C,{textQuerySelectorAll:()=>m});var re=new Set([\"checkbox\",\"image\",\"radio\"]),oe=t=>t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement||t instanceof HTMLInputElement&&!re.has(t.type),se=new Set([\"SCRIPT\",\"STYLE\"]),f=t=>!se.has(t.nodeName)&&!document.head?.contains(t),I=new WeakMap,F=t=>{for(;t;)I.delete(t),t instanceof ShadowRoot?t=t.host:t=t.parentNode},j=new WeakSet,ne=new MutationObserver(t=>{for(let e of t)F(e.target)}),d=t=>{let e=I.get(t);if(e||(e={full:\"\",immediate:[]},!f(t)))return e;let r=\"\";if(oe(t))e.full=t.value,e.immediate.push(t.value),t.addEventListener(\"input\",o=>{F(o.target)},{once:!0,capture:!0});else{for(let o=t.firstChild;o;o=o.nextSibling){if(o.nodeType===Node.TEXT_NODE){e.full+=o.nodeValue??\"\",r+=o.nodeValue??\"\";continue}r&&e.immediate.push(r),r=\"\",o.nodeType===Node.ELEMENT_NODE&&(e.full+=d(o).full)}r&&e.immediate.push(r),t instanceof Element&&t.shadowRoot&&(e.full+=d(t.shadowRoot).full),j.has(t)||(ne.observe(t,{childList:!0,characterData:!0,subtree:!0}),j.add(t))}return I.set(t,e),e};var m=function*(t,e){let r=!1;for(let o of t.childNodes)if(o instanceof Element&&f(o)){let s;o.shadowRoot?s=m(o.shadowRoot,e):s=m(o,e);for(let i of s)yield i,r=!0}r||t instanceof Element&&f(t)&&d(t).full.includes(e)&&(yield t)};var k={};l(k,{checkVisibility:()=>le,pierce:()=>g,pierceAll:()=>O});var ie=[\"hidden\",\"collapse\"],le=(t,e)=>{if(!t)return e===!1;if(e===void 0)return t;let r=t.nodeType===Node.TEXT_NODE?t.parentElement:t,o=window.getComputedStyle(r),s=o&&!ie.includes(o.visibility)&&!ae(r);return e===s?t:!1};function ae(t){let e=t.getBoundingClientRect();return e.width===0||e.height===0}var ce=t=>\"shadowRoot\"in t&&t.shadowRoot instanceof ShadowRoot;function*g(t){ce(t)?yield t.shadowRoot:yield t}function*O(t){t=g(t).next().value,yield t;let e=[document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT)];for(let r of e){let o;for(;o=r.nextNode();)o.shadowRoot&&(yield o.shadowRoot,e.push(document.createTreeWalker(o.shadowRoot,NodeFilter.SHOW_ELEMENT)))}}var D={};l(D,{xpathQuerySelectorAll:()=>q});var q=function*(t,e,r=-1){let s=(t.ownerDocument||document).evaluate(e,t,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE),i=[],n;for(;(n=s.iterateNext())&&(i.push(n),!(r&&i.length===r)););for(let h=0;h<i.length;h++)n=i[h],yield n,i[h]=null};var ue=/[-\\w\\P{ASCII}*]/u,H=(r=>(r.Descendent=\">>>\",r.Child=\">>>>\",r))(H||{}),V=t=>\"querySelectorAll\"in t,Q=class{#e;#r=[];#o=void 0;elements;constructor(e,r){this.elements=[e],this.#e=r,this.#t()}async run(){for(typeof this.#o==\"string\"&&this.#o.trimStart()===\":scope\"&&this.#t();this.#o!==void 0;this.#t()){let e=this.#o;typeof e==\"string\"?e[0]&&ue.test(e[0])?this.elements=a.flatMap(this.elements,async function*(r){V(r)&&(yield*r.querySelectorAll(e))}):this.elements=a.flatMap(this.elements,async function*(r){if(!r.parentElement){if(!V(r))return;yield*r.querySelectorAll(e);return}let o=0;for(let s of r.parentElement.children)if(++o,s===r)break;yield*r.parentElement.querySelectorAll(`:scope>:nth-child(${o})${e}`)}):this.elements=a.flatMap(this.elements,async function*(r){switch(e.name){case\"text\":yield*m(r,e.value);break;case\"xpath\":yield*q(r,e.value);break;case\"aria\":yield*b(r,e.value);break;default:let o=P.get(e.name);if(!o)throw new Error(`Unknown selector type: ${e.name}`);yield*o.querySelectorAll(r,e.value)}})}}#t(){if(this.#r.length!==0){this.#o=this.#r.shift();return}if(this.#e.length===0){this.#o=void 0;return}let e=this.#e.shift();switch(e){case\">>>>\":{this.elements=a.flatMap(this.elements,g),this.#t();break}case\">>>\":{this.elements=a.flatMap(this.elements,O),this.#t();break}default:this.#r=e,this.#t();break}}},M=class{#e=new WeakMap;calculate(e,r=[]){if(e===null)return r;e instanceof ShadowRoot&&(e=e.host);let o=this.#e.get(e);if(o)return[...o,...r];let s=0;for(let n=e.previousSibling;n;n=n.previousSibling)++s;let i=this.calculate(e.parentNode,[s]);return this.#e.set(e,i),[...i,...r]}},U=(t,e)=>{if(t.length+e.length===0)return 0;let[r=-1,...o]=t,[s=-1,...i]=e;return r===s?U(o,i):r<s?-1:1},de=async function*(t){let e=new Set;for await(let o of t)e.add(o);let r=new M;yield*[...e.values()].map(o=>[o,r.calculate(o)]).sort(([,o],[,s])=>U(o,s)).map(([o])=>o)},$=function(t,e){let r=JSON.parse(e);if(r.some(o=>{let s=0;return o.some(i=>(typeof i==\"string\"?++s:s=0,s>1))}))throw new Error(\"Multiple deep combinators found in sequence.\");return de(a.flatMap(r,o=>{let s=new Q(t,o);return s.run(),s.elements}))},fe=async function(t,e){for await(let r of $(t,e))return r;return null};var me=Object.freeze({...E,...A,...R,..._,...C,...k,...D,...v,Deferred:c,createFunction:W,createTextContent:d,IntervalPoller:S,isSuitableNodeForTextMatching:f,MutationPoller:w,RAFPoller:T}),he=me;\n";
|
|
5125
5131
|
|
|
5126
5132
|
/**
|
|
5127
5133
|
* @license
|
|
@@ -16261,7 +16267,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
16261
16267
|
var _name4 = /*#__PURE__*/new WeakMap();
|
|
16262
16268
|
var _disposables = /*#__PURE__*/new WeakMap();
|
|
16263
16269
|
var _bindings = /*#__PURE__*/new WeakMap();
|
|
16264
|
-
var
|
|
16270
|
+
var _mutex2 = /*#__PURE__*/new WeakMap();
|
|
16265
16271
|
var _ExecutionContext_brand = /*#__PURE__*/new WeakSet();
|
|
16266
16272
|
var _bindingsInstalled = /*#__PURE__*/new WeakMap();
|
|
16267
16273
|
var _puppeteerUtil = /*#__PURE__*/new WeakMap();
|
|
@@ -16278,7 +16284,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
16278
16284
|
_classPrivateFieldInitSpec(this, _bindings, new Map());
|
|
16279
16285
|
// If multiple waitFor are set up asynchronously, we need to wait for the
|
|
16280
16286
|
// first one to set up the binding in the page before running the others.
|
|
16281
|
-
_classPrivateFieldInitSpec(this,
|
|
16287
|
+
_classPrivateFieldInitSpec(this, _mutex2, new Mutex());
|
|
16282
16288
|
_classPrivateFieldInitSpec(this, _bindingsInstalled, false);
|
|
16283
16289
|
_classPrivateFieldInitSpec(this, _puppeteerUtil, void 0);
|
|
16284
16290
|
_classPrivateFieldSet(_client8, this, client);
|
|
@@ -16434,7 +16440,7 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
16434
16440
|
if (_classPrivateFieldGet(_bindings, this).has(binding.name)) {
|
|
16435
16441
|
return;
|
|
16436
16442
|
}
|
|
16437
|
-
const _ = __addDisposableResource$2(env_1, await _classPrivateFieldGet(
|
|
16443
|
+
const _ = __addDisposableResource$2(env_1, await _classPrivateFieldGet(_mutex2, this).acquire(), false);
|
|
16438
16444
|
try {
|
|
16439
16445
|
await _classPrivateFieldGet(_client8, this).send('Runtime.addBinding', _classPrivateFieldGet(_name4, this) ? {
|
|
16440
16446
|
name: CDP_BINDING_PREFIX + binding.name,
|
|
@@ -21584,7 +21590,6 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
21584
21590
|
* @internal
|
|
21585
21591
|
*/
|
|
21586
21592
|
async invokeTool(tool, input) {
|
|
21587
|
-
// @ts-expect-error WebMCP is not yet in the Protocol types.
|
|
21588
21593
|
return await _classPrivateFieldGet(_client16, this).send('WebMCP.invokeTool', {
|
|
21589
21594
|
frameId: tool.frame._id,
|
|
21590
21595
|
toolName: tool.name,
|
|
@@ -21606,7 +21611,6 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
21606
21611
|
_classPrivateFieldGet(_client16, this).off('WebMCP.toolsAdded', _classPrivateFieldGet(_onToolsAdded, this));
|
|
21607
21612
|
_classPrivateFieldGet(_client16, this).off('WebMCP.toolsRemoved', _classPrivateFieldGet(_onToolsRemoved, this));
|
|
21608
21613
|
_classPrivateFieldGet(_client16, this).off('WebMCP.toolInvoked', _classPrivateFieldGet(_onToolInvoked, this));
|
|
21609
|
-
// @ts-expect-error M148 has non-final status type, update expected in M149
|
|
21610
21614
|
_classPrivateFieldGet(_client16, this).off('WebMCP.toolResponded', _classPrivateFieldGet(_onToolResponded, this));
|
|
21611
21615
|
_classPrivateFieldSet(_client16, this, client);
|
|
21612
21616
|
_assertClassBrand(_WebMCP_brand, this, _bindListeners).call(this);
|
|
@@ -21622,7 +21626,6 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
21622
21626
|
_classPrivateFieldGet(_client16, this).on('WebMCP.toolsAdded', _classPrivateFieldGet(_onToolsAdded, this));
|
|
21623
21627
|
_classPrivateFieldGet(_client16, this).on('WebMCP.toolsRemoved', _classPrivateFieldGet(_onToolsRemoved, this));
|
|
21624
21628
|
_classPrivateFieldGet(_client16, this).on('WebMCP.toolInvoked', _classPrivateFieldGet(_onToolInvoked, this));
|
|
21625
|
-
// @ts-expect-error M148 has non-final status type, update expected in M149
|
|
21626
21629
|
_classPrivateFieldGet(_client16, this).on('WebMCP.toolResponded', _classPrivateFieldGet(_onToolResponded, this));
|
|
21627
21630
|
}
|
|
21628
21631
|
var __addDisposableResource$1 = undefined && undefined.__addDisposableResource || function (env, value, async) {
|
|
@@ -24448,7 +24451,6 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
24448
24451
|
});
|
|
24449
24452
|
}
|
|
24450
24453
|
await session.send('Network.emulateNetworkConditionsByRule', {
|
|
24451
|
-
// @ts-expect-error offline cannot be undefined before M149.
|
|
24452
24454
|
offline: _classPrivateFieldGet(_blocklist, this).length > 0 ? true : undefined,
|
|
24453
24455
|
matchedNetworkConditions
|
|
24454
24456
|
});
|
|
@@ -27130,9 +27132,9 @@ var Puppeteer = function (exports, _PuppeteerURL, _LazyArg, _ARIAQueryHandler, _
|
|
|
27130
27132
|
* @internal
|
|
27131
27133
|
*/
|
|
27132
27134
|
const PUPPETEER_REVISIONS = Object.freeze({
|
|
27133
|
-
chrome: '
|
|
27134
|
-
'chrome-headless-shell': '
|
|
27135
|
-
firefox: '
|
|
27135
|
+
chrome: '149.0.7827.22',
|
|
27136
|
+
'chrome-headless-shell': '149.0.7827.22',
|
|
27137
|
+
firefox: 'stable_151.0'
|
|
27136
27138
|
});
|
|
27137
27139
|
|
|
27138
27140
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TargetManager.d.ts","sourceRoot":"","sources":["../../../src/cdp/TargetManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAKvD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAGjE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EACtC,OAAO,CAAC,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,aAAa,KAC1B,SAAS,CAAC;AASf;;;;;;;;;;;GAWG;AACH,qBAAa,aACX,SAAQ,YAAY,CAAC,mBAAmB,CACxC,YAAW,aAAa;;gBA2DtB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,iCAAiC,UAAO,EACxC,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,SAAS,CAAC,EAAE,MAAM,EAAE;IAyBhB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;IAI1D,OAAO,IAAI,IAAI;IAYf,mBAAmB,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;IAIrD,wBAAwB,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;IA6R3E;;OAEG;IACH,YAAY,GAAI,KAAK,MAAM,KAAG,OAAO,CA0BnC;
|
|
1
|
+
{"version":3,"file":"TargetManager.d.ts","sourceRoot":"","sources":["../../../src/cdp/TargetManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAKvD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAGjE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EACtC,OAAO,CAAC,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,aAAa,KAC1B,SAAS,CAAC;AASf;;;;;;;;;;;GAWG;AACH,qBAAa,aACX,SAAQ,YAAY,CAAC,mBAAmB,CACxC,YAAW,aAAa;;gBA2DtB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,iCAAiC,UAAO,EACxC,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,SAAS,CAAC,EAAE,MAAM,EAAE;IAyBhB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;IAI1D,OAAO,IAAI,IAAI;IAYf,mBAAmB,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;IAIrD,wBAAwB,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;IA6R3E;;OAEG;IACH,YAAY,GAAI,KAAK,MAAM,KAAG,OAAO,CA0BnC;CAkDH"}
|
|
@@ -405,7 +405,6 @@ export class TargetManager extends EventEmitter {
|
|
|
405
405
|
});
|
|
406
406
|
}
|
|
407
407
|
await session.send('Network.emulateNetworkConditionsByRule', {
|
|
408
|
-
// @ts-expect-error offline cannot be undefined before M149.
|
|
409
408
|
offline: this.#blocklist.length > 0 ? true : undefined,
|
|
410
409
|
matchedNetworkConditions,
|
|
411
410
|
});
|