xonecode 0.36.3 → 0.38.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/web/dist/assets/{EditorDeFichero-B9EyiuM6.js → EditorDeFichero-x5qYcQEQ.js} +1 -1
- package/apps/web/dist/assets/index-BE1a4adS.css +1 -0
- package/apps/web/dist/assets/index-DZea9YBh.js +506 -0
- package/apps/web/dist/assets/{php-DCP5mtTp.js → php-BNj56OOc.js} +1 -1
- package/apps/web/dist/assets/{ruby-B41ayseU.js → ruby-BtHXxdlK.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/dispositivos/instalacionEnMaquina.js +0 -13
- package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -1
- package/dist/agent/remoto/ngrokEnMaquina.js +77 -87
- package/dist/agent/remoto/ngrokEnMaquina.js.map +1 -1
- package/dist/agent/remoto/tunelNgrok.js +75 -162
- package/dist/agent/remoto/tunelNgrok.js.map +1 -1
- package/dist/agent/sesiones/gitSync.js +10 -4
- package/dist/agent/sesiones/gitSync.js.map +1 -1
- package/dist/agent/sesiones/parcheEnTexto.js +31 -0
- package/dist/agent/sesiones/parcheEnTexto.js.map +1 -0
- package/dist/agent/sesiones/sesionGit.js +7 -2
- package/dist/agent/sesiones/sesionGit.js.map +1 -1
- package/dist/core/actos.js +3 -2
- package/dist/core/actos.js.map +1 -1
- package/dist/core/codificacion.js +24 -0
- package/dist/core/codificacion.js.map +1 -1
- package/dist/core/dispositivos.js +0 -53
- package/dist/core/dispositivos.js.map +1 -1
- package/dist/core/notify.js +19 -2
- package/dist/core/notify.js.map +1 -1
- package/dist/core/remoto.js +38 -1
- package/dist/core/remoto.js.map +1 -1
- package/dist/core/tunel.js +34 -25
- package/dist/core/tunel.js.map +1 -1
- package/dist/core/turno.js +4 -0
- package/dist/core/turno.js.map +1 -1
- package/dist/web/servidor/arranque.js +46 -14
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/puenteRemoto.js +1 -1
- package/dist/web/servidor/puenteRemoto.js.map +1 -1
- package/node_modules/@xone/xonecode-remoto/dist/contenido.d.ts +21 -0
- package/node_modules/@xone/xonecode-remoto/dist/contenido.js +15 -0
- package/node_modules/@xone/xonecode-remoto/web/assets/{index-qBo9eRDN.js → index-CGpR8WL1.js} +33 -33
- package/node_modules/@xone/xonecode-remoto/web/assets/{index-Bfa2gK3J.css → index-DDmoyp5d.css} +1 -1
- package/node_modules/@xone/xonecode-remoto/web/index.html +2 -2
- package/package.json +2 -1
- package/apps/web/dist/assets/index-C6MsC7A5.js +0 -506
- package/apps/web/dist/assets/index-DRNhZyYF.css +0 -1
|
@@ -53,7 +53,6 @@ import { detectarDispositivos, frameworkEnDispositivo } from "../../agent/dispos
|
|
|
53
53
|
import { lanzarEnDispositivo, } from "../../agent/dispositivos/lanzamientoEnMaquina.js";
|
|
54
54
|
import { motivoDeBloqueo, puedeLanzarse, } from "../../core/puedeLanzarse.js";
|
|
55
55
|
import { PLATAFORMAS_DE_DISPOSITIVO, remotoEnVigor } from "../../core/settings.js";
|
|
56
|
-
import { recetaDeNgrok } from "../../core/dispositivos.js";
|
|
57
56
|
import { motivoDeDominioInaceptable } from "../../core/tunel.js";
|
|
58
57
|
import { instalarHerramientaDeDispositivos, verificarDispositivo } from "../../agent/dispositivos/dispositivosEnMaquina.js";
|
|
59
58
|
import { arrancarEmulador, pararEmulador } from "../../agent/dispositivos/arranqueDeEmulador.js";
|
|
@@ -85,7 +84,8 @@ import { nombreDePersona } from "../../agent/config/persona.js";
|
|
|
85
84
|
import { cambiosDeSesion, fotoDeApertura, olvidarSesion, parcheDeSesion } from "../../agent/sesiones/sesionGit.js";
|
|
86
85
|
import { commitDeTurno, cambiosPendientes, parcheDeSubida, pendientesDeSubida, sinSeguir, trabajoSinCommitear, } from "../../agent/sesiones/gitSync.js";
|
|
87
86
|
import { marcarTareaDeSesion, sembrarConsumosPendientes } from "./sesiones.js";
|
|
88
|
-
import { RUTA_ARTEFACTOS, esRutaDeArtefacto } from "../../core/artefactos.js";
|
|
87
|
+
import { RUTA_ARTEFACTOS, esRutaDeArtefacto, rutaRelativaDeArtefacto } from "../../core/artefactos.js";
|
|
88
|
+
import { MIMES_DE_ARTEFACTO_AL_MOVIL, TOPE_DE_ARTEFACTO_AL_MOVIL, trozosDeArtefacto } from "../../core/remoto.js";
|
|
89
89
|
import { arbolDeProyecto, escribirFicheroDeProyecto, iconoDelProyecto, leerFicheroDeProyecto, mimeDeImagen, motivoDeRutaInaceptable, motivoParaNoEnsenar, } from "../../agent/grafo/arbolDeProyecto.js";
|
|
90
90
|
import { baseDeFichero } from "../../agent/sesiones/baseDeFichero.js";
|
|
91
91
|
import { modeloEnDisco } from "../../agent/navegacion/indiceEnDisco.js";
|
|
@@ -387,7 +387,6 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
387
387
|
instalado: fotoDeNgrok.instalado,
|
|
388
388
|
cuenta: fotoDeNgrok.cuenta,
|
|
389
389
|
...(ajustes?.dominio === undefined ? {} : { dominio: ajustes.dominio }),
|
|
390
|
-
...(fotoDeNgrok.instalado ? {} : { receta: recetaDeNgrok(process.platform, fotoDeNgrok) }),
|
|
391
390
|
...(motivoDeNgrok === undefined ? {} : { motivo: motivoDeNgrok }),
|
|
392
391
|
},
|
|
393
392
|
}),
|
|
@@ -4377,12 +4376,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
4377
4376
|
ultimoProgreso = 0;
|
|
4378
4377
|
emitirProgreso(resultado.estado, resultado.motivo);
|
|
4379
4378
|
trabajo = undefined;
|
|
4380
|
-
// Y la foto nueva es la que dice si el paso quedó hecho, no el código de salida.
|
|
4381
|
-
// ngrok no cambia los aparatos: su foto se queda, y solo se vuelve a medir ngrok.
|
|
4382
|
-
if (receta === "ngrok") {
|
|
4383
|
-
await medirNgrokYAnunciar().catch(contar);
|
|
4384
|
-
return;
|
|
4385
|
-
}
|
|
4379
|
+
// Y la foto nueva es la que dice si el paso quedó hecho, no el código de salida.
|
|
4386
4380
|
informeDeDispositivos = undefined;
|
|
4387
4381
|
await atenderDispositivos().catch(contar);
|
|
4388
4382
|
})();
|
|
@@ -4405,9 +4399,6 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
4405
4399
|
trabajo?.cancelar();
|
|
4406
4400
|
return;
|
|
4407
4401
|
}
|
|
4408
|
-
// La receta de ngrok es de la sesión remota: con el interruptor apagado no existe.
|
|
4409
|
-
if (mensaje.id === "ngrok" && !remotoHabilitado())
|
|
4410
|
-
return;
|
|
4411
4402
|
if (trabajo !== undefined) {
|
|
4412
4403
|
// Ya hay uno: se reenvía su estado en vez de lanzar otro.
|
|
4413
4404
|
emitirProgreso("corriendo");
|
|
@@ -5625,6 +5616,8 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
5625
5616
|
else
|
|
5626
5617
|
darFeedbackATarea(m.tarea, m.texto);
|
|
5627
5618
|
}
|
|
5619
|
+
else if (m.clase === "artefacto")
|
|
5620
|
+
void enviarArtefactoAlMovil(m.ruta);
|
|
5628
5621
|
else
|
|
5629
5622
|
recibirEnLaConsola(m);
|
|
5630
5623
|
},
|
|
@@ -5647,6 +5640,44 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
5647
5640
|
cliente(mensajeDeRemoto(e));
|
|
5648
5641
|
},
|
|
5649
5642
|
});
|
|
5643
|
+
/**
|
|
5644
|
+
* Un artefacto del hilo, al MÓVIL que lo pidió (petición suya: ver las capturas desde la web móvil).
|
|
5645
|
+
*
|
|
5646
|
+
* Las MISMAS barreras que `GET /artefacto`: la ruta por `esRutaDeArtefacto` y el lector, que la
|
|
5647
|
+
* comprueba contra el disco (texto y `realpath`), sobre la conversación del FOCO —que es la que el
|
|
5648
|
+
* móvil sigue—. Y dos más, propias del móvil: solo IMÁGENES (un HTML se sirve en el escritorio dentro
|
|
5649
|
+
* de dos capas de sandbox, y en la web móvil no hay con qué aislarlo) y con tope de tamaño. Va en
|
|
5650
|
+
* trozos porque una captura no cabe en un solo mensaje del puente (`trozosDeArtefacto`), y a todos los
|
|
5651
|
+
* móviles: siguen la misma conversación, y un id de quién lo pidió no viaja hasta aquí.
|
|
5652
|
+
*
|
|
5653
|
+
* Un fallo se DEVUELVE al móvil como `artefacto.error` con un texto FIJO nuestro, nunca el de Node.
|
|
5654
|
+
*/
|
|
5655
|
+
const enviarArtefactoAlMovil = async (ruta) => {
|
|
5656
|
+
const fallo = (motivo) => sesionRemota?.difundir({ clase: "artefacto.error", ruta, motivo });
|
|
5657
|
+
if (!esRutaDeArtefacto(ruta))
|
|
5658
|
+
return fallo("esa ruta no es de un artefacto");
|
|
5659
|
+
const abierto = vestibulo.proyectoAbierto();
|
|
5660
|
+
if (abierto === undefined || opciones.leerArtefactoCrudo === undefined)
|
|
5661
|
+
return fallo("no hay ninguna conversación abierta");
|
|
5662
|
+
let leido;
|
|
5663
|
+
try {
|
|
5664
|
+
leido = await opciones.leerArtefactoCrudo(abierto.raiz, abierto.idDeHilo, rutaRelativaDeArtefacto(ruta));
|
|
5665
|
+
}
|
|
5666
|
+
catch (error) {
|
|
5667
|
+
informar(`sesión remota: no se pudo leer un artefacto para el móvil (${codigoDe(error)})`);
|
|
5668
|
+
return fallo("no se pudo leer");
|
|
5669
|
+
}
|
|
5670
|
+
if (!leido.ok) {
|
|
5671
|
+
const textos = { rechazado: "esa ruta no es de un artefacto", "no-existe": "ya no está", "demasiado-grande": "es demasiado grande" };
|
|
5672
|
+
return fallo(textos[leido.motivo]);
|
|
5673
|
+
}
|
|
5674
|
+
if (leido.mime === undefined || !MIMES_DE_ARTEFACTO_AL_MOVIL.has(leido.mime))
|
|
5675
|
+
return fallo("en el móvil solo se ven imágenes");
|
|
5676
|
+
if (leido.datos.length > TOPE_DE_ARTEFACTO_AL_MOVIL)
|
|
5677
|
+
return fallo("es demasiado grande para el móvil");
|
|
5678
|
+
for (const trozo of trozosDeArtefacto(ruta, leido.mime, leido.datos))
|
|
5679
|
+
sesionRemota?.difundir(trozo);
|
|
5680
|
+
};
|
|
5650
5681
|
/**
|
|
5651
5682
|
* Apagar solo si hay algo ENCENDIDO. `apagar()` anuncia `{estado:"apagada"}` a todas las
|
|
5652
5683
|
* pestañas, y `arrancarConsolaWeb` monta la opción SIEMPRE: con el interruptor apagado, un
|
|
@@ -5677,7 +5708,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
5677
5708
|
const medirNgrokAhora = (medir) => {
|
|
5678
5709
|
const esta = medir()
|
|
5679
5710
|
.then((foto) => {
|
|
5680
|
-
fotoDeNgrok = { instalado: foto.instalado, cuenta: foto.cuenta
|
|
5711
|
+
fotoDeNgrok = { instalado: foto.instalado, cuenta: foto.cuenta };
|
|
5681
5712
|
anunciarRemoto();
|
|
5682
5713
|
})
|
|
5683
5714
|
.finally(() => {
|
|
@@ -7854,8 +7885,9 @@ export async function arrancarConsolaWeb(opciones) {
|
|
|
7854
7885
|
},
|
|
7855
7886
|
medirNgrok: opciones.medirNgrok ??
|
|
7856
7887
|
(async () => {
|
|
7888
|
+
// ngrok viene con xonecode (el SDK): no hay receta de instalación que medir.
|
|
7857
7889
|
const ngrok = await import("../../agent/remoto/ngrokEnMaquina.js");
|
|
7858
|
-
return
|
|
7890
|
+
return ngrok.medirNgrok();
|
|
7859
7891
|
}),
|
|
7860
7892
|
guardarAuthtoken: opciones.guardarAuthtoken ??
|
|
7861
7893
|
(async (token) => (await import("../../agent/remoto/ngrokEnMaquina.js")).guardarAuthtoken(token)),
|