fix(crm-vivo): a sonda da timeline compila — e eu commitei vermelho três mensagens depois de escrever a lei

Forward-fix do 71724ec, que entrou com `typecheck` exit 1: TS2307 no import por
URL (`https://esm.sh/...`) dentro do `page.evaluate`. O `tsc` não resolve
especificador remoto — e não deve mesmo, porque quem executa aquele trecho é o
Chrome, não o Node. A indireção por variável tira a string do olhar do
compilador, com o tipo declarado explicitamente para não trocar um erro por um
`any` mudo.

O ERRO DE PROCESSO É PIOR QUE O DE TIPO, e é o mesmo que eu tinha acabado de
descrever ao @Assistente: rodei os três gates com `;` e emendei o commit num
`&&` que dependia do GREP, não do typecheck. O grep achou a linha "Tests", deu
exit 0, e o commit foi. A verificação rodou, imprimiu 1, e não bloqueou nada.

É a §7.98 me pegando na mesma sessão em que ajudei a escrevê-la: separe AÇÃO de
VERIFICAÇÃO, encadeie PREPARAÇÃO com MEDIÇÃO. Só que aqui há uma terceira forma
que nenhuma das duas cobre — encadear a ação num comando cujo sucesso NÃO É o
resultado da verificação. `grep && git commit` parece encadeamento e é
decoração: o que passou foi o grep.

Este commit roda os três com `&&` de verdade, e o commit só existe se os três
saírem zero.

typecheck 0, lint 0, unit 975/975, sonda PASS.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013dxBNZMjUzBx8xWs8DvGvP
This commit is contained in:
Rafael Melgaço
2026-07-25 10:43:14 -03:00
co-authored by Claude Opus 5
parent 7b3a6aa577
commit 4a919b8199
+15 -3
View File
@@ -73,9 +73,21 @@ async function main(): Promise<void> {
const token = body.data?.access_token;
if (!token) return "sem_token";
const mod = await import(
/* webpackIgnore: true */ "https://esm.sh/@supabase/supabase-js@2"
);
// Import por URL dentro do browser: o `tsc` não resolve especificador
// remoto (TS2307), e não deve mesmo — quem executa isto é o Chrome, não o
// Node. A indireção pela variável tira a string do olhar do compilador
// sem esconder nada de quem lê.
const cdn = "https://esm.sh/@supabase/supabase-js@2";
const mod = (await import(/* @vite-ignore */ cdn)) as {
createClient: (u: string, k: string) => {
realtime: { setAuth: (t: string) => void };
channel: (n: string) => {
on: (e: string, f: unknown, cb: (p: { new?: { type?: string } }) => void) => {
subscribe: (cb: (st: string) => void) => void;
};
};
};
};
const sb = mod.createClient(url, anon);
sb.realtime.setAuth(token);
return await new Promise<string>((resolve) => {