bytekit 1.0.31 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +58 -188
  2. package/bin/bytekit.js +0 -0
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/swagger-generator.d.ts +1 -1
  6. package/dist/cli/swagger-generator.d.ts.map +1 -1
  7. package/dist/cli/swagger-generator.js +9 -5
  8. package/dist/cli/swagger-generator.js.map +1 -1
  9. package/dist/utils/core/ApiClient.d.ts +13 -12
  10. package/dist/utils/core/ApiClient.d.ts.map +1 -1
  11. package/dist/utils/core/ApiClient.js +24 -13
  12. package/dist/utils/core/ApiClient.js.map +1 -1
  13. package/dist/utils/core/SchemaAdapter.d.ts +35 -0
  14. package/dist/utils/core/SchemaAdapter.d.ts.map +1 -0
  15. package/dist/utils/core/SchemaAdapter.js +36 -0
  16. package/dist/utils/core/SchemaAdapter.js.map +1 -0
  17. package/dist/utils/core/index.d.ts +1 -1
  18. package/dist/utils/core/index.d.ts.map +1 -1
  19. package/dist/utils/core/index.js +1 -1
  20. package/dist/utils/core/index.js.map +1 -1
  21. package/dist/utils/helpers/CryptoUtils.d.ts +30 -3
  22. package/dist/utils/helpers/CryptoUtils.d.ts.map +1 -1
  23. package/dist/utils/helpers/CryptoUtils.js +83 -5
  24. package/dist/utils/helpers/CryptoUtils.js.map +1 -1
  25. package/dist/utils/helpers/QueryStringHelper.d.ts +11 -0
  26. package/dist/utils/helpers/QueryStringHelper.d.ts.map +1 -0
  27. package/dist/utils/helpers/QueryStringHelper.js +84 -0
  28. package/dist/utils/helpers/QueryStringHelper.js.map +1 -0
  29. package/dist/utils/helpers/UrlSlugHelper.d.ts +19 -0
  30. package/dist/utils/helpers/UrlSlugHelper.d.ts.map +1 -0
  31. package/dist/utils/helpers/UrlSlugHelper.js +27 -0
  32. package/dist/utils/helpers/UrlSlugHelper.js.map +1 -0
  33. package/dist/utils/helpers/index.d.ts +2 -13
  34. package/dist/utils/helpers/index.d.ts.map +1 -1
  35. package/dist/utils/helpers/index.js +2 -13
  36. package/dist/utils/helpers/index.js.map +1 -1
  37. package/dist/utils/index.d.ts +2 -8
  38. package/dist/utils/index.d.ts.map +1 -1
  39. package/dist/utils/index.js +2 -8
  40. package/dist/utils/index.js.map +1 -1
  41. package/package.json +192 -249
  42. package/dist/color-utils.d.ts +0 -2
  43. package/dist/color-utils.d.ts.map +0 -1
  44. package/dist/color-utils.js +0 -2
  45. package/dist/color-utils.js.map +0 -1
  46. package/dist/date-utils.d.ts +0 -2
  47. package/dist/date-utils.d.ts.map +0 -1
  48. package/dist/date-utils.js +0 -2
  49. package/dist/date-utils.js.map +0 -1
  50. package/dist/number-utils.d.ts +0 -2
  51. package/dist/number-utils.d.ts.map +0 -1
  52. package/dist/number-utils.js +0 -2
  53. package/dist/number-utils.js.map +0 -1
  54. package/dist/string-utils.d.ts +0 -2
  55. package/dist/string-utils.d.ts.map +0 -1
  56. package/dist/string-utils.js +0 -2
  57. package/dist/string-utils.js.map +0 -1
  58. package/dist/utils/core/BatchRequest.d.ts +0 -79
  59. package/dist/utils/core/BatchRequest.d.ts.map +0 -1
  60. package/dist/utils/core/BatchRequest.js +0 -152
  61. package/dist/utils/core/BatchRequest.js.map +0 -1
  62. package/dist/utils/core/QueryClient.d.ts +0 -145
  63. package/dist/utils/core/QueryClient.d.ts.map +0 -1
  64. package/dist/utils/core/QueryClient.js +0 -453
  65. package/dist/utils/core/QueryClient.js.map +0 -1
  66. package/dist/utils/core/QueryState.d.ts +0 -99
  67. package/dist/utils/core/QueryState.d.ts.map +0 -1
  68. package/dist/utils/core/QueryState.js +0 -65
  69. package/dist/utils/core/QueryState.js.map +0 -1
  70. package/dist/utils/helpers/ArrayUtils.d.ts +0 -134
  71. package/dist/utils/helpers/ArrayUtils.d.ts.map +0 -1
  72. package/dist/utils/helpers/ArrayUtils.js +0 -306
  73. package/dist/utils/helpers/ArrayUtils.js.map +0 -1
  74. package/dist/utils/helpers/ColorUtils.d.ts +0 -235
  75. package/dist/utils/helpers/ColorUtils.d.ts.map +0 -1
  76. package/dist/utils/helpers/ColorUtils.js +0 -598
  77. package/dist/utils/helpers/ColorUtils.js.map +0 -1
  78. package/dist/utils/helpers/DateUtils.d.ts +0 -36
  79. package/dist/utils/helpers/DateUtils.d.ts.map +0 -1
  80. package/dist/utils/helpers/DateUtils.js +0 -131
  81. package/dist/utils/helpers/DateUtils.js.map +0 -1
  82. package/dist/utils/helpers/FormUtils.d.ts +0 -176
  83. package/dist/utils/helpers/FormUtils.d.ts.map +0 -1
  84. package/dist/utils/helpers/FormUtils.js +0 -437
  85. package/dist/utils/helpers/FormUtils.js.map +0 -1
  86. package/dist/utils/helpers/HttpStatusHelper.d.ts +0 -82
  87. package/dist/utils/helpers/HttpStatusHelper.d.ts.map +0 -1
  88. package/dist/utils/helpers/HttpStatusHelper.js +0 -174
  89. package/dist/utils/helpers/HttpStatusHelper.js.map +0 -1
  90. package/dist/utils/helpers/NumberUtils.d.ts +0 -230
  91. package/dist/utils/helpers/NumberUtils.d.ts.map +0 -1
  92. package/dist/utils/helpers/NumberUtils.js +0 -564
  93. package/dist/utils/helpers/NumberUtils.js.map +0 -1
  94. package/dist/utils/helpers/ObjectUtils.d.ts +0 -102
  95. package/dist/utils/helpers/ObjectUtils.d.ts.map +0 -1
  96. package/dist/utils/helpers/ObjectUtils.js +0 -301
  97. package/dist/utils/helpers/ObjectUtils.js.map +0 -1
  98. package/dist/utils/helpers/PaginationHelper.d.ts +0 -127
  99. package/dist/utils/helpers/PaginationHelper.d.ts.map +0 -1
  100. package/dist/utils/helpers/PaginationHelper.js +0 -295
  101. package/dist/utils/helpers/PaginationHelper.js.map +0 -1
  102. package/dist/utils/helpers/Signal.d.ts +0 -92
  103. package/dist/utils/helpers/Signal.d.ts.map +0 -1
  104. package/dist/utils/helpers/Signal.js +0 -243
  105. package/dist/utils/helpers/Signal.js.map +0 -1
  106. package/dist/utils/helpers/StringUtils.d.ts +0 -46
  107. package/dist/utils/helpers/StringUtils.d.ts.map +0 -1
  108. package/dist/utils/helpers/StringUtils.js +0 -228
  109. package/dist/utils/helpers/StringUtils.js.map +0 -1
  110. package/dist/utils/helpers/TimeUtils.d.ts +0 -87
  111. package/dist/utils/helpers/TimeUtils.d.ts.map +0 -1
  112. package/dist/utils/helpers/TimeUtils.js +0 -234
  113. package/dist/utils/helpers/TimeUtils.js.map +0 -1
  114. package/dist/utils/helpers/UrlBuilder.d.ts +0 -79
  115. package/dist/utils/helpers/UrlBuilder.d.ts.map +0 -1
  116. package/dist/utils/helpers/UrlBuilder.js +0 -161
  117. package/dist/utils/helpers/UrlBuilder.js.map +0 -1
  118. package/dist/utils/helpers/Validator.d.ts +0 -31
  119. package/dist/utils/helpers/Validator.d.ts.map +0 -1
  120. package/dist/utils/helpers/Validator.js +0 -175
  121. package/dist/utils/helpers/Validator.js.map +0 -1
  122. package/dist/utils/helpers/useSignal.d.ts +0 -11
  123. package/dist/utils/helpers/useSignal.d.ts.map +0 -1
  124. package/dist/utils/helpers/useSignal.js +0 -11
  125. package/dist/utils/helpers/useSignal.js.map +0 -1
  126. package/dist/validator.d.ts +0 -2
  127. package/dist/validator.d.ts.map +0 -1
  128. package/dist/validator.js +0 -2
  129. package/dist/validator.js.map +0 -1
