Extension de VS Code para particionar JSON masivos de forma segura, sin congelar la UI, y explorar resultados con un visor de texto y un visor jerarquico con carga perezosa.
Version actual: 0.1.3
Lo Nuevo En 0.1.3
Namespace interno unificado en jsonPartitioner para evitar conflictos de registro.
Comando de apertura rapido: JSONSplitter: Abrir particionador.
Icono de Activity Bar corregido con SVG compatible para VS Code.
Menu contextual de copiado estabilizado (cierra correctamente tras copiar).
Selector de archivo filtrado para mostrar solo .json.
Cambio de modo de vista movido al visor (Texto/Árbol), sin selector en el menu lateral.
Ir al registro #N con restauracion de vista al limpiar el campo.
Busqueda estructural por palabra o frase en contenido cargado.
Filtrado visual por coincidencias en modo texto y modo arbol.
Navegacion de coincidencias (anterior/siguiente), contador y foco activo.
Widget flotante de búsqueda arrastrable con conservación de posición mientras el visor permanezca abierto.
Búsqueda global por streaming en toda la partición (no limitada al DOM cargado).
Lista de resultados incremental tipo Find con snippets resaltados.
Toggles de búsqueda: mayúsculas/minúsculas, palabra completa y regex (con validación de patrón inválido).
Campo "Ir al registro #N" en vivo al escribir (sin botón Ir).
Capacidades Principales
Particionado streaming para archivos grandes.
Deteccion de encoding: UTF-8, UTF-8 BOM, UTF-16 LE, UTF-16 BE.
Deteccion de formato de contenido: json-array, json-object, ndjson, invalid.
Ejecucion pesada en Worker Thread para no bloquear el host de extension.
Cancelacion con limpieza de parciales.
Verificacion previa de espacio libre en disco.
Soporte de carpeta de salida seleccionada por usuario.
Visor Integrado
Modo Texto
Cambio directo a modo Arbol desde el propio visor.
Carga por bloques de lineas (Cargar mas).
Colapsado/expandido estructural real por bloques.
Búsqueda global por streaming en toda la partición.
Lista de resultados con snippets y resaltado.
Navegación de resultados con anterior/siguiente y contador global.
Click sobre coincidencia para abrir su contexto en el documento completo.
Al limpiar la busqueda, recupera la vista cargada previa (no se pierde el estado base).
El widget Ctrl+F se puede arrastrar y mantiene su posición al cerrarlo/abrirlo de nuevo en la misma sesión del visor.
Ir al registro #N en vivo al escribir; al limpiar el campo, vuelve al archivo completo.
Modo Jerarquico
Cambio directo a modo Texto desde el propio visor.
Carga incremental de nodos raiz.
Expansiones lazy de hijos bajo demanda.
Búsqueda global por streaming con resultados por path.
Oculta nodos sin coincidencia y mantiene ramas ancestro visibles.
Resaltado de nodos con match.
Click en coincidencia para abrir el contexto estructural correspondiente.
Al limpiar la busqueda, vuelve al arbol cargado previamente.
El widget Ctrl+F conserva su posición dentro del panel durante la sesión.
Comandos
jsonPartitioner.openPartitioner
Titulo: JSONSplitter: Abrir particionador
jsonPartitioner.loadFile
Titulo: JSON Splitter: Cargar archivo
jsonPartitioner.selectOutputFolder
Titulo: JSON Splitter: Seleccionar carpeta de salida
jsonPartitioner.partition
Titulo: JSON Splitter: Particionar
jsonPartitioner.cancelPartition
Titulo: JSON Splitter: Cancelar particionado
jsonPartitioner.openViewer
Titulo: JSON Splitter: Abrir visor
jsonPartitioner.deletePartition
Titulo: JSON Splitter: Eliminar particion
jsonPartitioner.deleteAllPartitions
Titulo: JSON Splitter: Eliminar todas las particiones
Configuracion
jsonPartitioner.chunkSizeKB
Chunk en KB para paginacion del visor de texto.
jsonPartitioner.progressUpdateThrottleMs
Frecuencia minima de actualizacion de progreso.
jsonPartitioner.defaultOutputFolder
Carpeta de salida por defecto para particiones.
jsonPartitioner.minFreeDiskSpaceMB
Espacio libre minimo requerido para particionar.
Flujo Rapido De Uso
Abrir la paleta y ejecutar JSONSplitter: Abrir particionador.
Cargar un archivo .json desde el sidebar.
Definir carpeta de salida (opcional).
Ejecutar particionado automatico.
Abrir particiones en modo texto o jerarquico.
Buscar por palabra o frase y navegar coincidencias.
Hacer click en una coincidencia para abrir su estructura en contexto completo.
Desarrollo
Requisitos:
VS Code 1.85 o superior.
Node.js 18 o superior.
Instalacion y compilacion:
npm install
npm run compile
Ejecucion en modo desarrollo:
Abrir este proyecto en VS Code.
Presionar F5 para abrir Extension Development Host.
Usar JSONSplitter: Abrir particionador.
Empaquetado VSIX:
npm run package
Arquitectura Del Proyecto
src/extension.ts
Activacion y registro de comandos/provider.
src/sidebarProvider.ts
Sidebar webview, carga de archivos, particionado, progreso y cancelacion.
src/jsonSniffer.ts
Sniff de encoding y formato.
src/jsonPartitioner.ts
Orquestador principal de estrategias y flujo de trabajo.
src/partitionWorker.ts
Particionado streaming de JSON estandar.
src/ndjsonPartitioner.ts
Ruta optimizada para NDJSON por lineas.
src/partitionViewerPanel.ts
Backend del visor y mensajeria con webview.
media/viewer.js
Interacciones del visor, busqueda, filtros y copiado contextual.
media/viewer.css
Estilos del visor.
test/
Pruebas unitarias de particionado.
Notas Tecnicas
El enfoque evita cargar todo el JSON en memoria con JSON.parse.
El rendimiento final depende de CPU, disco y complejidad estructural del JSON.
La búsqueda global se ejecuta en extension host con streaming y cancelación; no depende del DOM cargado.
Resultados de búsqueda limitados por seguridad de UI (500 por consulta) con aviso para refinar término.