extension 3.12.0 → 3.12.1

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.
Files changed (86) hide show
  1. package/README.md +1 -1
  2. package/dist/656.cjs +2481 -0
  3. package/dist/859.cjs +1932 -0
  4. package/dist/browser/browsers-lib/banner.d.ts +37 -0
  5. package/dist/browser/browsers-lib/constants.d.ts +2 -0
  6. package/dist/browser/browsers-lib/content-script-contracts.d.ts +2 -0
  7. package/dist/browser/browsers-lib/content-script-targets.d.ts +33 -0
  8. package/dist/browser/browsers-lib/html-merge.d.ts +1 -0
  9. package/dist/browser/browsers-lib/instance-registry.d.ts +8 -0
  10. package/dist/browser/browsers-lib/messages.d.ts +208 -0
  11. package/dist/browser/browsers-lib/output-binaries-resolver.d.ts +5 -0
  12. package/dist/browser/browsers-lib/ready-message.d.ts +1 -0
  13. package/dist/browser/browsers-lib/runtime-options.d.ts +12 -0
  14. package/dist/browser/browsers-lib/shared-utils.d.ts +11 -0
  15. package/dist/browser/browsers-types.d.ts +270 -0
  16. package/dist/browser/index.d.ts +74 -0
  17. package/dist/browser/run-chromium/chromium-context/index.d.ts +20 -0
  18. package/dist/browser/run-chromium/chromium-launch/browser-config.d.ts +4 -0
  19. package/dist/browser/run-chromium/chromium-launch/dry-run.d.ts +1 -0
  20. package/dist/browser/run-chromium/chromium-launch/extension-output-path.d.ts +8 -0
  21. package/dist/browser/run-chromium/chromium-launch/index.d.ts +31 -0
  22. package/dist/browser/run-chromium/chromium-launch/master-preferences.d.ts +163 -0
  23. package/dist/browser/run-chromium/chromium-launch/process-handlers.d.ts +3 -0
  24. package/dist/browser/run-chromium/chromium-launch/setup-cdp-after-launch.d.ts +3 -0
  25. package/dist/browser/run-chromium/chromium-launch/wsl-support.d.ts +15 -0
  26. package/dist/browser/run-chromium/chromium-source-inspection/cdp-client.d.ts +57 -0
  27. package/dist/browser/run-chromium/chromium-source-inspection/cdp-extension-controller/connect.d.ts +2 -0
  28. package/dist/browser/run-chromium/chromium-source-inspection/cdp-extension-controller/derive-id.d.ts +2 -0
  29. package/dist/browser/run-chromium/chromium-source-inspection/cdp-extension-controller/ensure.d.ts +6 -0
  30. package/dist/browser/run-chromium/chromium-source-inspection/cdp-extension-controller/index.d.ts +58 -0
  31. package/dist/browser/run-chromium/chromium-source-inspection/cdp-extension-controller/logging.d.ts +7 -0
  32. package/dist/browser/run-chromium/chromium-source-inspection/discovery.d.ts +2 -0
  33. package/dist/browser/run-chromium/chromium-source-inspection/extensions.d.ts +9 -0
  34. package/dist/browser/run-chromium/chromium-source-inspection/page.d.ts +45 -0
  35. package/dist/browser/run-chromium/chromium-source-inspection/ws.d.ts +2 -0
  36. package/dist/browser/run-chromium/chromium-types.d.ts +65 -0
  37. package/dist/browser/run-chromium/manifest-readiness.d.ts +15 -0
  38. package/dist/browser/run-firefox/firefox-context/index.d.ts +24 -0
  39. package/dist/browser/run-firefox/firefox-launch/binary-detector.d.ts +10 -0
  40. package/dist/browser/run-firefox/firefox-launch/browser-config.d.ts +19 -0
  41. package/dist/browser/run-firefox/firefox-launch/dry-run.d.ts +1 -0
  42. package/dist/browser/run-firefox/firefox-launch/index.d.ts +37 -0
  43. package/dist/browser/run-firefox/firefox-launch/master-preferences.d.ts +137 -0
  44. package/dist/browser/run-firefox/firefox-launch/process-handlers.d.ts +2 -0
  45. package/dist/browser/run-firefox/firefox-launch/setup-rdp-after-launch.d.ts +6 -0
  46. package/dist/browser/run-firefox/firefox-launch/wsl-support.d.ts +15 -0
  47. package/dist/browser/run-firefox/firefox-source-inspection/rdp-extension-controller/index.d.ts +38 -0
  48. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/addons-install.d.ts +10 -0
  49. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/addons.d.ts +1 -0
  50. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/evaluate.d.ts +18 -0
  51. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/firefox-utils.d.ts +17 -0
  52. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/index.d.ts +38 -0
  53. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/logging.d.ts +11 -0
  54. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/message-utils.d.ts +2 -0
  55. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/messaging-client.d.ts +37 -0
  56. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/moz-id.d.ts +2 -0
  57. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/rdp-api.d.ts +29 -0
  58. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/rdp-wire.d.ts +8 -0
  59. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/source-inspect.d.ts +9 -0
  60. package/dist/browser/run-firefox/firefox-source-inspection/remote-firefox/transport.d.ts +20 -0
  61. package/dist/browser/run-firefox/firefox-types.d.ts +16 -0
  62. package/dist/browser/run-only.d.ts +22 -0
  63. package/dist/cli/cli-lib/extension-develop-runtime.d.ts +9 -0
  64. package/dist/{utils.d.ts → cli/utils.d.ts} +0 -1
  65. package/dist/cli.cjs +9943 -1964
  66. package/package.json +7 -8
  67. package/dist/cli-lib/extension-develop-runtime.d.ts +0 -3
  68. /package/dist/{check-updates.d.ts → cli/check-updates.d.ts} +0 -0
  69. /package/dist/{cli-lib → cli/cli-lib}/manifest-summary.d.ts +0 -0
  70. /package/dist/{cli-lib → cli/cli-lib}/messages.d.ts +0 -0
  71. /package/dist/{cli-lib → cli/cli-lib}/project-profile.d.ts +0 -0
  72. /package/dist/{cli-lib → cli/cli-lib}/telemetry-cli.d.ts +0 -0
  73. /package/dist/{cli-lib → cli/cli-lib}/telemetry.d.ts +0 -0
  74. /package/dist/{cli-lib → cli/cli-lib}/workflow-profile.d.ts +0 -0
  75. /package/dist/{cli-package-json.d.ts → cli/cli-package-json.d.ts} +0 -0
  76. /package/dist/{commands → cli/commands}/build.d.ts +0 -0
  77. /package/dist/{commands → cli/commands}/create.d.ts +0 -0
  78. /package/dist/{commands → cli/commands}/dev-wait.d.ts +0 -0
  79. /package/dist/{commands → cli/commands}/dev.d.ts +0 -0
  80. /package/dist/{commands → cli/commands}/install.d.ts +0 -0
  81. /package/dist/{commands → cli/commands}/preview.d.ts +0 -0
  82. /package/dist/{commands → cli/commands}/start.d.ts +0 -0
  83. /package/dist/{index.d.ts → cli/index.d.ts} +0 -0
  84. /package/dist/{rslib.config.d.ts → cli/rslib.config.d.ts} +0 -0
  85. /package/dist/{utils → cli/utils}/normalize-options.d.ts +0 -0
  86. /package/dist/{vitest.config.d.ts → cli/vitest.config.d.ts} +0 -0
