# Addons

> Explora los addons integrados de Proxyman Scripting para Base64, hash MD5/SHA, UUID, decodificación de JWT, GZip y más, e impórtalos con require().

## 1. ¿Qué es? {#1-whats-it}

Proxyman incluye addons integrados muy útiles para tareas comunes, como el hash MD5 y SHA1, la codificación y decodificación Base64, y el formateo de XML y JSON.

> **Consejo:** Desde Proxyman macOS 6.10.0 o posterior, puedes usar el comando nativo \`npm install\` para instalar tus librerías de terceros. Consulta [use-npm-install.md](https://proxyman.com/docs/es/scripting/use-npm-install).

## 2. Addons integrados {#2-built-in-addons}

Puedes encontrar código de ejemplo de todos los addons en [Addons Snippet Code](https://proxyman.com/docs/es/scripting/snippet-code)

| Nombre                                                                    | Descripción                                                                                       |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [Base64.js](https://proxyman.com/docs/es/scripting/snippet-code#use-base64-addon)                             | Codificación y decodificación Base64. Admite las funciones nativas atob/btoa                      |
| CamelCase.js                                                              | Convierte texto a camelCase                                                                       |
| CryptoJS.js                                                               | Algoritmos de cifrado y descifrado DES, AES y Rabbit. Un pequeño wrapper de CryptoJS             |
| DateToTimestamp.js                                                        | Convierte una fecha en formato texto a timestamp                                                  |
| DateToUTC.js                                                              | Convierte una fecha en formato texto a una cadena UTC                                             |
| DecodeURI.js                                                              | Decodifica una cadena con codificación porcentual                                                 |
| EncodeURI.js                                                              | Codifica una cadena con codificación porcentual                                                   |
| FormatCSS.js                                                              | Da formato a una cadena CSS                                                                       |
| FormatJSON.js                                                             | Da formato a una cadena JSON                                                                      |
| BeautifyJSON.js                                                           | Convierte un objeto JSON en una cadena JSON con formato                                           |
| UglifyJSON.js                                                             | Convierte un objeto JSON en una cadena JSON compacta                                              |
| FormatXML.js                                                              | Da formato a una cadena XML                                                                       |
| HelloWorld.js                                                             | Hola mundo                                                                                        |
| Hex2rgb.js                                                                | Convierte una cadena #000000 a una cadena RGB                                                     |
| JsonToQuery.js                                                            | Convierte un objeto JSON en una cadena de consulta                                                |
| JSONValidator.js                                                          | Valida una cadena JSON                                                                            |
| [JWTDecode.js](https://proxyman.com/docs/es/scripting/snippet-code#jwt-decode)                                | Decodifica un token JWT                                                                           |
| KebabCase.js                                                              | Convierte a kebab-case                                                                            |
| [MD5.js](https://proxyman.com/docs/es/scripting/snippet-code#use-hashing-addon-md5-sha1-sha256-sha512)        | Calcula el hash MD5                                                                               |
| MinifyCSS.js                                                              | Minifica una cadena CSS                                                                           |
| MinifyJSON.js                                                             | Minifica una cadena JSON                                                                          |
| MinifyXML.js                                                              | Minifica una cadena XML                                                                           |
| QueryToJson.js                                                            | Convierte una cadena de consulta en un objeto JSON                                                |
| [Pako.js](https://proxyman.com/docs/es/scripting/snippet-code#deflateinflate-and-gzipungzip)                  | Comprime y descomprime con Deflate/Inflate y GZip/UnGZip                                          |
| [SHA1.js](https://proxyman.com/docs/es/scripting/snippet-code#use-hashing-addon-md5-sha1-sha256-sha512)       | Calcula el hash SHA1                                                                              |
| [SHA256.js](https://proxyman.com/docs/es/scripting/snippet-code#use-hashing-addon-md5-sha1-sha256-sha512)     | Calcula el hash SHA256                                                                            |
| [SHA512.js](https://proxyman.com/docs/es/scripting/snippet-code#use-hashing-addon-md5-sha1-sha256-sha512)     | Calcula el hash SHA512                                                                            |
| SnakeCase.js                                                              | Convierte a snake_case                                                                            |
| StartCase.js                                                              | Convierte a Start Case                                                                            |
| [UUID.js](https://proxyman.com/docs/es/scripting/snippet-code#use-uuid-v4-addon)                              | Genera una cadena UUID-v4 única                                                                   |

## 3. ¿Cómo usar los addons? {#3-how-to-use-addons}

Cada addon exporta funciones que puedes importar con la función `require`.

Por ejemplo, el addon Base64.js tiene este aspecto:

```javascript
// Base64.js
const Base64 = require('@libs/base64.js');
const { atob } = require("@libs/atob.js");
const { btoa } = require("@libs/btoa.js");

// atob / btoa
// They're equivalent with window.atob and window.btoa

exports.atob = atob;
exports.btoa = btoa;

// Basic Base64
exports.base64Decode = (input) => {
    return Base64.decode(input)
};

exports.base64Encode = (input) => {
    return Base64.encode(input);
};
```

Después, puedes usarlo en el script:

```javascript
const { atob, btoa } = require("@addons/Base64.js")

function onRequest(context, url, request) {

    // Encode base64 by using the export function
    var text = btoa("Hello World");
    
    console.log(text)
    // => SGVsbG8gV29ybGQ=
}
```

> **Nota:** Puedes encontrar el código de todos los addons en **\~/Library/Application\ Support/com.proxyman.NSProxy/addons**

## 4. Notas {#4-notes}

> **Nota:** La función `require` no es una función integrada del [framework JavascriptCore](https://developer.apple.com/documentation/javascriptcore), sino una función personalizada que proporciona Proxyman para que puedas importar addons y librerías fácilmente.
>
> Gracias a [Ivan Mathy](https://github.com/IvanMathy) por crear la app Boop, que inspiró los addons integrados de Proxyman.

> **Nota:** La carpeta de addons se sobrescribe con cada actualización de Proxyman, así que no edites los addons ahí. Para modificar un addon, primero cópialo a la carpeta **users**. Consulta [Escribir tus propios addons](https://proxyman.com/docs/es/scripting/write-your-own-addons).
