bytekit 1.0.20 → 1.0.22
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/bin/{sutils.js → bytekit.js} +2 -4
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +104 -474
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/swagger-generator.d.ts +9 -0
- package/dist/cli/swagger-generator.d.ts.map +1 -0
- package/dist/cli/swagger-generator.js +149 -0
- package/dist/cli/swagger-generator.js.map +1 -0
- package/dist/cli/type-generator.d.ts +1 -0
- package/dist/cli/type-generator.d.ts.map +1 -1
- package/dist/cli/type-generator.js +2 -1
- package/dist/cli/type-generator.js.map +1 -1
- package/dist/utils/async/allSettled.d.ts +27 -0
- package/dist/utils/async/allSettled.d.ts.map +1 -0
- package/dist/utils/async/allSettled.js +45 -0
- package/dist/utils/async/allSettled.js.map +1 -0
- package/dist/utils/async/debounce.d.ts +24 -0
- package/dist/utils/async/debounce.d.ts.map +1 -0
- package/dist/utils/async/debounce.js +138 -0
- package/dist/utils/async/debounce.js.map +1 -0
- package/dist/utils/async/errors.d.ts +22 -0
- package/dist/utils/async/errors.d.ts.map +1 -0
- package/dist/utils/async/errors.js +58 -0
- package/dist/utils/async/errors.js.map +1 -0
- package/dist/utils/async/index.d.ts +19 -0
- package/dist/utils/async/index.d.ts.map +1 -0
- package/dist/utils/async/index.js +20 -0
- package/dist/utils/async/index.js.map +1 -0
- package/dist/utils/async/parallel.d.ts +24 -0
- package/dist/utils/async/parallel.d.ts.map +1 -0
- package/dist/utils/async/parallel.js +98 -0
- package/dist/utils/async/parallel.js.map +1 -0
- package/dist/utils/async/race.d.ts +37 -0
- package/dist/utils/async/race.d.ts.map +1 -0
- package/dist/utils/async/race.js +69 -0
- package/dist/utils/async/race.js.map +1 -0
- package/dist/utils/async/retry.d.ts +34 -0
- package/dist/utils/async/retry.d.ts.map +1 -0
- package/dist/utils/async/retry.js +118 -0
- package/dist/utils/async/retry.js.map +1 -0
- package/dist/utils/async/sequential.d.ts +28 -0
- package/dist/utils/async/sequential.d.ts.map +1 -0
- package/dist/utils/async/sequential.js +66 -0
- package/dist/utils/async/sequential.js.map +1 -0
- package/dist/utils/async/sleep.d.ts +28 -0
- package/dist/utils/async/sleep.d.ts.map +1 -0
- package/dist/utils/async/sleep.js +64 -0
- package/dist/utils/async/sleep.js.map +1 -0
- package/dist/utils/async/throttle.d.ts +24 -0
- package/dist/utils/async/throttle.d.ts.map +1 -0
- package/dist/utils/async/throttle.js +118 -0
- package/dist/utils/async/throttle.js.map +1 -0
- package/dist/utils/async/timeout.d.ts +45 -0
- package/dist/utils/async/timeout.d.ts.map +1 -0
- package/dist/utils/async/timeout.js +75 -0
- package/dist/utils/async/timeout.js.map +1 -0
- package/dist/utils/async/types.d.ts +105 -0
- package/dist/utils/async/types.d.ts.map +1 -0
- package/dist/utils/async/types.js +5 -0
- package/dist/utils/async/types.js.map +1 -0
- package/dist/utils/core/ApiClient.d.ts.map +1 -1
- package/dist/utils/core/ApiClient.js +28 -10
- package/dist/utils/core/ApiClient.js.map +1 -1
- package/dist/utils/core/Logger.js.map +1 -1
- package/dist/utils/core/Profiler.d.ts +3 -1
- package/dist/utils/core/Profiler.d.ts.map +1 -1
- package/dist/utils/core/Profiler.js +17 -2
- package/dist/utils/core/Profiler.js.map +1 -1
- package/dist/utils/core/QueryClient.d.ts.map +1 -1
- package/dist/utils/core/QueryClient.js +0 -2
- package/dist/utils/core/QueryClient.js.map +1 -1
- package/dist/utils/core/QueryState.d.ts.map +1 -1
- package/dist/utils/core/QueryState.js.map +1 -1
- package/dist/utils/core/RetryPolicy.d.ts +7 -0
- package/dist/utils/core/RetryPolicy.d.ts.map +1 -1
- package/dist/utils/core/RetryPolicy.js +9 -0
- package/dist/utils/core/RetryPolicy.js.map +1 -1
- package/dist/utils/helpers/CompressionUtils.js +1 -1
- package/dist/utils/helpers/CompressionUtils.js.map +1 -1
- package/dist/utils/helpers/CryptoUtils.d.ts.map +1 -1
- package/dist/utils/helpers/CryptoUtils.js +13 -2
- package/dist/utils/helpers/CryptoUtils.js.map +1 -1
- package/dist/utils/helpers/DateUtils.d.ts.map +1 -1
- package/dist/utils/helpers/DateUtils.js +1 -1
- package/dist/utils/helpers/DateUtils.js.map +1 -1
- package/dist/utils/helpers/EnvManager.d.ts.map +1 -1
- package/dist/utils/helpers/EnvManager.js.map +1 -1
- package/dist/utils/helpers/FormUtils.d.ts +14 -0
- package/dist/utils/helpers/FormUtils.d.ts.map +1 -1
- package/dist/utils/helpers/FormUtils.js +24 -0
- package/dist/utils/helpers/FormUtils.js.map +1 -1
- package/dist/utils/helpers/ObjectUtils.d.ts +2 -2
- package/dist/utils/helpers/ObjectUtils.d.ts.map +1 -1
- package/dist/utils/helpers/ObjectUtils.js +4 -0
- package/dist/utils/helpers/ObjectUtils.js.map +1 -1
- package/dist/utils/helpers/PaginationHelper.js +6 -6
- package/dist/utils/helpers/PaginationHelper.js.map +1 -1
- package/dist/utils/helpers/Signal.d.ts.map +1 -1
- package/dist/utils/helpers/Signal.js.map +1 -1
- package/dist/utils/helpers/WebSocketHelper.d.ts.map +1 -1
- package/dist/utils/helpers/WebSocketHelper.js.map +1 -1
- package/dist/utils/helpers/index.d.ts +1 -0
- package/dist/utils/helpers/index.d.ts.map +1 -1
- package/dist/utils/helpers/index.js +1 -0
- package/dist/utils/helpers/index.js.map +1 -1
- package/package.json +10 -7
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface SwaggerOptions {
|
|
2
|
+
url: string;
|
|
3
|
+
output?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Generate TypeScript interfaces from an OpenAPI/Swagger specification
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateFromSwagger(options: SwaggerOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=swagger-generator.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Generate TypeScript interfaces from an OpenAPI/Swagger specification
|
|
5
|
+
*/
|
|
6
|
+
export async function generateFromSwagger(options) {
|
|
7
|
+
const { url, output = "src/types/api-docs.ts" } = options;
|
|
8
|
+
console.log(`\n📖 Attempting to resolve Swagger/OpenAPI spec from ${url}...`);
|
|
9
|
+
try {
|
|
10
|
+
let spec;
|
|
11
|
+
const response = await fetch(url);
|
|
12
|
+
if (!response.ok) {
|
|
13
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
14
|
+
}
|
|
15
|
+
const contentType = response.headers.get("content-type") || "";
|
|
16
|
+
// If it's HTML (likely Swagger UI), try to guess the JSON location
|
|
17
|
+
if (contentType.includes("text/html")) {
|
|
18
|
+
console.log("🔍 URL looks like a documentation page, trying to find spec JSON...");
|
|
19
|
+
// Try to find the spec by replacing /docs or adding common paths
|
|
20
|
+
const baseUrl = url
|
|
21
|
+
.replace(/\/docs\/?$/, "")
|
|
22
|
+
.replace(/\/swagger-ui\/?$/, "");
|
|
23
|
+
const commonPaths = [
|
|
24
|
+
"/openapi.json",
|
|
25
|
+
"/swagger.json",
|
|
26
|
+
"/v2/api-docs",
|
|
27
|
+
"/api-docs",
|
|
28
|
+
];
|
|
29
|
+
let found = false;
|
|
30
|
+
for (const p of commonPaths) {
|
|
31
|
+
const tryUrl = baseUrl.endsWith("/")
|
|
32
|
+
? `${baseUrl}${p.slice(1)}`
|
|
33
|
+
: `${baseUrl}${p}`;
|
|
34
|
+
try {
|
|
35
|
+
const tryRes = await fetch(tryUrl);
|
|
36
|
+
if (tryRes.ok &&
|
|
37
|
+
(tryRes.headers.get("content-type") || "").includes("json")) {
|
|
38
|
+
console.log(`✨ Found spec at: ${tryUrl}`);
|
|
39
|
+
spec = await tryRes.json();
|
|
40
|
+
found = true;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!found) {
|
|
49
|
+
throw new Error("Could not automatically find the OpenAPI/Swagger JSON from the documentation page. Please provide the direct JSON URL.");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
spec = await response.json();
|
|
54
|
+
}
|
|
55
|
+
const schemas = spec.components?.schemas || spec.definitions || {};
|
|
56
|
+
if (Object.keys(schemas).length === 0) {
|
|
57
|
+
console.warn("⚠️ No schemas or definitions found in the specification.");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
let typeDefinitions = `/**\n * Auto-generated types from Swagger/OpenAPI\n * Generated at ${new Date().toISOString()}\n */\n\n`;
|
|
61
|
+
for (const [name, schema] of Object.entries(schemas)) {
|
|
62
|
+
typeDefinitions += generateInterface(name, schema) + "\n\n";
|
|
63
|
+
}
|
|
64
|
+
const outputPath = path.join(process.cwd(), output);
|
|
65
|
+
const outputDir = path.dirname(outputPath);
|
|
66
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
67
|
+
await fs.writeFile(outputPath, typeDefinitions, "utf8");
|
|
68
|
+
console.log(`✅ Successfully generated ${Object.keys(schemas).length} types!`);
|
|
69
|
+
console.log(`📝 Output: ${outputPath}\n`);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
73
|
+
console.error(`❌ Swagger Error: ${message}`);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function generateInterface(name, schema) {
|
|
78
|
+
// Sanitize name (remove invalid characters)
|
|
79
|
+
const sanitizedName = name.replace(/[^a-zA-Z0-9]/g, "");
|
|
80
|
+
if (schema.type === "object" ||
|
|
81
|
+
schema.properties ||
|
|
82
|
+
schema.additionalProperties) {
|
|
83
|
+
if (schema.additionalProperties && !schema.properties) {
|
|
84
|
+
return `export type ${sanitizedName} = Record<string, ${mapOpenApiToTs(schema.additionalProperties)}>;`;
|
|
85
|
+
}
|
|
86
|
+
const properties = schema.properties || {};
|
|
87
|
+
const required = schema.required || [];
|
|
88
|
+
const props = Object.entries(properties)
|
|
89
|
+
.map(([propName, propSchema]) => {
|
|
90
|
+
const isRequired = required.includes(propName);
|
|
91
|
+
const type = mapOpenApiToTs(propSchema);
|
|
92
|
+
return ` ${propName}${isRequired ? "" : "?"}: ${type};`;
|
|
93
|
+
})
|
|
94
|
+
.join("\n");
|
|
95
|
+
if (schema.additionalProperties) {
|
|
96
|
+
return `export interface ${sanitizedName} extends Record<string, ${mapOpenApiToTs(schema.additionalProperties)}> {\n${props}\n}`;
|
|
97
|
+
}
|
|
98
|
+
return `export interface ${sanitizedName} {\n${props}\n}`;
|
|
99
|
+
}
|
|
100
|
+
if (schema.enum) {
|
|
101
|
+
const values = schema.enum
|
|
102
|
+
.map((v) => (typeof v === "string" ? `'${v}'` : v))
|
|
103
|
+
.join(" | ");
|
|
104
|
+
return `export type ${sanitizedName} = ${values};`;
|
|
105
|
+
}
|
|
106
|
+
return `export type ${sanitizedName} = ${mapOpenApiToTs(schema)};`;
|
|
107
|
+
}
|
|
108
|
+
function mapOpenApiToTs(schema) {
|
|
109
|
+
if (!schema)
|
|
110
|
+
return "any";
|
|
111
|
+
// Handle references
|
|
112
|
+
if (schema.$ref) {
|
|
113
|
+
const refName = schema.$ref.split("/").pop();
|
|
114
|
+
return refName ? refName.replace(/[^a-zA-Z0-9]/g, "") : "any";
|
|
115
|
+
}
|
|
116
|
+
// Handle basic types
|
|
117
|
+
switch (schema.type) {
|
|
118
|
+
case "string":
|
|
119
|
+
if (schema.format === "date" || schema.format === "date-time")
|
|
120
|
+
return "string | Date";
|
|
121
|
+
return "string";
|
|
122
|
+
case "integer":
|
|
123
|
+
case "number":
|
|
124
|
+
return "number";
|
|
125
|
+
case "boolean":
|
|
126
|
+
return "boolean";
|
|
127
|
+
case "array": {
|
|
128
|
+
const itemType = mapOpenApiToTs(schema.items);
|
|
129
|
+
return `${itemType}[]`;
|
|
130
|
+
}
|
|
131
|
+
case "object":
|
|
132
|
+
if (schema.additionalProperties) {
|
|
133
|
+
return `Record<string, ${mapOpenApiToTs(schema.additionalProperties)}>`;
|
|
134
|
+
}
|
|
135
|
+
return "Record<string, any>";
|
|
136
|
+
default:
|
|
137
|
+
// Handle combinations (oneOf, anyOf, allOf)
|
|
138
|
+
if (schema.oneOf || schema.anyOf) {
|
|
139
|
+
const types = (schema.oneOf || schema.anyOf).map((s) => mapOpenApiToTs(s));
|
|
140
|
+
return `(${types.join(" | ")})`;
|
|
141
|
+
}
|
|
142
|
+
if (schema.allOf) {
|
|
143
|
+
const types = schema.allOf.map((s) => mapOpenApiToTs(s));
|
|
144
|
+
return `(${types.join(" & ")})`;
|
|
145
|
+
}
|
|
146
|
+
return "any";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=swagger-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swagger-generator.js","sourceRoot":"","sources":["../../src/cli/swagger-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAAuB;IAEvB,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAC;IAE1D,OAAO,CAAC,GAAG,CACP,wDAAwD,GAAG,KAAK,CACnE,CAAC;IAEF,IAAI,CAAC;QACD,IAAI,IAAS,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAE/D,mEAAmE;QACnE,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CACP,qEAAqE,CACxE,CAAC;YAEF,iEAAiE;YACjE,MAAM,OAAO,GAAG,GAAG;iBACd,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;iBACzB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG;gBAChB,eAAe;gBACf,eAAe;gBACf,cAAc;gBACd,WAAW;aACd,CAAC;YAEF,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAChC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC3B,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,IACI,MAAM,CAAC,EAAE;wBACT,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAC/C,MAAM,CACT,EACH,CAAC;wBACC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;wBAC1C,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC3B,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;oBACV,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CACX,wHAAwH,CAC3H,CAAC;YACN,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAEnE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CACR,0DAA0D,CAC7D,CAAC;YACF,OAAO;QACX,CAAC;QAED,IAAI,eAAe,GAAG,sEAAsE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QAEhI,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,eAAe,IAAI,iBAAiB,CAAC,IAAI,EAAE,MAAa,CAAC,GAAG,MAAM,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE3C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,CACP,4BAA4B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,SAAS,CACnE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,MAAW;IAChD,4CAA4C;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAExD,IACI,MAAM,CAAC,IAAI,KAAK,QAAQ;QACxB,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,oBAAoB,EAC7B,CAAC;QACC,IAAI,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpD,OAAO,eAAe,aAAa,qBAAqB,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5G,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEvC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAgB,EAAE,EAAE;YAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO,KAAK,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC;QAC7D,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO,oBAAoB,aAAa,2BAA2B,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,KAAK,KAAK,CAAC;QACrI,CAAC;QAED,OAAO,oBAAoB,aAAa,OAAO,KAAK,KAAK,CAAC;IAC9D,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI;aACrB,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACvD,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,eAAe,aAAa,MAAM,MAAM,GAAG,CAAC;IACvD,CAAC;IAED,OAAO,eAAe,aAAa,MAAM,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,MAAW;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,oBAAoB;IACpB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,CAAC;IAED,qBAAqB;IACrB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACT,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBACzD,OAAO,eAAe,CAAC;YAC3B,OAAO,QAAQ,CAAC;QACpB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACT,OAAO,QAAQ,CAAC;QACpB,KAAK,SAAS;YACV,OAAO,SAAS,CAAC;QACrB,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,GAAG,QAAQ,IAAI,CAAC;QAC3B,CAAC;QACD,KAAK,QAAQ;YACT,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,OAAO,kBAAkB,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC;YAC5E,CAAC;YACD,OAAO,qBAAqB,CAAC;QACjC;YACI,4CAA4C;YAC5C,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CACxD,cAAc,CAAC,CAAC,CAAC,CACpB,CAAC;gBACF,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,CAAC;YACD,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-generator.d.ts","sourceRoot":"","sources":["../../src/cli/type-generator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"type-generator.d.ts","sourceRoot":"","sources":["../../src/cli/type-generator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC3C,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
|
|
@@ -4,7 +4,7 @@ import path from "node:path";
|
|
|
4
4
|
* Generate TypeScript types from API response
|
|
5
5
|
*/
|
|
6
6
|
export async function generateTypesFromEndpoint(options) {
|
|
7
|
-
const { endpoint, method = "GET", output = "types.ts", name = "ApiResponse", headers = {}, } = options;
|
|
7
|
+
const { endpoint, method = "GET", output = "types.ts", name = "ApiResponse", headers = {}, body, } = options;
|
|
8
8
|
console.log(`\n📡 Fetching ${method} ${endpoint}...`);
|
|
9
9
|
try {
|
|
10
10
|
const response = await fetch(endpoint, {
|
|
@@ -13,6 +13,7 @@ export async function generateTypesFromEndpoint(options) {
|
|
|
13
13
|
"Content-Type": "application/json",
|
|
14
14
|
...headers,
|
|
15
15
|
},
|
|
16
|
+
body: body ? body : undefined,
|
|
16
17
|
});
|
|
17
18
|
if (!response.ok) {
|
|
18
19
|
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../src/cli/type-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../src/cli/type-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,OAA6B;IAE7B,MAAM,EACF,QAAQ,EACR,MAAM,GAAG,KAAK,EACd,MAAM,GAAG,UAAU,EACnB,IAAI,GAAG,aAAa,EACpB,OAAO,GAAG,EAAE,EACZ,IAAI,GACP,GAAG,OAAO,CAAC;IAEZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,IAAI,QAAQ,KAAK,CAAC,CAAC;IAEtD,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACnC,MAAM;YACN,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO;aACb;YACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAa,EAAE,QAAgB;IACzD,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,8DAA8D,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,cAAc,IAAI,CAAC;AAC3H,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAa,EAAE,IAAY,EAAE,KAAK,GAAG,CAAC;IACrD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,QAAQ,IAAI,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,QAAQ,IAAI,eAAe,CAAC;IACvC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC;IAEzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,QAAQ,IAAI,aAAa,CAAC;IACrC,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,QAAQ,IAAI,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,QAAQ,IAAI,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,QAAQ,IAAI,eAAe,CAAC;QACvC,CAAC;QACD,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,QAAQ,IAAI,MAAM,WAAW,KAAK,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,kBAAkB,CAAC,IAA+B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,IAAI,aAAa,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACvB,GAA4B,EAC5B,IAAY,EACZ,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,UAAU,KAAK,SAAS,GAAG,CAAC;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,oBAAoB,IAAI,OAAO,UAAU,KAAK,MAAM,GAAG,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAE1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,GAAG,WAAW,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,qBAAqB,CAAC,KAAgC,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAiB,EAAE,KAAa;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,SAAS,qBAAqB,CAC1B,GAA4B,EAC5B,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,UAAU,KAAK,SAAS,GAAG,CAAC;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,UAAU,KAAK,MAAM,GAAG,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AllSettledResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Better handling of Promise.allSettled results
|
|
4
|
+
*
|
|
5
|
+
* Wraps native Promise.allSettled to provide a more convenient API
|
|
6
|
+
* that separates fulfilled and rejected results into separate arrays,
|
|
7
|
+
* each with the original index for traceability.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of values in the promises
|
|
10
|
+
* @param promises - Array of promises to settle
|
|
11
|
+
* @returns Promise that resolves with separated fulfilled and rejected results
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const promises = [
|
|
16
|
+
* Promise.resolve(1),
|
|
17
|
+
* Promise.reject(new Error('failed')),
|
|
18
|
+
* Promise.resolve(3)
|
|
19
|
+
* ];
|
|
20
|
+
*
|
|
21
|
+
* const result = await allSettled(promises);
|
|
22
|
+
* // result.fulfilled: [{ value: 1, index: 0 }, { value: 3, index: 2 }]
|
|
23
|
+
* // result.rejected: [{ reason: Error('failed'), index: 1 }]
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function allSettled<T>(promises: Array<Promise<T>>): Promise<AllSettledResult<T>>;
|
|
27
|
+
//# sourceMappingURL=allSettled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allSettled.d.ts","sourceRoot":"","sources":["../../../src/utils/async/allSettled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAC9B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAsB9B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Better handling of Promise.allSettled results
|
|
3
|
+
*
|
|
4
|
+
* Wraps native Promise.allSettled to provide a more convenient API
|
|
5
|
+
* that separates fulfilled and rejected results into separate arrays,
|
|
6
|
+
* each with the original index for traceability.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of values in the promises
|
|
9
|
+
* @param promises - Array of promises to settle
|
|
10
|
+
* @returns Promise that resolves with separated fulfilled and rejected results
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const promises = [
|
|
15
|
+
* Promise.resolve(1),
|
|
16
|
+
* Promise.reject(new Error('failed')),
|
|
17
|
+
* Promise.resolve(3)
|
|
18
|
+
* ];
|
|
19
|
+
*
|
|
20
|
+
* const result = await allSettled(promises);
|
|
21
|
+
* // result.fulfilled: [{ value: 1, index: 0 }, { value: 3, index: 2 }]
|
|
22
|
+
* // result.rejected: [{ reason: Error('failed'), index: 1 }]
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export async function allSettled(promises) {
|
|
26
|
+
// Validate input
|
|
27
|
+
if (!Array.isArray(promises)) {
|
|
28
|
+
throw new TypeError("Expected an array of promises");
|
|
29
|
+
}
|
|
30
|
+
// Use native Promise.allSettled to wait for all promises to settle
|
|
31
|
+
const results = await Promise.allSettled(promises);
|
|
32
|
+
// Separate fulfilled and rejected results with original indices
|
|
33
|
+
const fulfilled = [];
|
|
34
|
+
const rejected = [];
|
|
35
|
+
results.forEach((result, index) => {
|
|
36
|
+
if (result.status === "fulfilled") {
|
|
37
|
+
fulfilled.push({ value: result.value, index });
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
rejected.push({ reason: result.reason, index });
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return { fulfilled, rejected };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=allSettled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allSettled.js","sourceRoot":"","sources":["../../../src/utils/async/allSettled.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,QAA2B;IAE3B,iBAAiB;IACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACzD,CAAC;IAED,mEAAmE;IACnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEnD,gEAAgE;IAChE,MAAM,SAAS,GAAuC,EAAE,CAAC;IACzD,MAAM,QAAQ,GAA8C,EAAE,CAAC;IAE/D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AsyncFunction, DebounceOptions, DebouncedFunction } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a debounced version of an async function that delays execution until after
|
|
4
|
+
* the specified delay has elapsed since the last call.
|
|
5
|
+
*
|
|
6
|
+
* @template TArgs - The argument types of the function
|
|
7
|
+
* @template TReturn - The return type of the function
|
|
8
|
+
* @param fn - The async function to debounce
|
|
9
|
+
* @param delay - The delay in milliseconds
|
|
10
|
+
* @param options - Optional configuration
|
|
11
|
+
* @returns A debounced version of the function with cancel and flush methods
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const debouncedSearch = debounceAsync(searchAPI, 300);
|
|
16
|
+
*
|
|
17
|
+
* // Only the last call within 300ms will execute
|
|
18
|
+
* debouncedSearch('query1');
|
|
19
|
+
* debouncedSearch('query2');
|
|
20
|
+
* debouncedSearch('query3'); // Only this executes after 300ms
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function debounceAsync<TArgs extends any[], TReturn>(fn: AsyncFunction<TArgs, TReturn>, delay: number, options?: DebounceOptions): DebouncedFunction<TArgs, TReturn>;
|
|
24
|
+
//# sourceMappingURL=debounce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../src/utils/async/debounce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EACf,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EACtD,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,GAC9B,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAwInC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a debounced version of an async function that delays execution until after
|
|
3
|
+
* the specified delay has elapsed since the last call.
|
|
4
|
+
*
|
|
5
|
+
* @template TArgs - The argument types of the function
|
|
6
|
+
* @template TReturn - The return type of the function
|
|
7
|
+
* @param fn - The async function to debounce
|
|
8
|
+
* @param delay - The delay in milliseconds
|
|
9
|
+
* @param options - Optional configuration
|
|
10
|
+
* @returns A debounced version of the function with cancel and flush methods
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const debouncedSearch = debounceAsync(searchAPI, 300);
|
|
15
|
+
*
|
|
16
|
+
* // Only the last call within 300ms will execute
|
|
17
|
+
* debouncedSearch('query1');
|
|
18
|
+
* debouncedSearch('query2');
|
|
19
|
+
* debouncedSearch('query3'); // Only this executes after 300ms
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function debounceAsync(fn, delay, options = {}) {
|
|
23
|
+
// Validate inputs
|
|
24
|
+
if (typeof fn !== "function") {
|
|
25
|
+
throw new TypeError("First argument must be a function");
|
|
26
|
+
}
|
|
27
|
+
if (typeof delay !== "number" || delay < 0) {
|
|
28
|
+
throw new TypeError("Delay must be a non-negative number");
|
|
29
|
+
}
|
|
30
|
+
const { leading = false, trailing = options.leading === true ? false : true, } = options;
|
|
31
|
+
let timeoutId = null;
|
|
32
|
+
let pendingArgs = null;
|
|
33
|
+
let pendingResolve = null;
|
|
34
|
+
let pendingReject = null;
|
|
35
|
+
let lastCallTime = 0;
|
|
36
|
+
/**
|
|
37
|
+
* Executes the function with the pending arguments
|
|
38
|
+
*/
|
|
39
|
+
const execute = async () => {
|
|
40
|
+
if (pendingArgs === null)
|
|
41
|
+
return;
|
|
42
|
+
const args = pendingArgs;
|
|
43
|
+
const resolve = pendingResolve;
|
|
44
|
+
const reject = pendingReject;
|
|
45
|
+
// Clear pending state
|
|
46
|
+
pendingArgs = null;
|
|
47
|
+
pendingResolve = null;
|
|
48
|
+
pendingReject = null;
|
|
49
|
+
try {
|
|
50
|
+
const result = await fn(...args);
|
|
51
|
+
resolve?.(result);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
reject?.(error);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The debounced function
|
|
59
|
+
*/
|
|
60
|
+
const debounced = function (...args) {
|
|
61
|
+
const now = Date.now();
|
|
62
|
+
const isInvoking = leading && (now - lastCallTime >= delay || lastCallTime === 0);
|
|
63
|
+
lastCallTime = now;
|
|
64
|
+
pendingArgs = args;
|
|
65
|
+
// Create a new promise for this call
|
|
66
|
+
const promise = new Promise((resolve, reject) => {
|
|
67
|
+
// Reject previous pending promise
|
|
68
|
+
if (pendingResolve !== null) {
|
|
69
|
+
pendingReject?.(new Error("Debounced call cancelled"));
|
|
70
|
+
}
|
|
71
|
+
pendingResolve = resolve;
|
|
72
|
+
pendingReject = reject;
|
|
73
|
+
});
|
|
74
|
+
// Clear existing timeout
|
|
75
|
+
if (timeoutId !== null) {
|
|
76
|
+
clearTimeout(timeoutId);
|
|
77
|
+
timeoutId = null;
|
|
78
|
+
}
|
|
79
|
+
if (isInvoking) {
|
|
80
|
+
execute();
|
|
81
|
+
}
|
|
82
|
+
else if (!trailing) {
|
|
83
|
+
// If not invoking and trailing is disabled, we must still handle the promise
|
|
84
|
+
// and we should probably reject it as it won't be executed.
|
|
85
|
+
pendingReject?.(new Error("Debounced call cancelled"));
|
|
86
|
+
pendingResolve = null;
|
|
87
|
+
pendingReject = null;
|
|
88
|
+
}
|
|
89
|
+
// Schedule execution for trailing edge if allowed
|
|
90
|
+
if (trailing) {
|
|
91
|
+
timeoutId = setTimeout(() => {
|
|
92
|
+
timeoutId = null;
|
|
93
|
+
execute();
|
|
94
|
+
}, delay);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// If no trailing edge, we still need a timeout to reset the leading ability after delay
|
|
98
|
+
timeoutId = setTimeout(() => {
|
|
99
|
+
timeoutId = null;
|
|
100
|
+
}, delay);
|
|
101
|
+
}
|
|
102
|
+
return promise;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Cancels any pending execution and rejects pending promises
|
|
106
|
+
*/
|
|
107
|
+
debounced.cancel = () => {
|
|
108
|
+
if (timeoutId !== null) {
|
|
109
|
+
clearTimeout(timeoutId);
|
|
110
|
+
timeoutId = null;
|
|
111
|
+
}
|
|
112
|
+
if (pendingReject !== null) {
|
|
113
|
+
pendingReject(new Error("Debounced call cancelled"));
|
|
114
|
+
pendingResolve = null;
|
|
115
|
+
pendingReject = null;
|
|
116
|
+
}
|
|
117
|
+
pendingArgs = null;
|
|
118
|
+
lastCallTime = 0;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Immediately executes any pending call and returns its result
|
|
122
|
+
*/
|
|
123
|
+
debounced.flush = async () => {
|
|
124
|
+
if (timeoutId !== null) {
|
|
125
|
+
clearTimeout(timeoutId);
|
|
126
|
+
timeoutId = null;
|
|
127
|
+
}
|
|
128
|
+
if (pendingArgs !== null) {
|
|
129
|
+
lastCallTime = 0;
|
|
130
|
+
await execute();
|
|
131
|
+
// The execute function already resolved/rejected the promise
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
};
|
|
136
|
+
return debounced;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=debounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../../src/utils/async/debounce.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error class for timeout-related failures
|
|
3
|
+
*/
|
|
4
|
+
export declare class TimeoutError extends Error {
|
|
5
|
+
readonly timeout: number;
|
|
6
|
+
constructor(message: string, timeout: number);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Custom error class for abort-related failures
|
|
10
|
+
*/
|
|
11
|
+
export declare class AbortError extends Error {
|
|
12
|
+
constructor(message?: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Custom error class for retry-related failures
|
|
16
|
+
*/
|
|
17
|
+
export declare class RetryError extends Error {
|
|
18
|
+
readonly attempts: number;
|
|
19
|
+
readonly lastError: unknown;
|
|
20
|
+
constructor(message: string, attempts: number, lastError: unknown);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/async/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGf,OAAO,EAAE,MAAM;gBAD/B,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM;CAStC;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACrB,OAAO,GAAE,MAA4B;CAQpD;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGb,QAAQ,EAAE,MAAM;aAChB,SAAS,EAAE,OAAO;gBAFlC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO;CASzC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error class for timeout-related failures
|
|
3
|
+
*/
|
|
4
|
+
export class TimeoutError extends Error {
|
|
5
|
+
constructor(message, timeout) {
|
|
6
|
+
super(message);
|
|
7
|
+
Object.defineProperty(this, "timeout", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: timeout
|
|
12
|
+
});
|
|
13
|
+
this.name = "TimeoutError";
|
|
14
|
+
// Maintains proper stack trace for where our error was thrown (only available on V8)
|
|
15
|
+
if (Error.captureStackTrace) {
|
|
16
|
+
Error.captureStackTrace(this, TimeoutError);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Custom error class for abort-related failures
|
|
22
|
+
*/
|
|
23
|
+
export class AbortError extends Error {
|
|
24
|
+
constructor(message = "Operation aborted") {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = "AbortError";
|
|
27
|
+
// Maintains proper stack trace for where our error was thrown (only available on V8)
|
|
28
|
+
if (Error.captureStackTrace) {
|
|
29
|
+
Error.captureStackTrace(this, AbortError);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Custom error class for retry-related failures
|
|
35
|
+
*/
|
|
36
|
+
export class RetryError extends Error {
|
|
37
|
+
constructor(message, attempts, lastError) {
|
|
38
|
+
super(message);
|
|
39
|
+
Object.defineProperty(this, "attempts", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: attempts
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(this, "lastError", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true,
|
|
49
|
+
value: lastError
|
|
50
|
+
});
|
|
51
|
+
this.name = "RetryError";
|
|
52
|
+
// Maintains proper stack trace for where our error was thrown (only available on V8)
|
|
53
|
+
if (Error.captureStackTrace) {
|
|
54
|
+
Error.captureStackTrace(this, RetryError);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/utils/async/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnC,YACI,OAAe,EACC,OAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFf;;;;mBAAgB,OAAO;WAAQ;QAG/B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,qFAAqF;QACrF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC1B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACjC,YAAY,UAAkB,mBAAmB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,qFAAqF;QACrF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC1B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACjC,YACI,OAAe,EACC,QAAgB,EAChB,SAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHf;;;;mBAAgB,QAAQ;WAAQ;QAChC;;;;mBAAgB,SAAS;WAAS;QAGlC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,qFAAqF;QACrF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC1B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;CACJ"}
|