For the complete documentation index, see llms.txt. This page is also available as Markdown.

Globais

O runtime da scene garante a existência de certos objetos e funções dentro do ambiente JavaScript em sandbox, para além das utilitárias standard como Promise, Date ou Math.

Os globals descritos abaixo são conceitos típicos de JavaScript, mas são adaptados ao runtime da scene da Decentraland e podem não comportar-se de forma idêntica aos seus equivalentes em ambientes de browser ou Node.

Globals

O runtime injeta 6 definições no escopo global da scene:

  1. console: uma versão simplificada do típico console objeto.

  2. exports: um objeto onde a scene pode adicionar a sua interface pública.

  3. module: um contentor para o exports objeto.

  4. require: uma função para carregar módulos fornecidos pelo runtime pelo nome.

  5. fetch: uma implementação restrita da função do browser fetch função.

  6. WebSocket: uma implementação restrita da função do browser WebSocket classe.

Todas estas são definidas como propriedades só de leitura, por isso não podem ser reatribuídas. Algumas lançarão exceções quando usadas, a menos que certas permissões sejam concedidas à scene.

Console

As scenes têm acesso a um console objeto, semelhante ao fornecido por um browser ou ambiente Node, embora limitado apenas a alguns dos métodos que normalmente encontraria.

type Console = {
  log(...args: any): void
  info(...args: any): void
  debug(...args: any): void
  warning(...args: any): void
  error(...args: any): void
}

Tal como os seus equivalentes standard, cada método aceita argumentos variáveis de qualquer tipo e apresenta-os como mensagens legíveis para humanos. Por exemplo, isto é válido:

O comportamento preciso destes métodos depende do provider, mas as mensagens têm de estar acessíveis aos developers da scene quando fazem debug ao seu código.

No World Explorer baseado no browser da Foundation, as mensagens de log aparecem no painel das developer tools.

Imports e Exports

As scenes podem importar e exportar objetos usando a tradicional CommonJS interface de módulo.

O require A função permite às scenes aceder a módulos fornecidos pelo runtime (como EngineApi ou RestrictedActions), e a mais nada (ela não acede a pacotes NPM nem a módulos por caminho).

As propriedades adicionadas ao exports objeto são a interface pública da scene e serão expostas ao runtime. De facto, as scenes têm de expor pelo menos um método para funcionar corretamente (ver execução).

As scenes escritas em linguagens como TypeScript usam as mais modernas import e export declarações, que podem ser transpiladas para utilizações compatíveis com CommonJS de require e exports.

HTTP e WebSockets

O fetch e WebSocket globals funcionam exatamente como os seus equivalentes conhecidos (ver fetch e WebSocket na MDN), mas com algumas restrições impostas pelo runtime.

Ao chamar a fetch função:

  • É lançado um erro se o URL não começar por https://.

  • É lançado um erro se a scene não tiver o USE_FETCH permissão.

  • Um timeout definido pela implementação pode abortar o pedido.

Ao usar a WebSocket classe:

  • É lançado um erro se o URL não começar por wss:

  • É lançado um erro se a scene não tiver o USE_WEBSOCKET permissão.

Para além destas diferenças, ambos os casos seguem o comportamento standard.

Atualizado