|
|
|
|
/**
|
|
|
|
|
* Script para agregar assertDataContract a todos los componentes de Terra
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
|
|
|
import { resolve, dirname } from 'node:path';
|
|
|
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
|
|
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
|
|
|
const __dirname = dirname(__filename);
|
|
|
|
|
|
|
|
|
|
// Archivos a procesar (rutas relativas al proyecto)
|
|
|
|
|
const files = [
|
|
|
|
|
'accordion/accordion.svelte.ts',
|
|
|
|
|
'alert-dialog/alert-dialog.svelte.ts',
|
|
|
|
|
'aspect-ratio/aspect-ratio.svelte.ts',
|
|
|
|
|
'avatar/avatar.svelte.ts',
|
|
|
|
|
'calendar/calendar.svelte.ts',
|
|
|
|
|
'collapsible/collapsible.svelte.ts',
|
|
|
|
|
'color-picker/color-picker.svelte.ts',
|
|
|
|
|
'command/command.svelte.ts',
|
|
|
|
|
'date-field/date-field.svelte.ts',
|
|
|
|
|
'date-picker/date-picker.svelte.ts',
|
|
|
|
|
'date-range-field/date-range-field.svelte.ts',
|
|
|
|
|
'date-range-picker/date-range-picker.svelte.ts',
|
|
|
|
|
'dialog/dialog.svelte.ts',
|
|
|
|
|
'drawer/drawer.svelte.ts',
|
|
|
|
|
'dropdown-menu/dropdown-menu.svelte.ts',
|
|
|
|
|
'editable/editable.svelte.ts',
|
|
|
|
|
'file-upload/file-upload.svelte.ts',
|
|
|
|
|
'form/form.svelte.ts',
|
|
|
|
|
'link-preview/link-preview.svelte.ts',
|
|
|
|
|
'menu/menu.svelte.ts',
|
|
|
|
|
'menubar/menubar.svelte.ts',
|
|
|
|
|
'meter/meter.svelte.ts',
|
|
|
|
|
'number-field/number-field.svelte.ts',
|
|
|
|
|
'pagination/pagination.svelte.ts',
|
|
|
|
|
'pin-input/pin-input.svelte.ts',
|
|
|
|
|
'popover/popover.svelte.ts',
|
|
|
|
|
'progress/progress.svelte.ts',
|
|
|
|
|
'range-calendar/range-calendar.svelte.ts',
|
|
|
|
|
'rating-group/rating-group.svelte.ts',
|
|
|
|
|
'scroll-area/scroll-area.svelte.ts',
|
|
|
|
|
'select/select.svelte.ts',
|
|
|
|
|
'separator/separator.svelte.ts',
|
|
|
|
|
'slider/slider.svelte.ts',
|
|
|
|
|
'spinner/spinner.svelte.ts',
|
|
|
|
|
'splitter/splitter.svelte.ts',
|
|
|
|
|
'stepper/stepper.svelte.ts',
|
|
|
|
|
'tabs/tabs.svelte.ts',
|
|
|
|
|
'tags-input/tags-input.svelte.ts',
|
|
|
|
|
'thumb/thumb.svelte.ts',
|
|
|
|
|
'time-field/time-field.svelte.ts',
|
|
|
|
|
'time-range-field/time-range-field.svelte.ts',
|
|
|
|
|
'toggle-group/toggle-group.svelte.ts',
|
|
|
|
|
'toolbar/toolbar.svelte.ts',
|
|
|
|
|
'tooltip/tooltip.svelte.ts',
|
soma: tier 1/2 components, Field/NumberField integration, codex_audit fixes
New components: context-menu, field, file-upload, link-preview, menubar.
Codex audit fixes (2026-04-17):
- Wrappers thinned: table, scroll-area scrollbar, calendar, range-calendar
- Toast Root → Item refactor (data-toast-item, resolves part collision)
- TreeView tab-stop fallback, Table right-pinned offset, Toolbar O(N) registry
- Combobox label registry, Pagination count=0, Splitter feasible-range clamp
- TagsInput relatedTarget, Toast compound hotkey, RadioGroup closest filter
- Accessible-name props (aria-label/-labelledby) tipados en RadioGroup/Slider/
Switch/Toolbar; Slider thumbLabels per-index
- NumberField startValue saneado, Table getIsSomeSelected filtra visibles
- Docs: DropdownMenu CheckboxGroup, NumberField terra-free, Pagination
First/Last snippet
Supporting changes:
- App layer + ling/logr/glob/util consolidation, tests updates
- Terra/scripts mechanical reformat (quotes, imports)
- Test pages updated to match new APIs
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 months ago
|
|
|
'virtual-list/virtual-list.svelte.ts'
|
|
|
|
|
].map((f) => resolve(__dirname, '../src/uix/terra', f));
|
|
|
|
|
|
|
|
|
|
let modified = 0;
|
|
|
|
|
let skipped = 0;
|
|
|
|
|
let notFound = 0;
|
|
|
|
|
|
|
|
|
|
for (const file of files) {
|
|
|
|
|
try {
|
|
|
|
|
if (!existsSync(file)) {
|
|
|
|
|
notFound++;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let content = readFileSync(file, 'utf-8');
|
|
|
|
|
const original = content;
|
|
|
|
|
|
|
|
|
|
// Ya tiene el import
|
|
|
|
|
if (content.includes('assertDataContract')) {
|
|
|
|
|
skipped++;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Buscar la última línea de import desde utils/attrs o ../utils/attrs
|
|
|
|
|
const attrsImportMatch = content.match(/from ["'].*?\/utils\/attrs["']/);
|
|
|
|
|
if (!attrsImportMatch) {
|
|
|
|
|
console.log(`⚠️ No se encontró import de attrs en: ${file}`);
|
|
|
|
|
skipped++;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
soma: tier 1/2 components, Field/NumberField integration, codex_audit fixes
New components: context-menu, field, file-upload, link-preview, menubar.
Codex audit fixes (2026-04-17):
- Wrappers thinned: table, scroll-area scrollbar, calendar, range-calendar
- Toast Root → Item refactor (data-toast-item, resolves part collision)
- TreeView tab-stop fallback, Table right-pinned offset, Toolbar O(N) registry
- Combobox label registry, Pagination count=0, Splitter feasible-range clamp
- TagsInput relatedTarget, Toast compound hotkey, RadioGroup closest filter
- Accessible-name props (aria-label/-labelledby) tipados en RadioGroup/Slider/
Switch/Toolbar; Slider thumbLabels per-index
- NumberField startValue saneado, Table getIsSomeSelected filtra visibles
- Docs: DropdownMenu CheckboxGroup, NumberField terra-free, Pagination
First/Last snippet
Supporting changes:
- App layer + ling/logr/glob/util consolidation, tests updates
- Terra/scripts mechanical reformat (quotes, imports)
- Test pages updated to match new APIs
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 months ago
|
|
|
const lastAttrsLineEnd = content.indexOf(
|
|
|
|
|
'\n',
|
|
|
|
|
attrsImportMatch.index + attrsImportMatch[0].length
|
|
|
|
|
);
|
|
|
|
|
if (lastAttrsLineEnd === -1) {
|
|
|
|
|
skipped++;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Insertar el nuevo import después del import de attrs
|
|
|
|
|
const importStatement = `\nimport { assertDataContract } from "$terra/utils/contracts";`;
|
soma: tier 1/2 components, Field/NumberField integration, codex_audit fixes
New components: context-menu, field, file-upload, link-preview, menubar.
Codex audit fixes (2026-04-17):
- Wrappers thinned: table, scroll-area scrollbar, calendar, range-calendar
- Toast Root → Item refactor (data-toast-item, resolves part collision)
- TreeView tab-stop fallback, Table right-pinned offset, Toolbar O(N) registry
- Combobox label registry, Pagination count=0, Splitter feasible-range clamp
- TagsInput relatedTarget, Toast compound hotkey, RadioGroup closest filter
- Accessible-name props (aria-label/-labelledby) tipados en RadioGroup/Slider/
Switch/Toolbar; Slider thumbLabels per-index
- NumberField startValue saneado, Table getIsSomeSelected filtra visibles
- Docs: DropdownMenu CheckboxGroup, NumberField terra-free, Pagination
First/Last snippet
Supporting changes:
- App layer + ling/logr/glob/util consolidation, tests updates
- Terra/scripts mechanical reformat (quotes, imports)
- Test pages updated to match new APIs
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 months ago
|
|
|
content =
|
|
|
|
|
content.slice(0, lastAttrsLineEnd + 1) +
|
|
|
|
|
importStatement +
|
|
|
|
|
content.slice(lastAttrsLineEnd + 1);
|
|
|
|
|
|
|
|
|
|
if (content !== original) {
|
|
|
|
|
writeFileSync(file, content, 'utf-8');
|
|
|
|
|
modified++;
|
|
|
|
|
const componentName = file.replace(/.*src\\uix\\terra\\/, '').replace(/\.svelte\.ts$/, '');
|
|
|
|
|
console.log(`✅ ${componentName}`);
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log(`❌ Error procesando ${file}:`, e.message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log(`\n📊 Resumen:`);
|
|
|
|
|
console.log(` Modificados: ${modified}`);
|
|
|
|
|
console.log(` Skippeados (ya tenían import): ${skipped}`);
|
|
|
|
|
console.log(` No encontrados: ${notFound}`);
|
|
|
|
|
console.log(` Total procesados: ${modified + skipped + notFound}`);
|