chrome-devtools-mcp-for-extension 0.19.2 → 0.20.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/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +13 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +1 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +5 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +10 -20
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +0 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +6 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +1 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +110 -99
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +1 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +1 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +21 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +102 -86
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +32 -450
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +32 -29
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +5 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +10 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +26 -15
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +34 -32
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +49 -312
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +4 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +2 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +0 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +51 -17
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +21 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +11 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +4 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +11 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +34 -24
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +52 -10
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +4 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +39 -35
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +10 -47
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +29 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +5 -20
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +17 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +1 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +428 -121
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +8 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +44 -34
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +64 -19
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +139 -12
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +5 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +3 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +20 -18
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +26 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +3 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +54 -14
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +16 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +19 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +240 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +12 -17
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +38 -29
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +11 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +80 -31
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +1301 -174
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +67 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +62 -91
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +188 -100
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +30 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +50 -34
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +152 -101
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +11 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +25 -26
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +46 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +10 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +82 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +33 -15
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +105 -14
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +38 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +5 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +6 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +6 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +16 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +6 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +12 -16
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +8 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +6 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +4 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +11 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +7 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +8 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +4 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +29 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +59 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +26 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +18 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +12 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +3 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +14 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +13 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +4 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +9 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +25 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +41 -48
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +38 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +5 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
- package/build/src/McpContext.js +8 -1
- package/build/src/tools/bookmarks.js +0 -1
- package/build/src/tools/gemini-web.js +17 -25
- package/build/src/tools/snapshot.js +9 -2
- package/package.json +3 -3
package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js
CHANGED
|
@@ -233,7 +233,7 @@ export const stripLineBreaks = (inputStr) => {
|
|
|
233
233
|
};
|
|
234
234
|
const EXTENDED_KEBAB_CASE_REGEXP = /^([a-z0-9]+(?:-[a-z0-9]+)*\.)*[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
235
235
|
/**
|
|
236
|
-
* Tests if the `inputStr` is following the extended Kebab Case naming
|
|
236
|
+
* Tests if the `inputStr` is following the extended Kebab Case naming convention,
|
|
237
237
|
* where words are separated with either a dash (`-`) or a dot (`.`), and all
|
|
238
238
|
* characters must be lower-case alphanumeric.
|
|
239
239
|
*
|
|
@@ -351,7 +351,7 @@ export const escapeForRegExp = (str) => {
|
|
|
351
351
|
};
|
|
352
352
|
export const naturalOrderComparator = (a, b) => {
|
|
353
353
|
const chunk = /^\d+|^\D+/;
|
|
354
|
-
let
|
|
354
|
+
let chunkA, chunkB, numA, numB;
|
|
355
355
|
while (true) {
|
|
356
356
|
if (a) {
|
|
357
357
|
if (!b) {
|
|
@@ -364,33 +364,33 @@ export const naturalOrderComparator = (a, b) => {
|
|
|
364
364
|
}
|
|
365
365
|
return 0;
|
|
366
366
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
if (
|
|
367
|
+
chunkA = a.match(chunk)[0];
|
|
368
|
+
chunkB = b.match(chunk)[0];
|
|
369
|
+
numA = !Number.isNaN(Number(chunkA));
|
|
370
|
+
numB = !Number.isNaN(Number(chunkB));
|
|
371
|
+
if (numA && !numB) {
|
|
372
372
|
return -1;
|
|
373
373
|
}
|
|
374
|
-
if (
|
|
374
|
+
if (numB && !numA) {
|
|
375
375
|
return 1;
|
|
376
376
|
}
|
|
377
|
-
if (
|
|
378
|
-
const diff = Number(
|
|
377
|
+
if (numA && numB) {
|
|
378
|
+
const diff = Number(chunkA) - Number(chunkB);
|
|
379
379
|
if (diff) {
|
|
380
380
|
return diff;
|
|
381
381
|
}
|
|
382
|
-
if (
|
|
383
|
-
if (!Number(
|
|
384
|
-
return
|
|
382
|
+
if (chunkA.length !== chunkB.length) {
|
|
383
|
+
if (!Number(chunkA) && !Number(chunkB)) { // chunks are strings of all 0s (special case)
|
|
384
|
+
return chunkA.length - chunkB.length;
|
|
385
385
|
}
|
|
386
|
-
return
|
|
386
|
+
return chunkB.length - chunkA.length;
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
|
-
else if (
|
|
390
|
-
return (
|
|
389
|
+
else if (chunkA !== chunkB) {
|
|
390
|
+
return (chunkA < chunkB) ? -1 : 1;
|
|
391
391
|
}
|
|
392
|
-
a = a.substring(
|
|
393
|
-
b = b.substring(
|
|
392
|
+
a = a.substring(chunkA.length);
|
|
393
|
+
b = b.substring(chunkB.length);
|
|
394
394
|
}
|
|
395
395
|
};
|
|
396
396
|
export const base64ToSize = function (content) {
|
|
@@ -458,19 +458,21 @@ export const createPlainTextSearchRegex = function (query, flags) {
|
|
|
458
458
|
export const toLowerCaseString = function (input) {
|
|
459
459
|
return input.toLowerCase();
|
|
460
460
|
};
|
|
461
|
+
/**
|
|
462
|
+
* 1: two or more consecutive uppercase letters. This is useful for identifying acronyms
|
|
463
|
+
* 2: lookahead assertion that matches a word boundary
|
|
464
|
+
* 3: numeronym: single letter followed by number and another letter
|
|
465
|
+
* 4: word starting with an optional uppercase letter
|
|
466
|
+
* 5: single digit followed by word to handle '3D' or '2px' (this might be controverial)
|
|
467
|
+
* 6: single uppercase letter or number
|
|
468
|
+
* 7: a dot character. We extract it into a separate word and remove dashes around it later.
|
|
469
|
+
* This is makes more sense conceptually and allows accounting for all possible word variants.
|
|
470
|
+
* Making dot a part of a word prevent us from handling acronyms or numeronyms after the word
|
|
471
|
+
* correctly without making the RegExp prohibitively complicated.
|
|
472
|
+
* https://regex101.com/r/FhMVKc/1
|
|
473
|
+
* <---1---><------------2-----------> <---------3--------> <-----4----> <------5-----> <-----6----> <7>
|
|
474
|
+
*/
|
|
461
475
|
const WORD = /[A-Z]{2,}(?=[A-Z0-9][a-z0-9]+|\b|_)|[A-Za-z][0-9]+[a-z]?|[A-Z]?[a-z]+|[0-9][A-Za-z]+|[A-Z]|[0-9]+|[.]/g;
|
|
462
|
-
// <---1---><------------2-----------> <---------3--------> <-----4----> <------5-----> <-----6----> <7>
|
|
463
|
-
// 1: two or more consecutive uppercase letters. This is useful for identifying acronyms
|
|
464
|
-
// 2: lookahead assertion that matches a word boundary
|
|
465
|
-
// 3: numeronym: single letter followed by number and another letter
|
|
466
|
-
// 4: word starting with an optional uppercase letter
|
|
467
|
-
// 5: single digit followed by word to handle '3D' or '2px' (this might be controverial)
|
|
468
|
-
// 6: single uppercase letter or number
|
|
469
|
-
// 7: a dot character. We extract it into a separate word and remove dashes around it later.
|
|
470
|
-
// This is makes more sense conceptually and allows accounting for all possible word variants.
|
|
471
|
-
// Making dot a part of a word prevent us from handling acronyms or numeronyms after the word
|
|
472
|
-
// correctly without making the RegExp prohibitively complicated.
|
|
473
|
-
// https://regex101.com/r/FhMVKc/1
|
|
474
476
|
export const toKebabCase = function (input) {
|
|
475
477
|
return (input.match?.(WORD)?.map(w => w.toLowerCase()).join('-').replaceAll('-.-', '.') || input);
|
|
476
478
|
};
|
|
@@ -507,7 +509,7 @@ export function toSnakeCase(text) {
|
|
|
507
509
|
.replace(/^_|_$/g, ''); // 5
|
|
508
510
|
return result;
|
|
509
511
|
}
|
|
510
|
-
|
|
512
|
+
/** Replaces the last occurrence of parameter `search` with parameter `replacement` in `input` **/
|
|
511
513
|
export const replaceLast = function (input, search, replacement) {
|
|
512
514
|
const replacementStartIndex = input.lastIndexOf(search);
|
|
513
515
|
if (replacementStartIndex === -1) {
|
|
@@ -532,5 +534,5 @@ export const concatBase64 = function (lhs, rhs) {
|
|
|
532
534
|
}
|
|
533
535
|
const lhsLeaveAsIs = lhs.substring(0, lhs.length - 4);
|
|
534
536
|
const lhsToDecode = lhs.substring(lhs.length - 4);
|
|
535
|
-
return lhsLeaveAsIs +
|
|
537
|
+
return lhsLeaveAsIs + globalThis.btoa(globalThis.atob(lhsToDecode) + globalThis.atob(rhs));
|
|
536
538
|
};
|
package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
class WebWorkerScope {
|
|
5
|
+
postMessage(message) {
|
|
6
|
+
self.postMessage(message);
|
|
7
|
+
}
|
|
8
|
+
set onmessage(listener) {
|
|
9
|
+
self.onmessage = listener;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
class WebWorker {
|
|
13
|
+
#workerPromise;
|
|
14
|
+
#disposed;
|
|
15
|
+
#rejectWorkerPromise;
|
|
16
|
+
constructor(workerLocation) {
|
|
17
|
+
this.#workerPromise = new Promise((fulfill, reject) => {
|
|
18
|
+
this.#rejectWorkerPromise = reject;
|
|
19
|
+
const worker = new Worker(new URL(workerLocation), { type: 'module' });
|
|
20
|
+
worker.onerror = event => {
|
|
21
|
+
console.error(`Failed to load worker for ${workerLocation}:`, event);
|
|
22
|
+
};
|
|
23
|
+
worker.onmessage = (event) => {
|
|
24
|
+
console.assert(event.data === 'workerReady');
|
|
25
|
+
worker.onmessage = null;
|
|
26
|
+
fulfill(worker);
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
postMessage(message, transfer) {
|
|
31
|
+
void this.#workerPromise.then(worker => {
|
|
32
|
+
if (!this.#disposed) {
|
|
33
|
+
worker.postMessage(message, transfer ?? []);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
dispose() {
|
|
38
|
+
this.#disposed = true;
|
|
39
|
+
void this.#workerPromise.then(worker => worker.terminate());
|
|
40
|
+
}
|
|
41
|
+
terminate(immediately = false) {
|
|
42
|
+
if (immediately) {
|
|
43
|
+
this.#rejectWorkerPromise?.(new Error('Worker terminated'));
|
|
44
|
+
}
|
|
45
|
+
this.dispose();
|
|
46
|
+
}
|
|
47
|
+
set onmessage(listener) {
|
|
48
|
+
void this.#workerPromise.then(worker => {
|
|
49
|
+
worker.onmessage = listener;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
set onerror(listener) {
|
|
53
|
+
void this.#workerPromise.then(worker => {
|
|
54
|
+
worker.onerror = listener;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export const HOST_RUNTIME = {
|
|
59
|
+
createWorker(url) {
|
|
60
|
+
return new WebWorker(url);
|
|
61
|
+
},
|
|
62
|
+
workerScope: new WebWorkerScope(),
|
|
63
|
+
};
|
package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import * as WorkerThreads from 'node:worker_threads';
|
|
5
|
+
class NodeWorkerScope {
|
|
6
|
+
postMessage(message) {
|
|
7
|
+
WorkerThreads.parentPort?.postMessage(message);
|
|
8
|
+
}
|
|
9
|
+
set onmessage(listener) {
|
|
10
|
+
WorkerThreads.parentPort?.on('message', data => {
|
|
11
|
+
listener({ data });
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
class NodeWorker {
|
|
16
|
+
#workerPromise;
|
|
17
|
+
#disposed = false;
|
|
18
|
+
#rejectWorkerPromise;
|
|
19
|
+
constructor(url) {
|
|
20
|
+
this.#workerPromise = new Promise((resolve, reject) => {
|
|
21
|
+
this.#rejectWorkerPromise = reject;
|
|
22
|
+
const worker = new WorkerThreads.Worker(new URL(url));
|
|
23
|
+
worker.once('message', (message) => {
|
|
24
|
+
if (message === 'workerReady') {
|
|
25
|
+
resolve(worker);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
worker.on('error', reject);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
postMessage(message) {
|
|
32
|
+
void this.#workerPromise.then(worker => {
|
|
33
|
+
if (!this.#disposed) {
|
|
34
|
+
worker.postMessage(message);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
dispose() {
|
|
39
|
+
this.#disposed = true;
|
|
40
|
+
void this.#workerPromise.then(worker => worker.terminate());
|
|
41
|
+
}
|
|
42
|
+
terminate(immediately) {
|
|
43
|
+
if (immediately) {
|
|
44
|
+
this.#rejectWorkerPromise?.(new Error('Worker terminated'));
|
|
45
|
+
}
|
|
46
|
+
this.dispose();
|
|
47
|
+
}
|
|
48
|
+
set onmessage(listener) {
|
|
49
|
+
void this.#workerPromise.then(worker => {
|
|
50
|
+
worker.on('message', data => {
|
|
51
|
+
if (!this.#disposed) {
|
|
52
|
+
listener({ data });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
set onerror(listener) {
|
|
58
|
+
void this.#workerPromise.then(worker => {
|
|
59
|
+
worker.on('error', (error) => {
|
|
60
|
+
if (!this.#disposed) {
|
|
61
|
+
listener({ type: 'error', ...error });
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export const HOST_RUNTIME = {
|
|
68
|
+
createWorker(url) {
|
|
69
|
+
return new NodeWorker(url);
|
|
70
|
+
},
|
|
71
|
+
workerScope: new NodeWorkerScope(),
|
|
72
|
+
};
|
|
@@ -6,7 +6,7 @@ import * as Brand from './Brand.js';
|
|
|
6
6
|
import * as Constructor from './Constructor.js';
|
|
7
7
|
import * as DateUtilities from './DateUtilities.js';
|
|
8
8
|
import * as DevToolsPath from './DevToolsPath.js';
|
|
9
|
-
import * as
|
|
9
|
+
import * as HostRuntime from './HostRuntime.js';
|
|
10
10
|
import * as KeyboardUtilities from './KeyboardUtilities.js';
|
|
11
11
|
import * as MapUtilities from './MapUtilities.js';
|
|
12
12
|
import * as MimeType from './MimeType.js';
|
|
@@ -23,4 +23,4 @@ import * as UserVisibleError from './UserVisibleError.js';
|
|
|
23
23
|
* error).
|
|
24
24
|
*/
|
|
25
25
|
export { assertNever, assertNotNullOrUndefined, assertUnhandled } from './TypescriptUtilities.js';
|
|
26
|
-
export { ArrayUtilities, Brand, Constructor, DateUtilities, DevToolsPath,
|
|
26
|
+
export { ArrayUtilities, Brand, Constructor, DateUtilities, DevToolsPath, HostRuntime, KeyboardUtilities, MapUtilities, MimeType, NumberUtilities, StringUtilities, Timing, TypedArrayUtilities, TypeScriptUtilities, UIString, UserVisibleError, };
|
package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
/**
|
|
5
|
+
* Keep this in sync with https://source.chromium.org/chromium/chromium/src/+/main:third_party/inspector_protocol/crdtp/dispatch.h.
|
|
6
|
+
*/
|
|
7
|
+
export var CDPErrorStatus;
|
|
8
|
+
(function (CDPErrorStatus) {
|
|
9
|
+
CDPErrorStatus[CDPErrorStatus["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
|
|
10
|
+
CDPErrorStatus[CDPErrorStatus["INVALID_REQUEST"] = -32600] = "INVALID_REQUEST";
|
|
11
|
+
CDPErrorStatus[CDPErrorStatus["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
|
|
12
|
+
CDPErrorStatus[CDPErrorStatus["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
|
|
13
|
+
CDPErrorStatus[CDPErrorStatus["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
|
|
14
|
+
CDPErrorStatus[CDPErrorStatus["SERVER_ERROR"] = -32000] = "SERVER_ERROR";
|
|
15
|
+
CDPErrorStatus[CDPErrorStatus["SESSION_NOT_FOUND"] = -32001] = "SESSION_NOT_FOUND";
|
|
16
|
+
CDPErrorStatus[CDPErrorStatus["DEVTOOLS_STUB_ERROR"] = -32015] = "DEVTOOLS_STUB_ERROR";
|
|
17
|
+
})(CDPErrorStatus || (CDPErrorStatus = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
let connectionFactory;
|
|
5
|
+
export class ConnectionTransport {
|
|
6
|
+
static setFactory(factory) {
|
|
7
|
+
connectionFactory = factory;
|
|
8
|
+
}
|
|
9
|
+
static getFactory() {
|
|
10
|
+
return connectionFactory;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import { CDPErrorStatus } from './CDPConnection.js';
|
|
5
|
+
import { InspectorBackend, test } from './InspectorBackend.js';
|
|
6
|
+
const LongPollingMethods = new Set(['CSS.takeComputedStyleUpdates']);
|
|
7
|
+
export class DevToolsCDPConnection {
|
|
8
|
+
#transport;
|
|
9
|
+
#lastMessageId = 1;
|
|
10
|
+
#pendingResponsesCount = 0;
|
|
11
|
+
#pendingLongPollingMessageIds = new Set();
|
|
12
|
+
#pendingScripts = [];
|
|
13
|
+
#callbacks = new Map();
|
|
14
|
+
#observers = new Set();
|
|
15
|
+
constructor(transport) {
|
|
16
|
+
this.#transport = transport;
|
|
17
|
+
test.deprecatedRunAfterPendingDispatches = this.deprecatedRunAfterPendingDispatches.bind(this);
|
|
18
|
+
test.sendRawMessage = this.sendRawMessageForTesting.bind(this);
|
|
19
|
+
this.#transport.setOnMessage(this.onMessage.bind(this));
|
|
20
|
+
this.#transport.setOnDisconnect(reason => {
|
|
21
|
+
this.#observers.forEach(observer => observer.onDisconnect(reason));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
observe(observer) {
|
|
25
|
+
this.#observers.add(observer);
|
|
26
|
+
}
|
|
27
|
+
unobserve(observer) {
|
|
28
|
+
this.#observers.delete(observer);
|
|
29
|
+
}
|
|
30
|
+
send(method, params, sessionId) {
|
|
31
|
+
const messageId = ++this.#lastMessageId;
|
|
32
|
+
const messageObject = {
|
|
33
|
+
id: messageId,
|
|
34
|
+
method,
|
|
35
|
+
};
|
|
36
|
+
if (params) {
|
|
37
|
+
messageObject.params = params;
|
|
38
|
+
}
|
|
39
|
+
if (sessionId) {
|
|
40
|
+
messageObject.sessionId = sessionId;
|
|
41
|
+
}
|
|
42
|
+
if (test.dumpProtocol) {
|
|
43
|
+
test.dumpProtocol('frontend: ' + JSON.stringify(messageObject));
|
|
44
|
+
}
|
|
45
|
+
if (test.onMessageSent) {
|
|
46
|
+
const domain = method.split('.')[0];
|
|
47
|
+
const paramsObject = JSON.parse(JSON.stringify(params || {}));
|
|
48
|
+
test.onMessageSent({ domain, method, params: paramsObject, id: messageId, sessionId });
|
|
49
|
+
}
|
|
50
|
+
++this.#pendingResponsesCount;
|
|
51
|
+
if (LongPollingMethods.has(method)) {
|
|
52
|
+
this.#pendingLongPollingMessageIds.add(messageId);
|
|
53
|
+
}
|
|
54
|
+
return new Promise(resolve => {
|
|
55
|
+
this.#callbacks.set(messageId, { resolve, method, sessionId });
|
|
56
|
+
this.#transport.sendRawMessage(JSON.stringify(messageObject));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
resolvePendingCalls(sessionId) {
|
|
60
|
+
for (const { resolve, method, sessionId: callbackSessionId } of this.#callbacks.values()) {
|
|
61
|
+
if (sessionId !== callbackSessionId) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
resolve({
|
|
65
|
+
error: {
|
|
66
|
+
message: `Session is unregistering, can\'t dispatch pending call to ${method}`,
|
|
67
|
+
code: CDPErrorStatus.SESSION_NOT_FOUND,
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
sendRawMessageForTesting(method, params, callback, sessionId = '') {
|
|
73
|
+
void this.send(method, params, sessionId).then(response => {
|
|
74
|
+
if ('error' in response && response.error) {
|
|
75
|
+
callback?.(response.error, null);
|
|
76
|
+
}
|
|
77
|
+
else if ('result' in response) {
|
|
78
|
+
callback?.(null, response.result);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
onMessage(message) {
|
|
83
|
+
if (test.dumpProtocol) {
|
|
84
|
+
test.dumpProtocol('backend: ' + ((typeof message === 'string') ? message : JSON.stringify(message)));
|
|
85
|
+
}
|
|
86
|
+
if (test.onMessageReceived) {
|
|
87
|
+
const messageObjectCopy = JSON.parse((typeof message === 'string') ? message : JSON.stringify(message));
|
|
88
|
+
test.onMessageReceived(messageObjectCopy);
|
|
89
|
+
}
|
|
90
|
+
const messageObject = ((typeof message === 'string') ? JSON.parse(message) : message);
|
|
91
|
+
if ('id' in messageObject && messageObject.id !== undefined) { // just a response for some request
|
|
92
|
+
const callback = this.#callbacks.get(messageObject.id);
|
|
93
|
+
this.#callbacks.delete(messageObject.id);
|
|
94
|
+
if (!callback) {
|
|
95
|
+
// Ignore messages with unknown IDs, we might see puppeteer proxied messages here.
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
callback.resolve(messageObject);
|
|
99
|
+
--this.#pendingResponsesCount;
|
|
100
|
+
this.#pendingLongPollingMessageIds.delete(messageObject.id);
|
|
101
|
+
if (this.#pendingScripts.length && !this.hasOutstandingNonLongPollingRequests()) {
|
|
102
|
+
this.deprecatedRunAfterPendingDispatches();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if ('method' in messageObject) {
|
|
106
|
+
this.#observers.forEach(observer => observer.onEvent(messageObject));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
InspectorBackend.reportProtocolError('Protocol Error: the message without method', messageObject);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
hasOutstandingNonLongPollingRequests() {
|
|
113
|
+
return this.#pendingResponsesCount - this.#pendingLongPollingMessageIds.size > 0;
|
|
114
|
+
}
|
|
115
|
+
deprecatedRunAfterPendingDispatches(script) {
|
|
116
|
+
if (script) {
|
|
117
|
+
this.#pendingScripts.push(script);
|
|
118
|
+
}
|
|
119
|
+
// Execute all promises.
|
|
120
|
+
setTimeout(() => {
|
|
121
|
+
if (!this.hasOutstandingNonLongPollingRequests()) {
|
|
122
|
+
this.executeAfterPendingDispatches();
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this.deprecatedRunAfterPendingDispatches();
|
|
126
|
+
}
|
|
127
|
+
}, 0);
|
|
128
|
+
}
|
|
129
|
+
executeAfterPendingDispatches() {
|
|
130
|
+
if (!this.hasOutstandingNonLongPollingRequests()) {
|
|
131
|
+
const scripts = this.#pendingScripts;
|
|
132
|
+
this.#pendingScripts = [];
|
|
133
|
+
for (let id = 0; id < scripts.length; ++id) {
|
|
134
|
+
scripts[id]();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|