Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import type { Plugin as VitePlugin } from 'vite';
type Options = {
assetFilter: (fileName: string) => boolean;
expectedCount: number;
};
/**
* Vite plugin that deletes extraneous assets from the bundle.
*
* @param options - Options for the plugin
* @param options.assetFilter - A function that filters the assets to be deleted
* @param options.expectedCount - The expected number of assets to be deleted
* @throws If the number of extraneous assets is not equal to the expected count.
* @returns The Vite plugin.
*/
export function deduplicateAssets({
assetFilter,
expectedCount,
}: Options): VitePlugin {
return {
name: 'ocap-kernel:deduplicate-assets',
enforce: 'post',
generateBundle(_, bundle) {
const extraneousAssets = Object.values(bundle).filter((assetOrChunk) =>
assetFilter(assetOrChunk.fileName),
);
if (extraneousAssets.length !== expectedCount) {
throw new Error(
`Expected ${expectedCount} extraneous assets, got ${extraneousAssets.length}: ${extraneousAssets.map((asset) => asset.fileName).join(', ')}`,
);
}
for (const asset of extraneousAssets) {
delete bundle[asset.fileName];
}
},
};
}
|