> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/contributor/contributor-pt/runtime-da-scene/globals.md).

# Globais

O runtime da cena garante a existência de certos objetos e funções dentro do ambiente JavaScript isolado, além das utilidades padrão como `Promise`, `Date` ou `Math`.

{% hint style="info" %}
Os globais descritos abaixo são conceitos típicos do JavaScript, mas são adaptados ao runtime de cena do Decentraland e podem não se comportar de forma idêntica aos seus equivalentes em ambientes de navegador ou Node.
{% endhint %}

### Globais

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

1. [`console`](#console): uma versão simplificada do típico `console` .
2. [`objeto`](#module): um objeto onde a cena pode adicionar sua [interface pública](https://github.com/decentraland/docs/blob/main/contributor/execution.md).
3. [`module`](#module): um contêiner para os `objeto` .
4. [`require`](#module): uma função para carregar módulos fornecidos pelo runtime por nome.
5. [`fetch`](#http): uma implementação restrita do `fetch` function.
6. [`WebSocket`](#http): uma implementação restrita do `WebSocket` class.

Todos estes são definidos como propriedades somente leitura, portanto não podem ser reatribuídos. Alguns lançarão exceções quando usados a menos que certas [permissions](https://github.com/decentraland/docs/blob/main/contributor/contributor/content/entity-types/scenes.md#permissions) sejam concedidas à cena.

### Console <a href="#console" id="console"></a>

As cenas têm acesso a um `console` objeto, muito parecido com o fornecido por um ambiente de navegador ou Node, embora limitado a apenas alguns dos métodos que você normalmente encontraria.

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

Assim como seus equivalentes padrão, cada método aceita argumentos variáveis de qualquer tipo e os renderiza como mensagens legíveis por humanos. Por exemplo, isto é válido:

```js
console.log("The thing just appeared", { thing: "foo" }, [1, 2, 3])
```

O comportamento preciso desses métodos depende do provedor, mas as mensagens devem estar acessíveis aos desenvolvedores de cena que depuram seu código.

{% hint style="info" %}
No World Explorer baseado em navegador da Foundation, as mensagens de log aparecem no painel de ferramentas do desenvolvedor.
{% endhint %}

### Imports e Exports <a href="#module" id="module"></a>

As cenas podem importar e exportar objetos usando a tradicional [CommonJS](https://wiki.commonjs.org/wiki/Modules/1.0) interface de module.

```ts
exports: Object
require(moduleName: string): Object
```

O `require` a função permite que cenas acessem módulos fornecidos pelo runtime (tais como [EngineApi](https://github.com/decentraland/docs/blob/main/contributor/modules/engine_api.md) ou [RestrictedActions](https://github.com/decentraland/docs/blob/main/contributor/modules/restricted_actions.md)), e nada mais (ela **não** acessa pacotes NPM ou módulos por caminho).

Propriedades adicionadas ao `objeto` objeto são a interface pública da cena e serão expostas ao runtime. De fato, as cenas *devem* expor pelo menos um método para rodar corretamente (veja [execution](https://github.com/decentraland/docs/blob/main/contributor/execution.md)).

{% hint style="info" %}
Cenas escritas em linguagens como TypeScript usam o mais moderno `import` e `export` declarações, que podem ser transpiladas para usos compatíveis com CommonJS de `require` e `objeto`.
{% endhint %}

### HTTP e WebSockets <a href="#http" id="http"></a>

O `fetch` e `WebSocket` os globais funcionam exatamente como seus conhecidos equivalentes (veja [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) e [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) em MDN), mas com algumas restrições impostas pelo runtime.

Ao chamar a `fetch` função:

* É lançada uma erro se a URL não começar com `https://`.
* É lançada uma erro se a cena não tiver a [`USE_FETCH` permission](https://github.com/decentraland/docs/blob/main/contributor/contributor/content/entity-types/scenes.md#permissions).
* Um timeout definido pela implementação pode abortar a requisição.

Ao usar a `WebSocket` class:

* É lançada uma erro se a URL não começar com `wss:`
* É lançada uma erro se a cena não tiver a [`USE_WEBSOCKET` permission](https://github.com/decentraland/docs/blob/main/contributor/contributor/content/entity-types/scenes.md#permissions).

Além dessas diferenças, ambos os casos seguem o comportamento padrão.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-pt/runtime-da-scene/globals.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