@@ -0,0 +1,74 @@
1
+ import type { BrowserType } from './browsers-types';
2
+ export type { BrowserType, CompilationLike, Controller } from './browsers-types';
3
+ /**
4
+ * Options for launching a browser with an extension loaded.
5
+ */
6
+ export interface BrowserLaunchOptions {
7
+ browser: BrowserType;
8
+ outputPath: string;
9
+ contextDir: string;
10
+ extensionsToLoad: string[];
11
+ mode?: 'development' | 'production';
12
+ enableDevtools?: boolean;
13
+ noOpen?: boolean;
14
+ profile?: string | false;
15
+ persistProfile?: boolean;
16
+ preferences?: Record<string, unknown>;
17
+ browserFlags?: string[];
18
+ excludeBrowserFlags?: string[];
19
+ startingUrl?: string;
20
+ chromiumBinary?: string;
21
+ geckoBinary?: string;
22
+ instanceId?: string;
23
+ port?: number | string;
24
+ dryRun?: boolean;
25
+ source?: string;
26
+ watchSource?: boolean;
27
+ sourceFormat?: 'pretty' | 'json' | 'ndjson';
28
+ sourceSummary?: boolean;
29
+ sourceMeta?: boolean;
30
+ sourceProbe?: string[];
31
+ sourceTree?: 'off' | 'root-only';
32
+ sourceConsole?: boolean;
33
+ sourceDom?: boolean;
34
+ sourceMaxBytes?: number;
35
+ sourceRedact?: 'off' | 'safe' | 'strict';
36
+ sourceIncludeShadow?: 'off' | 'open-only' | 'all';
37
+ sourceDiff?: boolean;
38
+ logLevel?: string;
39
+ logContexts?: string[];
40
+ logFormat?: 'pretty' | 'json' | 'ndjson';
41
+ logTimestamps?: boolean;
42
+ logColor?: boolean;
43
+ logUrl?: string;
44
+ logTab?: number | string;
45
+ }
46
+ /**
47
+ * Handle returned by `launchBrowser` — provides reload and logging control.
48
+ */
49
+ export interface BrowserController {
50
+ reload(instruction?: {
51
+ type: 'full' | 'service-worker' | 'content-scripts';
52
+ changedContentScriptEntries?: string[];
53
+ changedAssets?: string[];
54
+ }): Promise<void>;
55
+ enableUnifiedLogging(opts: {
56
+ level?: string;
57
+ contexts?: string[];
58
+ format?: 'pretty' | 'json' | 'ndjson';
59
+ timestamps?: boolean;
60
+ color?: boolean;
61
+ urlFilter?: string;
62
+ tabFilter?: number | string;
63
+ }): Promise<void>;
64
+ close(): Promise<void>;
65
+ }
66
+ /**
67
+ * Launch a browser with the given extension(s) loaded.
68
+ *
69
+ * Returns a `BrowserController` that provides reload and unified-logging control.
70
+ * This is the primary entry point for the CLI orchestration layer — it replaces
71
+ * the old BrowsersPlugin that lived inside the bundler.
72
+ */
73
+ export declare function launchBrowser(opts: BrowserLaunchOptions): Promise<BrowserController>;
74
+ export { runOnlyPreviewBrowser } from './run-only';
@@ -0,0 +1,20 @@
1
+ import type { CDPExtensionController } from '../chromium-source-inspection/cdp-extension-controller';
2
+ export type ChromiumContext = {
3
+ getController(): CDPExtensionController | undefined;
4
+ onControllerReady(cb: (c: CDPExtensionController, port: number) => void): void;
5
+ setController(c: CDPExtensionController, port: number): void;
6
+ getPorts(): {
7
+ cdpPort?: number;
8
+ };
9
+ getExtensionRoot(): string | undefined;
10
+ setExtensionRoot(root?: string): void;
11
+ setServiceWorkerPaths(rel?: string, abs?: string): void;
12
+ getServiceWorkerPaths(): {
13
+ relativePath?: string;
14
+ absolutePath?: string;
15
+ };
16
+ setPendingReloadReason(reason?: 'manifest' | 'locales' | 'sw'): void;
17
+ getPendingReloadReason(): 'manifest' | 'locales' | 'sw' | undefined;
18
+ clearPendingReloadReason(): void;
19
+ };
20
+ export declare function createChromiumContext(): ChromiumContext;
@@ -0,0 +1,4 @@
1
+ import { type CompilationLike } from '../../browsers-types';
2
+ import { type PluginInterface, type DefaultBrowserFlags } from '../../browsers-types';
3
+ export declare const DEFAULT_BROWSER_FLAGS: DefaultBrowserFlags[];
4
+ export declare function browserConfig(compilation: CompilationLike, configOptions: PluginInterface): string[];
@@ -0,0 +1 @@
1
+ export declare function logChromiumDryRun(browserBinaryLocation: string, chromiumConfig: string[]): void;
@@ -0,0 +1,8 @@
1
+ import type { CompilationLike } from '../../browsers-types';
2
+ /**
3
+ * Derive the user extension output path from `--load-extension=...` flags.
4
+ *
5
+ * Kept in a standalone module so run-only preview can reuse it without
6
+ * importing CDP/WS-related code paths.
7
+ */
8
+ export declare function getExtensionOutputPath(compilation: CompilationLike | undefined, loadExtensionFlag: string | undefined): string;
@@ -0,0 +1,31 @@
1
+ import type { CompilationLike } from '../../browsers-types';
2
+ import type { ChromiumContext } from '../chromium-context';
3
+ import type { ChromiumLaunchOptions } from '../chromium-types';
4
+ /**
5
+ * ChromiumLaunchPlugin
6
+ *
7
+ * Intended responsibilities (will be wired incrementally without changing inner logic):
8
+ * - Resolve binary; compose flags (profiles, excludes, overrides)
9
+ * - Allocate CDP port; spawn process; setup signals; dry-run
10
+ * - Connect CDP; ensure extension loaded; print dev banner
11
+ * - Publish controller + port via ChromiumContext
12
+ */
13
+ export declare class ChromiumLaunchPlugin {
14
+ private readonly options;
15
+ private readonly ctx;
16
+ private didLaunch;
17
+ private didReportReady;
18
+ private logger;
19
+ constructor(options: ChromiumLaunchOptions, ctx: ChromiumContext);
20
+ /**
21
+ * Run the Chromium launch flow without requiring a bundler compiler instance.
22
+ * Intended for run-only preview paths.
23
+ */
24
+ runOnce(compilation: CompilationLike, opts?: {
25
+ enableCdpPostLaunch?: boolean;
26
+ }): Promise<void>;
27
+ apply(compiler: any): void;
28
+ private launchChromium;
29
+ private launchWithDirectSpawn;
30
+ private printEnhancedPuppeteerInstallHint;
31
+ }
@@ -0,0 +1,163 @@
1
+ declare const chromeMasterPreferences: {
2
+ alternate_error_pages: {
3
+ enabled: boolean;
4
+ };
5
+ autofill: {
6
+ enabled: boolean;
7
+ };
8
+ browser: {
9
+ check_default_browser: boolean;
10
+ default_browser_setting_enabled: boolean;
11
+ };
12
+ default_apps: string;
13
+ distribution: {
14
+ alternate_shortcut_text: boolean;
15
+ auto_launch_chrome: boolean;
16
+ import_bookmarks: boolean;
17
+ import_history: boolean;
18
+ import_home_page: boolean;
19
+ import_search_engine: boolean;
20
+ suppress_first_run_bubble: boolean;
21
+ do_not_register_for_update_launch: boolean;
22
+ make_chrome_default: boolean;
23
+ make_chrome_default_for_user: boolean;
24
+ require_eula: boolean;
25
+ suppress_first_run_default_browser_prompt: boolean;
26
+ };
27
+ dns_prefetching: {
28
+ enabled: boolean;
29
+ };
30
+ download: {
31
+ default_directory: string;
32
+ directory_upgrade: boolean;
33
+ open_pdf_in_adobe_reader: boolean;
34
+ prompt_for_download: boolean;
35
+ };
36
+ enable_do_not_track: boolean;
37
+ extensions: {
38
+ theme: {
39
+ use_system: boolean;
40
+ };
41
+ toolbarsize: number;
42
+ developer_mode: boolean;
43
+ ui: {
44
+ developer_mode: boolean;
45
+ };
46
+ };
47
+ plugins: {
48
+ plugins_list: {
49
+ enabled: boolean;
50
+ name: string;
51
+ }[];
52
+ show_details: boolean;
53
+ };
54
+ profile: {
55
+ password_manager_enabled: boolean;
56
+ };
57
+ safebrowsing: {
58
+ enabled: boolean;
59
+ safebrowsingextended_reporting_enabled: boolean;
60
+ };
61
+ savefile: {
62
+ default_directory: string;
63
+ type: number;
64
+ };
65
+ search: {
66
+ suggest_enabled: boolean;
67
+ };
68
+ session: {
69
+ restore_on_startup: number;
70
+ };
71
+ sync: {
72
+ suppress_start: boolean;
73
+ };
74
+ sync_promo: {
75
+ show_on_first_run_allowed: boolean;
76
+ show_ntp_bubble: boolean;
77
+ };
78
+ translate: {
79
+ enabled: boolean;
80
+ };
81
+ };
82
+ declare const edgeMasterPreferences: {
83
+ alternate_error_pages: {
84
+ enabled: boolean;
85
+ };
86
+ autofill: {
87
+ enabled: boolean;
88
+ };
89
+ browser: {
90
+ check_default_browser: boolean;
91
+ default_browser_setting_enabled: boolean;
92
+ };
93
+ default_apps: string;
94
+ distribution: {
95
+ alternate_shortcut_text: boolean;
96
+ auto_launch_chrome: boolean;
97
+ import_bookmarks: boolean;
98
+ import_history: boolean;
99
+ import_home_page: boolean;
100
+ import_search_engine: boolean;
101
+ suppress_first_run_bubble: boolean;
102
+ do_not_register_for_update_launch: boolean;
103
+ make_chrome_default: boolean;
104
+ make_chrome_default_for_user: boolean;
105
+ require_eula: boolean;
106
+ suppress_first_run_default_browser_prompt: boolean;
107
+ };
108
+ dns_prefetching: {
109
+ enabled: boolean;
110
+ };
111
+ download: {
112
+ default_directory: string;
113
+ directory_upgrade: boolean;
114
+ open_pdf_in_adobe_reader: boolean;
115
+ prompt_for_download: boolean;
116
+ };
117
+ enable_do_not_track: boolean;
118
+ extensions: {
119
+ theme: {
120
+ use_system: boolean;
121
+ };
122
+ toolbarsize: number;
123
+ developer_mode: boolean;
124
+ ui: {
125
+ developer_mode: boolean;
126
+ };
127
+ };
128
+ plugins: {
129
+ plugins_list: {
130
+ enabled: boolean;
131
+ name: string;
132
+ }[];
133
+ show_details: boolean;
134
+ };
135
+ profile: {
136
+ password_manager_enabled: boolean;
137
+ };
138
+ safebrowsing: {
139
+ enabled: boolean;
140
+ safebrowsingextended_reporting_enabled: boolean;
141
+ };
142
+ savefile: {
143
+ default_directory: string;
144
+ type: number;
145
+ };
146
+ search: {
147
+ suggest_enabled: boolean;
148
+ };
149
+ session: {
150
+ restore_on_startup: number;
151
+ };
152
+ sync: {
153
+ suppress_start: boolean;
154
+ };
155
+ sync_promo: {
156
+ show_on_first_run_allowed: boolean;
157
+ show_ntp_bubble: boolean;
158
+ };
159
+ translate: {
160
+ enabled: boolean;
161
+ };
162
+ };
163
+ export { chromeMasterPreferences, edgeMasterPreferences };
@@ -0,0 +1,3 @@
1
+ import { ChildProcess } from 'child_process';
2
+ import type { BrowserType } from '../../browsers-types';
3
+ export declare function setupProcessSignalHandlers(browser: BrowserType, child: ChildProcess, cleanupInstance: () => void): void;
@@ -0,0 +1,3 @@
1
+ import type { CompilationLike } from '../../browsers-types';
2
+ import { type ChromiumPluginRuntime } from '../chromium-types';
3
+ export declare function setupCdpAfterLaunch(compilation: CompilationLike | undefined, plugin: ChromiumPluginRuntime, chromiumArgs: string[]): Promise<void>;
@@ -0,0 +1,15 @@
1
+ import { ChildProcess } from 'child_process';
2
+ type ChromiumLogger = {
3
+ warn?: (...args: unknown[]) => void;
4
+ };
5
+ export declare function isWslEnv(): boolean;
6
+ export declare function normalizeBinaryPathForWsl(input: string): string;
7
+ export declare function resolveWslWindowsBinary(browser: string): string | null;
8
+ export declare function spawnChromiumProcess(opts: {
9
+ binary: string;
10
+ launchArgs: string[];
11
+ stdio: 'ignore';
12
+ browser: string;
13
+ logger?: ChromiumLogger;
14
+ }): Promise<ChildProcess>;
15
+ export {};
@@ -0,0 +1,57 @@
1
+ import { type ExtensionRootMetaPayload } from './page';
2
+ export declare class CDPClient {
3
+ private port;
4
+ private host;
5
+ private ws;
6
+ private targetWebSocketUrl;
7
+ private eventCallbacks;
8
+ private messageId;
9
+ private pendingRequests;
10
+ constructor(port?: number, host?: string);
11
+ private isDev;
12
+ connect(): Promise<void>;
13
+ disconnect(): void;
14
+ isConnected(): boolean;
15
+ onProtocolEvent(handler: (message: Record<string, unknown>) => void): () => void;
16
+ private handleMessage;
17
+ sendCommand(method: string, params?: Record<string, unknown>, sessionId?: string, timeoutMs?: number): Promise<unknown>;
18
+ getTargets(): Promise<Record<string, unknown>[]>;
19
+ getBrowserVersion(): Promise<{
20
+ product?: string;
21
+ userAgent?: string;
22
+ jsVersion?: string;
23
+ }>;
24
+ attachToTarget(targetId: string): Promise<string>;
25
+ enableAutoAttach(): Promise<void>;
26
+ enableRuntimeAndLog(sessionId?: string): Promise<void>;
27
+ navigate(sessionId: string, url: string): Promise<void>;
28
+ createTarget(url: string): Promise<string>;
29
+ activateTarget(targetId: string): Promise<void>;
30
+ waitForLoadEvent(sessionId: string): Promise<void>;
31
+ waitForContentScriptInjection(sessionId: string): Promise<boolean>;
32
+ /** Extension root / reinject markers — uses page + isolated content-script context (matches injection wait). */
33
+ getExtensionRootMeta(sessionId: string): Promise<ExtensionRootMetaPayload | undefined>;
34
+ /** Shadow <style> nodes under non-devtools content roots — same dual-context evaluation as root meta. */
35
+ getShadowStyleSnapshot(sessionId: string): Promise<Record<string, unknown> | undefined>;
36
+ /** Best-effort poll when injection wait fails (async shadow fill, context quirks). */
37
+ pollForVisibleShadowHostContent(sessionId: string, deadlineMs?: number): Promise<void>;
38
+ hasVisibleShadowHostContent(sessionId: string): Promise<boolean>;
39
+ evaluate(sessionId: string, expression: string, options?: {
40
+ awaitPromise?: boolean;
41
+ }): Promise<unknown>;
42
+ evaluateInContext(sessionId: string, expression: string, contextId: number, options?: {
43
+ awaitPromise?: boolean;
44
+ }): Promise<unknown>;
45
+ getPageHTML(sessionId: string, includeShadow?: 'off' | 'open-only' | 'all'): Promise<string>;
46
+ closeTarget(targetId: string): Promise<void>;
47
+ forceReloadExtension(extensionId: string): Promise<boolean>;
48
+ getExtensionInfo(extensionId: string): Promise<{
49
+ extensionInfo?: {
50
+ name?: string;
51
+ version?: string;
52
+ };
53
+ }>;
54
+ private reloadExtensionViaTargetEval;
55
+ loadUnpackedExtension(path: string): Promise<string>;
56
+ unloadExtension(extensionId: string): Promise<boolean>;
57
+ }
@@ -0,0 +1,2 @@
1
+ import { CDPClient } from '../cdp-client';
2
+ export declare function connectToChromeCdp(cdpPort: number): Promise<CDPClient>;
@@ -0,0 +1,2 @@
1
+ import { CDPClient } from '../cdp-client';
2
+ export declare function deriveExtensionIdFromTargetsHelper(cdp: CDPClient, outPath: string, maxRetries?: number, backoffMs?: number, profilePath?: string, extensionPaths?: string[]): Promise<string | null>;
@@ -0,0 +1,6 @@
1
+ import { CDPClient } from '../cdp-client';
2
+ export declare function loadUnpackedIfNeeded(cdp: CDPClient, outPath: string): Promise<string | null>;
3
+ export declare function readManifestInfo(outPath: string): {
4
+ name?: string;
5
+ version?: string;
6
+ } | null;
@@ -0,0 +1,58 @@
1
+ import { type ContentScriptTargetRule } from '../../../browsers-lib/content-script-targets';
2
+ interface ExtensionInfoResult {
3
+ extensionId: string;
4
+ name?: string;
5
+ version?: string;
6
+ }
7
+ export type ChromiumDeveloperModeStatus = 'enabled' | 'disabled' | 'unknown';
8
+ export declare class CDPExtensionController {
9
+ private readonly outPath;
10
+ private readonly browser;
11
+ private readonly cdpPort;
12
+ private readonly profilePath?;
13
+ private readonly extensionPaths?;
14
+ private cdp;
15
+ private extensionId;
16
+ private lastRuntimeReinjectionReport;
17
+ constructor(args: {
18
+ outPath: string;
19
+ browser: 'chrome' | 'edge' | 'chromium-based';
20
+ cdpPort: number;
21
+ profilePath?: string;
22
+ extensionPaths?: string[];
23
+ });
24
+ connect(): Promise<void>;
25
+ ensureLoaded(): Promise<ExtensionInfoResult>;
26
+ private deriveExtensionIdFromTargets;
27
+ private normalizePath;
28
+ private extensionIdBelongsToOutPath;
29
+ getDeveloperModeStatus(): ChromiumDeveloperModeStatus;
30
+ getLastRuntimeReinjectionReport(): Record<string, unknown> | null;
31
+ reloadMatchingTabsForContentScripts(rules: ContentScriptTargetRule[], options?: {
32
+ preferPageReload?: boolean;
33
+ allowCoarseCleanup?: boolean;
34
+ sourceOverridesByBundleId?: Record<string, string>;
35
+ }): Promise<number>;
36
+ reinjectMatchingTabsViaExtensionRuntime(rules: ContentScriptTargetRule[]): Promise<number>;
37
+ private reloadPageTarget;
38
+ hardReload(): Promise<boolean>;
39
+ private attachToExtensionRuntimeTarget;
40
+ private connectFreshClient;
41
+ private reconnectForReload;
42
+ onProtocolEvent(cb: (evt: {
43
+ method: string;
44
+ params?: unknown;
45
+ } & Record<string, unknown>) => void): void;
46
+ clearProtocolEventHandler(): void;
47
+ enableUnifiedLogging(): Promise<void>;
48
+ enableRuntimeForSession(sessionId: string): Promise<void>;
49
+ private enableLogging;
50
+ getInfoBestEffort(): Promise<ExtensionInfoResult | null>;
51
+ private reinjectContentScriptRule;
52
+ private buildReinjectExpression;
53
+ private patchReinjectSourceForInvalidatedRuntime;
54
+ private resolveExecutionContextId;
55
+ private getTopFrameId;
56
+ private collectExecutionContexts;
57
+ }
58
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Controller } from '../../chromium-types';
2
+ import { CDPClient } from '../cdp-client';
3
+ export declare function enableUnifiedLoggingForAllTargets(controller: Controller): Promise<void>;
4
+ export declare function enableRuntimeForAttachedTarget(controller: {
5
+ enableRuntimeForSession: (sessionId: string) => Promise<void>;
6
+ }, sessionId: string): Promise<void>;
7
+ export declare function registerAutoEnableLogging(cdp: CDPClient, getExtensionId: () => string | null): void;
@@ -0,0 +1,2 @@
1
+ export declare function discoverWebSocketDebuggerUrl(host: string, port: number, isDev: boolean): Promise<string>;
2
+ export declare function checkChromeRemoteDebugging(port?: number): Promise<boolean>;
@@ -0,0 +1,9 @@
1
+ import { CDPClient } from './cdp-client';
2
+ export declare function getExtensionInfo(cdp: CDPClient, extensionId: string): Promise<{
3
+ extensionInfo?: {
4
+ name?: string;
5
+ version?: string;
6
+ };
7
+ }>;
8
+ export declare function loadUnpackedExtension(cdp: CDPClient, absPath: string): Promise<string>;
9
+ export declare function unloadExtension(cdp: CDPClient, extensionId: string): Promise<boolean>;
@@ -0,0 +1,45 @@
1
+ import type { CDPClient } from './cdp-client';
2
+ /** Serialized snapshot of extension content roots / reinject markers (same shape as ChromiumSourceInspectionPlugin root meta). */
3
+ export type ExtensionRootMetaPayload = {
4
+ rootCount: number;
5
+ markerCount: number;
6
+ latestGeneration: number;
7
+ roots: Array<{
8
+ tag: string;
9
+ id?: string;
10
+ key?: string;
11
+ generation?: number;
12
+ status?: string;
13
+ build?: string;
14
+ }>;
15
+ markers: Array<{
16
+ tag: string;
17
+ id?: string;
18
+ key?: string;
19
+ generation?: number;
20
+ status?: string;
21
+ build?: string;
22
+ }>;
23
+ registries: Array<{
24
+ key: string;
25
+ generation?: number;
26
+ hasCleanup?: boolean;
27
+ build?: string;
28
+ }>;
29
+ page?: {
30
+ key?: string;
31
+ generation?: number;
32
+ status?: string;
33
+ build?: string;
34
+ };
35
+ };
36
+ export declare function evaluateWithContentContext<T = unknown>(cdp: CDPClient, sessionId: string, expression: string, shouldAccept: (value: unknown) => boolean): Promise<T | undefined>;
37
+ export declare function evaluateExtensionRootMeta(cdp: CDPClient, sessionId: string): Promise<ExtensionRootMetaPayload | undefined>;
38
+ export declare function evaluateShadowStyleSnapshot(cdp: CDPClient, sessionId: string): Promise<Record<string, unknown> | undefined>;
39
+ /** Used after navigation when injection wait timed out — polls with isolated-world fallback. */
40
+ export declare function pollForVisibleShadowHostContent(cdp: CDPClient, sessionId: string, deadlineMs?: number): Promise<void>;
41
+ /** Single-shot check aligned with waitForContentScriptInjection shadow proof. */
42
+ export declare function hasVisibleShadowHostContent(cdp: CDPClient, sessionId: string): Promise<boolean>;
43
+ export declare function getPageHTML(cdp: CDPClient, sessionId: string, includeShadow?: 'off' | 'open-only' | 'all'): Promise<string>;
44
+ export declare function waitForLoadEvent(cdp: CDPClient, sessionId: string): Promise<void>;
45
+ export declare function waitForContentScriptInjection(cdp: CDPClient, sessionId: string): Promise<boolean>;
@@ -0,0 +1,2 @@
1
+ import WebSocket from 'ws';
2
+ export declare function establishBrowserConnection(url: string, isDev: boolean, onMessage: (data: string) => void, onRejectPending: (reason: string) => void): Promise<WebSocket>;
@@ -0,0 +1,65 @@
1
+ import type { BrowserLogger, LogLevel, PluginInterface, Controller } from '../browsers-types';
2
+ export type { Controller, LogFormat, LogLevel, PluginInterface } from '../browsers-types';
3
+ export interface ConsoleAPICalledEvent {
4
+ method: 'Runtime.consoleAPICalled';
5
+ params?: {
6
+ type?: string;
7
+ args?: Array<{
8
+ value?: unknown;
9
+ description?: string;
10
+ }>;
11
+ stackTrace?: {
12
+ callFrames?: Array<{
13
+ url?: string;
14
+ lineNumber?: number;
15
+ columnNumber?: number;
16
+ }>;
17
+ };
18
+ };
19
+ }
20
+ export interface LogEntryAddedEvent {
21
+ method: 'Log.entryAdded';
22
+ params?: {
23
+ entry?: {
24
+ level?: string;
25
+ text?: string;
26
+ url?: string;
27
+ lineNumber?: number;
28
+ columnNumber?: number;
29
+ };
30
+ };
31
+ }
32
+ export type CdpEvent = ConsoleAPICalledEvent | LogEntryAddedEvent | {
33
+ method: string;
34
+ params?: unknown;
35
+ };
36
+ export type PendingReason = 'manifest' | 'locales' | 'sw';
37
+ export type Logger = BrowserLogger;
38
+ /**
39
+ * Options consumed by Chromium plugins (launch/logger/reload/inspection).
40
+ * Narrowed from PluginInterface and specialized for Chromium path.
41
+ */
42
+ export interface ChromiumLaunchOptions extends Pick<PluginInterface, 'extension' | 'browser' | 'noOpen' | 'browserFlags' | 'excludeBrowserFlags' | 'profile' | 'preferences' | 'startingUrl' | 'chromiumBinary' | 'instanceId' | 'port' | 'source' | 'watchSource' | 'sourceFormat' | 'sourceSummary' | 'sourceMeta' | 'sourceProbe' | 'sourceTree' | 'sourceConsole' | 'sourceDom' | 'sourceMaxBytes' | 'sourceRedact' | 'sourceIncludeShadow' | 'sourceDiff' | 'dryRun' | 'logLevel' | 'logContexts' | 'logFormat' | 'logTimestamps' | 'logColor' | 'logUrl' | 'logTab'> {
43
+ }
44
+ /**
45
+ * Runtime state in Chromium flow.
46
+ * Kept Chromium-specific to avoid polluting shared browser types.
47
+ */
48
+ export interface ChromiumPluginRuntime extends ChromiumLaunchOptions {
49
+ bannerPrintedOnce?: boolean;
50
+ cdpController?: Controller;
51
+ browserVersionLine?: string;
52
+ }
53
+ /**
54
+ * Configuration for the unified logger in Chromium flows.
55
+ * Mirrors CLI flags and shared logging options.
56
+ */
57
+ export interface ChromiumLogger {
58
+ level?: LogLevel | 'off' | string;
59
+ contexts?: string[];
60
+ urlFilter?: string;
61
+ tabFilter?: number | string;
62
+ format?: 'pretty' | 'json' | 'ndjson' | string;
63
+ timestamps?: boolean;
64
+ color?: boolean;
65
+ }
@@ -0,0 +1,15 @@
1
+ export declare function waitForStableManifest(outPath: string, options?: {
2
+ timeoutMs?: number;
3
+ pollIntervalMs?: number;
4
+ stableReadsRequired?: number;
5
+ }): Promise<boolean>;
6
+ export declare function waitForStableFiles(outPath: string, relativeFiles: string[], options?: {
7
+ timeoutMs?: number;
8
+ pollIntervalMs?: number;
9
+ stableReadsRequired?: number;
10
+ }): Promise<boolean>;
11
+ export declare function waitForStableExtensionOutput(outPath: string, options?: {
12
+ timeoutMs?: number;
13
+ pollIntervalMs?: number;
14
+ stableReadsRequired?: number;
15
+ }): Promise<boolean>;
@@ -0,0 +1,24 @@
1
+ import type { BrowserLogger } from '../../browsers-types';
2
+ import type { FirefoxRDPController } from '../firefox-source-inspection/rdp-extension-controller';
3
+ export type PendingReason = 'manifest' | 'locales' | 'sw';
4
+ export type FirefoxContext = {
5
+ getController(): FirefoxRDPController | undefined;
6
+ onControllerReady(cb: (c: FirefoxRDPController, port: number) => void): void;
7
+ setController(c: FirefoxRDPController, port: number): void;
8
+ getPorts(): {
9
+ rdpPort?: number;
10
+ };
11
+ setExtensionRoot(root?: string): void;
12
+ getExtensionRoot(): string | undefined;
13
+ setServiceWorkerPaths(rel?: string, abs?: string): void;
14
+ getServiceWorkerPaths(): {
15
+ relativePath?: string;
16
+ absolutePath?: string;
17
+ };
18
+ setPendingReloadReason(reason?: PendingReason): void;
19
+ getPendingReloadReason(): PendingReason | undefined;
20
+ clearPendingReloadReason(): void;
21
+ logger?: BrowserLogger;
22
+ didLaunch?: boolean;
23
+ };
24
+ export declare function createFirefoxContext(): FirefoxContext;
@@ -0,0 +1,10 @@
1
+ export declare class FirefoxBinaryDetector {
2
+ static generateFirefoxArgs(binaryPath: string, profilePath: string, debugPort: number, additionalArgs?: string[]): {
3
+ binary: string;
4
+ args: string[];
5
+ };
6
+ static validateFirefoxBinary(binaryPath: string): Promise<{
7
+ version: string;
8
+ path: string;
9
+ }>;
10
+ }