open-index/open-npm huggingface dataset:
npm package: @finaer-software/sdk
Description: SDK for FINAER - A comprehensive SDK for financial operations
Author: FINAER
Latest version: 0.1.0-beta.1

# FINAER SDK

[![npm version](https://badge.fury.io/js/finaer-sdk.svg)](https://www.npmjs.com/package/finaer-sdk)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

SDK oficial para integración con los servicios de FINAER.

## 📦 Instalación

```bash
npm install finaer-sdk
```

o con yarn:

```bash
yarn add finaer-sdk
```

## 🚀 Uso Rápido

```typescript
import { FinaerClient } from 'finaer-sdk';

// Inicializar el cliente
const client = new FinaerClient({
  apiKey: 'tu-api-key',
  environment: 'production' // o 'sandbox'
});

// Ejemplo de uso
async function ejemplo() {
  try {
    const resultado = await client.getSomething();
    console.log(resultado);
  } catch (error) {
    console.error('Error:', error);
  }
}
```

## 🔧 Configuración

### Opciones del Cliente

```typescript
interface FinaerConfig {
  apiKey: string;           // Tu API key de FINAER
  environment?: 'sandbox' | 'production'; // Ambiente (default: 'production')
  timeout?: number;         // Timeout en ms (default: 30000)
  baseURL?: string;         // URL base personalizada (opcional)
}
```

## 📚 Documentación

Para más información, consulta la [documentación completa](https://docs.finaer.com).

## 🤝 Contribuir

Las contribuciones son bienvenidas. Por favor, abre un issue o pull request.

## 📄 Licencia

MIT © FINAER

## 🔗 Enlaces

- [Website](https://finaer.com)
- [Documentación](https://docs.finaer.com)
- [GitHub](https://github.com/FINAER/finaer-sdk)
- [NPM](https://www.npmjs.com/package/finaer-sdk)

## 📞 Soporte

Para soporte técnico, contacta a support@finaer.com
npm package: @finalapp/utils
Description: ---
Author: finalapp
Latest version: 1.2.0

# Utils functions

---

## Object

### deepClone

`<T>(value: T, cacheMap?: WeakMap) => T`

### deepMerge

`(value: any, source: any, isMergingArrays?: boolean) => any`

### flattenObject

`(value: any, preserveNesting = false) => Record<string, any>`

preserveNesting - should return last nesting or all. Default false:

```
// for object
{ a: { b: [1, 2] } }

// if preserveNesting is true
{
  a: { b: [1, 2] },
  "a.b": [1, 2],
  "a.b.0": 1,
  "a.b.1": 1,
}

// if preserveNesting is false
{
  "a.b.0": 1,
  "a.b.1": 1,
}

```

### getDeep

`(object: any, path: string[] | string) => any`

### getDeepByPath

`(path: string[]) => (object: any) => any`

### getPath

`(str: string) => string[]`

### isDeepEqual

`(a: any, b: any) => boolean`

### isEmpty

`(value: any | any[]) => boolean`

### isObject

`(value: any) => boolean`

### setDeep

`(object: any, path: string[], value: any) => any`

### unflattenObject

`<T>(obj: any, parseValue?: (v: any) => any): T`

parseValue - allow to parse value before set it, eg:

```
unflattenObject({"a.b": "1"}, (value) => parseInt(value));

// returns
{ a: { b: 1 } }

```

### unset

`(object: any, path: string[]) => any | undefined`

It will remove key if value is primitive or when unsetted value will result in emoty obejct or empty array. If result will be empty object then `unset` will return undefined

---

## Array

### append

`<T>(arr: T[], element: T) => T[]`

### prepend

`<T>(arr: T[], element: T) => T[]`

### remove

`<T>(arr: T[], index: number) => T[]`

### insert

`<T>(arr: T[], index: number, newItem: T) => T[]`

### move

`<T>(arr: T[], from: number, to: number) => T[]`

### swap

`<T>(arr: T[], indexA: number, indexB: number) => T[]`

---

## Function

### identity

`<T>(value: T) => T`