> 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-es/runtime-de-la-escena/globals.md).

# Globals

El tiempo de ejecución de la escena garantiza la existencia de ciertos objetos y funciones dentro del entorno sandboxed de JavaScript, además de las utilidades estándar como `Promise`, `Date` o `Math`.

{% hint style="info" %}
Los globals descritos a continuación son conceptos típicos de JavaScript, pero están adaptados al runtime de escenas de Decentraland y pueden no comportarse idénticamente a sus contrapartes en entornos de navegador o Node.
{% endhint %}

### Globals

El runtime inyecta 6 definiciones en el ámbito global de la escena:

1. [`console`](#console): una versión simplificada del típico `console` .
2. [`objeto`](#module): un objeto donde la escena puede añadir sus [interfaz pública](https://github.com/decentraland/docs/blob/main/contributor/execution.md).
3. [`module`](#module): un contenedor para el `objeto` .
4. [`La función global require`](#module): una función para cargar módulos proporcionados por el runtime por nombre.
5. [`fetch`](#http): una implementación restringida del `fetch` function.
6. [`WebSocket`](#http): una implementación restringida del `WebSocket` class.

Todos estos están definidos como propiedades de solo lectura, por lo que no pueden reasignarse. Algunos lanzarán excepciones cuando se usen a menos que se otorguen ciertos [permissions](https://github.com/decentraland/docs/blob/main/contributor/contributor/content/entity-types/scenes.md#permissions) se concedan a la escena.

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

Las escenas tienen acceso a un `console` objeto, muy parecido al que proporciona un navegador o un entorno Node, aunque limitado a solo algunos de los métodos que normalmente encontrarías.

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

Al igual que sus contrapartes estándar, cada método acepta argumentos variables de cualquier tipo y los representa como mensajes legibles por humanos. Por ejemplo, esto es válido:

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

El comportamiento preciso de estos métodos depende del proveedor, pero los mensajes deben ser accesibles para los desarrolladores de escenas que depuran su código.

{% hint style="info" %}
En el World Explorer basado en navegador de la Foundation, los mensajes de log aparecen en el panel de herramientas de desarrollo.
{% endhint %}

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

Las escenas pueden importar y exportar objetos usando la tradicional [CommonJS](https://wiki.commonjs.org/wiki/Modules/1.0) module interface.

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

El `La función global require` function permite a las escenas acceder a módulos proporcionados por el runtime (como [EngineApi](https://github.com/decentraland/docs/blob/main/contributor/modules/engine_api.md) o [RestrictedActions](https://github.com/decentraland/docs/blob/main/contributor/modules/restricted_actions.md)), y nada más (no **no** accede a paquetes NPM o módulos por ruta).

Las propiedades añadidas al `objeto` objeto son la interfaz pública de la escena y se expondrán al runtime. De hecho, las escenas *deben* exponer al menos un método para ejecutarse correctamente (ver [ejecución](https://github.com/decentraland/docs/blob/main/contributor/execution.md)).

{% hint style="info" %}
Las escenas escritas en lenguajes como TypeScript usan el más moderno `import` y `export` statements, que pueden transpilarse a usos compatibles con CommonJS de `La función global require` y `objeto`.
{% endhint %}

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

El `fetch` y `WebSocket` globals funcionan exactamente como sus contrapartes bien conocidas (ver [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) y [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) en MDN), pero con algunas restricciones impuestas por el runtime.

Al llamar a la `fetch` function:

* Se lanza un error si la URL no comienza con `https://`.
* Se lanza un error si la escena no tiene el [`USE_FETCH` permission](https://github.com/decentraland/docs/blob/main/contributor/contributor/content/entity-types/scenes.md#permissions).
* Un timeout definido por la implementación puede abortar la solicitud.

Al usar la `WebSocket` class:

* Se lanza un error si la URL no comienza con `wss:`
* Se lanza un error si la escena no tiene el [`USE_WEBSOCKET` permission](https://github.com/decentraland/docs/blob/main/contributor/contributor/content/entity-types/scenes.md#permissions).

Aparte de estas diferencias, ambos casos siguen el comportamiento estándar.


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-es/runtime-de-la-escena/globals.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
