Generated by Spark: I see loading screen, which is fine but we need really good console.log trace logging so i can trace the initialisation flow

This commit is contained in:
2026-01-17 02:03:46 +00:00
committed by GitHub
parent d15d527473
commit da8532dd11
5 changed files with 269 additions and 28 deletions

View File

@@ -2,75 +2,108 @@ import { useCallback, useState } from 'react'
import seedDataConfig from '@/config/seed-data.json'
export function useSeedData() {
console.log('[SEED] 🌱 useSeedData hook initializing')
const [isLoaded, setIsLoaded] = useState(false)
const [isLoading, setIsLoading] = useState(false)
const loadSeedData = useCallback(async () => {
if (isLoading || isLoaded) return
console.log('[SEED] 🔍 loadSeedData called - isLoading:', isLoading, 'isLoaded:', isLoaded)
if (isLoading || isLoaded) {
console.log('[SEED] ⏭️ Skipping seed data load (already loading or loaded)')
return
}
console.log('[SEED] 🚀 Starting seed data load')
setIsLoading(true)
console.time('[SEED] Seed data load duration')
try {
console.log('[SEED] 🔌 Checking Spark KV availability')
if (!window.spark?.kv) {
console.warn('Spark KV not available, skipping seed data')
console.warn('[SEED] ⚠️ Spark KV not available, skipping seed data')
return
}
console.log('[SEED] ✅ Spark KV is available')
console.log('[SEED] 📋 Fetching existing keys from KV store')
const keys = await window.spark.kv.keys()
console.log('[SEED] 📊 Found', keys.length, 'existing keys:', keys)
console.log('[SEED] 📦 Seed data config entries:', Object.keys(seedDataConfig).length)
let seededCount = 0
let skippedCount = 0
for (const [key, value] of Object.entries(seedDataConfig)) {
if (!keys.includes(key)) {
console.log('[SEED] Seeding key:', key)
await window.spark.kv.set(key, value)
seededCount++
} else {
console.log('[SEED] ⏭️ Skipping existing key:', key)
skippedCount++
}
}
console.log('[SEED] ✅ Seed data load complete - seeded:', seededCount, 'skipped:', skippedCount)
setIsLoaded(true)
} catch (error) {
console.error('Failed to load seed data:', error)
console.error('[SEED] ❌ Failed to load seed data:', error)
setIsLoaded(true)
} finally {
setIsLoading(false)
console.timeEnd('[SEED] Seed data load duration')
}
}, [isLoading, isLoaded])
const resetSeedData = useCallback(async () => {
console.log('[SEED] 🔄 Resetting seed data')
setIsLoading(true)
try {
if (!window.spark?.kv) {
console.warn('Spark KV not available')
console.warn('[SEED] ⚠️ Spark KV not available')
return
}
console.log('[SEED] 🔄 Overwriting all seed data keys')
for (const [key, value] of Object.entries(seedDataConfig)) {
console.log('[SEED] 📝 Setting key:', key)
await window.spark.kv.set(key, value)
}
console.log('[SEED] ✅ Seed data reset complete')
setIsLoaded(true)
} catch (error) {
console.error('Failed to reset seed data:', error)
console.error('[SEED] ❌ Failed to reset seed data:', error)
} finally {
setIsLoading(false)
}
}, [])
const clearAllData = useCallback(async () => {
console.log('[SEED] 🗑️ Clearing all data')
setIsLoading(true)
try {
if (!window.spark?.kv) {
console.warn('Spark KV not available')
console.warn('[SEED] ⚠️ Spark KV not available')
return
}
const keys = await window.spark.kv.keys()
console.log('[SEED] 📋 Deleting', keys.length, 'keys')
for (const key of keys) {
console.log('[SEED] 🗑️ Deleting key:', key)
await window.spark.kv.delete(key)
}
console.log('[SEED] ✅ All data cleared')
setIsLoaded(false)
} catch (error) {
console.error('Failed to clear data:', error)
console.error('[SEED] ❌ Failed to clear data:', error)
} finally {
setIsLoading(false)
}
}, [])
console.log('[SEED] 📤 Returning seed data hook methods')
return {
isLoaded,
isLoading,

View File

@@ -134,9 +134,22 @@ const DEFAULT_FILES: ProjectFile[] = [
]
export function useProjectState() {
console.log('[STATE] 🔧 useProjectState hook initializing')
console.time('[STATE] Project state initialization')
console.log('[STATE] 📁 Loading files from KV')
const [files, setFiles] = useKV<ProjectFile[]>('project-files', DEFAULT_FILES)
console.log('[STATE] ✅ Files loaded:', files?.length || 0, 'files')
console.log('[STATE] 🗃️ Loading models from KV')
const [models, setModels] = useKV<PrismaModel[]>('project-models', [])
console.log('[STATE] ✅ Models loaded:', models?.length || 0, 'models')
console.log('[STATE] 🧩 Loading components from KV')
const [components, setComponents] = useKV<ComponentNode[]>('project-components', [])
console.log('[STATE] ✅ Components loaded:', components?.length || 0, 'components')
console.log('[STATE] 🌳 Loading component trees from KV')
const [componentTrees, setComponentTrees] = useKV<ComponentTree[]>('project-component-trees', [
{
id: 'default-tree',
@@ -147,17 +160,49 @@ export function useProjectState() {
updatedAt: Date.now(),
},
])
console.log('[STATE] ✅ Component trees loaded:', componentTrees?.length || 0, 'trees')
console.log('[STATE] 🔄 Loading workflows from KV')
const [workflows, setWorkflows] = useKV<Workflow[]>('project-workflows', [])
console.log('[STATE] ✅ Workflows loaded:', workflows?.length || 0, 'workflows')
console.log('[STATE] λ Loading lambdas from KV')
const [lambdas, setLambdas] = useKV<Lambda[]>('project-lambdas', [])
console.log('[STATE] ✅ Lambdas loaded:', lambdas?.length || 0, 'lambdas')
console.log('[STATE] 🎨 Loading theme from KV')
const [theme, setTheme] = useKV<ThemeConfig>('project-theme', DEFAULT_THEME)
console.log('[STATE] ✅ Theme loaded')
console.log('[STATE] 🎭 Loading Playwright tests from KV')
const [playwrightTests, setPlaywrightTests] = useKV<PlaywrightTest[]>('project-playwright-tests', [])
console.log('[STATE] ✅ Playwright tests loaded:', playwrightTests?.length || 0, 'tests')
console.log('[STATE] 📚 Loading Storybook stories from KV')
const [storybookStories, setStorybookStories] = useKV<StorybookStory[]>('project-storybook-stories', [])
console.log('[STATE] ✅ Storybook stories loaded:', storybookStories?.length || 0, 'stories')
console.log('[STATE] 🧪 Loading unit tests from KV')
const [unitTests, setUnitTests] = useKV<UnitTest[]>('project-unit-tests', [])
console.log('[STATE] ✅ Unit tests loaded:', unitTests?.length || 0, 'tests')
console.log('[STATE] 🐍 Loading Flask config from KV')
const [flaskConfig, setFlaskConfig] = useKV<FlaskConfig>('project-flask-config', DEFAULT_FLASK_CONFIG)
console.log('[STATE] ✅ Flask config loaded')
console.log('[STATE] ⚛️ Loading Next.js config from KV')
const [nextjsConfig, setNextjsConfig] = useKV<NextJsConfig>('project-nextjs-config', DEFAULT_NEXTJS_CONFIG)
console.log('[STATE] ✅ Next.js config loaded')
console.log('[STATE] 📦 Loading NPM settings from KV')
const [npmSettings, setNpmSettings] = useKV<NpmSettings>('project-npm-settings', DEFAULT_NPM_SETTINGS)
console.log('[STATE] ✅ NPM settings loaded')
console.log('[STATE] 🎚️ Loading feature toggles from KV')
const [featureToggles, setFeatureToggles] = useKV<FeatureToggles>('project-feature-toggles', DEFAULT_FEATURE_TOGGLES)
console.log('[STATE] ✅ Feature toggles loaded')
console.log('[STATE] 🛡️ Creating safe array wrappers')
const safeFiles = Array.isArray(files) ? files : []
const safeModels = Array.isArray(models) ? models : []
const safeComponents = Array.isArray(components) ? components : []
@@ -172,7 +217,11 @@ export function useProjectState() {
const safeNextjsConfig = nextjsConfig || DEFAULT_NEXTJS_CONFIG
const safeNpmSettings = npmSettings || DEFAULT_NPM_SETTINGS
const safeFeatureToggles = featureToggles || DEFAULT_FEATURE_TOGGLES
console.log('[STATE] ✅ Safe wrappers created')
console.log('[STATE] 📤 Returning project state object')
console.timeEnd('[STATE] Project state initialization')
return {
files: safeFiles,
setFiles,