You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/vite.config.ts

96 lines
2.7 KiB

import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vitest/config';
import { playwright } from '@vitest/browser-playwright';
import { sveltekit } from '@sveltejs/kit/vite';
import { fileURLToPath } from 'url';
import { resolve, dirname } from 'path';
// __dirname no existe en ESM — se reconstruye así
const __dirname = dirname(fileURLToPath(import.meta.url));
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
resolve: {
alias: {
// @/ → src/
'@': resolve(__dirname, 'src'),
// @/ling → src/lib/ling
'@/ling': resolve(__dirname, 'src/lib/ling'),
// @/logr → src/lib/logr
'@/logr': resolve(__dirname, 'src/lib/logr'),
// @/glob → src/lib/glob
'@/glob': resolve(__dirname, 'src/lib/glob'),
// @/actx → src/lib/actx
'@/actx': resolve(__dirname, 'src/lib/actx'),
// @/uiux → src/lib/uiux
'@/uiux': resolve(__dirname, 'src/lib/uiux'),
// $uix → src/uix
'$glob': resolve(__dirname, 'src/lib/glob'),
'$uix': resolve(__dirname, 'src/uix'),
'$lib': resolve(__dirname, 'src/lib'),
// $terra → src/uix/terra
'$terra': resolve(__dirname, 'src/uix/terra'),
// $reactive → src/lib/util/reactive
'$reactive': resolve(__dirname, 'src/lib/util/reactive'),
// $soma → src/uix/soma
'$soma': resolve(__dirname, 'src/uix/soma'),
soma: 10 new components + reactivity audit + guide rules A30–A33 Components shipped: - AlertDialog (thin Dialog specialisation with Escape=close default) - Breadcrumb (+ interactive Ellipsis composing DropdownMenu) - Carousel (gesture + autoplay + indicators) - Listbox (roving tabindex + typeahead + Ctrl+A multi-select) - NavigationMenu (hover-intent + data-motion direction + Indicator CSS vars) - PinInput (Field-aware segmented input with paste transformer) - RatingGroup (half-step + clearable + keyboard digits) - Toggle (standalone two-state with Field OR-merge) - VirtualGrid (2D windowing for spreadsheets / thumbnail grids) - VirtualList (fixed + dynamic heights, ResizeObserver anti-jump, WindowViewport) Guide rules (src/uix/soma/COMPONENT_GUIDE.md): - A30 + item 32: id registration via direct assign, never $effect — the $effect(() => parent.id = opts.id) pattern causes reactive loops that freeze the page. Ref: PinInput + Listbox incidents. - A31 + item 33: per-entity $derived must not call provider methods that read global state — lift to single provider $derived, per-entity derivations pointer-compare. Ref: Command (2026-04-17), Listbox rovingTarget. - A32 + items 34–35: present comparison table in conversation before declaring done. Every ❌/⚠️ gets an explicit decision (implement / defer to v2 / drop); deferred features become their own README section. - A33 + item 36: reactive collections use SvelteMap / SvelteSet from svelte/reactivity — $state(new Map()) only tracks field reassignment, not per-entry .set/.get/.has reads inside $derived. Reactivity audits + fixes: - VirtualList sizeCache → SvelteMap (dynamic heights were silently stuck). - Form touched + registry → SvelteMap (isTouched / isDirty / onBlur validation $derived never re-ran with plain Map). - Combobox labelRegistry → SvelteMap (removed clone-and-reassign workaround, O(N)→O(1) per registration). Other fixes this pass: - ColorField/ColorPicker RGB co-increment bug (HSV round-trip was lossy). - 24 state_referenced_locally warnings swept across date/time/color field+picker wrappers (removed `void X;` placeholders that Svelte 5 flagged, added svelte-ignore for intentional mount-time reads). - AlertDialog Content wrapper forces escapeKeydownBehavior=close (overrides Dialog's alertdialog→ignore default → matches WAI-ARIA). - Breadcrumb Ellipsis interactive prop renders <button aria-haspopup> so DropdownMenu composition works without manual trigger plumbing. - VirtualList Viewport drops `contain: strict` (was breaking programmatic scrollTo in some engines). - Memory entries: feedback_id_effect_assign_directly, feedback_scope_approval, feedback_svelte_reactivity_collections. Sium library (delegated session, landed in tree): - Core schema + primitives + combinators + pipe + refines + modifiers. - Langs module with idlangref resolver. - Svelte form adapter. - Protocol docs + status ledger for Codex coordination. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 months ago
// $langs → src/lib/ext/lang/lang.svelte (i18n public entry)
'$langs': resolve(__dirname, 'src/lib/ext/lang/lang.svelte'),
},
},
test: {
expect: { requireAssertions: true },
projects: [
{
extends: './vite.config.ts',
test: {
name: 'client',
browser: {
enabled: true,
provider: playwright(),
instances: [{ browser: 'chromium', headless: true }]
},
include: ['src/**/*.svelte.{test,spec}.{js,ts}'],
exclude: ['src/lib/server/**']
}
},
{
extends: './vite.config.ts',
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'@/ling': resolve(__dirname, 'src/lib/ling'),
'@/logr': resolve(__dirname, 'src/lib/logr'),
'@/glob': resolve(__dirname, 'src/lib/glob'),
'@/actx': resolve(__dirname, 'src/lib/actx'),
'@/uiux': resolve(__dirname, 'src/lib/uiux'),
'$lib': resolve(__dirname, 'src/lib'),
'$glob': resolve(__dirname, 'src/lib/glob'),
'$uix': resolve(__dirname, 'src/uix'),
'$terra': resolve(__dirname, 'src/uix/terra'),
'$reactive': resolve(__dirname, 'src/lib/util/reactive'),
'$soma': resolve(__dirname, 'src/uix/soma'),
},
},
test: {
name: 'server',
environment: 'node',
include: ['src/**/*.{test,spec}.{js,ts}'],
exclude: ['src/**/*.svelte.{test,spec}.{js,ts}']
}
}
]
}
});

Powered by TurnKey Linux.