package/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  > **Previously known as:** `@sebamar88/utils` (v0.1.9 and earlier)
4
4
 
5
- **EN:** Modern TypeScript utilities: an isomorphic **ApiClient**, structured logging/profiling helpers, and ready-to-use modules (`DateUtils`, `StringUtils`, `StorageManager`, etc.).
6
- **ES:** Colección moderna de utilidades TypeScript: **ApiClient** isomórfico, logging/profiling estructurado y helpers listos (`DateUtils`, `StringUtils`, `StorageManager`, etc.).
5
+ **EN:** A lean, high-performance TypeScript toolkit focused on **Isomorphic HTTP Networking** and **Advanced Async Utilities**. Deep-zero dependencies.
6
+ **ES:** Un toolkit TypeScript ligero y de alto rendimiento enfocado en **Networking HTTP Isomórfico** y **Utilidades Asíncronas Avanzadas**. Cero dependencias.
7
7
 
8
8
  ## 📊 Status / Estado
9
9
 
@@ -14,22 +14,18 @@
14
14
  [![npm downloads](https://img.shields.io/npm/dm/bytekit.svg?style=flat-square)](https://www.npmjs.com/package/bytekit)
15
15
  [![Bundle Size](https://img.shields.io/bundlephobia/minzip/bytekit?style=flat-square&label=gzip%20size)](https://bundlephobia.com/package/bytekit)
16
16
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
17
- [![Node.js Version](https://img.shields.io/node/v/bytekit.svg?style=flat-square)](https://nodejs.org)
18
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg?style=flat-square)](https://www.typescriptlang.org/)
19
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/sebamar88/bytekit/blob/main/CONTRIBUTING.md)
20
17
 
21
18
  ---
22
19
 
23
20
  ## ✨ Highlights / Características
24
21
 
25
- - **EN:** Fully ESM with `.d.ts` definitions and tree-shakeable exports. **ES:** Build 100% ESM con tipos listos y exports tree-shakeable.
26
- - 🌐 **EN:** Works on Node.js 18+ and modern browsers (native fetch). **ES:** Compatible con Node.js 18+ y navegadores modernos (fetch nativo).
27
- - 🔁 **EN:** ApiClient with retries, circuit breaker, localized errors, and flexible options. **ES:** ApiClient con reintentos, circuit breaker, errores localizados y configuración flexible.
28
- - 🧩 **EN:** 28 helper modules (strings, dates, validators, env, storage, crypto, cache). **ES:** 28 módulos helpers (strings, fechas, validadores, env, storage, crypto, cache).
29
- - 🪵 **EN:** Structured logging/profiling: `createLogger`, `Profiler`, `withTiming`. **ES:** Logging/profiling estructurado: `createLogger`, `Profiler`, `withTiming`.
30
- - 🎯 **EN:** 95%+ test coverage with comprehensive test suite. **ES:** >95% de cobertura de tests con suite completa.
31
- - 📦 **EN:** True zero dependencies (uses native fetch). **ES:** Verdadero zero dependencies (usa fetch nativo).
32
- - ⚡ **EN:** Optimized for performance and small bundle size. **ES:** Optimizado para rendimiento y tamaño mínimo.
22
+ - 🌐 **Isomorphic ApiClient:** Works on Node.js 18+ and modern browsers (native fetch).
23
+ - 🛡️ **Schema Validation:** Built-in adapters for Zod and Valibot. Fully typed responses.
24
+ - 🔁 **HTTP Resilience:** Retries, Circuit Breaker, Rate Limiting, Request Cache, and Deduplication out of the box.
25
+ - **Async Toolkit:** A powerful set of tools for concurrency (`parallel`, `race`), timing (`sleep`, `timeout`), and execution control (`retry`, `debounce`, `throttle`).
26
+ - 📦 **Deep-Zero Dependencies:** No external runtime packages added to your bundle.
27
+ - 🪵 **Observability:** Structured logging and performance profiling modules.
28
+ - 🎯 **95%+ Test Coverage:** Rigorously tested core.
33
29
 
34
30
  ## 🚀 Quick Start / Inicio Rápido
35
31
 
@@ -43,202 +39,80 @@ pnpm add bytekit
43
39
  yarn add bytekit
44
40
  ```
45
41
 
46
- ### Global CLI Installation / Instalación CLI Global
47
-
48
- ```bash
49
- npm install -g bytekit
50
- # Then use / Luego usa:
51
- sutils create users
52
- sutils types https://api.example.com/users
53
- ```
54
-
55
- ### Basic Usage / Uso Básico
42
+ ### 1. HTTP Client with Schema Validation (Zod)
56
43
 
57
44
  ```ts
58
- import { ApiClient, createLogger, DateUtils, StringUtils } from "bytekit";
45
+ import { ApiClient } from "bytekit/api-client";
46
+ import { zodAdapter } from "bytekit/schema-adapter";
47
+ import { z } from "zod";
48
+
49
+ const UserSchema = z.object({
50
+ id: z.number(),
51
+ name: z.string(),
52
+ });
59
53
 
60
54
  const http = new ApiClient({
61
55
  baseUrl: "https://api.my-service.com",
62
- defaultHeaders: { "X-Team": "@sebamar88" },
63
- locale: "es",
64
- errorMessages: {
65
- es: { 418: "Soy una tetera ☕" },
66
- },
56
+ retryPolicy: { maxAttempts: 3 }, // Automatic retries
57
+ circuitBreaker: { failureThreshold: 5 } // Prevent cascading failures
67
58
  });
68
59
 
69
- const users = await http.get<{ id: string; name: string }[]>("/users");
70
-
71
- const logger = createLogger({ namespace: "users-service", level: "info" });
72
- logger.info("Users synced", { count: users.length });
73
-
74
- const slug = StringUtils.slugify("New Users – October 2024");
60
+ // The response is safely validated and typed as { id: number, name: string }
61
+ const user = await http.get("/users/1", {
62
+ validateResponse: zodAdapter(UserSchema)
63
+ });
75
64
  ```
76
65
 
77
- ### Modular Imports / Importaciones Modulares
66
+ ### 2. Async Toolkit
78
67
 
79
68
  ```ts
80
- // Import specific modules to reduce bundle size
81
- // Importa módulos específicos para reducir el tamaño del bundle
82
-
83
- // Core modules / Módulos core
84
- import { ApiClient } from "bytekit/api-client";
85
- import { Logger } from "bytekit/logger";
86
- import { RetryPolicy } from "bytekit/retry-policy";
87
-
88
- // Helper modules / Módulos helpers
89
- import { DateUtils } from "bytekit/date-utils";
90
- import { StringUtils } from "bytekit/string-utils";
91
- import { ArrayUtils } from "bytekit/array-utils";
92
- ```
93
-
94
- ## 🎯 Framework Support / Soporte de Frameworks
95
-
96
- **EN:** Works seamlessly with React, Vue, Svelte, Angular, Next.js, Nuxt, SvelteKit, and more.
97
- **ES:** Funciona perfectamente con React, Vue, Svelte, Angular, Next.js, Nuxt, SvelteKit y más.
98
-
99
- ### React Example / Ejemplo React
100
-
101
- ```jsx
102
- import { createApiClient } from "bytekit";
103
- import { useState, useEffect } from "react";
104
-
105
- function Users() {
106
- const client = createApiClient({ baseURL: "https://api.example.com" });
107
- const [users, setUsers] = useState([]);
108
-
109
- useEffect(() => {
110
- client.get("/users").then(setUsers);
111
- }, [client]);
112
-
113
- return (
114
- <div>
115
- {users.map((u) => (
116
- <div key={u.id}>{u.name}</div>
117
- ))}
118
- </div>
119
- );
120
- }
121
- ```
122
-
123
- **[📖 View More Framework Examples →](https://github.com/sebamar88/bytekit/wiki/Framework-Examples)**
124
-
125
- ## 📚 Complete Documentation / Documentación Completa
126
-
127
- **EN:** For detailed documentation of all 28 modules, visit our comprehensive GitHub Wiki.
128
- **ES:** Para documentación detallada de todos los 28 módulos, visita nuestra GitHub Wiki completa.
129
-
130
- ### 🔗 Quick Links by Category / Enlaces Rápidos por Categoría
131
-
132
- #### 🔧 Core Modules (9) - Essential functionality / Funcionalidad esencial
69
+ import { parallel, retry, sleep, debounceAsync } from "bytekit/async";
133
70
 
134
- - **[ApiClient](https://github.com/sebamar88/bytekit/wiki/ApiClient)** - Typed HTTP client with retries, localized errors, and custom fetch support
135
- - **[Logger](https://github.com/sebamar88/bytekit/wiki/Logger)** - Structured logger with levels, namespaces, and transports for Node/browser
136
- - **[Profiler](https://github.com/sebamar88/bytekit/wiki/Profiler)** - Performance monitoring utilities including `Profiler` class and `withTiming` wrapper
137
- - **[RetryPolicy](https://github.com/sebamar88/bytekit/wiki/RetryPolicy)** - RetryPolicy utilities and helpers
138
- - **[ResponseValidator](https://github.com/sebamar88/bytekit/wiki/ResponseValidator)** - ResponseValidator utilities and helpers
139
- - **[RequestCache](https://github.com/sebamar88/bytekit/wiki/RequestCache)** - RequestCache utilities and helpers
140
- - **[RateLimiter](https://github.com/sebamar88/bytekit/wiki/RateLimiter)** - RateLimiter utilities and helpers
141
- - **[RequestDeduplicator](https://github.com/sebamar88/bytekit/wiki/RequestDeduplicator)** - RequestDeduplicator utilities and helpers
142
- - **[ErrorBoundary](https://github.com/sebamar88/bytekit/wiki/ErrorBoundary)** - ErrorBoundary utilities and helpers
143
-
144
- #### 🛠️ Helper Modules (12) - Common utilities / Utilidades comunes
145
-
146
- - **[DateUtils](https://github.com/sebamar88/bytekit/wiki/DateUtils)** - Safe date parsing, manipulation, and formatting (locale or custom tokens like YYYY-MM-DD)
147
- - **[StringUtils](https://github.com/sebamar88/bytekit/wiki/StringUtils)** - Text processing: slugify, capitalize, mask, interpolate, and case conversions (pascalCase, camelCase, snakeCase, kebabCase)
148
- - **[Validator](https://github.com/sebamar88/bytekit/wiki/Validator)** - Validation utilities for emails, phones, CUIT/CUIL, CBU, and more
149
- - **[EnvManager](https://github.com/sebamar88/bytekit/wiki/EnvManager)** - EnvManager utilities and helpers
150
- - **[StorageUtils](https://github.com/sebamar88/bytekit/wiki/StorageUtils)** - StorageUtils utilities and helpers
151
- - **[FileUploadHelper](https://github.com/sebamar88/bytekit/wiki/FileUploadHelper)** - FileUploadHelper utilities and helpers
152
- - **[StreamingHelper](https://github.com/sebamar88/bytekit/wiki/StreamingHelper)** - StreamingHelper utilities and helpers
153
- - **[WebSocketHelper](https://github.com/sebamar88/bytekit/wiki/WebSocketHelper)** - WebSocketHelper utilities and helpers
154
- - **[ArrayUtils](https://github.com/sebamar88/bytekit/wiki/ArrayUtils)** - Array manipulation utilities: chunk, flatten, unique, shuffle, zip
155
- - **[ObjectUtils](https://github.com/sebamar88/bytekit/wiki/ObjectUtils)** - Object manipulation utilities: merge, pick, omit, flatten, groupBy
156
- - **[FormUtils](https://github.com/sebamar88/bytekit/wiki/FormUtils)** - FormUtils utilities and helpers
157
- - **[TimeUtils](https://github.com/sebamar88/bytekit/wiki/TimeUtils)** - TimeUtils utilities and helpers
158
-
159
- #### ⚡ Utility Modules (7) - Advanced features / Características avanzadas
160
-
161
- - **[EventEmitter](https://github.com/sebamar88/bytekit/wiki/EventEmitter)** - EventEmitter utilities and helpers
162
- - **[DiffUtils](https://github.com/sebamar88/bytekit/wiki/DiffUtils)** - DiffUtils utilities and helpers
163
- - **[PollingHelper](https://github.com/sebamar88/bytekit/wiki/PollingHelper)** - PollingHelper utilities and helpers
164
- - **[CryptoUtils](https://github.com/sebamar88/bytekit/wiki/CryptoUtils)** - Token/UUID generation, base64 encoding, hashing, and HMAC
165
- - **[PaginationHelper](https://github.com/sebamar88/bytekit/wiki/PaginationHelper)** - PaginationHelper utilities and helpers
166
- - **[CacheManager](https://github.com/sebamar88/bytekit/wiki/CacheManager)** - Multi-tier cache with TTL, LRU eviction, and statistics
167
- - **[CompressionUtils](https://github.com/sebamar88/bytekit/wiki/CompressionUtils)** - CompressionUtils utilities and helpers
168
-
169
- **[🏠 Browse Full Wiki Index →](https://github.com/sebamar88/bytekit/wiki)**
170
-
171
- ## 🌟 Popular Use Cases / Casos de Uso Populares
172
-
173
- ### HTTP Client with Retries / Cliente HTTP con Reintentos
174
-
175
- ```ts
176
- const api = new ApiClient({
177
- baseUrl: "https://api.example.com",
178
- retryPolicy: { maxAttempts: 3, initialDelayMs: 100 },
179
- circuitBreaker: { failureThreshold: 5 },
71
+ // Retry an async operation automatically
72
+ const data = await retry(fetchDataFromUnstableAPI, {
73
+ maxAttempts: 5,
74
+ delayMs: 1000,
75
+ backoff: "exponential"
180
76
  });
181
77
 
182
- const users = await api.get("/users");
183
- ```
184
-
185
- ### Structured Logging / Logging Estructurado
78
+ // Run tasks in parallel with a concurrency limit
79
+ const results = await parallel(tasks, { concurrency: 3 });
186
80
 
187
- ```ts
188
- const logger = createLogger({ namespace: "app", level: "info" });
189
- logger.info("User created", { userId: 123, email: "user@example.com" });
81
+ // Debounce an async function
82
+ const fetchSuggestions = debounceAsync(api.getSuggestions, { waitMs: 300 });
190
83
  ```
191
84
 
192
- ### Date & String Utilities / Utilidades de Fecha y String
85
+ ### 3. Modular Imports / Importaciones Modulares
193
86
 
194
- ```ts
195
- const formatted = DateUtils.format(new Date(), "es-AR");
196
- const slug = StringUtils.slugify("Hello World! 🌍");
197
- const masked = StringUtils.mask("1234567890", { start: 4, end: 2 });
198
- ```
199
-
200
- ### Array & Object Manipulation / Manipulación de Arrays y Objetos
87
+ Bytekit is fully tree-shakeable. You can import exactly what you need:
201
88
 
202
89
  ```ts
203
- const chunks = ArrayUtils.chunk([1, 2, 3, 4, 5], 2); // [[1,2], [3,4], [5]]
204
- const picked = ObjectUtils.pick(user, ["id", "name", "email"]);
205
- const grouped = ObjectUtils.groupBy(users, "department");
90
+ import { ApiClient } from "bytekit/api-client";
91
+ import { Logger } from "bytekit/logger";
92
+ import { retry, timeout } from "bytekit/async";
93
+ import { UrlSlugHelper } from "bytekit/url-slug-helper";
206
94
  ```
207
95
 
208
- ## 🚀 Live Examples / Ejemplos en Vivo
209
-
210
- **EN:** Try bytekit in your browser with these interactive examples:
211
- **ES:** Prueba bytekit en tu navegador con estos ejemplos interactivos:
212
-
213
- - **[React Example](https://codesandbox.io/p/devbox/bytekit-react-example-gr2k2j)** - Complete React app with ApiClient
214
- - **[Vue Example](https://codesandbox.io/p/devbox/df26fs)** - Vue 3 composition API usage
215
- - **[Svelte Example](https://codesandbox.io/p/devbox/lxvghg)** - Svelte integration example
216
-
217
- **[📁 View Local Examples →](https://github.com/sebamar88/bytekit/tree/main/examples)**
218
-
219
- ## � Documentation / Documentación
96
+ ## 📚 Core Modules
220
97
 
221
- **EN:** Comprehensive guides to help you get the most out of bytekit:
222
- **ES:** Guías completas para aprovechar al máximo bytekit:
98
+ ### 🔧 Networking & Resilience
99
+ - **`ApiClient`** - Typed HTTP client with interceptors, retries, and schema validation support.
100
+ - **`SchemaAdapter`** - Generic adapter to plug your favorite validation library (Zod, Valibot).
101
+ - **`RetryPolicy` & `CircuitBreaker`** - Prevent failures and handle flaky endpoints.
102
+ - **`RequestCache` & `RequestDeduplicator`** - Optimize your network bandwidth.
103
+ - **`RateLimiter`** - Throttle your outbound requests.
223
104
 
224
- - **[🚀 Getting Started](./docs/guides/GETTING_STARTED.md)** - Installation, basic usage, and core concepts / Instalación, uso básico y conceptos core
225
- - **[🔬 Advanced Usage](./docs/guides/ADVANCED_USAGE.md)** - Complex patterns and techniques / Patrones y técnicas complejas
226
- - **[✨ Best Practices](./docs/guides/BEST_PRACTICES.md)** - Production-ready patterns / Patrones para producción
227
- - **[📖 Examples & Snippets](./docs/examples/README.md)** - Code samples and interactive demos / Ejemplos de código y demos interactivos
105
+ ### Async Toolkit
106
+ - Concurrency: **`parallel`**, **`race`**, **`allSettled`**, **`sequential`**.
107
+ - Execution: **`retry`**, **`debounceAsync`**, **`throttleAsync`**.
108
+ - Timing: **`sleep`**, **`timeout`**.
228
109
 
229
- ### 🎮 Interactive CodeSandbox Examples
230
-
231
- - **[React Basic](./docs/examples/codesandbox/react-basic)** - ApiClient with React hooks / ApiClient con hooks de React
232
- - **[Vue Basic](./docs/examples/codesandbox/vue-basic)** - Composition API integration / Integración con Composition API
233
- - **[Svelte Basic](./docs/examples/codesandbox/svelte-basic)** - Svelte stores integration / Integración con stores de Svelte
234
-
235
- ## �🔗 Links / Enlaces
236
-
237
- - **[📦 NPM Package](https://www.npmjs.com/package/bytekit)** - Install and version info
238
- - **[📚 Full Documentation Wiki](https://github.com/sebamar88/bytekit/wiki)** - Complete API reference
239
- - **[🚀 Live Examples](https://github.com/sebamar88/bytekit/tree/main/examples)** - Working code samples
240
- - **[📋 Issues & Support](https://github.com/sebamar88/bytekit/issues)** - Bug reports and feature requests
241
- - **[🔄 Changelog](https://github.com/sebamar88/bytekit/blob/main/CHANGELOG.md)** - Version history
110
+ ### 🛠️ Key Helpers
111
+ - **`Logger` & `Profiler`** - Structured logs and performance monitoring.
112
+ - **`UrlSlugHelper`** - Generate SEO-friendly URL slugs.
113
+ - **`QueryStringHelper`** - Powerful object-to-query-string serialization.
114
+ - **`FileUploadHelper`**, **`StreamingHelper`**, **`WebSocketHelper`** - Specialized network tasks.
115
+ - **`EventEmitter`**, **`DiffUtils`**, **`CacheManager`**, **`CryptoUtils`**.
242
116
 
243
117
  ## 🤝 Contributing / Contribuir
244
118
 
@@ -248,7 +122,3 @@ const grouped = ObjectUtils.groupBy(users, "department");
248
122
  ## 📄 License / Licencia
249
123
 
250
124
  MIT © [Sebastián Martinez](https://github.com/sebamar88)
251
-
252
- ---
253
-
254
- **💡 Need help?** Check the **[Wiki](https://github.com/sebamar88/bytekit/wiki)** or **[open an issue](https://github.com/sebamar88/bytekit/issues)**.
package/bin/bytekit.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export interface SwaggerOptions {
2
- url: string;
2
+ url: string | URL;
3
3
  output?: string;
4
4
  }
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"swagger-generator.d.ts","sourceRoot":"","sources":["../../src/cli/swagger-generator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC,CAgGf"}
1
+ {"version":3,"file":"swagger-generator.d.ts","sourceRoot":"","sources":["../../src/cli/swagger-generator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC,CAqGf"}
@@ -5,10 +5,11 @@ import path from "node:path";
5
5
  */
6
6
  export async function generateFromSwagger(options) {
7
7
  const { url, output = "src/types/api-docs.ts" } = options;
8
- console.log(`\n📖 Attempting to resolve Swagger/OpenAPI spec from ${url}...`);
8
+ const urlStr = String(url);
9
+ console.log(`\n📖 Attempting to resolve Swagger/OpenAPI spec from ${urlStr}...`);
9
10
  try {
10
11
  let spec;
11
- const response = await fetch(url);
12
+ const response = await fetch(urlStr);
12
13
  if (!response.ok) {
13
14
  throw new Error(`HTTP ${response.status}: ${response.statusText}`);
14
15
  }
@@ -17,7 +18,7 @@ export async function generateFromSwagger(options) {
17
18
  if (contentType.includes("text/html")) {
18
19
  console.log("🔍 URL looks like a documentation page, trying to find spec JSON...");
19
20
  // Try to find the spec by replacing /docs or adding common paths
20
- const baseUrl = url
21
+ const baseUrl = urlStr
21
22
  .replace(/\/docs\/?$/, "")
22
23
  .replace(/\/swagger-ui\/?$/, "");
23
24
  const commonPaths = [
@@ -57,10 +58,13 @@ export async function generateFromSwagger(options) {
57
58
  console.warn("⚠️ No schemas or definitions found in the specification.");
58
59
  return;
59
60
  }
60
- let typeDefinitions = `/**\n * Auto-generated types from Swagger/OpenAPI\n * Generated at ${new Date().toISOString()}\n */\n\n`;
61
+ const typeDefinitionsArray = [
62
+ `/**\n * Auto-generated types from Swagger/OpenAPI\n * Generated at ${new Date().toISOString()}\n */`,
63
+ ];
61
64
  for (const [name, schema] of Object.entries(schemas)) {
62
- typeDefinitions += generateInterface(name, schema) + "\n\n";
65
+ typeDefinitionsArray.push(generateInterface(name, schema));
63
66
  }
67
+ const typeDefinitions = typeDefinitionsArray.join("\n\n") + "\n\n";
64
68
  const outputPath = path.join(process.cwd(), output);
65
69
  const outputDir = path.dirname(outputPath);
66
70
  await fs.mkdir(outputDir, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"swagger-generator.js","sourceRoot":"","sources":["../../src/cli/swagger-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swagger-generator.js","sourceRoot":"","sources":["../../src/cli/swagger-generator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Logger } from "#core/Logger.js";
2
2
  import { RetryConfig, CircuitBreakerConfig } from "#core/RetryPolicy.js";
3
3
  import { ValidationSchema } from "#core/ResponseValidator.js";
4
+ import { SchemaAdapter } from "./SchemaAdapter.js";
4
5
  export type QueryParamValue = string | number | boolean | null | undefined;
5
6
  export type QueryParam = QueryParamValue | QueryParamValue[] | Record<string, unknown>;
6
7
  export type Locale = "en" | "es";
@@ -9,8 +10,8 @@ export interface ApiClientInterceptors {
9
10
  response?: (response: Response) => Promise<Response> | Response;
10
11
  }
11
12
  export interface ApiClientConfig {
12
- baseUrl?: string;
13
- baseURL?: string;
13
+ baseUrl?: string | URL;
14
+ baseURL?: string | URL;
14
15
  defaultHeaders?: HeadersInit;
15
16
  fetchImpl?: typeof fetch;
16
17
  locale?: Locale;
@@ -24,12 +25,12 @@ export interface ApiClientConfig {
24
25
  retryPolicy?: RetryConfig;
25
26
  circuitBreaker?: CircuitBreakerConfig;
26
27
  }
27
- export interface RequestOptions extends Omit<RequestInit, "body"> {
28
+ export interface RequestOptions<TResponse = unknown> extends Omit<RequestInit, "body"> {
28
29
  searchParams?: Record<string, QueryParam>;
29
30
  body?: FormData | string | Blob | ArrayBuffer | Record<string, unknown>;
30
31
  errorLocale?: Locale;
31
32
  timeoutMs?: number;
32
- validateResponse?: ValidationSchema;
33
+ validateResponse?: ValidationSchema | SchemaAdapter<TResponse>;
33
34
  skipRetry?: boolean;
34
35
  skipInterceptors?: boolean;
35
36
  logHeaders?: boolean;
@@ -46,7 +47,7 @@ export interface PaginationParams {
46
47
  export interface FilterParams {
47
48
  [key: string]: QueryParam;
48
49
  }
49
- export interface ListOptions<TFilter extends FilterParams = FilterParams> extends Omit<RequestOptions, "searchParams"> {
50
+ export interface ListOptions<TFilter extends FilterParams = FilterParams, TResponse = unknown> extends Omit<RequestOptions<TResponse>, "searchParams"> {
50
51
  pagination?: PaginationParams;
51
52
  sort?: SortParams;
52
53
  filters?: TFilter;
@@ -108,7 +109,7 @@ export declare class ApiClient {
108
109
  private readonly retryPolicy;
109
110
  private readonly circuitBreaker;
110
111
  constructor({ baseUrl, baseURL, defaultHeaders, fetchImpl, locale, errorMessages, timeoutMs, interceptors, disableInterceptors, logHeaders, redactHeaderKeys, logger, retryPolicy, circuitBreaker, }: ApiClientConfig);
111
- get<T>(path: string, options?: RequestOptions): Promise<T>;
112
+ get<T>(path: string | URL, options?: RequestOptions<T>): Promise<T>;
112
113
  /**
113
114
  * POST request - Acepta body directamente o RequestOptions
114
115
  * @example
@@ -121,17 +122,17 @@ export declare class ApiClient {
121
122
  * headers: { "X-Custom": "value" }
122
123
  * })
123
124
  */
124
- post<T>(path: string, bodyOrOptions?: RequestOptions | unknown): Promise<T>;
125
+ post<T>(path: string | URL, bodyOrOptions?: RequestOptions<T> | unknown): Promise<T>;
125
126
  /**
126
127
  * PUT request - Acepta body directamente o RequestOptions
127
128
  */
128
- put<T>(path: string, bodyOrOptions?: RequestOptions | unknown): Promise<T>;
129
+ put<T>(path: string | URL, bodyOrOptions?: RequestOptions<T> | unknown): Promise<T>;
129
130
  /**
130
131
  * PATCH request - Acepta body directamente o RequestOptions
131
132
  */
132
- patch<T>(path: string, bodyOrOptions?: RequestOptions | unknown): Promise<T>;
133
- delete<T>(path: string, options?: RequestOptions): Promise<T>;
134
- getList<T, TFilter extends FilterParams = FilterParams>(path: string, options?: ListOptions<TFilter>): Promise<PaginatedResponse<T>>;
133
+ patch<T>(path: string | URL, bodyOrOptions?: RequestOptions<T> | unknown): Promise<T>;
134
+ delete<T>(path: string | URL, options?: RequestOptions<T>): Promise<T>;
135
+ getList<T, TFilter extends FilterParams = FilterParams>(path: string | URL, options?: ListOptions<TFilter, PaginatedResponse<T>>): Promise<PaginatedResponse<T>>;
135
136
  /**
136
137
  * Prepares request configuration with headers, body, and interceptors
137
138
  */
@@ -144,7 +145,7 @@ export declare class ApiClient {
144
145
  * Handles request errors with proper logging
145
146
  */
146
147
  private handleRequestError;
147
- request<T>(path: string, options?: RequestOptions): Promise<T>;
148
+ request<T>(path: string | URL, options?: RequestOptions<T>): Promise<T>;
148
149
  /**
149
150
  * Normaliza el segundo parámetro de post/put/patch para soportar:
150
151
  * 1. Body directo: post("/path", { name: "John" })
@@ -1 +1 @@
1
- {"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/core/ApiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/core/ApiClient.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { StringUtils } from "#helpers/StringUtils.js";
1
+ import { QueryStringHelper } from "#helpers/QueryStringHelper.js";
2
2
  import { retry as retryFn } from "../async/retry.js";
3
3
  import { RetryPolicy, CircuitBreaker, } from "#core/RetryPolicy.js";
4
4
  import { ResponseValidator, } from "#core/ResponseValidator.js";
5
+ import { isSchemaAdapter } from "./SchemaAdapter.js";
5
6
  export class ApiError extends Error {
6
7
  constructor(status, statusText, message, body, isTimeout = false) {
7
8
  super(message);
@@ -196,7 +197,8 @@ export class ApiClient {
196
197
  if (!url) {
197
198
  throw new Error("ApiClient requires either 'baseUrl' or 'baseURL' in config");
198
199
  }
199
- this.baseUrl = new URL(url.endsWith("/") ? url : `${url}/`);
200
+ const urlStr = String(url);
201
+ this.baseUrl = new URL(urlStr.endsWith("/") ? urlStr : `${urlStr}/`);
200
202
  this.headers = defaultHeaders ?? {};
201
203
  this.fetchImpl = fetchImpl ?? globalThis.fetch.bind(globalThis);
202
204
  this.locale = locale;
@@ -343,18 +345,25 @@ export class ApiClient {
343
345
  const contentType = response.headers.get("content-type") || "";
344
346
  let data;
345
347
  if (/json/i.test(contentType)) {
346
- data = (await response.json());
348
+ data = await response.json();
347
349
  }
348
350
  else {
349
- data = (await response.text());
351
+ data = await response.text();
350
352
  }
351
353
  // Validate response if schema provided
352
354
  if (validateResponse) {
353
- const errors = ResponseValidator.validate(data, validateResponse);
354
- if (errors.length > 0) {
355
- throw new Error(`Response validation failed: ${errors
356
- .map((e) => e.message)
357
- .join(", ")}`);
355
+ if (isSchemaAdapter(validateResponse)) {
356
+ // Use SchemaAdapter (Zod/Valibot/etc.)
357
+ return validateResponse.parse(data);
358
+ }
359
+ else {
360
+ // Use built-in ResponseValidator
361
+ const errors = ResponseValidator.validate(data, validateResponse);
362
+ if (errors.length > 0) {
363
+ throw new Error(`Response validation failed: ${errors
364
+ .map((e) => e.message)
365
+ .join(", ")}`);
366
+ }
358
367
  }
359
368
  }
360
369
  return data;
@@ -363,13 +372,14 @@ export class ApiClient {
363
372
  * Handles request errors with proper logging
364
373
  */
365
374
  handleRequestError(err, path, method) {
375
+ const pathStr = String(path);
366
376
  if (err instanceof Error && err.name === "AbortError") {
367
377
  throw new ApiError(408, "Timeout", "Request timeout", null, true);
368
378
  }
369
379
  // Enhanced logging for ApiError
370
380
  if (err instanceof ApiError) {
371
381
  this.logger?.error("API Request failed", {
372
- path,
382
+ path: pathStr,
373
383
  method,
374
384
  status: err.status,
375
385
  statusText: err.statusText,
@@ -377,7 +387,7 @@ export class ApiClient {
377
387
  }, err);
378
388
  }
379
389
  else {
380
- this.logger?.error("Request failed", { path, method }, err instanceof Error ? err : new Error(String(err)));
390
+ this.logger?.error("Request failed", { path: pathStr, method }, err instanceof Error ? err : new Error(String(err)));
381
391
  }
382
392
  throw err;
383
393
  }
@@ -552,10 +562,11 @@ export class ApiClient {
552
562
  });
553
563
  }
554
564
  buildUrl(path, params) {
555
- const normalized = path.startsWith("/") ? path.slice(1) : path;
565
+ const pathStr = String(path);
566
+ const normalized = pathStr.startsWith("/") ? pathStr.slice(1) : pathStr;
556
567
  const url = new URL(normalized, this.baseUrl);
557
568
  if (params) {
558
- const queryString = StringUtils.toQueryString(params);
569
+ const queryString = QueryStringHelper.stringify(params);
559
570
  if (queryString) {
560
571
  url.search = url.search
561
572
  ? `${url.search}&${queryString}`