bytekit 0.1.12 → 0.2.0
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.
- package/README.md +186 -20
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +106 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/utils/core/BatchRequest.d.ts +79 -0
- package/dist/utils/core/BatchRequest.d.ts.map +1 -0
- package/dist/utils/core/BatchRequest.js +138 -0
- package/dist/utils/core/BatchRequest.js.map +1 -0
- package/dist/utils/core/index.d.ts +1 -0
- package/dist/utils/core/index.d.ts.map +1 -1
- package/dist/utils/core/index.js +1 -0
- package/dist/utils/core/index.js.map +1 -1
- package/dist/utils/helpers/HttpStatusHelper.d.ts +82 -0
- package/dist/utils/helpers/HttpStatusHelper.d.ts.map +1 -0
- package/dist/utils/helpers/HttpStatusHelper.js +174 -0
- package/dist/utils/helpers/HttpStatusHelper.js.map +1 -0
- package/dist/utils/helpers/UrlBuilder.d.ts +79 -0
- package/dist/utils/helpers/UrlBuilder.d.ts.map +1 -0
- package/dist/utils/helpers/UrlBuilder.js +143 -0
- package/dist/utils/helpers/UrlBuilder.js.map +1 -0
- package/dist/utils/helpers/index.d.ts +2 -0
- package/dist/utils/helpers/index.d.ts.map +1 -1
- package/dist/utils/helpers/index.js +2 -0
- package/dist/utils/helpers/index.js.map +1 -1
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -90,10 +90,7 @@ import { RateLimiter, SlidingWindowRateLimiter } from "bytekit/rate-limiter";
|
|
|
90
90
|
import { RequestDeduplicator } from "bytekit/request-deduplicator";
|
|
91
91
|
|
|
92
92
|
// Error Boundary
|
|
93
|
-
import {
|
|
94
|
-
ErrorBoundary,
|
|
95
|
-
getGlobalErrorBoundary,
|
|
96
|
-
} from "bytekit/error-boundary";
|
|
93
|
+
import { ErrorBoundary, getGlobalErrorBoundary } from "bytekit/error-boundary";
|
|
97
94
|
```
|
|
98
95
|
|
|
99
96
|
#### Helper Modules / Módulos Helpers
|
|
@@ -148,16 +145,22 @@ import { PollingHelper, createPoller } from "bytekit/polling-helper";
|
|
|
148
145
|
import { CryptoUtils } from "bytekit/crypto-utils";
|
|
149
146
|
|
|
150
147
|
// Pagination Helper
|
|
151
|
-
import {
|
|
152
|
-
PaginationHelper,
|
|
153
|
-
createPaginator,
|
|
154
|
-
} from "bytekit/pagination-helper";
|
|
148
|
+
import { PaginationHelper, createPaginator } from "bytekit/pagination-helper";
|
|
155
149
|
|
|
156
150
|
// Cache Manager
|
|
157
151
|
import { CacheManager, createCacheManager } from "bytekit/cache-manager";
|
|
158
152
|
|
|
159
153
|
// Compression Utilities
|
|
160
154
|
import { CompressionUtils } from "bytekit/compression-utils";
|
|
155
|
+
|
|
156
|
+
// HTTP Status Helper
|
|
157
|
+
import { HTTP_STATUS, isSuccess, isRetryable } from "bytekit/http-status";
|
|
158
|
+
|
|
159
|
+
// URL Builder
|
|
160
|
+
import { UrlBuilder, createUrlBuilder } from "bytekit/url-builder";
|
|
161
|
+
|
|
162
|
+
// Batch Request
|
|
163
|
+
import { BatchRequest, createBatchRequest } from "bytekit/batch-request";
|
|
161
164
|
```
|
|
162
165
|
|
|
163
166
|
#### Import Everything / Importar Todo
|
|
@@ -242,6 +245,109 @@ const slug = StringUtils.slugify("New Users – October 2024");
|
|
|
242
245
|
**EN:** Import everything from the root entry, configure the ApiClient once, reuse helpers everywhere.
|
|
243
246
|
**ES:** Importá desde la raíz, configurá el ApiClient una sola vez y reutilizá los helpers en todos tus servicios.
|
|
244
247
|
|
|
248
|
+
## Framework Examples / Ejemplos con Frameworks
|
|
249
|
+
|
|
250
|
+
**EN:** Bytekit is framework-agnostic and works seamlessly with React, Vue, Svelte, Angular, and more.
|
|
251
|
+
**ES:** Bytekit es agnóstico al framework y funciona perfectamente con React, Vue, Svelte, Angular y más.
|
|
252
|
+
|
|
253
|
+
### 🎯 Works with / Compatible con
|
|
254
|
+
|
|
255
|
+
<div align="center">
|
|
256
|
+
|
|
257
|
+
**React** • **Vue** • **Svelte** • **Angular** • **Next.js** • **Nuxt** • **SvelteKit**
|
|
258
|
+
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
### 📚 Quick Examples / Ejemplos Rápidos
|
|
262
|
+
|
|
263
|
+
#### React
|
|
264
|
+
|
|
265
|
+
```jsx
|
|
266
|
+
import { createApiClient } from "bytekit";
|
|
267
|
+
import { useState, useEffect } from "react";
|
|
268
|
+
|
|
269
|
+
function useApiClient(config) {
|
|
270
|
+
const [client] = useState(() => createApiClient(config));
|
|
271
|
+
return client;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
function Users() {
|
|
275
|
+
const client = useApiClient({ baseURL: "https://api.example.com" });
|
|
276
|
+
const [users, setUsers] = useState([]);
|
|
277
|
+
|
|
278
|
+
useEffect(() => {
|
|
279
|
+
client.get("/users").then(setUsers);
|
|
280
|
+
}, [client]);
|
|
281
|
+
|
|
282
|
+
return (
|
|
283
|
+
<div>
|
|
284
|
+
{users.map((u) => (
|
|
285
|
+
<div key={u.id}>{u.name}</div>
|
|
286
|
+
))}
|
|
287
|
+
</div>
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**[📖 Full React Guide](./docs/examples/react.md)** • **[💻 Working Example](./examples/react-app)**
|
|
293
|
+
|
|
294
|
+
#### Vue 3
|
|
295
|
+
|
|
296
|
+
```vue
|
|
297
|
+
<script setup>
|
|
298
|
+
import { ref, onMounted } from "vue";
|
|
299
|
+
import { createApiClient } from "bytekit";
|
|
300
|
+
|
|
301
|
+
const client = createApiClient({ baseURL: "https://api.example.com" });
|
|
302
|
+
const users = ref([]);
|
|
303
|
+
|
|
304
|
+
onMounted(async () => {
|
|
305
|
+
users.value = await client.get("/users");
|
|
306
|
+
});
|
|
307
|
+
</script>
|
|
308
|
+
|
|
309
|
+
<template>
|
|
310
|
+
<div v-for="user in users" :key="user.id">{{ user.name }}</div>
|
|
311
|
+
</template>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**[📖 Full Vue Guide](./docs/examples/vue.md)** • **[💻 Working Example](./examples/vue-app)**
|
|
315
|
+
|
|
316
|
+
#### Svelte
|
|
317
|
+
|
|
318
|
+
```svelte
|
|
319
|
+
<script>
|
|
320
|
+
import { onMount } from 'svelte';
|
|
321
|
+
import { createApiClient } from 'bytekit';
|
|
322
|
+
|
|
323
|
+
const client = createApiClient({ baseURL: 'https://api.example.com' });
|
|
324
|
+
let users = [];
|
|
325
|
+
|
|
326
|
+
onMount(async () => {
|
|
327
|
+
users = await client.get('/users');
|
|
328
|
+
});
|
|
329
|
+
</script>
|
|
330
|
+
|
|
331
|
+
{#each users as user}
|
|
332
|
+
<div>{user.name}</div>
|
|
333
|
+
{/each}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**[📖 Full Svelte Guide](./docs/examples/svelte.md)** • **[💻 Working Example](./examples/svelte-app)**
|
|
337
|
+
|
|
338
|
+
### 🚀 Try the Examples / Probá los Ejemplos
|
|
339
|
+
|
|
340
|
+
**EN:** Each example is a standalone Vite app ready to run:
|
|
341
|
+
**ES:** Cada ejemplo es una app Vite lista para ejecutar:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
cd examples/react-app # or vue-app, svelte-app
|
|
345
|
+
npm install
|
|
346
|
+
npm run dev
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**[📁 View all examples](./examples)**
|
|
350
|
+
|
|
245
351
|
## API surface / Métodos expuestos
|
|
246
352
|
|
|
247
353
|
**EN:** Complete reference of all exported methods and classes. Use `npm info bytekit` to see the full list.
|
|
@@ -1631,12 +1737,7 @@ workerLogger.debug("processing batch", { size: 20 });
|
|
|
1631
1737
|
**ES**: `createStopwatch`, `withTiming`, `measureAsync`, `captureDebug` y `Profiler` facilitan medir tiempos y loguear automáticamente.
|
|
1632
1738
|
|
|
1633
1739
|
```ts
|
|
1634
|
-
import {
|
|
1635
|
-
createStopwatch,
|
|
1636
|
-
withTiming,
|
|
1637
|
-
measureAsync,
|
|
1638
|
-
Profiler,
|
|
1639
|
-
} from "bytekit";
|
|
1740
|
+
import { createStopwatch, withTiming, measureAsync, Profiler } from "bytekit";
|
|
1640
1741
|
|
|
1641
1742
|
const stopwatch = createStopwatch({ label: "sync-users" });
|
|
1642
1743
|
// ... run task
|
|
@@ -2066,15 +2167,82 @@ npx sutils create users
|
|
|
2066
2167
|
**What is generated / Qué se genera:**
|
|
2067
2168
|
|
|
2068
2169
|
- `api/<resource>/index.ts`: typed CRUD helpers built on `bytekit`' `ApiClient`, including shape placeholders, filter helpers, and `list/get/create/update/delete` functions.
|
|
2069
|
-
- `hooks/<resource>/use<ResourcePlural>.ts`:
|
|
2170
|
+
- `hooks/<resource>/use<ResourcePlural>.ts`: Query library hooks (React Query or RTK Query, configurable via `--queryLib`) that invalidate the corresponding queries and wire mutations.
|
|
2070
2171
|
- `hooks/<resource>/index.ts`: re-exports the generated hooks.
|
|
2071
2172
|
|
|
2072
|
-
The generator accepts `--apiDir`, `--hooksDir`, `--route`, and `--force`; directories default to `api`/`hooks`, the route defaults to the resource name, and `--force` overwrites existing files. It also respects nested resource paths like `admin/users`.
|
|
2173
|
+
The generator accepts `--apiDir`, `--hooksDir`, `--route`, `--queryLib`, and `--force`; directories default to `api`/`hooks`, the route defaults to the resource name, `--queryLib` defaults to `react-query`, and `--force` overwrites existing files. It also respects nested resource paths like `admin/users`.
|
|
2174
|
+
|
|
2175
|
+
**Query Library Options / Opciones de Librería de Queries:**
|
|
2176
|
+
|
|
2177
|
+
- `--queryLib=react-query` (default): Generates hooks using `@tanstack/react-query` (React Query).
|
|
2178
|
+
- `--queryLib=rtk-query`: Generates API slice using `@reduxjs/toolkit/query/react` (RTK Query).
|
|
2179
|
+
|
|
2180
|
+
**Examples / Ejemplos:**
|
|
2181
|
+
|
|
2182
|
+
```bash
|
|
2183
|
+
# Create with React Query (default)
|
|
2184
|
+
npx sutils create users
|
|
2185
|
+
|
|
2186
|
+
# Create with RTK Query
|
|
2187
|
+
npx sutils create users --queryLib=rtk-query
|
|
2188
|
+
|
|
2189
|
+
# Create with custom directories and RTK Query
|
|
2190
|
+
npx sutils create payments --apiDir=services --hooksDir=app/hooks --route=/billing/payments --queryLib=rtk-query --force
|
|
2191
|
+
```
|
|
2192
|
+
|
|
2193
|
+
**React Query Setup / Configuración de React Query:**
|
|
2194
|
+
|
|
2195
|
+
React Query must be available in the consuming project:
|
|
2196
|
+
|
|
2197
|
+
```bash
|
|
2198
|
+
npm install @tanstack/react-query
|
|
2199
|
+
```
|
|
2200
|
+
|
|
2201
|
+
The generated hooks expect an `ApiClient` instance that you pass as the first argument:
|
|
2202
|
+
|
|
2203
|
+
```ts
|
|
2204
|
+
import { useUsers } from "./hooks/users";
|
|
2205
|
+
import { apiClient } from "./api/client";
|
|
2073
2206
|
|
|
2074
|
-
|
|
2207
|
+
export function UsersList() {
|
|
2208
|
+
const { data, isLoading } = useUsers(apiClient);
|
|
2209
|
+
// ...
|
|
2210
|
+
}
|
|
2211
|
+
```
|
|
2212
|
+
|
|
2213
|
+
**RTK Query Setup / Configuración de RTK Query:**
|
|
2214
|
+
|
|
2215
|
+
RTK Query must be available in the consuming project:
|
|
2075
2216
|
|
|
2076
2217
|
```bash
|
|
2077
|
-
|
|
2218
|
+
npm install @reduxjs/toolkit react-redux
|
|
2219
|
+
```
|
|
2220
|
+
|
|
2221
|
+
The generated API slice should be added to your Redux store:
|
|
2222
|
+
|
|
2223
|
+
```ts
|
|
2224
|
+
import { configureStore } from "@reduxjs/toolkit";
|
|
2225
|
+
import { userApi } from "./hooks/users";
|
|
2226
|
+
|
|
2227
|
+
export const store = configureStore({
|
|
2228
|
+
reducer: {
|
|
2229
|
+
[userApi.reducerPath]: userApi.reducer,
|
|
2230
|
+
},
|
|
2231
|
+
middleware: (getDefaultMiddleware) =>
|
|
2232
|
+
getDefaultMiddleware().concat(userApi.middleware),
|
|
2233
|
+
});
|
|
2234
|
+
```
|
|
2235
|
+
|
|
2236
|
+
Then use the generated hooks in your components:
|
|
2237
|
+
|
|
2238
|
+
```ts
|
|
2239
|
+
import { useListUsersQuery, useCreateUserMutation } from "./hooks/users";
|
|
2240
|
+
|
|
2241
|
+
export function UsersList() {
|
|
2242
|
+
const { data, isLoading } = useListUsersQuery();
|
|
2243
|
+
const [createUser] = useCreateUserMutation();
|
|
2244
|
+
// ...
|
|
2245
|
+
}
|
|
2078
2246
|
```
|
|
2079
2247
|
|
|
2080
2248
|
### Types Command / Comando Types
|
|
@@ -2237,5 +2405,3 @@ import { ApiClient, DateUtils } from "bytekit";
|
|
|
2237
2405
|
## License / Licencia
|
|
2238
2406
|
|
|
2239
2407
|
MIT © 2024 Sebastián Martinez
|
|
2240
|
-
|
|
2241
|
-
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAyBA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1D"}
|
package/dist/cli/index.js
CHANGED
|
@@ -40,6 +40,7 @@ async function handleCreate(resource, args) {
|
|
|
40
40
|
force: Boolean(flags.force),
|
|
41
41
|
route: flags.route ?? `/${resourceSegments.join("/")}`,
|
|
42
42
|
resourceSegments,
|
|
43
|
+
queryLib: flags.queryLib ?? "react-query",
|
|
43
44
|
};
|
|
44
45
|
await createResourceFiles(config);
|
|
45
46
|
}
|
|
@@ -86,6 +87,14 @@ function parseCreateFlags(args) {
|
|
|
86
87
|
case "route":
|
|
87
88
|
flags.route = rawValue;
|
|
88
89
|
break;
|
|
90
|
+
case "queryLib":
|
|
91
|
+
if (rawValue === "react-query" || rawValue === "rtk-query") {
|
|
92
|
+
flags.queryLib = rawValue;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.warn(`Invalid queryLib value "${rawValue}". Use "react-query" or "rtk-query".`);
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
89
98
|
default:
|
|
90
99
|
console.warn(`Unrecognized flag "--${key}"; ignoring.`);
|
|
91
100
|
}
|
|
@@ -149,12 +158,19 @@ async function createResourceFiles(config) {
|
|
|
149
158
|
singularPascal: pascalSingular,
|
|
150
159
|
route: resolvedRoute,
|
|
151
160
|
}), force);
|
|
152
|
-
await writeFileIfAllowed(hooksFilePath,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
161
|
+
await writeFileIfAllowed(hooksFilePath, config.queryLib === "rtk-query"
|
|
162
|
+
? buildRtkQueryHooksTemplate({
|
|
163
|
+
pascalPlural,
|
|
164
|
+
pascalSingular,
|
|
165
|
+
resourceKey,
|
|
166
|
+
apiImportPath,
|
|
167
|
+
})
|
|
168
|
+
: buildHooksTemplate({
|
|
169
|
+
pascalPlural,
|
|
170
|
+
pascalSingular,
|
|
171
|
+
resourceKey,
|
|
172
|
+
apiImportPath,
|
|
173
|
+
}), force);
|
|
158
174
|
await writeFileIfAllowed(hooksIndexPath, `export * from "./use${pascalPlural}";\n`, force);
|
|
159
175
|
console.log(`Scaffolded "${resourceKey}" under "${apiDir}" and "${hooksDir}".`);
|
|
160
176
|
}
|
|
@@ -215,6 +231,84 @@ export const update${singularPascal} = (
|
|
|
215
231
|
export const delete${singularPascal} = (client: ApiClient, id: string) =>
|
|
216
232
|
client.delete<void>(RESOURCE_PATH + "/" + id);
|
|
217
233
|
|
|
234
|
+
`;
|
|
235
|
+
}
|
|
236
|
+
function buildRtkQueryHooksTemplate(options) {
|
|
237
|
+
const { pascalPlural, pascalSingular, resourceKey, apiImportPath } = options;
|
|
238
|
+
return `import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
|
239
|
+
import type { ApiClient } from "bytekit";
|
|
240
|
+
import {
|
|
241
|
+
list${pascalPlural},
|
|
242
|
+
get${pascalSingular},
|
|
243
|
+
create${pascalSingular},
|
|
244
|
+
update${pascalSingular},
|
|
245
|
+
delete${pascalSingular},
|
|
246
|
+
type ${pascalSingular}Dto,
|
|
247
|
+
type Create${pascalSingular}Dto,
|
|
248
|
+
type Update${pascalSingular}Dto,
|
|
249
|
+
type ${pascalSingular}Filters,
|
|
250
|
+
} from "${apiImportPath}";
|
|
251
|
+
|
|
252
|
+
const resourceKey = "${resourceKey}";
|
|
253
|
+
|
|
254
|
+
export const ${pascalSingular.toLowerCase()}Api = createApi({
|
|
255
|
+
reducerPath: "${pascalSingular.toLowerCase()}Api",
|
|
256
|
+
baseQuery: fetchBaseQuery({
|
|
257
|
+
baseUrl: process.env.REACT_APP_API_URL || "",
|
|
258
|
+
}),
|
|
259
|
+
tagTypes: ["${pascalSingular}"],
|
|
260
|
+
endpoints: (builder) => ({
|
|
261
|
+
list${pascalPlural}: builder.query<${pascalSingular}Dto[], ${pascalSingular}Filters | undefined>({
|
|
262
|
+
query: (filters) => ({
|
|
263
|
+
url: resourceKey,
|
|
264
|
+
params: filters,
|
|
265
|
+
}),
|
|
266
|
+
providesTags: ["${pascalSingular}"],
|
|
267
|
+
}),
|
|
268
|
+
get${pascalSingular}: builder.query<${pascalSingular}Dto, string>({
|
|
269
|
+
query: (id) => \`\${resourceKey}/\${id}\`,
|
|
270
|
+
providesTags: (result, error, id) => [{ type: "${pascalSingular}", id }],
|
|
271
|
+
}),
|
|
272
|
+
create${pascalSingular}: builder.mutation<${pascalSingular}Dto, Create${pascalSingular}Dto>({
|
|
273
|
+
query: (payload) => ({
|
|
274
|
+
url: resourceKey,
|
|
275
|
+
method: "POST",
|
|
276
|
+
body: payload,
|
|
277
|
+
}),
|
|
278
|
+
invalidatesTags: ["${pascalSingular}"],
|
|
279
|
+
}),
|
|
280
|
+
update${pascalSingular}: builder.mutation<
|
|
281
|
+
${pascalSingular}Dto,
|
|
282
|
+
{ id: string; payload: Update${pascalSingular}Dto }
|
|
283
|
+
>({
|
|
284
|
+
query: ({ id, payload }) => ({
|
|
285
|
+
url: \`\${resourceKey}/\${id}\`,
|
|
286
|
+
method: "PATCH",
|
|
287
|
+
body: payload,
|
|
288
|
+
}),
|
|
289
|
+
invalidatesTags: (result, error, { id }) => [
|
|
290
|
+
{ type: "${pascalSingular}", id },
|
|
291
|
+
"${pascalSingular}",
|
|
292
|
+
],
|
|
293
|
+
}),
|
|
294
|
+
delete${pascalSingular}: builder.mutation<void, string>({
|
|
295
|
+
query: (id) => ({
|
|
296
|
+
url: \`\${resourceKey}/\${id}\`,
|
|
297
|
+
method: "DELETE",
|
|
298
|
+
}),
|
|
299
|
+
invalidatesTags: ["${pascalSingular}"],
|
|
300
|
+
}),
|
|
301
|
+
}),
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
export const {
|
|
305
|
+
useList${pascalPlural}Query,
|
|
306
|
+
useGet${pascalSingular}Query,
|
|
307
|
+
useCreate${pascalSingular}Mutation,
|
|
308
|
+
useUpdate${pascalSingular}Mutation,
|
|
309
|
+
useDelete${pascalSingular}Mutation,
|
|
310
|
+
} = ${pascalSingular.toLowerCase()}Api;
|
|
311
|
+
|
|
218
312
|
`;
|
|
219
313
|
}
|
|
220
314
|
function buildHooksTemplate(options) {
|
|
@@ -374,7 +468,13 @@ Options
|
|
|
374
468
|
--apiDir=<dir> Base directory for API files (default: api).
|
|
375
469
|
--hooksDir=<dir> Base directory for hooks (default: hooks).
|
|
376
470
|
--route=</path> API route path (default: derived from resource).
|
|
471
|
+
--queryLib=<lib> Query library: "react-query" or "rtk-query" (default: react-query).
|
|
377
472
|
--force Overwrite existing files.
|
|
473
|
+
|
|
474
|
+
Examples
|
|
475
|
+
sutils create users
|
|
476
|
+
sutils create users --queryLib=rtk-query
|
|
477
|
+
sutils create posts --apiDir=src/api --hooksDir=src/hooks --force
|
|
378
478
|
`);
|
|
379
479
|
}
|
|
380
480
|
function printTypesHelp() {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,iBAAiB,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch Request Helper
|
|
3
|
+
* Execute multiple requests in parallel, sequence, or with fallback
|
|
4
|
+
*/
|
|
5
|
+
export interface BatchRequestOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Abort all requests if one fails
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
abortOnError?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Timeout for all requests in milliseconds
|
|
13
|
+
*/
|
|
14
|
+
timeout?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class BatchRequest {
|
|
17
|
+
private options;
|
|
18
|
+
private requests;
|
|
19
|
+
private labels;
|
|
20
|
+
constructor(options?: BatchRequestOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Add a request to the batch
|
|
23
|
+
* @example
|
|
24
|
+
* batch.add(() => client.get("/users"))
|
|
25
|
+
* batch.add(() => client.get("/posts"), "posts")
|
|
26
|
+
*/
|
|
27
|
+
add<T>(fn: () => Promise<T>, label?: string): this;
|
|
28
|
+
/**
|
|
29
|
+
* Execute all requests in parallel
|
|
30
|
+
* @throws If any request fails and abortOnError is true
|
|
31
|
+
*/
|
|
32
|
+
execute(): Promise<any[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Execute all requests sequentially
|
|
35
|
+
* @throws If any request fails and abortOnError is true
|
|
36
|
+
*/
|
|
37
|
+
executeSequential(): Promise<any[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute with fallback - returns null for failed requests
|
|
40
|
+
*/
|
|
41
|
+
executeWithFallback(): Promise<(any | null)[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Execute and return results as object with labels
|
|
44
|
+
* @example
|
|
45
|
+
* const { users, posts } = await batch
|
|
46
|
+
* .add(() => client.get("/users"), "users")
|
|
47
|
+
* .add(() => client.get("/posts"), "posts")
|
|
48
|
+
* .executeAsObject();
|
|
49
|
+
*/
|
|
50
|
+
executeAsObject(): Promise<Record<string, any>>;
|
|
51
|
+
/**
|
|
52
|
+
* Execute sequentially and return results as object
|
|
53
|
+
*/
|
|
54
|
+
executeSequentialAsObject(): Promise<Record<string, any>>;
|
|
55
|
+
/**
|
|
56
|
+
* Get number of requests in batch
|
|
57
|
+
*/
|
|
58
|
+
size(): number;
|
|
59
|
+
/**
|
|
60
|
+
* Clear all requests
|
|
61
|
+
*/
|
|
62
|
+
clear(): this;
|
|
63
|
+
/**
|
|
64
|
+
* Clone the batch
|
|
65
|
+
*/
|
|
66
|
+
clone(): BatchRequest;
|
|
67
|
+
private executeWithTimeout;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a new batch request
|
|
71
|
+
* @example
|
|
72
|
+
* const batch = createBatchRequest();
|
|
73
|
+
* const [users, posts] = await batch
|
|
74
|
+
* .add(() => client.get("/users"))
|
|
75
|
+
* .add(() => client.get("/posts"))
|
|
76
|
+
* .execute();
|
|
77
|
+
*/
|
|
78
|
+
export declare function createBatchRequest(options?: BatchRequestOptions): BatchRequest;
|
|
79
|
+
//# sourceMappingURL=BatchRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/core/BatchRequest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAY;IAIT,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,MAAM,CAAkC;gBAE5B,OAAO,GAAE,mBAAwB;IAErD;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IASlD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAgB/B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAqBzC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IAQpD;;;;;;;OAOG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAYrD;;OAEG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAY/D;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,KAAK,IAAI,YAAY;YAOP,kBAAkB;CAuBnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC9B,YAAY,CAEd"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch Request Helper
|
|
3
|
+
* Execute multiple requests in parallel, sequence, or with fallback
|
|
4
|
+
*/
|
|
5
|
+
export class BatchRequest {
|
|
6
|
+
options;
|
|
7
|
+
requests = [];
|
|
8
|
+
labels = new Map();
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Add a request to the batch
|
|
14
|
+
* @example
|
|
15
|
+
* batch.add(() => client.get("/users"))
|
|
16
|
+
* batch.add(() => client.get("/posts"), "posts")
|
|
17
|
+
*/
|
|
18
|
+
add(fn, label) {
|
|
19
|
+
const index = this.requests.length;
|
|
20
|
+
this.requests.push(fn);
|
|
21
|
+
if (label) {
|
|
22
|
+
this.labels.set(index, label);
|
|
23
|
+
}
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute all requests in parallel
|
|
28
|
+
* @throws If any request fails and abortOnError is true
|
|
29
|
+
*/
|
|
30
|
+
async execute() {
|
|
31
|
+
const promises = this.requests.map((fn, index) => this.executeWithTimeout(fn, index));
|
|
32
|
+
if (this.options.abortOnError) {
|
|
33
|
+
return Promise.all(promises);
|
|
34
|
+
}
|
|
35
|
+
return Promise.allSettled(promises).then((results) => results.map((result) => result.status === "fulfilled" ? result.value : null));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Execute all requests sequentially
|
|
39
|
+
* @throws If any request fails and abortOnError is true
|
|
40
|
+
*/
|
|
41
|
+
async executeSequential() {
|
|
42
|
+
const results = [];
|
|
43
|
+
for (let i = 0; i < this.requests.length; i++) {
|
|
44
|
+
try {
|
|
45
|
+
const result = await this.executeWithTimeout(this.requests[i], i);
|
|
46
|
+
results.push(result);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (this.options.abortOnError) {
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
results.push(null);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Execute with fallback - returns null for failed requests
|
|
59
|
+
*/
|
|
60
|
+
async executeWithFallback() {
|
|
61
|
+
const promises = this.requests.map((fn, index) => this.executeWithTimeout(fn, index).catch(() => null));
|
|
62
|
+
return Promise.all(promises);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Execute and return results as object with labels
|
|
66
|
+
* @example
|
|
67
|
+
* const { users, posts } = await batch
|
|
68
|
+
* .add(() => client.get("/users"), "users")
|
|
69
|
+
* .add(() => client.get("/posts"), "posts")
|
|
70
|
+
* .executeAsObject();
|
|
71
|
+
*/
|
|
72
|
+
async executeAsObject() {
|
|
73
|
+
const results = await this.execute();
|
|
74
|
+
const obj = {};
|
|
75
|
+
results.forEach((result, index) => {
|
|
76
|
+
const label = this.labels.get(index) || `request_${index}`;
|
|
77
|
+
obj[label] = result;
|
|
78
|
+
});
|
|
79
|
+
return obj;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Execute sequentially and return results as object
|
|
83
|
+
*/
|
|
84
|
+
async executeSequentialAsObject() {
|
|
85
|
+
const results = await this.executeSequential();
|
|
86
|
+
const obj = {};
|
|
87
|
+
results.forEach((result, index) => {
|
|
88
|
+
const label = this.labels.get(index) || `request_${index}`;
|
|
89
|
+
obj[label] = result;
|
|
90
|
+
});
|
|
91
|
+
return obj;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get number of requests in batch
|
|
95
|
+
*/
|
|
96
|
+
size() {
|
|
97
|
+
return this.requests.length;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Clear all requests
|
|
101
|
+
*/
|
|
102
|
+
clear() {
|
|
103
|
+
this.requests = [];
|
|
104
|
+
this.labels.clear();
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Clone the batch
|
|
109
|
+
*/
|
|
110
|
+
clone() {
|
|
111
|
+
const cloned = new BatchRequest(this.options);
|
|
112
|
+
cloned.requests = [...this.requests];
|
|
113
|
+
cloned.labels = new Map(this.labels);
|
|
114
|
+
return cloned;
|
|
115
|
+
}
|
|
116
|
+
async executeWithTimeout(fn, index) {
|
|
117
|
+
if (!this.options.timeout) {
|
|
118
|
+
return fn();
|
|
119
|
+
}
|
|
120
|
+
return Promise.race([
|
|
121
|
+
fn(),
|
|
122
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Request ${index} timed out after ${this.options.timeout}ms`)), this.options.timeout)),
|
|
123
|
+
]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a new batch request
|
|
128
|
+
* @example
|
|
129
|
+
* const batch = createBatchRequest();
|
|
130
|
+
* const [users, posts] = await batch
|
|
131
|
+
* .add(() => client.get("/users"))
|
|
132
|
+
* .add(() => client.get("/posts"))
|
|
133
|
+
* .execute();
|
|
134
|
+
*/
|
|
135
|
+
export function createBatchRequest(options) {
|
|
136
|
+
return new BatchRequest(options);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=BatchRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchRequest.js","sourceRoot":"","sources":["../../../src/utils/core/BatchRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC"}
|
package/dist/utils/core/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Status Code Helpers
|
|
3
|
+
* Utilities for working with HTTP status codes
|
|
4
|
+
*/
|
|
5
|
+
export declare const HTTP_STATUS: {
|
|
6
|
+
readonly OK: 200;
|
|
7
|
+
readonly CREATED: 201;
|
|
8
|
+
readonly ACCEPTED: 202;
|
|
9
|
+
readonly NO_CONTENT: 204;
|
|
10
|
+
readonly RESET_CONTENT: 205;
|
|
11
|
+
readonly PARTIAL_CONTENT: 206;
|
|
12
|
+
readonly MULTIPLE_CHOICES: 300;
|
|
13
|
+
readonly MOVED_PERMANENTLY: 301;
|
|
14
|
+
readonly FOUND: 302;
|
|
15
|
+
readonly SEE_OTHER: 303;
|
|
16
|
+
readonly NOT_MODIFIED: 304;
|
|
17
|
+
readonly TEMPORARY_REDIRECT: 307;
|
|
18
|
+
readonly PERMANENT_REDIRECT: 308;
|
|
19
|
+
readonly BAD_REQUEST: 400;
|
|
20
|
+
readonly UNAUTHORIZED: 401;
|
|
21
|
+
readonly PAYMENT_REQUIRED: 402;
|
|
22
|
+
readonly FORBIDDEN: 403;
|
|
23
|
+
readonly NOT_FOUND: 404;
|
|
24
|
+
readonly METHOD_NOT_ALLOWED: 405;
|
|
25
|
+
readonly NOT_ACCEPTABLE: 406;
|
|
26
|
+
readonly PROXY_AUTHENTICATION_REQUIRED: 407;
|
|
27
|
+
readonly REQUEST_TIMEOUT: 408;
|
|
28
|
+
readonly CONFLICT: 409;
|
|
29
|
+
readonly GONE: 410;
|
|
30
|
+
readonly LENGTH_REQUIRED: 411;
|
|
31
|
+
readonly PRECONDITION_FAILED: 412;
|
|
32
|
+
readonly PAYLOAD_TOO_LARGE: 413;
|
|
33
|
+
readonly URI_TOO_LONG: 414;
|
|
34
|
+
readonly UNSUPPORTED_MEDIA_TYPE: 415;
|
|
35
|
+
readonly RANGE_NOT_SATISFIABLE: 416;
|
|
36
|
+
readonly EXPECTATION_FAILED: 417;
|
|
37
|
+
readonly UNPROCESSABLE_ENTITY: 422;
|
|
38
|
+
readonly TOO_MANY_REQUESTS: 429;
|
|
39
|
+
readonly INTERNAL_SERVER_ERROR: 500;
|
|
40
|
+
readonly NOT_IMPLEMENTED: 501;
|
|
41
|
+
readonly BAD_GATEWAY: 502;
|
|
42
|
+
readonly SERVICE_UNAVAILABLE: 503;
|
|
43
|
+
readonly GATEWAY_TIMEOUT: 504;
|
|
44
|
+
readonly HTTP_VERSION_NOT_SUPPORTED: 505;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Check if status code is a success (2xx)
|
|
48
|
+
*/
|
|
49
|
+
export declare function isSuccess(status: number): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Check if status code is a redirect (3xx)
|
|
52
|
+
*/
|
|
53
|
+
export declare function isRedirect(status: number): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check if status code is a client error (4xx)
|
|
56
|
+
*/
|
|
57
|
+
export declare function isClientError(status: number): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Check if status code is a server error (5xx)
|
|
60
|
+
*/
|
|
61
|
+
export declare function isServerError(status: number): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if status code is an error (4xx or 5xx)
|
|
64
|
+
*/
|
|
65
|
+
export declare function isError(status: number): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get human-readable message for status code
|
|
68
|
+
*/
|
|
69
|
+
export declare function getStatusMessage(status: number): string;
|
|
70
|
+
/**
|
|
71
|
+
* Get status category name
|
|
72
|
+
*/
|
|
73
|
+
export declare function getStatusCategory(status: number): "success" | "redirect" | "client_error" | "server_error" | "unknown";
|
|
74
|
+
/**
|
|
75
|
+
* Check if status is retryable
|
|
76
|
+
*/
|
|
77
|
+
export declare function isRetryable(status: number): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Check if status is cacheable
|
|
80
|
+
*/
|
|
81
|
+
export declare function isCacheable(status: number): boolean;
|
|
82
|
+
//# sourceMappingURL=HttpStatusHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpStatusHelper.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/HttpStatusHelper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cd,CAAC;AAEX;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmDvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,GACf,SAAS,GAAG,UAAU,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,CAMtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CASnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAcnD"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Status Code Helpers
|
|
3
|
+
* Utilities for working with HTTP status codes
|
|
4
|
+
*/
|
|
5
|
+
export const HTTP_STATUS = {
|
|
6
|
+
// 2xx Success
|
|
7
|
+
OK: 200,
|
|
8
|
+
CREATED: 201,
|
|
9
|
+
ACCEPTED: 202,
|
|
10
|
+
NO_CONTENT: 204,
|
|
11
|
+
RESET_CONTENT: 205,
|
|
12
|
+
PARTIAL_CONTENT: 206,
|
|
13
|
+
// 3xx Redirection
|
|
14
|
+
MULTIPLE_CHOICES: 300,
|
|
15
|
+
MOVED_PERMANENTLY: 301,
|
|
16
|
+
FOUND: 302,
|
|
17
|
+
SEE_OTHER: 303,
|
|
18
|
+
NOT_MODIFIED: 304,
|
|
19
|
+
TEMPORARY_REDIRECT: 307,
|
|
20
|
+
PERMANENT_REDIRECT: 308,
|
|
21
|
+
// 4xx Client Error
|
|
22
|
+
BAD_REQUEST: 400,
|
|
23
|
+
UNAUTHORIZED: 401,
|
|
24
|
+
PAYMENT_REQUIRED: 402,
|
|
25
|
+
FORBIDDEN: 403,
|
|
26
|
+
NOT_FOUND: 404,
|
|
27
|
+
METHOD_NOT_ALLOWED: 405,
|
|
28
|
+
NOT_ACCEPTABLE: 406,
|
|
29
|
+
PROXY_AUTHENTICATION_REQUIRED: 407,
|
|
30
|
+
REQUEST_TIMEOUT: 408,
|
|
31
|
+
CONFLICT: 409,
|
|
32
|
+
GONE: 410,
|
|
33
|
+
LENGTH_REQUIRED: 411,
|
|
34
|
+
PRECONDITION_FAILED: 412,
|
|
35
|
+
PAYLOAD_TOO_LARGE: 413,
|
|
36
|
+
URI_TOO_LONG: 414,
|
|
37
|
+
UNSUPPORTED_MEDIA_TYPE: 415,
|
|
38
|
+
RANGE_NOT_SATISFIABLE: 416,
|
|
39
|
+
EXPECTATION_FAILED: 417,
|
|
40
|
+
UNPROCESSABLE_ENTITY: 422,
|
|
41
|
+
TOO_MANY_REQUESTS: 429,
|
|
42
|
+
// 5xx Server Error
|
|
43
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
44
|
+
NOT_IMPLEMENTED: 501,
|
|
45
|
+
BAD_GATEWAY: 502,
|
|
46
|
+
SERVICE_UNAVAILABLE: 503,
|
|
47
|
+
GATEWAY_TIMEOUT: 504,
|
|
48
|
+
HTTP_VERSION_NOT_SUPPORTED: 505,
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Check if status code is a success (2xx)
|
|
52
|
+
*/
|
|
53
|
+
export function isSuccess(status) {
|
|
54
|
+
return status >= 200 && status < 300;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if status code is a redirect (3xx)
|
|
58
|
+
*/
|
|
59
|
+
export function isRedirect(status) {
|
|
60
|
+
return status >= 300 && status < 400;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if status code is a client error (4xx)
|
|
64
|
+
*/
|
|
65
|
+
export function isClientError(status) {
|
|
66
|
+
return status >= 400 && status < 500;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if status code is a server error (5xx)
|
|
70
|
+
*/
|
|
71
|
+
export function isServerError(status) {
|
|
72
|
+
return status >= 500 && status < 600;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if status code is an error (4xx or 5xx)
|
|
76
|
+
*/
|
|
77
|
+
export function isError(status) {
|
|
78
|
+
return isClientError(status) || isServerError(status);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get human-readable message for status code
|
|
82
|
+
*/
|
|
83
|
+
export function getStatusMessage(status) {
|
|
84
|
+
const messages = {
|
|
85
|
+
// 2xx
|
|
86
|
+
200: "OK",
|
|
87
|
+
201: "Created",
|
|
88
|
+
202: "Accepted",
|
|
89
|
+
204: "No Content",
|
|
90
|
+
205: "Reset Content",
|
|
91
|
+
206: "Partial Content",
|
|
92
|
+
// 3xx
|
|
93
|
+
300: "Multiple Choices",
|
|
94
|
+
301: "Moved Permanently",
|
|
95
|
+
302: "Found",
|
|
96
|
+
303: "See Other",
|
|
97
|
+
304: "Not Modified",
|
|
98
|
+
307: "Temporary Redirect",
|
|
99
|
+
308: "Permanent Redirect",
|
|
100
|
+
// 4xx
|
|
101
|
+
400: "Bad Request",
|
|
102
|
+
401: "Unauthorized",
|
|
103
|
+
402: "Payment Required",
|
|
104
|
+
403: "Forbidden",
|
|
105
|
+
404: "Not Found",
|
|
106
|
+
405: "Method Not Allowed",
|
|
107
|
+
406: "Not Acceptable",
|
|
108
|
+
407: "Proxy Authentication Required",
|
|
109
|
+
408: "Request Timeout",
|
|
110
|
+
409: "Conflict",
|
|
111
|
+
410: "Gone",
|
|
112
|
+
411: "Length Required",
|
|
113
|
+
412: "Precondition Failed",
|
|
114
|
+
413: "Payload Too Large",
|
|
115
|
+
414: "URI Too Long",
|
|
116
|
+
415: "Unsupported Media Type",
|
|
117
|
+
416: "Range Not Satisfiable",
|
|
118
|
+
417: "Expectation Failed",
|
|
119
|
+
422: "Unprocessable Entity",
|
|
120
|
+
429: "Too Many Requests",
|
|
121
|
+
// 5xx
|
|
122
|
+
500: "Internal Server Error",
|
|
123
|
+
501: "Not Implemented",
|
|
124
|
+
502: "Bad Gateway",
|
|
125
|
+
503: "Service Unavailable",
|
|
126
|
+
504: "Gateway Timeout",
|
|
127
|
+
505: "HTTP Version Not Supported",
|
|
128
|
+
};
|
|
129
|
+
return messages[status] || "Unknown Status";
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get status category name
|
|
133
|
+
*/
|
|
134
|
+
export function getStatusCategory(status) {
|
|
135
|
+
if (isSuccess(status))
|
|
136
|
+
return "success";
|
|
137
|
+
if (isRedirect(status))
|
|
138
|
+
return "redirect";
|
|
139
|
+
if (isClientError(status))
|
|
140
|
+
return "client_error";
|
|
141
|
+
if (isServerError(status))
|
|
142
|
+
return "server_error";
|
|
143
|
+
return "unknown";
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Check if status is retryable
|
|
147
|
+
*/
|
|
148
|
+
export function isRetryable(status) {
|
|
149
|
+
return (status === 408 || // Request Timeout
|
|
150
|
+
status === 429 || // Too Many Requests
|
|
151
|
+
status === 500 || // Internal Server Error
|
|
152
|
+
status === 502 || // Bad Gateway
|
|
153
|
+
status === 503 || // Service Unavailable
|
|
154
|
+
status === 504 // Gateway Timeout
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if status is cacheable
|
|
159
|
+
*/
|
|
160
|
+
export function isCacheable(status) {
|
|
161
|
+
return (status === 200 || // OK
|
|
162
|
+
status === 203 || // Non-Authoritative Information
|
|
163
|
+
status === 204 || // No Content
|
|
164
|
+
status === 206 || // Partial Content
|
|
165
|
+
status === 300 || // Multiple Choices
|
|
166
|
+
status === 301 || // Moved Permanently
|
|
167
|
+
status === 404 || // Not Found
|
|
168
|
+
status === 405 || // Method Not Allowed
|
|
169
|
+
status === 410 || // Gone
|
|
170
|
+
status === 414 || // URI Too Long
|
|
171
|
+
status === 501 // Not Implemented
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=HttpStatusHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpStatusHelper.js","sourceRoot":"","sources":["../../../src/utils/helpers/HttpStatusHelper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,cAAc;IACd,EAAE,EAAE,GAAG;IACP,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,GAAG;IAClB,eAAe,EAAE,GAAG;IAEpB,kBAAkB;IAClB,gBAAgB,EAAE,GAAG;IACrB,iBAAiB,EAAE,GAAG;IACtB,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,GAAG;IACjB,kBAAkB,EAAE,GAAG;IACvB,kBAAkB,EAAE,GAAG;IAEvB,mBAAmB;IACnB,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,gBAAgB,EAAE,GAAG;IACrB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;IACd,kBAAkB,EAAE,GAAG;IACvB,cAAc,EAAE,GAAG;IACnB,6BAA6B,EAAE,GAAG;IAClC,eAAe,EAAE,GAAG;IACpB,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,eAAe,EAAE,GAAG;IACpB,mBAAmB,EAAE,GAAG;IACxB,iBAAiB,EAAE,GAAG;IACtB,YAAY,EAAE,GAAG;IACjB,sBAAsB,EAAE,GAAG;IAC3B,qBAAqB,EAAE,GAAG;IAC1B,kBAAkB,EAAE,GAAG;IACvB,oBAAoB,EAAE,GAAG;IACzB,iBAAiB,EAAE,GAAG;IAEtB,mBAAmB;IACnB,qBAAqB,EAAE,GAAG;IAC1B,eAAe,EAAE,GAAG;IACpB,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,GAAG;IACxB,eAAe,EAAE,GAAG;IACpB,0BAA0B,EAAE,GAAG;CACzB,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACpC,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACrC,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IACxC,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IACxC,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc;IAClC,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAA2B;QACrC,MAAM;QACN,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,iBAAiB;QAEtB,MAAM;QACN,GAAG,EAAE,kBAAkB;QACvB,GAAG,EAAE,mBAAmB;QACxB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,cAAc;QACnB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,oBAAoB;QAEzB,MAAM;QACN,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,cAAc;QACnB,GAAG,EAAE,kBAAkB;QACvB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,gBAAgB;QACrB,GAAG,EAAE,+BAA+B;QACpC,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,mBAAmB;QACxB,GAAG,EAAE,cAAc;QACnB,GAAG,EAAE,wBAAwB;QAC7B,GAAG,EAAE,uBAAuB;QAC5B,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,mBAAmB;QAExB,MAAM;QACN,GAAG,EAAE,uBAAuB;QAC5B,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,4BAA4B;KACpC,CAAC;IAEF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC7B,MAAc;IAEd,IAAI,SAAS,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC;IAC1C,IAAI,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,cAAc,CAAC;IACjD,IAAI,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,cAAc,CAAC;IACjD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACtC,OAAO,CACH,MAAM,KAAK,GAAG,IAAI,kBAAkB;QACpC,MAAM,KAAK,GAAG,IAAI,oBAAoB;QACtC,MAAM,KAAK,GAAG,IAAI,wBAAwB;QAC1C,MAAM,KAAK,GAAG,IAAI,cAAc;QAChC,MAAM,KAAK,GAAG,IAAI,sBAAsB;QACxC,MAAM,KAAK,GAAG,CAAC,kBAAkB;KACpC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACtC,OAAO,CACH,MAAM,KAAK,GAAG,IAAI,KAAK;QACvB,MAAM,KAAK,GAAG,IAAI,gCAAgC;QAClD,MAAM,KAAK,GAAG,IAAI,aAAa;QAC/B,MAAM,KAAK,GAAG,IAAI,kBAAkB;QACpC,MAAM,KAAK,GAAG,IAAI,mBAAmB;QACrC,MAAM,KAAK,GAAG,IAAI,oBAAoB;QACtC,MAAM,KAAK,GAAG,IAAI,YAAY;QAC9B,MAAM,KAAK,GAAG,IAAI,qBAAqB;QACvC,MAAM,KAAK,GAAG,IAAI,OAAO;QACzB,MAAM,KAAK,GAAG,IAAI,eAAe;QACjC,MAAM,KAAK,GAAG,CAAC,kBAAkB;KACpC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL Builder Utility
|
|
3
|
+
* Fluent API for building URLs with query parameters and fragments
|
|
4
|
+
*/
|
|
5
|
+
export declare class UrlBuilder {
|
|
6
|
+
private url;
|
|
7
|
+
private queryParams;
|
|
8
|
+
constructor(baseUrl: string);
|
|
9
|
+
/**
|
|
10
|
+
* Add path segments to the URL
|
|
11
|
+
* @example
|
|
12
|
+
* new UrlBuilder("https://api.example.com")
|
|
13
|
+
* .path("/users")
|
|
14
|
+
* .path("123")
|
|
15
|
+
* .build() // https://api.example.com/users/123
|
|
16
|
+
*/
|
|
17
|
+
path(...segments: string[]): this;
|
|
18
|
+
/**
|
|
19
|
+
* Add query parameters
|
|
20
|
+
* @example
|
|
21
|
+
* new UrlBuilder("https://api.example.com")
|
|
22
|
+
* .path("/users")
|
|
23
|
+
* .query({ page: 1, limit: 10 })
|
|
24
|
+
* .query({ sort: "name" })
|
|
25
|
+
* .build() // https://api.example.com/users?page=1&limit=10&sort=name
|
|
26
|
+
*/
|
|
27
|
+
query(params: Record<string, string | number | boolean | undefined | null>): this;
|
|
28
|
+
/**
|
|
29
|
+
* Add array query parameters
|
|
30
|
+
* @example
|
|
31
|
+
* new UrlBuilder("https://api.example.com")
|
|
32
|
+
* .path("/search")
|
|
33
|
+
* .queryArray({ tags: ["javascript", "typescript"] })
|
|
34
|
+
* .build() // https://api.example.com/search?tags=javascript&tags=typescript
|
|
35
|
+
*/
|
|
36
|
+
queryArray(params: Record<string, (string | number | boolean)[]>): this;
|
|
37
|
+
/**
|
|
38
|
+
* Set URL fragment/hash
|
|
39
|
+
* @example
|
|
40
|
+
* new UrlBuilder("https://example.com")
|
|
41
|
+
* .hash("section-1")
|
|
42
|
+
* .build() // https://example.com#section-1
|
|
43
|
+
*/
|
|
44
|
+
hash(fragment: string): this;
|
|
45
|
+
/**
|
|
46
|
+
* Build the final URL string
|
|
47
|
+
*/
|
|
48
|
+
build(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Get the URL as a URL object
|
|
51
|
+
*/
|
|
52
|
+
toURL(): URL;
|
|
53
|
+
/**
|
|
54
|
+
* Get pathname only
|
|
55
|
+
*/
|
|
56
|
+
getPathname(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Get search string (query parameters)
|
|
59
|
+
*/
|
|
60
|
+
getSearch(): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get hash/fragment
|
|
63
|
+
*/
|
|
64
|
+
getHash(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Clone the builder
|
|
67
|
+
*/
|
|
68
|
+
clone(): UrlBuilder;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a new URL builder
|
|
72
|
+
* @example
|
|
73
|
+
* const url = createUrlBuilder("https://api.example.com")
|
|
74
|
+
* .path("/users")
|
|
75
|
+
* .query({ page: 1 })
|
|
76
|
+
* .build();
|
|
77
|
+
*/
|
|
78
|
+
export declare function createUrlBuilder(baseUrl: string): UrlBuilder;
|
|
79
|
+
//# sourceMappingURL=UrlBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlBuilder.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/UrlBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,UAAU;IACnB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,WAAW,CAA6C;gBAEpD,OAAO,EAAE,MAAM;IAI3B;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAejC;;;;;;;;OAQG;IACH,KAAK,CACD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,GACrE,IAAI;IASP;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI;IASvE;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,KAAK,IAAI,MAAM;IAcf;;OAEG;IACH,KAAK,IAAI,GAAG;IAcZ;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,SAAS,IAAI,MAAM;IAKnB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,KAAK,IAAI,UAAU;CAKtB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAE5D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL Builder Utility
|
|
3
|
+
* Fluent API for building URLs with query parameters and fragments
|
|
4
|
+
*/
|
|
5
|
+
export class UrlBuilder {
|
|
6
|
+
url;
|
|
7
|
+
queryParams = new Map();
|
|
8
|
+
constructor(baseUrl) {
|
|
9
|
+
this.url = new URL(baseUrl);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Add path segments to the URL
|
|
13
|
+
* @example
|
|
14
|
+
* new UrlBuilder("https://api.example.com")
|
|
15
|
+
* .path("/users")
|
|
16
|
+
* .path("123")
|
|
17
|
+
* .build() // https://api.example.com/users/123
|
|
18
|
+
*/
|
|
19
|
+
path(...segments) {
|
|
20
|
+
const cleanSegments = segments
|
|
21
|
+
.map((s) => s.replace(/^\/+|\/+$/g, ""))
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
if (cleanSegments.length === 0) {
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
const currentPath = this.url.pathname.replace(/\/$/, "");
|
|
27
|
+
this.url.pathname = [currentPath, ...cleanSegments].join("/");
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Add query parameters
|
|
32
|
+
* @example
|
|
33
|
+
* new UrlBuilder("https://api.example.com")
|
|
34
|
+
* .path("/users")
|
|
35
|
+
* .query({ page: 1, limit: 10 })
|
|
36
|
+
* .query({ sort: "name" })
|
|
37
|
+
* .build() // https://api.example.com/users?page=1&limit=10&sort=name
|
|
38
|
+
*/
|
|
39
|
+
query(params) {
|
|
40
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
41
|
+
if (value !== undefined && value !== null) {
|
|
42
|
+
this.queryParams.set(key, String(value));
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Add array query parameters
|
|
49
|
+
* @example
|
|
50
|
+
* new UrlBuilder("https://api.example.com")
|
|
51
|
+
* .path("/search")
|
|
52
|
+
* .queryArray({ tags: ["javascript", "typescript"] })
|
|
53
|
+
* .build() // https://api.example.com/search?tags=javascript&tags=typescript
|
|
54
|
+
*/
|
|
55
|
+
queryArray(params) {
|
|
56
|
+
Object.entries(params).forEach(([key, values]) => {
|
|
57
|
+
if (Array.isArray(values) && values.length > 0) {
|
|
58
|
+
this.queryParams.set(key, values.map(String));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Set URL fragment/hash
|
|
65
|
+
* @example
|
|
66
|
+
* new UrlBuilder("https://example.com")
|
|
67
|
+
* .hash("section-1")
|
|
68
|
+
* .build() // https://example.com#section-1
|
|
69
|
+
*/
|
|
70
|
+
hash(fragment) {
|
|
71
|
+
this.url.hash = fragment;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build the final URL string
|
|
76
|
+
*/
|
|
77
|
+
build() {
|
|
78
|
+
const url = new URL(this.url);
|
|
79
|
+
this.queryParams.forEach((value, key) => {
|
|
80
|
+
if (Array.isArray(value)) {
|
|
81
|
+
value.forEach((v) => url.searchParams.append(key, v));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
url.searchParams.set(key, value);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return url.toString();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the URL as a URL object
|
|
91
|
+
*/
|
|
92
|
+
toURL() {
|
|
93
|
+
const url = new URL(this.url);
|
|
94
|
+
this.queryParams.forEach((value, key) => {
|
|
95
|
+
if (Array.isArray(value)) {
|
|
96
|
+
value.forEach((v) => url.searchParams.append(key, v));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
url.searchParams.set(key, value);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return url;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get pathname only
|
|
106
|
+
*/
|
|
107
|
+
getPathname() {
|
|
108
|
+
return this.url.pathname;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get search string (query parameters)
|
|
112
|
+
*/
|
|
113
|
+
getSearch() {
|
|
114
|
+
const url = this.toURL();
|
|
115
|
+
return url.search;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get hash/fragment
|
|
119
|
+
*/
|
|
120
|
+
getHash() {
|
|
121
|
+
return this.url.hash;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Clone the builder
|
|
125
|
+
*/
|
|
126
|
+
clone() {
|
|
127
|
+
const cloned = new UrlBuilder(this.url.toString());
|
|
128
|
+
cloned.queryParams = new Map(this.queryParams);
|
|
129
|
+
return cloned;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create a new URL builder
|
|
134
|
+
* @example
|
|
135
|
+
* const url = createUrlBuilder("https://api.example.com")
|
|
136
|
+
* .path("/users")
|
|
137
|
+
* .query({ page: 1 })
|
|
138
|
+
* .build();
|
|
139
|
+
*/
|
|
140
|
+
export function createUrlBuilder(baseUrl) {
|
|
141
|
+
return new UrlBuilder(baseUrl);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=UrlBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlBuilder.js","sourceRoot":"","sources":["../../../src/utils/helpers/UrlBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export * from "#helpers/EnvManager.js";
|
|
|
8
8
|
export * from "#helpers/EventEmitter.js";
|
|
9
9
|
export * from "#helpers/FileUploadHelper.js";
|
|
10
10
|
export * from "#helpers/FormUtils.js";
|
|
11
|
+
export * from "#helpers/HttpStatusHelper.js";
|
|
11
12
|
export * from "#helpers/ObjectUtils.js";
|
|
12
13
|
export * from "#helpers/PaginationHelper.js";
|
|
13
14
|
export * from "#helpers/PollingHelper.js";
|
|
@@ -15,6 +16,7 @@ export * from "#helpers/StorageUtils.js";
|
|
|
15
16
|
export * from "#helpers/StreamingHelper.js";
|
|
16
17
|
export * from "#helpers/StringUtils.js";
|
|
17
18
|
export * from "#helpers/TimeUtils.js";
|
|
19
|
+
export * from "#helpers/UrlBuilder.js";
|
|
18
20
|
export * from "#helpers/Validator.js";
|
|
19
21
|
export * from "#helpers/WebSocketHelper.js";
|
|
20
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
|
|
@@ -8,6 +8,7 @@ export * from "#helpers/EnvManager.js";
|
|
|
8
8
|
export * from "#helpers/EventEmitter.js";
|
|
9
9
|
export * from "#helpers/FileUploadHelper.js";
|
|
10
10
|
export * from "#helpers/FormUtils.js";
|
|
11
|
+
export * from "#helpers/HttpStatusHelper.js";
|
|
11
12
|
export * from "#helpers/ObjectUtils.js";
|
|
12
13
|
export * from "#helpers/PaginationHelper.js";
|
|
13
14
|
export * from "#helpers/PollingHelper.js";
|
|
@@ -15,6 +16,7 @@ export * from "#helpers/StorageUtils.js";
|
|
|
15
16
|
export * from "#helpers/StreamingHelper.js";
|
|
16
17
|
export * from "#helpers/StringUtils.js";
|
|
17
18
|
export * from "#helpers/TimeUtils.js";
|
|
19
|
+
export * from "#helpers/UrlBuilder.js";
|
|
18
20
|
export * from "#helpers/Validator.js";
|
|
19
21
|
export * from "#helpers/WebSocketHelper.js";
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bytekit",
|
|
3
3
|
"description": "Lightning-fast TypeScript utilities for modern development",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"imports": {
|
|
7
7
|
"#core/*": "./dist/utils/core/*",
|
|
@@ -133,10 +133,21 @@
|
|
|
133
133
|
"./error-boundary": {
|
|
134
134
|
"types": "./dist/utils/core/ErrorBoundary.d.ts",
|
|
135
135
|
"import": "./dist/utils/core/ErrorBoundary.js"
|
|
136
|
+
},
|
|
137
|
+
"./batch-request": {
|
|
138
|
+
"types": "./dist/utils/core/BatchRequest.d.ts",
|
|
139
|
+
"import": "./dist/utils/core/BatchRequest.js"
|
|
140
|
+
},
|
|
141
|
+
"./http-status": {
|
|
142
|
+
"types": "./dist/utils/helpers/HttpStatusHelper.d.ts",
|
|
143
|
+
"import": "./dist/utils/helpers/HttpStatusHelper.js"
|
|
144
|
+
},
|
|
145
|
+
"./url-builder": {
|
|
146
|
+
"types": "./dist/utils/helpers/UrlBuilder.d.ts",
|
|
147
|
+
"import": "./dist/utils/helpers/UrlBuilder.js"
|
|
136
148
|
}
|
|
137
149
|
},
|
|
138
150
|
"scripts": {
|
|
139
|
-
"postinstall": "node .kiro/tsconfig-generator.js",
|
|
140
151
|
"build": "tsc -p tsconfig.json",
|
|
141
152
|
"clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true });\"",
|
|
142
153
|
"lint": "tsc --noEmit",
|