xonecode 0.36.3 → 0.37.0
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-DoFEF88O.js} +1 -1
- package/apps/web/dist/assets/{index-C6MsC7A5.js → index-WcouJw-n.js} +75 -75
- package/apps/web/dist/assets/{php-DCP5mtTp.js → php-D_qKPndv.js} +1 -1
- package/apps/web/dist/assets/{ruby-B41ayseU.js → ruby-Dbo7pTDa.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- 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/core/dispositivos.js +0 -53
- package/dist/core/dispositivos.js.map +1 -1
- package/dist/core/tunel.js +34 -25
- package/dist/core/tunel.js.map +1 -1
- package/dist/web/servidor/arranque.js +4 -13
- package/dist/web/servidor/arranque.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,75 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* puerto libre de loopback, lanza `ngrok http` contra él con log JSON, y lee del log la
|
|
4
|
-
* dirección pública. Entra en el servidor por opción (un `TunelPort`), como el puente: ni
|
|
5
|
-
* `core/` ni `web/` importan este fichero.
|
|
6
|
-
*
|
|
7
|
-
* Reglas, todas por lo mismo —nada de la máquina cruza el cable—:
|
|
8
|
-
* - **Un fallo es un texto de `MOTIVOS_DEL_TUNEL`**, clasificado por el CÓDIGO `ERR_NGROK_xxx`
|
|
9
|
-
* de las líneas vistas (`motivoDeSalidaDeNgrok`). Lo que ngrok escribe se queda aquí: lleva la
|
|
10
|
-
* ruta de su configuración, el correo de la cuenta y, en un error de autenticación, el token.
|
|
11
|
-
* - **ngrok va `detached` y se mata el GRUPO** (`matarGrupoReal`), con `SIGTERM`, una espera, y
|
|
12
|
-
* `SIGKILL` si no salió; y también en el `exit` de este proceso (medido: con SIGINT y SIGTERM
|
|
13
|
-
* bajo `tsx` no queda ngrok; con un SIGKILL a este proceso, que no deja correr nada, sí queda
|
|
14
|
-
* huérfano). El cierre ordenado de la consola tiene que llamar a `cerrar()`. Su stdout y su
|
|
15
|
-
* stderr se consumen siempre: una tubería llena lo bloquearía.
|
|
16
|
-
* - **Cerrar: ngrok PRIMERO y luego el puente**, para que el móvil no vea un puente vivo detrás
|
|
17
|
-
* de un túnel ya muerto ni al revés un túnel que apunta a nada.
|
|
18
|
-
*/
|
|
19
|
-
import { StringDecoder } from "node:string_decoder";
|
|
20
|
-
import { entornoDeShell } from "../../core/shellDeAgente.js";
|
|
21
|
-
import { MOTIVOS_DEL_TUNEL, motivoDeDominioInaceptable, motivoDeSalidaDeNgrok, servidorDeTunel, urlPublicaDeLinea } from "../../core/tunel.js";
|
|
22
|
-
import { lanzarReal, matarGrupoReal } from "../dispositivos/procesosEnMaquina.js";
|
|
23
|
-
import { localizarNgrok } from "./ngrokEnMaquina.js";
|
|
1
|
+
import { MOTIVOS_DEL_TUNEL, motivoDeDominioInaceptable, motivoDeSalidaDeNgrok, servidorDeTunel } from "../../core/tunel.js";
|
|
2
|
+
import { authtokenDeNgrok, cargarSdkReal } from "./ngrokEnMaquina.js";
|
|
24
3
|
import { cargarServidorRemoto } from "./puenteWebSocket.js";
|
|
25
|
-
/** Lo que se espera a que ngrok
|
|
4
|
+
/** Lo que se espera a que ngrok dé la dirección pública. */
|
|
26
5
|
export const TOPE_DE_TUNEL_MS = 30_000;
|
|
27
|
-
/** Lo que se espera a que
|
|
28
|
-
export const
|
|
29
|
-
/**
|
|
30
|
-
* Las ÚLTIMAS líneas que se guardan para clasificar un fallo (el `ERR_NGROK_xxx` llega al final);
|
|
31
|
-
* después de la dirección, ninguna.
|
|
32
|
-
*/
|
|
33
|
-
const LINEAS_QUE_SE_GUARDAN = 200;
|
|
34
|
-
const alSalirReal = (f) => {
|
|
35
|
-
process.once("exit", f);
|
|
36
|
-
return () => process.removeListener("exit", f);
|
|
37
|
-
};
|
|
6
|
+
/** Lo que se espera a que el SDK reconecte tras perder la conexión, antes de dar el túnel por caído. */
|
|
7
|
+
export const ESPERA_DE_RECONEXION_MS = 30_000;
|
|
38
8
|
class FalloDelTunel extends Error {
|
|
39
9
|
}
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
function porLineas(alLinea) {
|
|
45
|
-
let resto = "";
|
|
46
|
-
const decodificador = new StringDecoder("utf8");
|
|
47
|
-
return (dato) => {
|
|
48
|
-
resto += typeof dato === "string" ? dato : Buffer.isBuffer(dato) ? decodificador.write(dato) : String(dato);
|
|
49
|
-
const partes = resto.split(/\r?\n/);
|
|
50
|
-
resto = partes.pop() ?? "";
|
|
51
|
-
for (const p of partes)
|
|
52
|
-
if (p !== "")
|
|
53
|
-
alLinea(p);
|
|
54
|
-
};
|
|
10
|
+
/** El motivo de un error del SDK, por su CÓDIGO y nunca por su texto. */
|
|
11
|
+
function motivoDeErrorDelSdk(error) {
|
|
12
|
+
const codigo = error?.errorCode;
|
|
13
|
+
return MOTIVOS_DEL_TUNEL[motivoDeSalidaDeNgrok(typeof codigo === "string" ? [codigo] : [])];
|
|
55
14
|
}
|
|
56
15
|
export function crearTunelNgrok(deps = {}) {
|
|
57
|
-
const entorno = deps.entorno ?? process.env;
|
|
58
16
|
const cargarServidor = deps.cargarServidor ?? (() => cargarServidorRemoto());
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const matarGrupo = deps.matarGrupo ?? ((pid, senal) => matarGrupoReal(pid, senal));
|
|
17
|
+
const cargarSdk = deps.cargarSdk ?? cargarSdkReal;
|
|
18
|
+
const authtoken = deps.authtoken ?? (() => authtokenDeNgrok());
|
|
62
19
|
const topeMs = deps.topeMs ?? TOPE_DE_TUNEL_MS;
|
|
63
|
-
const
|
|
64
|
-
const alSalirDelProceso = deps.alSalirDelProceso ?? alSalirReal;
|
|
20
|
+
const esperaDeReconexionMs = deps.esperaDeReconexionMs ?? ESPERA_DE_RECONEXION_MS;
|
|
65
21
|
return {
|
|
66
22
|
async abrir({ dominio }) {
|
|
67
23
|
if (dominio !== undefined && motivoDeDominioInaceptable(dominio) !== undefined) {
|
|
68
24
|
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.dominio);
|
|
69
25
|
}
|
|
70
|
-
const
|
|
71
|
-
if (
|
|
26
|
+
const sdk = await cargarSdk();
|
|
27
|
+
if (sdk === undefined)
|
|
72
28
|
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.noInstalado);
|
|
29
|
+
const token = authtoken();
|
|
30
|
+
if (token === undefined)
|
|
31
|
+
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.autenticacion);
|
|
73
32
|
const modulo = await cargarServidor();
|
|
74
33
|
if (modulo === undefined)
|
|
75
34
|
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.paqueteViejo);
|
|
@@ -82,80 +41,16 @@ export function crearTunelNgrok(deps = {}) {
|
|
|
82
41
|
}
|
|
83
42
|
let puenteCerrado;
|
|
84
43
|
const cerrarPuente = () => (puenteCerrado ??= puente.cerrar().catch(() => { }));
|
|
85
|
-
// `host:puerto` tal como escucha el puente (127.0.0.1), y no «localhost», que puede
|
|
86
|
-
//
|
|
44
|
+
// `host:puerto` tal como escucha el puente (127.0.0.1), y no «localhost», que puede resolver a ::1 y dejar a ngrok
|
|
45
|
+
// sin nadie al otro lado.
|
|
87
46
|
const destino = new URL(puente.urlHttp).host;
|
|
88
|
-
|
|
89
|
-
let hijo;
|
|
90
|
-
try {
|
|
91
|
-
// Sin las claves de los proveedores, con la MISMA regla que la shell del agente: ngrok no
|
|
92
|
-
// las necesita, y `guardarCredencial` las escribe en `process.env`. `NGROK_*`, `PATH` y
|
|
93
|
-
// `HOME` siguen (el authtoken puede venir de `NGROK_AUTHTOKEN`).
|
|
94
|
-
hijo = lanzar(binario, args, { env: entornoDeShell({ entorno }) });
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
await cerrarPuente();
|
|
98
|
-
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.noInstalado);
|
|
99
|
-
}
|
|
100
|
-
let vivo = true;
|
|
101
|
-
let alTerminar;
|
|
102
|
-
const terminado = new Promise((r) => (alTerminar = r));
|
|
103
|
-
const soltarSalida = alSalirDelProceso(() => {
|
|
104
|
-
if (vivo)
|
|
105
|
-
senal("SIGKILL");
|
|
106
|
-
});
|
|
107
|
-
const senal = (s) => {
|
|
108
|
-
const pid = hijo.pid;
|
|
109
|
-
try {
|
|
110
|
-
// Nunca con un pid que no sea de un hijo: `kill(-0)` mataría el grupo de quien llama.
|
|
111
|
-
if (typeof pid === "number" && pid > 1)
|
|
112
|
-
matarGrupo(pid, s);
|
|
113
|
-
else
|
|
114
|
-
hijo.kill(s);
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// ESRCH: ya no estaba.
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
const esperar = (ms) => Promise.race([terminado, new Promise((r) => setTimeout(r, ms).unref?.())]);
|
|
121
|
-
let matado;
|
|
122
|
-
const matar = () => (matado ??= (async () => {
|
|
123
|
-
if (!vivo)
|
|
124
|
-
return;
|
|
125
|
-
senal("SIGTERM");
|
|
126
|
-
await esperar(esperaAlMatarMs);
|
|
127
|
-
if (vivo) {
|
|
128
|
-
senal("SIGKILL");
|
|
129
|
-
await esperar(esperaAlMatarMs);
|
|
130
|
-
}
|
|
131
|
-
})());
|
|
132
|
-
const lineas = [];
|
|
133
|
-
let guardar = true;
|
|
134
|
-
let alUrl;
|
|
135
|
-
let alFallo;
|
|
136
|
-
const url = new Promise((resolver, rechazar) => {
|
|
137
|
-
alUrl = resolver;
|
|
138
|
-
alFallo = (m) => rechazar(new FalloDelTunel(m));
|
|
139
|
-
});
|
|
140
|
-
const alLinea = (linea) => {
|
|
141
|
-
if (!guardar)
|
|
142
|
-
return;
|
|
143
|
-
const publica = urlPublicaDeLinea(linea);
|
|
144
|
-
if (publica !== undefined) {
|
|
145
|
-
guardar = false;
|
|
146
|
-
lineas.length = 0;
|
|
147
|
-
alUrl(publica);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
lineas.push(linea);
|
|
151
|
-
if (lineas.length > LINEAS_QUE_SE_GUARDAN)
|
|
152
|
-
lineas.shift();
|
|
153
|
-
};
|
|
154
|
-
hijo.stdout.on("data", porLineas(alLinea));
|
|
155
|
-
hijo.stderr.on("data", porLineas(alLinea));
|
|
156
|
-
/** Resuelve con el motivo cuando el puente YA está cerrado: se avisa después, nunca antes. */
|
|
47
|
+
let cerrando = false;
|
|
157
48
|
let caida;
|
|
158
49
|
const caidas = [];
|
|
50
|
+
let reconexion;
|
|
51
|
+
let tunel;
|
|
52
|
+
let tunelCerrado;
|
|
53
|
+
const cerrarTunel = () => (tunelCerrado ??= (tunel?.close() ?? Promise.resolve()).catch(() => { }));
|
|
159
54
|
/** Un oyente que lanza no tumba la consola ni deja sin aviso a los demás. */
|
|
160
55
|
const avisar = (f, motivo) => {
|
|
161
56
|
if (cerrando)
|
|
@@ -167,58 +62,74 @@ export function crearTunelNgrok(deps = {}) {
|
|
|
167
62
|
// es de quien escucha
|
|
168
63
|
}
|
|
169
64
|
};
|
|
170
|
-
|
|
171
|
-
hijo.on("error", ((e) => {
|
|
172
|
-
alFallo(e?.code === "ENOENT" || e?.code === "EACCES" ? MOTIVOS_DEL_TUNEL.noInstalado : MOTIVOS_DEL_TUNEL.otro);
|
|
173
|
-
// Un `spawn` que falla emite `error` y puede no emitir `close`.
|
|
174
|
-
if (hijo.pid === undefined) {
|
|
175
|
-
vivo = false;
|
|
176
|
-
soltarSalida();
|
|
177
|
-
alTerminar();
|
|
178
|
-
}
|
|
179
|
-
}));
|
|
180
|
-
hijo.on("close", (() => {
|
|
181
|
-
vivo = false;
|
|
182
|
-
soltarSalida();
|
|
183
|
-
alTerminar();
|
|
184
|
-
if (guardar) {
|
|
185
|
-
alFallo(MOTIVOS_DEL_TUNEL[motivoDeSalidaDeNgrok(lineas)]);
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
65
|
+
const darPorCaido = () => {
|
|
188
66
|
if (cerrando || caida !== undefined)
|
|
189
67
|
return;
|
|
190
|
-
|
|
191
|
-
|
|
68
|
+
caida = cerrarTunel()
|
|
69
|
+
.then(() => cerrarPuente())
|
|
70
|
+
.then(() => MOTIVOS_DEL_TUNEL.seCerro);
|
|
192
71
|
void caida.then((m) => {
|
|
193
72
|
for (const f of caidas.splice(0))
|
|
194
73
|
avisar(f, m);
|
|
195
74
|
});
|
|
196
|
-
}
|
|
197
|
-
const
|
|
198
|
-
|
|
75
|
+
};
|
|
76
|
+
const alCambiarEstado = (estado) => {
|
|
77
|
+
if (estado === "closed") {
|
|
78
|
+
if (reconexion === undefined && !cerrando) {
|
|
79
|
+
reconexion = setTimeout(darPorCaido, esperaDeReconexionMs);
|
|
80
|
+
reconexion.unref?.();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (estado === "connected" && reconexion !== undefined) {
|
|
84
|
+
clearTimeout(reconexion);
|
|
85
|
+
reconexion = undefined;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
let tope;
|
|
89
|
+
let agotado = false;
|
|
199
90
|
try {
|
|
200
|
-
|
|
91
|
+
const abierto = sdk.forward({
|
|
92
|
+
addr: destino,
|
|
93
|
+
authtoken: token,
|
|
94
|
+
...(dominio === undefined ? {} : { domain: dominio }),
|
|
95
|
+
onStatusChange: alCambiarEstado,
|
|
96
|
+
});
|
|
97
|
+
// Si llega DESPUÉS del tope, se cierra: nadie lo va a usar.
|
|
98
|
+
void abierto.then((t) => {
|
|
99
|
+
if (agotado)
|
|
100
|
+
void t.close().catch(() => { });
|
|
101
|
+
}, () => { });
|
|
102
|
+
tunel = await Promise.race([
|
|
103
|
+
abierto,
|
|
104
|
+
new Promise((_, rechazar) => {
|
|
105
|
+
tope = setTimeout(() => {
|
|
106
|
+
agotado = true;
|
|
107
|
+
rechazar(new FalloDelTunel(MOTIVOS_DEL_TUNEL.sinDireccion));
|
|
108
|
+
}, topeMs);
|
|
109
|
+
}),
|
|
110
|
+
]);
|
|
201
111
|
}
|
|
202
|
-
catch (
|
|
203
|
-
guardar = false;
|
|
204
|
-
lineas.length = 0;
|
|
112
|
+
catch (error) {
|
|
205
113
|
cerrando = true;
|
|
206
|
-
await matar();
|
|
207
114
|
await cerrarPuente();
|
|
208
|
-
throw
|
|
115
|
+
throw error instanceof FalloDelTunel ? error : new FalloDelTunel(motivoDeErrorDelSdk(error));
|
|
209
116
|
}
|
|
210
117
|
finally {
|
|
211
|
-
|
|
118
|
+
if (tope !== undefined)
|
|
119
|
+
clearTimeout(tope);
|
|
212
120
|
}
|
|
213
121
|
let servidor;
|
|
214
122
|
try {
|
|
123
|
+
const publica = tunel.url();
|
|
124
|
+
if (publica === null)
|
|
125
|
+
throw new Error("sin dirección");
|
|
215
126
|
servidor = servidorDeTunel(publica);
|
|
216
127
|
}
|
|
217
128
|
catch {
|
|
218
129
|
cerrando = true;
|
|
219
|
-
await
|
|
130
|
+
await cerrarTunel();
|
|
220
131
|
await cerrarPuente();
|
|
221
|
-
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.
|
|
132
|
+
throw new FalloDelTunel(MOTIVOS_DEL_TUNEL.sinDireccion);
|
|
222
133
|
}
|
|
223
134
|
let cerrado;
|
|
224
135
|
return {
|
|
@@ -226,7 +137,9 @@ export function crearTunelNgrok(deps = {}) {
|
|
|
226
137
|
cerrar: () => (cerrado ??= (async () => {
|
|
227
138
|
cerrando = true;
|
|
228
139
|
caidas.length = 0;
|
|
229
|
-
|
|
140
|
+
if (reconexion !== undefined)
|
|
141
|
+
clearTimeout(reconexion);
|
|
142
|
+
await cerrarTunel();
|
|
230
143
|
await cerrarPuente();
|
|
231
144
|
})()),
|
|
232
145
|
alCaer: (f) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunelNgrok.js","sourceRoot":"","sources":["../../../src/agent/remoto/tunelNgrok.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunelNgrok.js","sourceRoot":"","sources":["../../../src/agent/remoto/tunelNgrok.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC5H,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAmB,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAA6B,MAAM,sBAAsB,CAAC;AAEvF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,wGAAwG;AACxG,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAW9C,MAAM,aAAc,SAAQ,KAAK;CAAG;AAEpC,yEAAyE;AACzE,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,MAAM,GAAI,KAA6C,EAAE,SAAS,CAAC;IACzE,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA6B,EAAE;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAC/C,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,uBAAuB,CAAC;IAElF,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE;YACrB,IAAI,OAAO,KAAK,SAAS,IAAI,0BAA0B,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC/E,MAAM,IAAI,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;YAC1B,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAClF,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElF,IAAI,MAAqE,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,aAAwC,CAAC;YAC7C,MAAM,YAAY,GAAG,GAAkB,EAAE,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;YAE9F,mHAAmH;YACnH,0BAA0B;YAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;YAE7C,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,KAAkC,CAAC;YACvC,MAAM,MAAM,GAAiC,EAAE,CAAC;YAChD,IAAI,UAAqD,CAAC;YAC1D,IAAI,KAAmE,CAAC;YACxE,IAAI,YAAuC,CAAC;YAC5C,MAAM,WAAW,GAAG,GAAkB,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;YAClH,6EAA6E;YAC7E,MAAM,MAAM,GAAG,CAAC,CAA2B,EAAE,MAAc,EAAE,EAAE;gBAC7D,IAAI,QAAQ;oBAAE,OAAO;gBACrB,IAAI,CAAC;oBACH,CAAC,CAAC,MAAM,CAAC,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC,CAAC;YACF,MAAM,WAAW,GAAG,GAAS,EAAE;gBAC7B,IAAI,QAAQ,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO;gBAC5C,KAAK,GAAG,WAAW,EAAE;qBAClB,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;qBAC1B,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACzC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACpB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;wBAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,MAAM,eAAe,GAAG,CAAC,MAAc,EAAQ,EAAE;gBAC/C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxB,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC1C,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;wBAC3D,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;oBACvB,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,KAAK,WAAW,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC9D,YAAY,CAAC,UAAU,CAAC,CAAC;oBACzB,UAAU,GAAG,SAAS,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,IAA+C,CAAC;YACpD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;oBAC1B,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,KAAK;oBAChB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBACrD,cAAc,EAAE,eAAe;iBAChC,CAAC,CAAC;gBACH,4DAA4D;gBAC5D,KAAK,OAAO,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE;oBACJ,IAAI,OAAO;wBAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;gBACF,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBACzB,OAAO;oBACP,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;wBACjC,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE;4BACrB,OAAO,GAAG,IAAI,CAAC;4BACf,QAAQ,CAAC,IAAI,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;wBAC9D,CAAC,EAAE,MAAM,CAAC,CAAC;oBACb,CAAC,CAAC;iBACH,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,YAAY,EAAE,CAAC;gBACrB,MAAM,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/F,CAAC;oBAAS,CAAC;gBACT,IAAI,IAAI,KAAK,SAAS;oBAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,QAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC5B,IAAI,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBACvD,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM,YAAY,EAAE,CAAC;gBACrB,MAAM,IAAI,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,OAAkC,CAAC;YACvC,OAAO;gBACL,QAAQ;gBACR,MAAM,EAAE,GAAG,EAAE,CACX,CAAC,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;oBACvB,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;oBAClB,IAAI,UAAU,KAAK,SAAS;wBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;oBACvD,MAAM,WAAW,EAAE,CAAC;oBACpB,MAAM,YAAY,EAAE,CAAC;gBACvB,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;oBACZ,IAAI,QAAQ;wBAAE,OAAO;oBACrB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACrC,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -336,59 +336,6 @@ export function recetaDeSimuladorIos(plataforma, estado) {
|
|
|
336
336
|
: `Runtime de iOS instalados: ${estado.runtimes.join(", ")}. Para arrancar un simulador, \`xcrun simctl boot <UDID>\`; arrancarlo desde esta ventana todavía no está cableado.`,
|
|
337
337
|
};
|
|
338
338
|
}
|
|
339
|
-
/**
|
|
340
|
-
* La receta para instalar ngrok, que es lo que necesita la sesión remota por túnel. NO es de un
|
|
341
|
-
* aparato: su `plataforma` es `herramienta` y no entra en `InformeDeDispositivos.recetas`; la
|
|
342
|
-
* lleva el mensaje `remoto`. Un solo paso. En macOS lo lanza xonecode (`ngrok:darwin:1` en
|
|
343
|
-
* `PASOS_EJECUTABLES`, solo con `brew`); en Windows y Linux es una guía sin botón, porque un
|
|
344
|
-
* instalador de esos sistemas puede pedir elevación o abrir una ventana.
|
|
345
|
-
*
|
|
346
|
-
* `hecho` sale de la medida (`ngrok version` contesta), nunca de un flag recordado.
|
|
347
|
-
*/
|
|
348
|
-
export function recetaDeNgrok(plataforma, medida) {
|
|
349
|
-
const hecho = medida.instalado;
|
|
350
|
-
let paso;
|
|
351
|
-
if (plataforma === "darwin") {
|
|
352
|
-
const hayBrew = medida.hayBrew === true;
|
|
353
|
-
paso = {
|
|
354
|
-
titulo: "Instalar ngrok",
|
|
355
|
-
comandos: ["brew install ngrok"],
|
|
356
|
-
nota: "Se instala con Homebrew y no pide contraseña de administrador.",
|
|
357
|
-
hecho,
|
|
358
|
-
ejecutable: hayBrew,
|
|
359
|
-
...(hayBrew ? {} : { porQueNo: "hace falta Homebrew (brew.sh)" }),
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
else if (plataforma === "win32") {
|
|
363
|
-
paso = {
|
|
364
|
-
titulo: "Instalar ngrok",
|
|
365
|
-
comandos: ["winget install ngrok.ngrok"],
|
|
366
|
-
nota: "Pégalo en una terminal; después, abre una terminal nueva para que ngrok esté en el PATH.",
|
|
367
|
-
hecho,
|
|
368
|
-
ejecutable: false,
|
|
369
|
-
porQueNo: "en Windows el instalador se lanza desde tu terminal",
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
paso = {
|
|
374
|
-
titulo: "Instalar ngrok",
|
|
375
|
-
comandos: ["# descarga ngrok de https://ngrok.com/download e instálalo con el gestor de tu distribución"],
|
|
376
|
-
nota: "Cada distribución lo instala distinto; la página de descarga trae el comando de la tuya.",
|
|
377
|
-
hecho,
|
|
378
|
-
ejecutable: false,
|
|
379
|
-
porQueNo: "depende de tu distribución y puede pedir administrador",
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
return {
|
|
383
|
-
id: "ngrok",
|
|
384
|
-
plataforma: "herramienta",
|
|
385
|
-
titulo: "Instalar ngrok",
|
|
386
|
-
descripcion: "ngrok abre el túnel por el que el móvil llega a esta consola. Un paso, una vez por máquina.",
|
|
387
|
-
pasos: [paso],
|
|
388
|
-
completa: hecho,
|
|
389
|
-
despues: "Con ngrok instalado, falta tu authtoken (dashboard.ngrok.com): se pega desde la ventana de la sesión remota.",
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
339
|
/** El sistema, a partir de `process.platform`. */
|
|
393
340
|
export function sistemaDe(platform) {
|
|
394
341
|
if (platform === "darwin")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispositivos.js","sourceRoot":"","sources":["../../src/core/dispositivos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqDH;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAsMD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,4EAA4E,CAAC;AACvH,MAAM,CAAC,MAAM,eAAe,GAAG,wFAAwF,CAAC;AACxH,MAAM,CAAC,MAAM,yBAAyB,GAAG,mFAAmF,CAAC;AAE7H;wEACwE;AACxE,MAAM,yBAAyB,GAAG,6CAA6C,CAAC;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB,EAAE,MAAuB;IACjF,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB;IAC1C,wFAAwF;IACxF,yFAAyF;IACzF,kDAAkD;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC;IAEpD,MAAM,KAAK,GAAmB;QAC5B;YACE,MAAM,EAAE,iEAAiE;YACzE,QAAQ,EAAE;gBACR,yBAAyB;gBACzB,qEAAqE;aACtE;YACD,IAAI,EACF,0EAA0E;gBAC1E,gFAAgF;gBAChF,6DAA6D;YAC/D,uEAAuE;YACvE,KAAK,EAAE,MAAM,CAAC,UAAU;YACxB,sFAAsF;YACtF,sFAAsF;YACtF,uFAAuF;YACvF,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,CAAC;SACtE;QACD;YACE,MAAM,EAAE,+CAA+C;YACvD,uFAAuF;YACvF,wFAAwF;YACxF,yFAAyF;YACzF,sFAAsF;YACtF,uFAAuF;YACvF,wFAAwF;YACxF,sFAAsF;YACtF,mFAAmF;YACnF,yDAAyD;YACzD,QAAQ,EAAE;gBACR,0HAA0H;aAC3H;YACD,IAAI,EAAE,yEAAyE;YAC/E,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,mFAAmF;YACnF,UAAU,EAAE,WAAW;YACvB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;YAC5D,qFAAqF;YACrF,oFAAoF;YACpF,sFAAsF;YACtF,uCAAuC;YACvC,OAAO,EAAE;gBACP,QAAQ,EAAE,YAAY;gBACtB,MAAM,EACJ,iHAAiH;aACpH;YACD,MAAM,EAAE,4CAA4C;SACrD;QACD;YACE,MAAM,EAAE,8BAA8B;YACtC,QAAQ,EAAE,CAAC,gGAAgG,CAAC;YAC5G,IAAI,EAAE,iFAAiF;YACvF,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC7B,yDAAyD;YACzD,UAAU,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ;YAC1C,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;SAC3H;KACF,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,kBAAkB;QACtB,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,iCAAiC;QACzC,WAAW,EACT,sFAAsF;YACtF,gEAAgE;QAClE,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,qFAAqF;QACrF,wFAAwF;QACxF,0DAA0D;QAC1D,MAAM,EAAE;YACN,MAAM,EAAE,oCAAoC;YAC5C,QAAQ,EAAE;gBACR,uEAAuE;gBACvE,yEAAyE;gBACzE,gDAAgD;aACjD;YACD,IAAI,EACF,4EAA4E;gBAC5E,kFAAkF;gBAClF,iFAAiF;gBACjF,qFAAqF;gBACrF,8DAA8D;SACjE;QACD,iFAAiF;QACjF,kEAAkE;QAClE,OAAO,EACL,kFAAkF;YAClF,yFAAyF;YACzF,0EAA0E;KAC7E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,aAAa,CAAC,MAAuB;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC;IAEpD,MAAM,KAAK,GAAmB;QAC5B;YACE,MAAM,EAAE,gCAAgC;YACxC,QAAQ,EAAE;gBACR,sBAAsB,0BAA0B,4CAA4C;gBAC5F,yFAAyF;aAC1F;YACD,IAAI,EAAE,sEAAsE;YAC5E,KAAK,EAAE,MAAM,CAAC,GAAG;YACjB,UAAU,EAAE,IAAI;SACjB;QACD;YACE,MAAM,EAAE,kBAAkB;YAC1B,QAAQ,EAAE;gBACR,sBAAsB,eAAe,iCAAiC;gBACtE,yEAAyE;gBACzE,+EAA+E;aAChF;YACD,IAAI,EAAE,6EAA6E;YACnF,KAAK,EAAE,MAAM,CAAC,GAAG;YACjB,UAAU,EAAE,IAAI;SACjB;QACD;YACE,MAAM,EAAE,oCAAoC;YAC5C,QAAQ,EAAE;gBACR,sBAAsB,yBAAyB,2CAA2C;gBAC1F,uGAAuG;gBACvG,8FAA8F;aAC/F;YACD,IAAI,EAAE,wEAAwE;YAC9E,KAAK,EAAE,MAAM,CAAC,UAAU;YACxB,UAAU,EAAE,IAAI;SACjB;QACD;YACE,MAAM,EAAE,+CAA+C;YACvD,QAAQ,EAAE,CAAC,gFAAgF,yBAAyB,GAAG,CAAC;YACxH,IAAI,EAAE,wEAAwE;YAC9E,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,UAAU,EAAE,WAAW;YACvB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,wEAAwE,EAAE,CAAC;YAC9G,OAAO,EAAE;gBACP,QAAQ,EAAE,YAAY;gBACtB,MAAM,EACJ,iHAAiH;aACpH;YACD,MAAM,EAAE,4CAA4C;SACrD;QACD;YACE,MAAM,EAAE,8BAA8B;YACtC,QAAQ,EAAE,CAAC,2CAA2C,yBAAyB,cAAc,CAAC;YAC9F,IAAI,EAAE,gFAAgF;YACtF,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC7B,UAAU,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ;YAC1C,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;SAC3H;KACF,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,kBAAkB;QACtB,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,iCAAiC;QACzC,WAAW,EACT,sFAAsF;YACtF,gEAAgE;QAClE,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,MAAM,EAAE;YACN,MAAM,EAAE,mDAAmD;YAC3D,QAAQ,EAAE;gBACR,qDAAqD;gBACrD,oDAAoD;gBACpD,iHAAiH;aAClH;YACD,IAAI,EACF,sFAAsF;gBACtF,uFAAuF;gBACvF,uFAAuF;gBACvF,iBAAiB;SACpB;QACD,OAAO,EACL,kFAAkF;YAClF,yFAAyF;YACzF,0EAA0E;KAC7E,CAAC;AACJ,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,MAAmB;IAC1E,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,KAAK,GAAmB;QAC5B;YACE,MAAM,EAAE,yEAAyE;YACjF,qFAAqF;YACrF,QAAQ,EAAE,CAAC,qDAAqD,CAAC;YACjE,IAAI,EACF,kFAAkF;gBAClF,uEAAuE;YACzE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,wDAAwD;SACnE;QACD;YACE,MAAM,EAAE,uCAAuC;YAC/C,oFAAoF;YACpF,uFAAuF;YACvF,kFAAkF;YAClF,QAAQ,EAAE;gBACR,iEAAiE;gBACjE,iCAAiC;aAClC;YACD,IAAI,EACF,+EAA+E;gBAC/E,oFAAoF;gBACpF,sBAAsB;YACxB,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,oEAAoE;SAC/E;QACD;YACE,MAAM,EAAE,2CAA2C;YACnD,QAAQ,EAAE,CAAC,kCAAkC,CAAC;YAC9C,IAAI,EACF,iFAAiF;gBACjF,gFAAgF;gBAChF,4DAA4D;YAC9D,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjC,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,yFAAyF;SACpG;KACF,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,8BAA8B;QACtC,WAAW,EACT,sFAAsF;YACtF,gEAAgE;QAClE,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,uFAAuF;QACvF,yFAAyF;QACzF,OAAO,EACL,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC1B,CAAC,CAAC,iMAAiM;YACnM,CAAC,CAAC,8BAA8B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qHAAqH;KACpL,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,MAAiD;IACjG,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,IAAI,IAAkB,CAAC;IACvB,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;QACxC,IAAI,GAAG;YACL,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,CAAC,oBAAoB,CAAC;YAChC,IAAI,EAAE,gEAAgE;YACtE,KAAK;YACL,UAAU,EAAE,OAAO;YACnB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;SAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAClC,IAAI,GAAG;YACL,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,CAAC,4BAA4B,CAAC;YACxC,IAAI,EAAE,0FAA0F;YAChG,KAAK;YACL,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,qDAAqD;SAChE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,GAAG;YACL,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,CAAC,6FAA6F,CAAC;YACzG,IAAI,EAAE,0FAA0F;YAChG,KAAK;YACL,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,wDAAwD;SACnE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,OAAO;QACX,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,gBAAgB;QACxB,WAAW,EAAE,6FAA6F;QAC1G,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,8GAA8G;KACxH,CAAC;AACJ,CAAC;AAiBD,kDAAkD;AAClD,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC;AACpG,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC3E,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAChE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,MAAM,GACV,WAAW,KAAK,QAAQ;YACtB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,WAAW,KAAK,cAAc;gBAC9B,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,WAAW,KAAK,SAAS;oBACzB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,eAAe,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YACjE,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;YAC7D,MAAM;YACN,GAAG,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,WAA+C;IAE/C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACvE,IAAI,mDAAmD,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,OAAO,6DAA6D,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QACjE,yFAAyF;QACzF,2FAA2F;QAC3F,wFAAwF;QACxF,OAAO,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAI,KAAsD,EAAE,OAAO,CAAC;IACjF,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxF,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,aAAa;QAClE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5F,KAAK,MAAM,CAAC,IAAI,KAAuC,EAAE,CAAC;YACxD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACvE,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK;gBAAE,SAAS;YACtC,MAAM,MAAM,GACV,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;YAC5F,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,CAAC,CAAC,IAAI;gBACV,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,OAAO,EAAE;gBAChC,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,WAAW;gBAClB,MAAM;gBACN,GAAG,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAI,KAAuC,EAAE,QAAQ,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,KAAuC,EAAE,CAAC;QAC9D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,SAAS;QACzC,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK;YAAE,SAAS;QAC5C,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,OAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAI,KAAmD,EAAE,MAAM,EAAE,OAAO,CAAC;IACpF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,KAAuC,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC;QACxB,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAA4B,CAAC;QACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAA4B,CAAC;QAC3E,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAA4B,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,MAAM,MAAM,GAA0B,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;QAC5F,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC;YACV,EAAE;YACF,MAAM,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,UAAU,EAAE;YAChE,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,QAAQ;YACf,MAAM;YACN,GAAG,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACvB,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QACnD,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW,CAAC;AAC1D,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,WAAW,CAAC,OAA8B;IACxD,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
1
|
+
{"version":3,"file":"dispositivos.js","sourceRoot":"","sources":["../../src/core/dispositivos.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tunel.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
/** Texto fijo por causa. Es lo ÚNICO que sale de un fallo del túnel hacia el cable. */
|
|
13
13
|
export const MOTIVOS_DEL_TUNEL = {
|
|
14
|
-
noInstalado: "ngrok no
|
|
14
|
+
noInstalado: "El componente de ngrok que trae xonecode no carga en esta máquina: reinstala xonecode.",
|
|
15
15
|
autenticacion: "ngrok no acepta el authtoken (falta o no es válido).",
|
|
16
16
|
dominio: "ngrok no deja usar ese dominio: no es de tu cuenta, o tu plan no admite dominios propios.",
|
|
17
17
|
otraSesion: "Ya hay otro ngrok de tu cuenta abierto (en esta máquina o en otra): ciérralo y vuelve a encender.",
|
|
@@ -21,31 +21,8 @@ export const MOTIVOS_DEL_TUNEL = {
|
|
|
21
21
|
otro: "ngrok falló y no se pudo abrir el túnel.",
|
|
22
22
|
puente: "No se pudo arrancar el puente local de la sesión remota.",
|
|
23
23
|
authtokenSinForma: "Eso no tiene la forma de un authtoken de ngrok.",
|
|
24
|
-
authtokenNoGuardado: "
|
|
24
|
+
authtokenNoGuardado: "No se pudo guardar el authtoken.",
|
|
25
25
|
};
|
|
26
|
-
/**
|
|
27
|
-
* La dirección pública que ngrok anuncia al levantar el túnel: la línea JSON de `msg:
|
|
28
|
-
* "started tunnel"` (con `--log stdout --log-format json`) trae un `url`. Cualquier otra línea,
|
|
29
|
-
* o un túnel que no sea https, es `undefined`. No se lee de la API local (4040), que se mueve
|
|
30
|
-
* si el puerto está ocupado.
|
|
31
|
-
*/
|
|
32
|
-
export function urlPublicaDeLinea(linea) {
|
|
33
|
-
if (!linea.startsWith("{"))
|
|
34
|
-
return undefined;
|
|
35
|
-
let o;
|
|
36
|
-
try {
|
|
37
|
-
o = JSON.parse(linea);
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
if (typeof o !== "object" || o === null)
|
|
43
|
-
return undefined;
|
|
44
|
-
const { msg, url } = o;
|
|
45
|
-
if (msg !== "started tunnel" || typeof url !== "string")
|
|
46
|
-
return undefined;
|
|
47
|
-
return url.startsWith("https://") ? url : undefined;
|
|
48
|
-
}
|
|
49
26
|
/** `https://host` → `wss://host/ws`: el puente de la sesión remota atiende el WebSocket en `/ws`. */
|
|
50
27
|
export function servidorDeTunel(https) {
|
|
51
28
|
const url = new URL(https);
|
|
@@ -89,4 +66,36 @@ export function motivoDeSalidaDeNgrok(lineas) {
|
|
|
89
66
|
}
|
|
90
67
|
return "otro";
|
|
91
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Dónde guarda el authtoken el programa `ngrok`, por si ya lo usabas: el SDK no lee esa configuración, y sin mirarla
|
|
71
|
+
* habría que volver a pedirte el token. v3 por plataforma y la v2 de siempre (`~/.ngrok2`). Puro: la casa y el entorno
|
|
72
|
+
* entran por parámetro.
|
|
73
|
+
*/
|
|
74
|
+
export function rutasDeConfigDeNgrok(plataforma, entorno, casa) {
|
|
75
|
+
const sep = plataforma === "win32" ? "\\" : "/";
|
|
76
|
+
const unir = (...partes) => partes.join(sep);
|
|
77
|
+
const v3 = plataforma === "darwin"
|
|
78
|
+
? unir(casa, "Library", "Application Support", "ngrok", "ngrok.yml")
|
|
79
|
+
: plataforma === "win32"
|
|
80
|
+
? unir(entorno.LOCALAPPDATA ?? unir(casa, "AppData", "Local"), "ngrok", "ngrok.yml")
|
|
81
|
+
: unir(entorno.XDG_CONFIG_HOME ?? unir(casa, ".config"), "ngrok", "ngrok.yml");
|
|
82
|
+
return [v3, unir(casa, ".ngrok2", "ngrok.yml")];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* El valor de una línea `authtoken:` no vacía, arriba (formato v2) o dentro de `agent:` (v3). `authtoken: ""` o sin
|
|
86
|
+
* valor no es una cuenta.
|
|
87
|
+
*/
|
|
88
|
+
export function authtokenDeConfig(texto) {
|
|
89
|
+
for (const linea of texto.split(/\r?\n/)) {
|
|
90
|
+
const m = /^\s*authtoken:(.*)$/.exec(linea);
|
|
91
|
+
if (m === null)
|
|
92
|
+
continue;
|
|
93
|
+
const valor = m[1].replace(/\s+#.*$/, "").trim().replace(/^(["'])(.*)\1$/, "$2").trim();
|
|
94
|
+
if (valor !== "" && !valor.startsWith("#"))
|
|
95
|
+
return valor;
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
/** Lo que tiene un authtoken de ngrok: alfanumérico con `_`/`-`, sin espacios, empezando por letra o cifra. */
|
|
100
|
+
export const FORMA_DE_AUTHTOKEN = /^[A-Za-z0-9][A-Za-z0-9_-]{9,199}$/;
|
|
92
101
|
//# sourceMappingURL=tunel.js.map
|
package/dist/core/tunel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunel.js","sourceRoot":"","sources":["../../src/core/tunel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"tunel.js","sourceRoot":"","sources":["../../src/core/tunel.ts"],"names":[],"mappings":"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"}
|
|
@@ -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";
|
|
@@ -387,7 +386,6 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
387
386
|
instalado: fotoDeNgrok.instalado,
|
|
388
387
|
cuenta: fotoDeNgrok.cuenta,
|
|
389
388
|
...(ajustes?.dominio === undefined ? {} : { dominio: ajustes.dominio }),
|
|
390
|
-
...(fotoDeNgrok.instalado ? {} : { receta: recetaDeNgrok(process.platform, fotoDeNgrok) }),
|
|
391
389
|
...(motivoDeNgrok === undefined ? {} : { motivo: motivoDeNgrok }),
|
|
392
390
|
},
|
|
393
391
|
}),
|
|
@@ -4377,12 +4375,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
4377
4375
|
ultimoProgreso = 0;
|
|
4378
4376
|
emitirProgreso(resultado.estado, resultado.motivo);
|
|
4379
4377
|
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
|
-
}
|
|
4378
|
+
// Y la foto nueva es la que dice si el paso quedó hecho, no el código de salida.
|
|
4386
4379
|
informeDeDispositivos = undefined;
|
|
4387
4380
|
await atenderDispositivos().catch(contar);
|
|
4388
4381
|
})();
|
|
@@ -4405,9 +4398,6 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
4405
4398
|
trabajo?.cancelar();
|
|
4406
4399
|
return;
|
|
4407
4400
|
}
|
|
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
4401
|
if (trabajo !== undefined) {
|
|
4412
4402
|
// Ya hay uno: se reenvía su estado en vez de lanzar otro.
|
|
4413
4403
|
emitirProgreso("corriendo");
|
|
@@ -5677,7 +5667,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
5677
5667
|
const medirNgrokAhora = (medir) => {
|
|
5678
5668
|
const esta = medir()
|
|
5679
5669
|
.then((foto) => {
|
|
5680
|
-
fotoDeNgrok = { instalado: foto.instalado, cuenta: foto.cuenta
|
|
5670
|
+
fotoDeNgrok = { instalado: foto.instalado, cuenta: foto.cuenta };
|
|
5681
5671
|
anunciarRemoto();
|
|
5682
5672
|
})
|
|
5683
5673
|
.finally(() => {
|
|
@@ -7854,8 +7844,9 @@ export async function arrancarConsolaWeb(opciones) {
|
|
|
7854
7844
|
},
|
|
7855
7845
|
medirNgrok: opciones.medirNgrok ??
|
|
7856
7846
|
(async () => {
|
|
7847
|
+
// ngrok viene con xonecode (el SDK): no hay receta de instalación que medir.
|
|
7857
7848
|
const ngrok = await import("../../agent/remoto/ngrokEnMaquina.js");
|
|
7858
|
-
return
|
|
7849
|
+
return ngrok.medirNgrok();
|
|
7859
7850
|
}),
|
|
7860
7851
|
guardarAuthtoken: opciones.guardarAuthtoken ??
|
|
7861
7852
|
(async (token) => (await import("../../agent/remoto/ngrokEnMaquina.js")).guardarAuthtoken(token)),
|