> 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 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`.

{% hint style="info" %}
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.
{% endhint %}

### Globals

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

1. [`console`](#console): uma versão simplificada do típico `console` objeto.
2. [`exports`](#module): um objeto onde a scene pode adicionar a sua [interface pública](https://github.com/decentraland/docs/tree/main/contributor/execution.md).
3. [`module`](#module): um contentor para o `exports` objeto.
4. [`require`](#module): uma função para carregar módulos fornecidos pelo runtime pelo nome.
5. [`fetch`](#http): uma implementação restrita da função do browser `fetch` função.
6. [`WebSocket`](#http): 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](https://github.com/decentraland/docs/tree/main/contributor/contributor/content/entity-types/scenes.md#permissions) sejam concedidas à scene.

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

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.

```ts
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:

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

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.

{% hint style="info" %}
No World Explorer baseado no browser da Foundation, as mensagens de log aparecem no painel das developer tools.
{% endhint %}

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

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

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

O `require` A função permite às scenes aceder a módulos fornecidos pelo runtime (como [EngineApi](https://github.com/decentraland/docs/tree/main/contributor/modules/engine_api.md) ou [RestrictedActions](https://github.com/decentraland/docs/tree/main/contributor/modules/restricted_actions.md)), 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](https://github.com/decentraland/docs/tree/main/contributor/execution.md)).

{% hint style="info" %}
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`.
{% endhint %}

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

O `fetch` e `WebSocket` globals funcionam exatamente como os seus equivalentes conhecidos (ver [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) 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](https://github.com/decentraland/docs/tree/main/contributor/contributor/content/entity-types/scenes.md#permissions).
* 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](https://github.com/decentraland/docs/tree/main/contributor/contributor/content/entity-types/scenes.md#permissions).

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


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
