Skip to content

Commit 64805a3

Browse files
authored
chore: enhance debugging capabilities (#77)
1 parent ecd9d5c commit 64805a3

File tree

31 files changed

+247
-196
lines changed

31 files changed

+247
-196
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@qwik.dev/devtools': patch
3+
---
4+
5+
CHORE: add debug log and format

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "Qwik devtools monorepo",
55
"scripts": {
66
"dev": "pnpm --filter plugin build && MODE=dev pnpm --parallel dev",
7-
"playground": "MODE=dev pnpm --filter playground dev",
7+
"playground": "MODE=dev DEBUG=qwik:devtools:* pnpm --filter playground dev",
88
"build": "tsx scripts/build-devtools.ts",
99
"change": "changeset",
1010
"release": "changeset publish",
@@ -17,7 +17,9 @@
1717
"@types/node": "^22.10.5",
1818
"tsdown": "^0.9.6",
1919
"tsx": "^4.19.2",
20-
"vitest": "^3.2.4"
20+
"vitest": "^3.2.4",
21+
"debug": "4.4.3",
22+
"@types/debug": "4.1.12"
2123
},
2224
"private": true,
2325
"keywords": [

packages/playgrounds/src/root.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
} from '@qwik.dev/router';
88
import { RouterHead } from './components/router-head/router-head';
99
import './global.css';
10-
import '../../devtools/dist/ui/style.css';
1110
export default component$(() => {
1211
/**
1312
* The root of a QwikRouter site always start with the <QwikRouterProvider> component,

packages/plugin/src/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import useCollectHooksSource from './utils/useCollectHooks'
66
import { parseQwikCode } from './parse/parse';
77
import { startPreloading } from './npm/index';
88
import updateConf from './utils/updateConf';
9+
import {debug} from 'debug'
910

10-
11+
const log = debug('qwik:devtools:plugin');
1112
export function qwikDevtools(): Plugin[] {
1213
let _config: ResolvedConfig;
1314
const qwikData = new Map<string, any>();
@@ -47,7 +48,7 @@ export function qwikDevtools(): Plugin[] {
4748
if (!preloadStarted) {
4849
preloadStarted = true;
4950
startPreloading({ config: _config }).catch((err) => {
50-
console.error('[Qwik DevTools] Failed to start preloading:', err);
51+
log('[Qwik DevTools] Failed to start preloading:', err);
5152
});
5253
}
5354
},
@@ -62,7 +63,7 @@ export function qwikDevtools(): Plugin[] {
6263
const importLine = `import { ${INNER_USE_HOOK} } from '${VIRTUAL_QWIK_DEVTOOLS_KEY}';\n`
6364
code = importLine + code
6465
}else {
65-
console.log('importing virtual qwik devtools', VIRTUAL_QWIK_DEVTOOLS_KEY, code);
66+
log('importing virtual qwik devtools', VIRTUAL_QWIK_DEVTOOLS_KEY, code);
6667
}
6768
code = parseQwikCode(code, {path: id})
6869
}

packages/plugin/src/inspect/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import fs from 'node:fs/promises'
22
import { parseQwikCode } from "../parse/parse";
33
import { ServerContext } from "../types";
4+
import {debug} from 'debug'
5+
6+
const log = debug('qwik:devtools:inspect');
47
const codeStringCache = new Map<string, ReturnType<typeof parseQwikCode>>()
58

69
function parseCodeWithCache(code: string) {
@@ -41,7 +44,7 @@ export function getModulesContent(ctx: ServerContext) {
4144
modules
4245
};
4346
} catch (error) {
44-
console.log(`Failed to transform request for ${pathId}:`, error);
47+
log(`Failed to transform request for ${pathId}:`, error);
4548
return {
4649
pathId,
4750
modules: null,
@@ -98,7 +101,7 @@ export function getModulesContent(ctx: ServerContext) {
98101

99102
return []
100103
} catch (error) {
101-
console.error(`Failed to parse qwik code for ${pathId}:`, error);
104+
log(`Failed to parse qwik code for ${pathId}:`, error);
102105
return []
103106
}
104107

packages/plugin/src/npm/index.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import fsp from 'node:fs/promises';
33
import { NpmInfo } from '@devtools/kit';
44
import { execSync } from 'child_process';
55
import path from 'path';
6+
import {debug} from 'debug'
67

8+
const log = debug('qwik:devtools:npm');
79
// In-memory cache for npm package information
810
interface CacheEntry {
911
data: any;
@@ -100,17 +102,17 @@ export async function detectPackageManager(
100102
// Preload dependencies function - moved to module scope
101103
const preloadDependencies = async (config: any): Promise<any[]> => {
102104
if (preloadedDependencies) {
103-
console.log('[Qwik DevTools] Dependencies already preloaded');
105+
log('[Qwik DevTools] Dependencies already preloaded');
104106
return preloadedDependencies;
105107
}
106108

107109
if (isPreloading && preloadPromise) {
108-
console.log('[Qwik DevTools] Preloading already in progress...');
110+
log('[Qwik DevTools] Preloading already in progress...');
109111
return preloadPromise;
110112
}
111113

112114
isPreloading = true;
113-
console.log('[Qwik DevTools] Starting to preload dependencies...');
115+
log('[Qwik DevTools] Starting to preload dependencies...');
114116

115117
preloadPromise = (async () => {
116118
const startDir = getProjectStartDirFromConfig(config);
@@ -119,7 +121,7 @@ const preloadDependencies = async (config: any): Promise<any[]> => {
119121
if (!pathToPackageJson) {
120122
preloadedDependencies = [];
121123
isPreloading = false;
122-
console.log('[Qwik DevTools] No package.json found');
124+
log('[Qwik DevTools] No package.json found');
123125
return [];
124126
}
125127

@@ -163,7 +165,7 @@ const preloadDependencies = async (config: any): Promise<any[]> => {
163165

164166
const fetchedPackages: any[] = [];
165167

166-
console.log(`[Qwik DevTools] Fetching ${uncachedDependencies.length} packages in parallel...`);
168+
log(`[Qwik DevTools] Fetching ${uncachedDependencies.length} packages in parallel...`);
167169

168170
const allBatchPromises = batches.map(async (batch) => {
169171
const batchPromises = batch.map(async ([name, version]) => {
@@ -253,11 +255,11 @@ const preloadDependencies = async (config: any): Promise<any[]> => {
253255
preloadedDependencies = allPackages;
254256
isPreloading = false;
255257

256-
console.log(`[Qwik DevTools] ✓ Successfully preloaded ${allPackages.length} dependencies`);
258+
log(`[Qwik DevTools] ✓ Successfully preloaded ${allPackages.length} dependencies`);
257259

258260
return allPackages;
259261
} catch (error) {
260-
console.error('[Qwik DevTools] ✗ Failed to preload dependencies:', error);
262+
log('[Qwik DevTools] ✗ Failed to preload dependencies:', error);
261263
preloadedDependencies = [];
262264
isPreloading = false;
263265
return [];
@@ -270,14 +272,14 @@ const preloadDependencies = async (config: any): Promise<any[]> => {
270272
// Export function to start preloading from plugin initialization
271273
export async function startPreloading({ config }: { config: any }) {
272274
const startTime = Date.now();
273-
console.log('[Qwik DevTools] 🚀 Initiating dependency preload (background)...');
275+
log('[Qwik DevTools] 🚀 Initiating dependency preload (background)...');
274276

275277
// Start preloading in background, don't wait for it
276278
preloadDependencies(config).then(() => {
277279
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
278-
console.log(`[Qwik DevTools] ⚡ Preload completed in ${duration}s`);
280+
log(`[Qwik DevTools] ⚡ Preload completed in ${duration}s`);
279281
}).catch((err) => {
280-
console.error('[Qwik DevTools] ✗ Preload failed:', err);
282+
log('[Qwik DevTools] ✗ Preload failed:', err);
281283
});
282284

283285
// Return immediately, don't block
@@ -305,18 +307,18 @@ export function getNpmFunctions({ config }: ServerContext) {
305307
async getAllDependencies(): Promise<any[]> {
306308
// Return preloaded data immediately if available
307309
if (preloadedDependencies) {
308-
console.log('[Qwik DevTools] Returning preloaded dependencies');
310+
log('[Qwik DevTools] Returning preloaded dependencies');
309311
return preloadedDependencies;
310312
}
311313

312314
// If preloading is in progress, wait for it
313315
if (isPreloading && preloadPromise) {
314-
console.log('[Qwik DevTools] Waiting for preload to complete...');
316+
log('[Qwik DevTools] Waiting for preload to complete...');
315317
return preloadPromise;
316318
}
317319

318320
// If preloading hasn't started (shouldn't happen), start it now
319-
console.log('[Qwik DevTools] Warning: Preload not started, starting now...');
321+
log('[Qwik DevTools] Warning: Preload not started, starting now...');
320322
return preloadDependencies(config);
321323
},
322324

packages/ui/src/components/DevtoolsButton/DevtoolsButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const DevtoolsButton = component$(({ state }: DevtoolsButtonProps) => {
8888
<div
8989
ref={elementRef}
9090
class={{
91-
'fixed flex h-9 w-9 origin-center select-none items-center justify-center rounded-lg border border-border bg-background backdrop-blur-md':
91+
'border-border bg-background fixed flex h-9 w-9 origin-center select-none items-center justify-center rounded-lg border backdrop-blur-md':
9292
true,
9393
'border-accent/50 bg-background/95 shadow-accent/35 rotate-90 shadow-lg':
9494
state.isOpen.value && !isDragging.value,

packages/ui/src/components/DevtoolsPanel/DevtoolsPanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export const DevtoolsPanel = component$(({ state }: DevtoolsPanelProps) => {
4848
return (
4949
<div
5050
ref={panelRef}
51-
class="fixed bottom-6 right-6 flex h-[calc(100vh-3rem)] w-[calc(100vw-3rem)] translate-y-0 transform overflow-hidden rounded-lg border-2 border-border bg-background text-foreground backdrop-blur-lg transition-transform duration-300 ease-in-out"
51+
class="border-border bg-background text-foreground fixed bottom-6 right-6 flex h-[calc(100vh-3rem)] w-[calc(100vw-3rem)] translate-y-0 transform overflow-hidden rounded-lg border-2 backdrop-blur-lg transition-transform duration-300 ease-in-out"
5252
>
5353
<Slot />
5454
</div>

packages/ui/src/components/Tab/Tab.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export const Tab = component$<TabProps>(({ state, id, title }) => {
1515
class={{
1616
'flex h-10 w-10 items-center justify-center rounded-lg p-2.5 transition-all duration-200':
1717
true,
18-
'bg-transparent hover:bg-foreground/5 text-muted-foreground hover:text-foreground':
18+
'hover:bg-foreground/5 text-muted-foreground hover:text-foreground bg-transparent':
1919
state.activeTab !== id,
2020
'shadow-accent/35 bg-accent text-white shadow-lg':
2121
state.activeTab === id,

packages/ui/src/components/TabContent/TabContent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { component$, Slot } from '@qwik.dev/core';
33
export const TabContent = component$(() => {
44
return (
55
<div class="flex h-full w-full flex-col space-y-6">
6-
<div class="flex items-center justify-between border-b border-border pb-4">
6+
<div class="border-border flex items-center justify-between border-b pb-4">
77
<Slot name="title" />
88
</div>
99

0 commit comments

Comments
 (0)