Sobre el proyecto

Monaco Editor es el editor de código completo de VS Code, empaquetado como una biblioteca que se ejecuta en el navegador. Se publica en npm como `monaco-editor` e incluye una compilación ESM (compatible con bundlers como webpack) además de una compilación AMD obsoleta mantenida por compatibilidad hacia atrás. La superficie pública versionada se describe en `monaco.d.ts`; todo lo demás se considera privado y puede cambiar entre versiones. Conceptos principales: - Los modelos representan contenido abierto: contienen texto, determinan el lenguaje y rastrean el historial de edición. Un modelo no tiene que corresponder a un archivo real. - Los URIs identifican modelos, por lo que dos modelos no pueden compartir un URI. Los modelos creados sin uno reciben URIs generados `inmemory://model/N`. Elegir URIs significativos es importante porque algunas funciones inteligentes (por ejemplo, la resolución de importaciones de TypeScript o la selección de esquemas JSON) dependen del URI del archivo. - Los editores son las vistas orientadas al usuario adjuntas al DOM; muestran un modelo, gestionan el estado de la vista y ejecutan acciones o comandos. - Los proveedores suministran funciones inteligentes del editor, como información de autocompletado y hover, a menudo mapeando a las capacidades del Protocolo de Servidor de Lenguaje (LSP). - Muchos objetos exponen `.dispose()` para la limpieza; desechar un modelo libera su URI, y los editores deben desecharse para liberar recursos y listeners. La localización se maneja cargando el script nls correspondiente (por ejemplo `esm/nls.messages.de.js`) antes del script principal del editor. El README señala un playground interactivo para probar funciones, probar versiones y construir reproducciones mínimas, además de ejemplos completos de integración, documentación de API, una guía de accesibilidad para integradores y un playground de Monarch para crear tokenizadores para nuevos lenguajes. El FAQ aclara que Monaco se genera a partir de los fuentes de VS Code con shims para que pueda ejecutarse en un navegador, que su versión no sigue la versión de VS Code, y que las extensiones de VS Code generalmente no funcionan en él a menos que estén completamente basadas en LSP con un servidor de lenguaje JavaScript. Los servicios de lenguaje utilizan web workers; las páginas cargadas a través de `file://` no pueden crear workers, por lo que el editor debe servirse a través de http o https. Los navegadores móviles y los frameworks de aplicaciones web móviles no son compatibles, y las gramáticas de TextMate no están integradas (un proyecto comunitario separado combina monaco-editor con vscode-oniguruma y vscode-textmate). El proyecto tiene licencia MIT y acepta contribuciones de la comunidad.