From ffe625ade8a3b6338d9f4a6b5bb71d3f9a75d325 Mon Sep 17 00:00:00 2001 From: Eduard Prigoana Date: Mon, 9 Feb 2026 03:44:36 +0000 Subject: [PATCH] fix build issues --- js/visualizers/butterchurn.js | 24 ++++++++++++++++-------- vite.config.js | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/js/visualizers/butterchurn.js b/js/visualizers/butterchurn.js index 8a9a342..591a039 100644 --- a/js/visualizers/butterchurn.js +++ b/js/visualizers/butterchurn.js @@ -3,32 +3,38 @@ * WebGL-based audio visualization using the Butterchurn library */ import butterchurn from 'butterchurn'; -import butterchurnPresets from 'butterchurn-presets'; import { visualizerSettings } from '../storage.js'; import { audioContextManager } from '../audio-context.js'; // Module-level preset cache - loads immediately when this file is imported let cachedPresets = null; let cachedPresetKeys = []; +let isLoading = false; let loadCallbacks = []; /** - * Load presets at module level using static import + * Load presets at module level using dynamic import (lazy loaded) */ -function loadPresetsModule() { +async function loadPresetsModule() { + if (cachedPresets || isLoading) return; + isLoading = true; + try { - console.log('[Butterchurn] Loading presets module, export type:', typeof butterchurnPresets); + // Dynamic import to code-split butterchurn-presets into separate chunk + const butterchurnPresets = await import('butterchurn-presets'); + console.log('[Butterchurn] Presets module loaded, type:', typeof butterchurnPresets); // The module has a static getPresets method - if (typeof butterchurnPresets.getPresets !== 'function') { + if (typeof butterchurnPresets.default?.getPresets !== 'function') { console.error( '[Butterchurn] butterchurnPresets.getPresets is not a function:', - typeof butterchurnPresets.getPresets + typeof butterchurnPresets.default?.getPresets ); + isLoading = false; return; } - const allPresets = butterchurnPresets.getPresets(); + const allPresets = butterchurnPresets.default.getPresets(); cachedPresets = allPresets || {}; cachedPresetKeys = Object.keys(cachedPresets); @@ -53,6 +59,8 @@ function loadPresetsModule() { console.error('[Butterchurn] Failed to load presets:', e); cachedPresets = {}; cachedPresetKeys = []; + } finally { + isLoading = false; } } @@ -74,7 +82,7 @@ export function onButterchurnPresetsLoaded(callback) { } } -// Start loading presets immediately when module is imported +// Start loading presets immediately when module is imported (lazy loaded) loadPresetsModule(); export class ButterchurnPreset { diff --git a/vite.config.js b/vite.config.js index 01eb386..08ef0e2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -13,6 +13,7 @@ export default defineConfig({ workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg,json}'], cleanupOutdatedCaches: true, + maximumFileSizeToCacheInBytes: 3 * 1024 * 1024, // 3 MiB limit // Define runtime caching strategies runtimeCaching: [ {