WU / DOCSMICROFRONTENDS UNIVERSAIS
PT

Comparar uma versão em sombra

Execute uma cópia oculta, compare suas saídas WU e entenda os limites da comparação.

Esta página descreve o WU Framework 4.0.0. Consulte o guia de migração para Framework 4.0 e CLI 1.2 antes de atualizar um projeto existente.

A app primária permanece visível e montada. wu.shadow monta uma cópia oculta e inerte, replica entradas que passam pelo WU e registra suas saídas pela facade. Use para comparar uma reescrita ou atualização antes de substituir a app visível.

import { wu } from 'wu-framework/core';
import 'wu-framework/shadow';

// cart must already be registered and mounted.
await wu.shadow.start('cart', { url: '/apps/cart-v2/', rpcTimeout: 5000 });
try {
  await wu.update('cart', { currency: 'EUR' });
  const report = wu.shadow.report('cart');
  console.log(report.equal, report.dom, report.outputs);
} finally {
  await wu.shadow.stop('cart');
}

Entradas e saídas

A cópia recebe props, eventos e leituras do store. Suas escritas usam uma camada própria. Chamadas RPC ou de contratos recebem respostas registradas da primária para o mesmo canal e argumentos. emit, handle e provide da cópia são registrados sem publicar seus efeitos pelo WU.

A comparação cobre operações da facade; não intercepta todos os efeitos do navegador. Um fetch direto ou uma escrita externa feita pela cópia continua sendo responsabilidade dessa app. Também não reproduz cliques do usuário nem comprova equivalência visual do layout.

Ler o relatório

report().dom compara árvores normalizadas sem atributos internos; outputs compara operações e argumentos registrados. equal significa que essas comparações não encontraram diferenças. unmatchedCalls identifica chamadas sem par; após rpcTimeout, rejeitam com WU_SHADOW_NO_TWIN_CALL. Isso não é aprovação automática de implantação.

start retorna o primeiro relatório; report retorna o atual ou null; stop libera cópia, hooks e esperas e retorna o relatório final. sessions lista sessões. A primária precisa estar montada; uma segunda sombra falha com WU_SHADOW_EXISTS. A cópia mantém os grants da primária e se registra como <app>~shadow, salvo configuração de name.

Interceptar operações pelo host

const release = wu.intercept('cart', (kind, args, next) => {
  if (kind === 'store.set') console.log('cart writes', args[0]);
  return next(...args);
});
// Remove the middleware when the host no longer needs it.
release();

intercept retorna uma função de limpeza. next(...args) continua a operação; outro resultado a substitui. Vários interceptores executam na ordem de registro. Preserve o contrato síncrono ou assíncrono esperado pela app.

O relatório de shadow inclui props.failures quando uma atualização de props não chega ao twin. Enquanto existirem essas falhas, equal é false; não interprete uma comparação parcial como equivalência do deploy.

CONSTRUA O WU CONOSCO

Encontrou um bug? Tem uma ideia?

Sua experiência melhora o WU. Conte o que falhou ou ajude a manter seu desenvolvimento.