@gxp-dev/tools 2.0.63 → 2.0.64
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/README.md +32 -31
- package/bin/gx-devtools.js +74 -54
- package/bin/lib/cli.js +23 -21
- package/bin/lib/commands/add-dependency.js +366 -325
- package/bin/lib/commands/assets.js +137 -139
- package/bin/lib/commands/build.js +169 -174
- package/bin/lib/commands/datastore.js +181 -183
- package/bin/lib/commands/dev.js +127 -131
- package/bin/lib/commands/extensions.js +147 -149
- package/bin/lib/commands/extract-config.js +73 -67
- package/bin/lib/commands/index.js +12 -12
- package/bin/lib/commands/init.js +342 -240
- package/bin/lib/commands/publish.js +69 -75
- package/bin/lib/commands/socket.js +69 -69
- package/bin/lib/commands/ssl.js +14 -14
- package/bin/lib/constants.js +10 -24
- package/bin/lib/tui/App.tsx +761 -705
- package/bin/lib/tui/components/AIPanel.tsx +191 -171
- package/bin/lib/tui/components/CommandInput.tsx +394 -343
- package/bin/lib/tui/components/GeminiPanel.tsx +175 -151
- package/bin/lib/tui/components/Header.tsx +23 -21
- package/bin/lib/tui/components/LogPanel.tsx +244 -220
- package/bin/lib/tui/components/TabBar.tsx +50 -48
- package/bin/lib/tui/components/WelcomeScreen.tsx +126 -71
- package/bin/lib/tui/index.tsx +37 -39
- package/bin/lib/tui/services/AIService.ts +518 -462
- package/bin/lib/tui/services/ExtensionService.ts +140 -129
- package/bin/lib/tui/services/GeminiService.ts +367 -337
- package/bin/lib/tui/services/ServiceManager.ts +344 -322
- package/bin/lib/tui/services/SocketService.ts +168 -168
- package/bin/lib/tui/services/ViteService.ts +88 -88
- package/bin/lib/tui/services/index.ts +47 -22
- package/bin/lib/utils/ai-scaffold.js +291 -280
- package/bin/lib/utils/extract-config.js +157 -140
- package/bin/lib/utils/files.js +82 -86
- package/bin/lib/utils/index.js +7 -7
- package/bin/lib/utils/paths.js +34 -34
- package/bin/lib/utils/prompts.js +194 -169
- package/bin/lib/utils/ssl.js +79 -81
- package/browser-extensions/README.md +0 -1
- package/browser-extensions/chrome/background.js +244 -237
- package/browser-extensions/chrome/content.js +32 -29
- package/browser-extensions/chrome/devtools.html +7 -7
- package/browser-extensions/chrome/devtools.js +19 -19
- package/browser-extensions/chrome/inspector.js +802 -767
- package/browser-extensions/chrome/manifest.json +71 -63
- package/browser-extensions/chrome/panel.html +674 -636
- package/browser-extensions/chrome/panel.js +722 -712
- package/browser-extensions/chrome/popup.html +586 -543
- package/browser-extensions/chrome/popup.js +282 -244
- package/browser-extensions/chrome/rules.json +1 -1
- package/browser-extensions/chrome/test-chrome.html +216 -136
- package/browser-extensions/chrome/test-mixed-content.html +284 -189
- package/browser-extensions/chrome/test-uri-pattern.html +221 -198
- package/browser-extensions/firefox/README.md +9 -6
- package/browser-extensions/firefox/background.js +221 -218
- package/browser-extensions/firefox/content.js +55 -52
- package/browser-extensions/firefox/debug-errors.html +386 -228
- package/browser-extensions/firefox/debug-https.html +153 -105
- package/browser-extensions/firefox/devtools.html +7 -7
- package/browser-extensions/firefox/devtools.js +23 -20
- package/browser-extensions/firefox/inspector.js +802 -767
- package/browser-extensions/firefox/manifest.json +68 -68
- package/browser-extensions/firefox/panel.html +674 -636
- package/browser-extensions/firefox/panel.js +722 -712
- package/browser-extensions/firefox/popup.html +572 -535
- package/browser-extensions/firefox/popup.js +281 -236
- package/browser-extensions/firefox/test-gramercy.html +170 -125
- package/browser-extensions/firefox/test-imports.html +59 -55
- package/browser-extensions/firefox/test-masking.html +231 -140
- package/browser-extensions/firefox/test-uri-pattern.html +221 -198
- package/dist/tui/App.d.ts +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +154 -150
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/AIPanel.d.ts.map +1 -1
- package/dist/tui/components/AIPanel.js +42 -35
- package/dist/tui/components/AIPanel.js.map +1 -1
- package/dist/tui/components/CommandInput.d.ts +1 -1
- package/dist/tui/components/CommandInput.d.ts.map +1 -1
- package/dist/tui/components/CommandInput.js +92 -62
- package/dist/tui/components/CommandInput.js.map +1 -1
- package/dist/tui/components/GeminiPanel.d.ts.map +1 -1
- package/dist/tui/components/GeminiPanel.js +37 -30
- package/dist/tui/components/GeminiPanel.js.map +1 -1
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +1 -1
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/LogPanel.d.ts +1 -1
- package/dist/tui/components/LogPanel.d.ts.map +1 -1
- package/dist/tui/components/LogPanel.js +26 -24
- package/dist/tui/components/LogPanel.js.map +1 -1
- package/dist/tui/components/TabBar.d.ts +2 -2
- package/dist/tui/components/TabBar.d.ts.map +1 -1
- package/dist/tui/components/TabBar.js +11 -11
- package/dist/tui/components/TabBar.js.map +1 -1
- package/dist/tui/components/WelcomeScreen.d.ts.map +1 -1
- package/dist/tui/components/WelcomeScreen.js +6 -6
- package/dist/tui/components/WelcomeScreen.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +8 -8
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/services/AIService.d.ts +2 -2
- package/dist/tui/services/AIService.d.ts.map +1 -1
- package/dist/tui/services/AIService.js +165 -125
- package/dist/tui/services/AIService.js.map +1 -1
- package/dist/tui/services/ExtensionService.d.ts +1 -1
- package/dist/tui/services/ExtensionService.d.ts.map +1 -1
- package/dist/tui/services/ExtensionService.js +33 -26
- package/dist/tui/services/ExtensionService.js.map +1 -1
- package/dist/tui/services/GeminiService.d.ts +1 -1
- package/dist/tui/services/GeminiService.d.ts.map +1 -1
- package/dist/tui/services/GeminiService.js +87 -76
- package/dist/tui/services/GeminiService.js.map +1 -1
- package/dist/tui/services/ServiceManager.d.ts +3 -3
- package/dist/tui/services/ServiceManager.d.ts.map +1 -1
- package/dist/tui/services/ServiceManager.js +72 -58
- package/dist/tui/services/ServiceManager.js.map +1 -1
- package/dist/tui/services/SocketService.d.ts.map +1 -1
- package/dist/tui/services/SocketService.js +32 -32
- package/dist/tui/services/SocketService.js.map +1 -1
- package/dist/tui/services/ViteService.d.ts.map +1 -1
- package/dist/tui/services/ViteService.js +26 -28
- package/dist/tui/services/ViteService.js.map +1 -1
- package/dist/tui/services/index.d.ts +6 -6
- package/dist/tui/services/index.d.ts.map +1 -1
- package/dist/tui/services/index.js +6 -6
- package/dist/tui/services/index.js.map +1 -1
- package/mcp/gxp-api-server.js +83 -81
- package/package.json +109 -93
- package/runtime/PortalContainer.vue +258 -234
- package/runtime/dev-tools/DevToolsModal.vue +153 -155
- package/runtime/dev-tools/LayoutSwitcher.vue +144 -140
- package/runtime/dev-tools/MockDataEditor.vue +456 -433
- package/runtime/dev-tools/SocketSimulator.vue +379 -371
- package/runtime/dev-tools/StoreInspector.vue +517 -455
- package/runtime/dev-tools/index.js +5 -5
- package/runtime/fallback-layouts/PrivateLayout.vue +2 -2
- package/runtime/fallback-layouts/PublicLayout.vue +2 -2
- package/runtime/fallback-layouts/SystemLayout.vue +2 -2
- package/runtime/gxpStringsPlugin.js +159 -134
- package/runtime/index.html +17 -19
- package/runtime/main.js +24 -22
- package/runtime/mock-api/auth-middleware.js +15 -15
- package/runtime/mock-api/image-generator.js +46 -46
- package/runtime/mock-api/index.js +55 -55
- package/runtime/mock-api/response-generator.js +116 -105
- package/runtime/mock-api/route-generator.js +107 -84
- package/runtime/mock-api/socket-triggers.js +94 -93
- package/runtime/mock-api/spec-loader.js +79 -80
- package/runtime/package.json +3 -0
- package/runtime/server.js +68 -68
- package/runtime/stores/gxpPortalConfigStore.js +204 -186
- package/runtime/stores/index.js +2 -2
- package/runtime/vite-inspector-plugin.js +858 -707
- package/runtime/vite-source-tracker-plugin.js +132 -113
- package/runtime/vite.config.js +191 -139
- package/scripts/launch-chrome.js +41 -41
- package/scripts/pack-chrome.js +38 -39
- package/socket-events/AiSessionMessageCreated.json +17 -17
- package/socket-events/SocialStreamPostCreated.json +23 -23
- package/socket-events/SocialStreamPostVariantCompleted.json +22 -22
- package/template/.claude/agents/gxp-developer.md +100 -99
- package/template/.claude/settings.json +7 -7
- package/template/AGENTS.md +30 -23
- package/template/GEMINI.md +20 -20
- package/template/README.md +70 -53
- package/template/app-manifest.json +2 -4
- package/template/configuration.json +10 -10
- package/template/default-styling.css +1 -1
- package/template/index.html +18 -20
- package/template/main.js +24 -22
- package/template/src/DemoPage.vue +415 -362
- package/template/src/Plugin.vue +76 -85
- package/template/src/stores/index.js +3 -3
- package/template/src/stores/test-data.json +164 -172
- package/template/theme-layouts/AdditionalStyling.css +50 -50
- package/template/theme-layouts/PrivateLayout.vue +8 -12
- package/template/theme-layouts/PublicLayout.vue +8 -12
- package/template/theme-layouts/SystemLayout.vue +8 -12
- package/template/vite.extend.js +45 -0
- package/template/vite.config.js +0 -409
|
@@ -1 +1 @@
|
|
|
1
|
-
[]
|
|
1
|
+
[]
|
|
@@ -1,145 +1,225 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html>
|
|
3
|
-
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
3
|
+
<head>
|
|
4
|
+
<title>Test Chrome Extension</title>
|
|
5
|
+
<style>
|
|
6
|
+
body {
|
|
7
|
+
font-family: Arial, sans-serif;
|
|
8
|
+
padding: 20px;
|
|
9
|
+
max-width: 800px;
|
|
10
|
+
}
|
|
11
|
+
.test-section {
|
|
12
|
+
margin: 20px 0;
|
|
13
|
+
padding: 20px;
|
|
14
|
+
border: 2px solid #ddd;
|
|
15
|
+
border-radius: 8px;
|
|
16
|
+
}
|
|
17
|
+
.success {
|
|
18
|
+
border-color: #28a745;
|
|
19
|
+
background: #f8fff8;
|
|
20
|
+
}
|
|
21
|
+
.warning {
|
|
22
|
+
border-color: #ffc107;
|
|
23
|
+
background: #fffbf0;
|
|
24
|
+
}
|
|
25
|
+
.info {
|
|
26
|
+
border-color: #17a2b8;
|
|
27
|
+
background: #f0f9ff;
|
|
28
|
+
}
|
|
29
|
+
.code {
|
|
30
|
+
background: #e9ecef;
|
|
31
|
+
padding: 8px;
|
|
32
|
+
font-family: monospace;
|
|
33
|
+
margin: 8px 0;
|
|
34
|
+
word-break: break-all;
|
|
35
|
+
}
|
|
36
|
+
.results {
|
|
37
|
+
background: #f5f5f5;
|
|
38
|
+
padding: 10px;
|
|
39
|
+
margin: 10px 0;
|
|
40
|
+
border-radius: 4px;
|
|
41
|
+
max-height: 300px;
|
|
42
|
+
overflow-y: auto;
|
|
43
|
+
}
|
|
44
|
+
button {
|
|
45
|
+
padding: 10px 15px;
|
|
46
|
+
margin: 5px;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
background: #007bff;
|
|
49
|
+
color: white;
|
|
50
|
+
border: none;
|
|
51
|
+
border-radius: 4px;
|
|
52
|
+
}
|
|
53
|
+
</style>
|
|
54
|
+
</head>
|
|
55
|
+
<body>
|
|
56
|
+
<h1>🔧 Chrome Extension Test</h1>
|
|
28
57
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
58
|
+
<div class="test-section info">
|
|
59
|
+
<h2>📋 Chrome Extension Differences</h2>
|
|
60
|
+
<ul>
|
|
61
|
+
<li>
|
|
62
|
+
<strong>Manifest V3:</strong> Uses service workers instead of
|
|
63
|
+
background scripts
|
|
64
|
+
</li>
|
|
65
|
+
<li>
|
|
66
|
+
<strong>declarativeNetRequest:</strong> Replaces webRequest API for
|
|
67
|
+
better performance
|
|
68
|
+
</li>
|
|
69
|
+
<li>
|
|
70
|
+
<strong>chrome API:</strong> Uses <code>chrome.*</code> instead of
|
|
71
|
+
<code>browser.*</code>
|
|
72
|
+
</li>
|
|
73
|
+
<li>
|
|
74
|
+
<strong>Limited Regex:</strong> Chrome's declarativeNetRequest has
|
|
75
|
+
more limited pattern matching
|
|
76
|
+
</li>
|
|
77
|
+
</ul>
|
|
78
|
+
</div>
|
|
39
79
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
80
|
+
<div class="test-section warning">
|
|
81
|
+
<h2>⚠️ Installation Steps for Chrome</h2>
|
|
82
|
+
<ol>
|
|
83
|
+
<li>Open Chrome and go to <code>chrome://extensions/</code></li>
|
|
84
|
+
<li>Enable "Developer mode" (toggle in top right)</li>
|
|
85
|
+
<li>Click "Load unpacked"</li>
|
|
86
|
+
<li>Select the <code>chrome</code> folder</li>
|
|
87
|
+
<li>The extension should appear in your toolbar</li>
|
|
88
|
+
</ol>
|
|
89
|
+
</div>
|
|
47
90
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
</tr>
|
|
56
|
-
<tr>
|
|
57
|
-
<td style="border: 1px solid #ddd; padding: 8px;">API</td>
|
|
58
|
-
<td style="border: 1px solid #ddd; padding: 8px;">browser.*</td>
|
|
59
|
-
<td style="border: 1px solid #ddd; padding: 8px;">chrome.*</td>
|
|
60
|
-
</tr>
|
|
61
|
-
<tr>
|
|
62
|
-
<td style="border: 1px solid #ddd; padding: 8px;">Manifest</td>
|
|
63
|
-
<td style="border: 1px solid #ddd; padding: 8px;">v2</td>
|
|
64
|
-
<td style="border: 1px solid #ddd; padding: 8px;">v3</td>
|
|
65
|
-
</tr>
|
|
66
|
-
<tr>
|
|
67
|
-
<td style="border: 1px solid #ddd; padding: 8px;">Background</td>
|
|
68
|
-
<td style="border: 1px solid #ddd; padding: 8px;">Persistent scripts</td>
|
|
69
|
-
<td style="border: 1px solid #ddd; padding: 8px;">Service worker</td>
|
|
70
|
-
</tr>
|
|
71
|
-
<tr>
|
|
72
|
-
<td style="border: 1px solid #ddd; padding: 8px;">Network API</td>
|
|
73
|
-
<td style="border: 1px solid #ddd; padding: 8px;">webRequest (full regex)</td>
|
|
74
|
-
<td style="border: 1px solid #ddd; padding: 8px;">declarativeNetRequest (limited patterns)</td>
|
|
75
|
-
</tr>
|
|
76
|
-
</table>
|
|
77
|
-
</div>
|
|
91
|
+
<div class="test-section success">
|
|
92
|
+
<h2>🧪 Chrome Extension Tests</h2>
|
|
93
|
+
<button onclick="checkChromeExtension()">Check Chrome Extension</button>
|
|
94
|
+
<button onclick="testChromeRequest()">Test Chrome Request</button>
|
|
95
|
+
<button onclick="testDeclarativeRules()">Test Declarative Rules</button>
|
|
96
|
+
<div id="chromeResults" class="results"></div>
|
|
97
|
+
</div>
|
|
78
98
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
99
|
+
<div class="test-section">
|
|
100
|
+
<h2>📊 Chrome vs Firefox Comparison</h2>
|
|
101
|
+
<table style="width: 100%; border-collapse: collapse">
|
|
102
|
+
<tr style="background: #f8f9fa">
|
|
103
|
+
<th style="border: 1px solid #ddd; padding: 8px">Feature</th>
|
|
104
|
+
<th style="border: 1px solid #ddd; padding: 8px">Firefox</th>
|
|
105
|
+
<th style="border: 1px solid #ddd; padding: 8px">Chrome</th>
|
|
106
|
+
</tr>
|
|
107
|
+
<tr>
|
|
108
|
+
<td style="border: 1px solid #ddd; padding: 8px">API</td>
|
|
109
|
+
<td style="border: 1px solid #ddd; padding: 8px">browser.*</td>
|
|
110
|
+
<td style="border: 1px solid #ddd; padding: 8px">chrome.*</td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr>
|
|
113
|
+
<td style="border: 1px solid #ddd; padding: 8px">Manifest</td>
|
|
114
|
+
<td style="border: 1px solid #ddd; padding: 8px">v2</td>
|
|
115
|
+
<td style="border: 1px solid #ddd; padding: 8px">v3</td>
|
|
116
|
+
</tr>
|
|
117
|
+
<tr>
|
|
118
|
+
<td style="border: 1px solid #ddd; padding: 8px">Background</td>
|
|
119
|
+
<td style="border: 1px solid #ddd; padding: 8px">
|
|
120
|
+
Persistent scripts
|
|
121
|
+
</td>
|
|
122
|
+
<td style="border: 1px solid #ddd; padding: 8px">Service worker</td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td style="border: 1px solid #ddd; padding: 8px">Network API</td>
|
|
126
|
+
<td style="border: 1px solid #ddd; padding: 8px">
|
|
127
|
+
webRequest (full regex)
|
|
128
|
+
</td>
|
|
129
|
+
<td style="border: 1px solid #ddd; padding: 8px">
|
|
130
|
+
declarativeNetRequest (limited patterns)
|
|
131
|
+
</td>
|
|
132
|
+
</tr>
|
|
133
|
+
</table>
|
|
134
|
+
</div>
|
|
86
135
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
} catch (error) {
|
|
104
|
-
log(`Chrome extension communication failed: ${error.message}`, 'error');
|
|
105
|
-
}
|
|
106
|
-
}
|
|
136
|
+
<script>
|
|
137
|
+
function log(message, type = "info") {
|
|
138
|
+
const results = document.getElementById("chromeResults")
|
|
139
|
+
const timestamp = new Date().toLocaleTimeString()
|
|
140
|
+
const icon =
|
|
141
|
+
type === "error"
|
|
142
|
+
? "❌"
|
|
143
|
+
: type === "success"
|
|
144
|
+
? "✅"
|
|
145
|
+
: type === "warning"
|
|
146
|
+
? "⚠️"
|
|
147
|
+
: "ℹ️"
|
|
148
|
+
results.innerHTML += `<div>${timestamp} ${icon} ${message}</div>`
|
|
149
|
+
}
|
|
107
150
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
try {
|
|
112
|
-
const response = await fetch('https://httpbin.org/get?test=chrome');
|
|
113
|
-
const data = await response.json();
|
|
114
|
-
log(`Request successful: ${response.status}`, 'success');
|
|
115
|
-
log(`Response URL: ${data.url}`, 'info');
|
|
116
|
-
log('Check Chrome DevTools Network tab to see if request was intercepted', 'info');
|
|
117
|
-
} catch (error) {
|
|
118
|
-
log(`Request failed: ${error.message}`, 'error');
|
|
119
|
-
}
|
|
120
|
-
}
|
|
151
|
+
async function checkChromeExtension() {
|
|
152
|
+
log("Checking Chrome extension status...")
|
|
121
153
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const rules = await chrome.declarativeNetRequest.getDynamicRules();
|
|
128
|
-
log(`Found ${rules.length} declarative rules`, 'success');
|
|
129
|
-
|
|
130
|
-
rules.forEach((rule, index) => {
|
|
131
|
-
log(`Rule ${rule.id}: ${rule.condition.regexFilter || rule.condition.urlFilter} → ${rule.action.type}`, 'info');
|
|
132
|
-
});
|
|
133
|
-
} else {
|
|
134
|
-
log('declarativeNetRequest API not available', 'warning');
|
|
135
|
-
}
|
|
136
|
-
} catch (error) {
|
|
137
|
-
log(`Error checking declarative rules: ${error.message}`, 'error');
|
|
138
|
-
}
|
|
139
|
-
}
|
|
154
|
+
try {
|
|
155
|
+
if (typeof chrome === "undefined" || !chrome.runtime) {
|
|
156
|
+
log("Chrome extension API not available", "error")
|
|
157
|
+
return
|
|
158
|
+
}
|
|
140
159
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
160
|
+
const response = await chrome.runtime.sendMessage({
|
|
161
|
+
action: "getState",
|
|
162
|
+
})
|
|
163
|
+
log(
|
|
164
|
+
`✅ Chrome extension responding: Enabled=${response.enabled}, Rules=${response.rules.length}`,
|
|
165
|
+
"success",
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
response.rules.forEach((rule, index) => {
|
|
169
|
+
log(
|
|
170
|
+
`Rule ${index + 1}: ${rule.pattern} → ${rule.redirect} (Mask: ${rule.maskUrl || false})`,
|
|
171
|
+
"info",
|
|
172
|
+
)
|
|
173
|
+
})
|
|
174
|
+
} catch (error) {
|
|
175
|
+
log(
|
|
176
|
+
`Chrome extension communication failed: ${error.message}`,
|
|
177
|
+
"error",
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
async function testChromeRequest() {
|
|
183
|
+
log("Testing request with Chrome extension...")
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
const response = await fetch("https://httpbin.org/get?test=chrome")
|
|
187
|
+
const data = await response.json()
|
|
188
|
+
log(`Request successful: ${response.status}`, "success")
|
|
189
|
+
log(`Response URL: ${data.url}`, "info")
|
|
190
|
+
log(
|
|
191
|
+
"Check Chrome DevTools Network tab to see if request was intercepted",
|
|
192
|
+
"info",
|
|
193
|
+
)
|
|
194
|
+
} catch (error) {
|
|
195
|
+
log(`Request failed: ${error.message}`, "error")
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async function testDeclarativeRules() {
|
|
200
|
+
log("Testing Chrome declarativeNetRequest rules...")
|
|
201
|
+
|
|
202
|
+
try {
|
|
203
|
+
if (chrome.declarativeNetRequest) {
|
|
204
|
+
const rules = await chrome.declarativeNetRequest.getDynamicRules()
|
|
205
|
+
log(`Found ${rules.length} declarative rules`, "success")
|
|
206
|
+
|
|
207
|
+
rules.forEach((rule, index) => {
|
|
208
|
+
log(
|
|
209
|
+
`Rule ${rule.id}: ${rule.condition.regexFilter || rule.condition.urlFilter} → ${rule.action.type}`,
|
|
210
|
+
"info",
|
|
211
|
+
)
|
|
212
|
+
})
|
|
213
|
+
} else {
|
|
214
|
+
log("declarativeNetRequest API not available", "warning")
|
|
215
|
+
}
|
|
216
|
+
} catch (error) {
|
|
217
|
+
log(`Error checking declarative rules: ${error.message}`, "error")
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Auto-run extension check on page load
|
|
222
|
+
window.addEventListener("load", checkChromeExtension)
|
|
223
|
+
</script>
|
|
224
|
+
</body>
|
|
225
|
+
</html>
|