Skip to content

Commit b004396

Browse files
authored
fix(assets): proper asset details displaying for .map or other non-module assets (#70)
1 parent e142517 commit b004396

3 files changed

Lines changed: 67 additions & 21 deletions

File tree

packages/devtools-vite/src/app/components/data/AssetDetails.vue

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,32 @@ const { state } = useAsyncState(
2323
async () => {
2424
if (!props.lazy)
2525
return
26+
2627
const res = await rpc.value!['vite:rolldown:get-asset-details']?.({
2728
session: props.session.id,
2829
id: props.asset.filename,
2930
})
30-
return {
31-
chunks: [{ ...res?.chunk, type: 'chunk' }],
32-
importers: res?.importers,
33-
imports: res?.imports,
34-
} satisfies {
35-
chunks: RolldownChunkInfo[]
36-
importers: AssetInfo[]
37-
imports: AssetInfo[]
31+
if ('chunk' in res) {
32+
return {
33+
chunks: [{ ...res?.chunk, type: 'chunk' }],
34+
importers: res?.importers,
35+
imports: res?.imports,
36+
} as {
37+
chunks: RolldownChunkInfo[]
38+
importers: AssetInfo[]
39+
imports: AssetInfo[]
40+
}
41+
}
42+
else {
43+
return {
44+
chunks: [],
45+
importers: [],
46+
imports: [],
47+
} as {
48+
chunks: RolldownChunkInfo[]
49+
importers: AssetInfo[]
50+
imports: AssetInfo[]
51+
}
3852
}
3953
},
4054
null,
@@ -94,7 +108,7 @@ function openInEditor() {
94108
</div>
95109
</template>
96110

97-
<div flex="~ col gap-4">
111+
<div v-if="assetChunks && assetChunks.length > 0" flex="~ col gap-4">
98112
<div flex="~ col gap-2">
99113
<div op50>
100114
Chunks
@@ -119,5 +133,14 @@ function openInEditor() {
119133
</div>
120134
</template>
121135
</div>
136+
<div v-else flex="~ col gap-1">
137+
<!-- For other situation -->
138+
<div op50>
139+
[Non-Module Asset]
140+
</div>
141+
<div v-if="asset.filename.endsWith('.map')" flex="~ items-center gap-2">
142+
<span op50>Source Map for</span> <DisplayBadge :text="JSON.parse(asset.content!).file" />
143+
</div>
144+
</div>
122145
</div>
123146
</template>

packages/devtools-vite/src/app/components/data/AssetDetailsLoader.vue

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,31 @@ const { state } = useAsyncState(
2020
session: props.session.id,
2121
id: props.asset,
2222
})
23-
return {
24-
asset: { ...res?.asset, type: 'asset' },
25-
chunks: [{ ...res?.chunk, type: 'chunk' }],
26-
importers: res?.importers,
27-
imports: res?.imports,
28-
} satisfies {
29-
asset: RolldownAssetInfo
30-
chunks: RolldownChunkInfo[]
31-
importers: AssetInfo[]
32-
imports: AssetInfo[]
23+
if ('chunk' in res) {
24+
return {
25+
asset: { ...res?.asset, type: 'asset' },
26+
chunks: [{ ...res?.chunk, type: 'chunk' }],
27+
importers: res?.importers,
28+
imports: res?.imports,
29+
} as {
30+
asset: RolldownAssetInfo
31+
chunks: RolldownChunkInfo[]
32+
importers: AssetInfo[]
33+
imports: AssetInfo[]
34+
}
35+
}
36+
else {
37+
return {
38+
asset: { ...res?.asset, type: 'asset' },
39+
chunks: [],
40+
importers: [],
41+
imports: [],
42+
} satisfies {
43+
asset: RolldownAssetInfo
44+
chunks: RolldownChunkInfo[]
45+
importers: AssetInfo[]
46+
imports: AssetInfo[]
47+
}
3348
}
3449
},
3550
null,

packages/devtools-vite/src/node/rpc/functions/rolldown-get-asset-details.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,19 @@ export const rolldownGetAssetDetails = defineRpcFunction({
99
return {
1010
handler: async ({ session, id }: { session: string, id: string }) => {
1111
const reader = await manager.loadSession(session)
12-
const assets = await reader.manager.assets
13-
const chunks = await reader.manager.chunks
12+
const assets = reader.manager.assets
13+
const chunks = reader.manager.chunks
1414
const asset = assets.get(id)!
1515
const assetList = Array.from(assets.values())
1616
const chunkList = Array.from(chunks.values())
17+
18+
if (asset.chunk_id === null) {
19+
// sourceMap or other
20+
return {
21+
asset,
22+
}
23+
}
24+
1725
const assetChunkId = asset.chunk_id!
1826
const chunk = chunks.get(assetChunkId)!
1927
const importers = chunkList.filter(mod => mod.imports.some(i => i.chunk_id === assetChunkId)).map(c => assetList.find(a => a.chunk_id === c.chunk_id)!)

0 commit comments

Comments
 (0)