pnpm-catalog-updates 0.1.1
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/LICENSE +21 -0
- package/README.md +335 -0
- package/bin/pcu.js +15 -0
- package/dist/application/services/CatalogUpdateService.d.ts +190 -0
- package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
- package/dist/application/services/CatalogUpdateService.js +521 -0
- package/dist/application/services/CatalogUpdateService.js.map +1 -0
- package/dist/application/services/WorkspaceService.d.ts +139 -0
- package/dist/application/services/WorkspaceService.d.ts.map +1 -0
- package/dist/application/services/WorkspaceService.js +340 -0
- package/dist/application/services/WorkspaceService.js.map +1 -0
- package/dist/cli/commands/CheckCommand.d.ts +41 -0
- package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
- package/dist/cli/commands/CheckCommand.js +168 -0
- package/dist/cli/commands/CheckCommand.js.map +1 -0
- package/dist/cli/commands/UpdateCommand.d.ts +69 -0
- package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
- package/dist/cli/commands/UpdateCommand.js +361 -0
- package/dist/cli/commands/UpdateCommand.js.map +1 -0
- package/dist/cli/formatters/OutputFormatter.d.ts +95 -0
- package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/OutputFormatter.js +437 -0
- package/dist/cli/formatters/OutputFormatter.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +244 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/options/GlobalOptions.d.ts +117 -0
- package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
- package/dist/cli/options/GlobalOptions.js +278 -0
- package/dist/cli/options/GlobalOptions.js.map +1 -0
- package/dist/cli/options/index.d.ts +5 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +5 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/validators/CommandValidator.d.ts +60 -0
- package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
- package/dist/cli/validators/CommandValidator.js +319 -0
- package/dist/cli/validators/CommandValidator.js.map +1 -0
- package/dist/cli/validators/index.d.ts +5 -0
- package/dist/cli/validators/index.d.ts.map +1 -0
- package/dist/cli/validators/index.js +5 -0
- package/dist/cli/validators/index.js.map +1 -0
- package/dist/common/config/Config.d.ts +142 -0
- package/dist/common/config/Config.d.ts.map +1 -0
- package/dist/common/config/Config.js +355 -0
- package/dist/common/config/Config.js.map +1 -0
- package/dist/common/config/index.d.ts +6 -0
- package/dist/common/config/index.d.ts.map +1 -0
- package/dist/common/config/index.js +6 -0
- package/dist/common/config/index.js.map +1 -0
- package/dist/common/logger/Logger.d.ts +110 -0
- package/dist/common/logger/Logger.d.ts.map +1 -0
- package/dist/common/logger/Logger.js +289 -0
- package/dist/common/logger/Logger.js.map +1 -0
- package/dist/common/logger/index.d.ts +6 -0
- package/dist/common/logger/index.d.ts.map +1 -0
- package/dist/common/logger/index.js +6 -0
- package/dist/common/logger/index.js.map +1 -0
- package/dist/common/types/cli.d.ts +265 -0
- package/dist/common/types/cli.d.ts.map +1 -0
- package/dist/common/types/cli.js +5 -0
- package/dist/common/types/cli.js.map +1 -0
- package/dist/common/types/core.d.ts +270 -0
- package/dist/common/types/core.d.ts.map +1 -0
- package/dist/common/types/core.js +32 -0
- package/dist/common/types/core.js.map +1 -0
- package/dist/common/types/index.d.ts +8 -0
- package/dist/common/types/index.d.ts.map +1 -0
- package/dist/common/types/index.js +8 -0
- package/dist/common/types/index.js.map +1 -0
- package/dist/common/utils/async.d.ts +74 -0
- package/dist/common/utils/async.d.ts.map +1 -0
- package/dist/common/utils/async.js +228 -0
- package/dist/common/utils/async.js.map +1 -0
- package/dist/common/utils/format.d.ts +32 -0
- package/dist/common/utils/format.d.ts.map +1 -0
- package/dist/common/utils/format.js +121 -0
- package/dist/common/utils/format.js.map +1 -0
- package/dist/common/utils/git.d.ts +44 -0
- package/dist/common/utils/git.d.ts.map +1 -0
- package/dist/common/utils/git.js +147 -0
- package/dist/common/utils/git.js.map +1 -0
- package/dist/common/utils/index.d.ts +11 -0
- package/dist/common/utils/index.d.ts.map +1 -0
- package/dist/common/utils/index.js +11 -0
- package/dist/common/utils/index.js.map +1 -0
- package/dist/common/utils/string.d.ts +56 -0
- package/dist/common/utils/string.d.ts.map +1 -0
- package/dist/common/utils/string.js +134 -0
- package/dist/common/utils/string.js.map +1 -0
- package/dist/common/utils/validation.d.ts +88 -0
- package/dist/common/utils/validation.d.ts.map +1 -0
- package/dist/common/utils/validation.js +281 -0
- package/dist/common/utils/validation.js.map +1 -0
- package/dist/domain/entities/Catalog.d.ts +117 -0
- package/dist/domain/entities/Catalog.d.ts.map +1 -0
- package/dist/domain/entities/Catalog.js +240 -0
- package/dist/domain/entities/Catalog.js.map +1 -0
- package/dist/domain/entities/Package.d.ts +142 -0
- package/dist/domain/entities/Package.d.ts.map +1 -0
- package/dist/domain/entities/Package.js +275 -0
- package/dist/domain/entities/Package.js.map +1 -0
- package/dist/domain/entities/Workspace.d.ts +95 -0
- package/dist/domain/entities/Workspace.d.ts.map +1 -0
- package/dist/domain/entities/Workspace.js +170 -0
- package/dist/domain/entities/Workspace.js.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.js +8 -0
- package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.js +230 -0
- package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
- package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
- package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/PackageCollection.js +263 -0
- package/dist/domain/value-objects/PackageCollection.js.map +1 -0
- package/dist/domain/value-objects/Version.d.ts +141 -0
- package/dist/domain/value-objects/Version.d.ts.map +1 -0
- package/dist/domain/value-objects/Version.js +268 -0
- package/dist/domain/value-objects/Version.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts +135 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.js +307 -0
- package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.js +104 -0
- package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.js +128 -0
- package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
- package/dist/infrastructure/cache/Cache.d.ts +161 -0
- package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/Cache.js +398 -0
- package/dist/infrastructure/cache/Cache.js.map +1 -0
- package/dist/infrastructure/cache/index.d.ts +6 -0
- package/dist/infrastructure/cache/index.d.ts.map +1 -0
- package/dist/infrastructure/cache/index.js +6 -0
- package/dist/infrastructure/cache/index.js.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js +303 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts +100 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.js +284 -0
- package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
- package/package.json +125 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generic Result type for operations that can succeed or fail
|
|
6
|
+
*/
|
|
7
|
+
export interface Result<T = void, E = Error> {
|
|
8
|
+
success: boolean;
|
|
9
|
+
data?: T;
|
|
10
|
+
error?: E;
|
|
11
|
+
message?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Success result constructor
|
|
15
|
+
*/
|
|
16
|
+
export declare function Success<T>(data?: T, message?: string): Result<T>;
|
|
17
|
+
/**
|
|
18
|
+
* Error result constructor
|
|
19
|
+
*/
|
|
20
|
+
export declare function Failure<E = Error>(error: E, message?: string): Result<never, E>;
|
|
21
|
+
/**
|
|
22
|
+
* Validation result with detailed feedback
|
|
23
|
+
*/
|
|
24
|
+
export interface ValidationResult {
|
|
25
|
+
isValid: boolean;
|
|
26
|
+
errors: string[];
|
|
27
|
+
warnings: string[];
|
|
28
|
+
suggestions?: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Progress information for long-running operations
|
|
32
|
+
*/
|
|
33
|
+
export interface ProgressInfo {
|
|
34
|
+
current: number;
|
|
35
|
+
total: number;
|
|
36
|
+
percentage: number;
|
|
37
|
+
message?: string;
|
|
38
|
+
startTime: number;
|
|
39
|
+
estimatedTimeRemaining?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Statistical information
|
|
43
|
+
*/
|
|
44
|
+
export interface Statistics {
|
|
45
|
+
count: number;
|
|
46
|
+
min?: number;
|
|
47
|
+
max?: number;
|
|
48
|
+
avg?: number;
|
|
49
|
+
sum?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Time range
|
|
53
|
+
*/
|
|
54
|
+
export interface TimeRange {
|
|
55
|
+
start: Date;
|
|
56
|
+
end: Date;
|
|
57
|
+
duration: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* File information
|
|
61
|
+
*/
|
|
62
|
+
export interface FileInfo {
|
|
63
|
+
path: string;
|
|
64
|
+
name: string;
|
|
65
|
+
extension: string;
|
|
66
|
+
size: number;
|
|
67
|
+
lastModified: Date;
|
|
68
|
+
isDirectory: boolean;
|
|
69
|
+
exists: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Network response information
|
|
73
|
+
*/
|
|
74
|
+
export interface NetworkResponse<T = any> {
|
|
75
|
+
status: number;
|
|
76
|
+
statusText: string;
|
|
77
|
+
data: T;
|
|
78
|
+
headers: Record<string, string>;
|
|
79
|
+
timing: {
|
|
80
|
+
start: number;
|
|
81
|
+
end: number;
|
|
82
|
+
duration: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Cache metadata
|
|
87
|
+
*/
|
|
88
|
+
export interface CacheMetadata {
|
|
89
|
+
key: string;
|
|
90
|
+
createdAt: Date;
|
|
91
|
+
expiresAt: Date;
|
|
92
|
+
size: number;
|
|
93
|
+
hitCount: number;
|
|
94
|
+
lastAccessed: Date;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Log context for structured logging
|
|
98
|
+
*/
|
|
99
|
+
export interface LogContext {
|
|
100
|
+
operation?: string;
|
|
101
|
+
userId?: string;
|
|
102
|
+
requestId?: string;
|
|
103
|
+
sessionId?: string;
|
|
104
|
+
correlationId?: string;
|
|
105
|
+
tags?: string[];
|
|
106
|
+
metadata?: Record<string, any>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Feature flag definition
|
|
110
|
+
*/
|
|
111
|
+
export interface FeatureFlag {
|
|
112
|
+
name: string;
|
|
113
|
+
enabled: boolean;
|
|
114
|
+
description?: string;
|
|
115
|
+
rolloutPercentage?: number;
|
|
116
|
+
conditions?: Record<string, any>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Environment information
|
|
120
|
+
*/
|
|
121
|
+
export interface Environment {
|
|
122
|
+
name: 'development' | 'staging' | 'production' | 'test';
|
|
123
|
+
version: string;
|
|
124
|
+
buildDate: Date;
|
|
125
|
+
commitHash?: string;
|
|
126
|
+
branch?: string;
|
|
127
|
+
nodeVersion: string;
|
|
128
|
+
platform: string;
|
|
129
|
+
arch: string;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Resource usage information
|
|
133
|
+
*/
|
|
134
|
+
export interface ResourceUsage {
|
|
135
|
+
memory: {
|
|
136
|
+
used: number;
|
|
137
|
+
available: number;
|
|
138
|
+
percentage: number;
|
|
139
|
+
};
|
|
140
|
+
cpu: {
|
|
141
|
+
usage: number;
|
|
142
|
+
cores: number;
|
|
143
|
+
};
|
|
144
|
+
disk?: {
|
|
145
|
+
used: number;
|
|
146
|
+
available: number;
|
|
147
|
+
percentage: number;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Pagination parameters
|
|
152
|
+
*/
|
|
153
|
+
export interface PaginationParams {
|
|
154
|
+
page: number;
|
|
155
|
+
limit: number;
|
|
156
|
+
offset: number;
|
|
157
|
+
total?: number;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Paginated response
|
|
161
|
+
*/
|
|
162
|
+
export interface PaginatedResponse<T> {
|
|
163
|
+
data: T[];
|
|
164
|
+
pagination: PaginationParams & {
|
|
165
|
+
hasNext: boolean;
|
|
166
|
+
hasPrevious: boolean;
|
|
167
|
+
totalPages: number;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Search parameters
|
|
172
|
+
*/
|
|
173
|
+
export interface SearchParams {
|
|
174
|
+
query: string;
|
|
175
|
+
filters?: Record<string, any>;
|
|
176
|
+
sort?: {
|
|
177
|
+
field: string;
|
|
178
|
+
direction: 'asc' | 'desc';
|
|
179
|
+
};
|
|
180
|
+
pagination?: PaginationParams;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Diff information
|
|
184
|
+
*/
|
|
185
|
+
export interface Diff<T = any> {
|
|
186
|
+
added: T[];
|
|
187
|
+
removed: T[];
|
|
188
|
+
modified: Array<{
|
|
189
|
+
old: T;
|
|
190
|
+
new: T;
|
|
191
|
+
changes: string[];
|
|
192
|
+
}>;
|
|
193
|
+
unchanged: T[];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Health check status
|
|
197
|
+
*/
|
|
198
|
+
export interface HealthStatus {
|
|
199
|
+
status: 'healthy' | 'unhealthy' | 'degraded';
|
|
200
|
+
timestamp: Date;
|
|
201
|
+
uptime: number;
|
|
202
|
+
version: string;
|
|
203
|
+
services: Record<string, {
|
|
204
|
+
status: 'up' | 'down' | 'degraded';
|
|
205
|
+
responseTime?: number;
|
|
206
|
+
message?: string;
|
|
207
|
+
}>;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Event information
|
|
211
|
+
*/
|
|
212
|
+
export interface EventInfo {
|
|
213
|
+
id: string;
|
|
214
|
+
type: string;
|
|
215
|
+
timestamp: Date;
|
|
216
|
+
source: string;
|
|
217
|
+
data: any;
|
|
218
|
+
metadata?: Record<string, any>;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Subscription information
|
|
222
|
+
*/
|
|
223
|
+
export interface Subscription {
|
|
224
|
+
id: string;
|
|
225
|
+
eventType: string;
|
|
226
|
+
callback: (event: EventInfo) => void | Promise<void>;
|
|
227
|
+
filter?: (event: EventInfo) => boolean;
|
|
228
|
+
created: Date;
|
|
229
|
+
lastTriggered?: Date;
|
|
230
|
+
triggerCount: number;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Rate limit information
|
|
234
|
+
*/
|
|
235
|
+
export interface RateLimit {
|
|
236
|
+
limit: number;
|
|
237
|
+
remaining: number;
|
|
238
|
+
reset: Date;
|
|
239
|
+
window: number;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Retry configuration
|
|
243
|
+
*/
|
|
244
|
+
export interface RetryConfig {
|
|
245
|
+
maxAttempts: number;
|
|
246
|
+
baseDelay: number;
|
|
247
|
+
maxDelay: number;
|
|
248
|
+
backoffFactor: number;
|
|
249
|
+
shouldRetry?: (error: any) => boolean;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Timeout configuration
|
|
253
|
+
*/
|
|
254
|
+
export interface TimeoutConfig {
|
|
255
|
+
connect: number;
|
|
256
|
+
request: number;
|
|
257
|
+
response: number;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Lock information
|
|
261
|
+
*/
|
|
262
|
+
export interface LockInfo {
|
|
263
|
+
id: string;
|
|
264
|
+
owner: string;
|
|
265
|
+
acquired: Date;
|
|
266
|
+
expires: Date;
|
|
267
|
+
renewable: boolean;
|
|
268
|
+
metadata?: Record<string, any>;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/common/types/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Success result constructor
|
|
6
|
+
*/
|
|
7
|
+
export function Success(data, message) {
|
|
8
|
+
const result = {
|
|
9
|
+
success: true,
|
|
10
|
+
};
|
|
11
|
+
if (data !== undefined) {
|
|
12
|
+
result.data = data;
|
|
13
|
+
}
|
|
14
|
+
if (message !== undefined) {
|
|
15
|
+
result.message = message;
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Error result constructor
|
|
21
|
+
*/
|
|
22
|
+
export function Failure(error, message) {
|
|
23
|
+
const result = {
|
|
24
|
+
success: false,
|
|
25
|
+
error,
|
|
26
|
+
};
|
|
27
|
+
if (message !== undefined) {
|
|
28
|
+
result.message = message;
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/common/types/core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,IAAQ,EAAE,OAAgB;IACnD,MAAM,MAAM,GAAc;QACxB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAY,KAAQ,EAAE,OAAgB;IAC3D,MAAM,MAAM,GAAqB;QAC/B,OAAO,EAAE,KAAK;QACd,KAAK;KACN,CAAC;IACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async Utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Delay execution for specified milliseconds
|
|
6
|
+
*/
|
|
7
|
+
export declare function delay(ms: number): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Retry a function with exponential backoff
|
|
10
|
+
*/
|
|
11
|
+
export declare function retry<T>(fn: () => Promise<T>, options?: {
|
|
12
|
+
maxAttempts?: number;
|
|
13
|
+
baseDelay?: number;
|
|
14
|
+
maxDelay?: number;
|
|
15
|
+
backoffFactor?: number;
|
|
16
|
+
shouldRetry?: (error: any) => boolean;
|
|
17
|
+
}): Promise<T>;
|
|
18
|
+
/**
|
|
19
|
+
* Execute functions in parallel with concurrency limit
|
|
20
|
+
*/
|
|
21
|
+
export declare function parallelLimit<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, limit?: number): Promise<R[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Race with timeout
|
|
24
|
+
*/
|
|
25
|
+
export declare function timeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T>;
|
|
26
|
+
/**
|
|
27
|
+
* Debounce async function
|
|
28
|
+
*/
|
|
29
|
+
export declare function debounce<T extends (...args: any[]) => Promise<any>>(fn: T, ms: number): T;
|
|
30
|
+
/**
|
|
31
|
+
* Throttle async function
|
|
32
|
+
*/
|
|
33
|
+
export declare function throttle<T extends (...args: any[]) => Promise<any>>(fn: T, ms: number): T;
|
|
34
|
+
/**
|
|
35
|
+
* Create a cancelable promise
|
|
36
|
+
*/
|
|
37
|
+
export declare function cancelable<T>(promise: Promise<T>): {
|
|
38
|
+
promise: Promise<T>;
|
|
39
|
+
cancel: () => void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Execute async function with circuit breaker pattern
|
|
43
|
+
*/
|
|
44
|
+
export declare class CircuitBreaker<T extends (...args: any[]) => Promise<any>> {
|
|
45
|
+
private fn;
|
|
46
|
+
private options;
|
|
47
|
+
private failures;
|
|
48
|
+
private lastFailureTime;
|
|
49
|
+
private state;
|
|
50
|
+
constructor(fn: T, options?: {
|
|
51
|
+
failureThreshold?: number;
|
|
52
|
+
recoveryTimeout?: number;
|
|
53
|
+
monitoringPeriod?: number;
|
|
54
|
+
});
|
|
55
|
+
execute(...args: Parameters<T>): Promise<ReturnType<T>>;
|
|
56
|
+
private onSuccess;
|
|
57
|
+
private onFailure;
|
|
58
|
+
getState(): string;
|
|
59
|
+
reset(): void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Async queue with concurrency control
|
|
63
|
+
*/
|
|
64
|
+
export declare class AsyncQueue<T = any> {
|
|
65
|
+
private concurrency;
|
|
66
|
+
private queue;
|
|
67
|
+
private running;
|
|
68
|
+
constructor(concurrency?: number);
|
|
69
|
+
add<R>(fn: () => Promise<R>): Promise<R>;
|
|
70
|
+
private process;
|
|
71
|
+
size(): number;
|
|
72
|
+
clear(): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=async.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../src/common/utils/async.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async Utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Delay execution for specified milliseconds
|
|
6
|
+
*/
|
|
7
|
+
export function delay(ms) {
|
|
8
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Retry a function with exponential backoff
|
|
12
|
+
*/
|
|
13
|
+
export async function retry(fn, options = {}) {
|
|
14
|
+
const { maxAttempts = 3, baseDelay = 1000, maxDelay = 30000, backoffFactor = 2, shouldRetry = () => true, } = options;
|
|
15
|
+
let lastError;
|
|
16
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
17
|
+
try {
|
|
18
|
+
return await fn();
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
lastError = error;
|
|
22
|
+
if (attempt === maxAttempts || !shouldRetry(error)) {
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
const delayMs = Math.min(baseDelay * Math.pow(backoffFactor, attempt - 1), maxDelay);
|
|
26
|
+
await delay(delayMs);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
throw lastError;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Execute functions in parallel with concurrency limit
|
|
33
|
+
*/
|
|
34
|
+
export async function parallelLimit(items, fn, limit = 5) {
|
|
35
|
+
const results = new Array(items.length);
|
|
36
|
+
const executing = [];
|
|
37
|
+
for (let i = 0; i < items.length; i++) {
|
|
38
|
+
const promise = fn(items[i], i).then((result) => {
|
|
39
|
+
results[i] = result;
|
|
40
|
+
});
|
|
41
|
+
executing.push(promise);
|
|
42
|
+
if (executing.length >= limit) {
|
|
43
|
+
await Promise.race(executing);
|
|
44
|
+
executing.splice(executing.findIndex((p) => p === promise), 1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
await Promise.all(executing);
|
|
48
|
+
return results;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Race with timeout
|
|
52
|
+
*/
|
|
53
|
+
export async function timeout(promise, ms, message) {
|
|
54
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
reject(new Error(message || `Operation timed out after ${ms}ms`));
|
|
57
|
+
}, ms);
|
|
58
|
+
});
|
|
59
|
+
return Promise.race([promise, timeoutPromise]);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Debounce async function
|
|
63
|
+
*/
|
|
64
|
+
export function debounce(fn, ms) {
|
|
65
|
+
let timeoutId;
|
|
66
|
+
let latestResolve;
|
|
67
|
+
let latestReject;
|
|
68
|
+
return ((...args) => {
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
latestResolve = resolve;
|
|
71
|
+
latestReject = reject;
|
|
72
|
+
clearTimeout(timeoutId);
|
|
73
|
+
timeoutId = setTimeout(async () => {
|
|
74
|
+
try {
|
|
75
|
+
const result = await fn(...args);
|
|
76
|
+
latestResolve?.(result);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
latestReject?.(error);
|
|
80
|
+
}
|
|
81
|
+
}, ms);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Throttle async function
|
|
87
|
+
*/
|
|
88
|
+
export function throttle(fn, ms) {
|
|
89
|
+
let inThrottle = false;
|
|
90
|
+
let lastResult;
|
|
91
|
+
return (async (...args) => {
|
|
92
|
+
if (!inThrottle) {
|
|
93
|
+
inThrottle = true;
|
|
94
|
+
lastResult = await fn(...args);
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
inThrottle = false;
|
|
97
|
+
}, ms);
|
|
98
|
+
}
|
|
99
|
+
return lastResult;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a cancelable promise
|
|
104
|
+
*/
|
|
105
|
+
export function cancelable(promise) {
|
|
106
|
+
let isCanceled = false;
|
|
107
|
+
const cancelablePromise = new Promise((resolve, reject) => {
|
|
108
|
+
promise
|
|
109
|
+
.then((value) => {
|
|
110
|
+
if (!isCanceled) {
|
|
111
|
+
resolve(value);
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
.catch((error) => {
|
|
115
|
+
if (!isCanceled) {
|
|
116
|
+
reject(error);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
promise: cancelablePromise,
|
|
122
|
+
cancel: () => {
|
|
123
|
+
isCanceled = true;
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Execute async function with circuit breaker pattern
|
|
129
|
+
*/
|
|
130
|
+
export class CircuitBreaker {
|
|
131
|
+
fn;
|
|
132
|
+
options;
|
|
133
|
+
failures = 0;
|
|
134
|
+
lastFailureTime = 0;
|
|
135
|
+
state = 'closed';
|
|
136
|
+
constructor(fn, options = {}) {
|
|
137
|
+
this.fn = fn;
|
|
138
|
+
this.options = options;
|
|
139
|
+
const { failureThreshold = 5, recoveryTimeout = 60000, monitoringPeriod = 10000 } = options;
|
|
140
|
+
this.options = { failureThreshold, recoveryTimeout, monitoringPeriod };
|
|
141
|
+
}
|
|
142
|
+
async execute(...args) {
|
|
143
|
+
if (this.state === 'open') {
|
|
144
|
+
if (Date.now() - this.lastFailureTime > this.options.recoveryTimeout) {
|
|
145
|
+
this.state = 'half-open';
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
throw new Error('Circuit breaker is open');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const result = await this.fn(...args);
|
|
153
|
+
this.onSuccess();
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
this.onFailure();
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
onSuccess() {
|
|
162
|
+
this.failures = 0;
|
|
163
|
+
this.state = 'closed';
|
|
164
|
+
}
|
|
165
|
+
onFailure() {
|
|
166
|
+
this.failures++;
|
|
167
|
+
this.lastFailureTime = Date.now();
|
|
168
|
+
if (this.failures >= this.options.failureThreshold) {
|
|
169
|
+
this.state = 'open';
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
getState() {
|
|
173
|
+
return this.state;
|
|
174
|
+
}
|
|
175
|
+
reset() {
|
|
176
|
+
this.failures = 0;
|
|
177
|
+
this.state = 'closed';
|
|
178
|
+
this.lastFailureTime = 0;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Async queue with concurrency control
|
|
183
|
+
*/
|
|
184
|
+
export class AsyncQueue {
|
|
185
|
+
concurrency;
|
|
186
|
+
queue = [];
|
|
187
|
+
running = 0;
|
|
188
|
+
constructor(concurrency = 1) {
|
|
189
|
+
this.concurrency = concurrency;
|
|
190
|
+
}
|
|
191
|
+
async add(fn) {
|
|
192
|
+
return new Promise((resolve, reject) => {
|
|
193
|
+
this.queue.push(async () => {
|
|
194
|
+
try {
|
|
195
|
+
const result = await fn();
|
|
196
|
+
resolve(result);
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
reject(error);
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
this.process();
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
async process() {
|
|
208
|
+
if (this.running >= this.concurrency || this.queue.length === 0) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
this.running++;
|
|
212
|
+
const fn = this.queue.shift();
|
|
213
|
+
try {
|
|
214
|
+
await fn();
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
this.running--;
|
|
218
|
+
this.process();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
size() {
|
|
222
|
+
return this.queue.length;
|
|
223
|
+
}
|
|
224
|
+
clear() {
|
|
225
|
+
this.queue.length = 0;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=async.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../../src/common/utils/async.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,UAMI,EAAE;IAEN,MAAM,EACJ,WAAW,GAAG,CAAC,EACf,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,CAAC,EACjB,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,GACzB,GAAG,OAAO,CAAC;IAEZ,IAAI,SAAc,CAAC;IAEnB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,IAAI,OAAO,KAAK,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACrF,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAU,EACV,EAA0C,EAC1C,QAAgB,CAAC;IAEjB,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAoB,EAAE,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,SAAS,CAAC,MAAM,CACd,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,EACzC,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,OAAmB,EAAE,EAAU,EAAE,OAAgB;IAChF,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,6BAA6B,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAA6C,EAAK,EAAE,EAAU;IACpF,IAAI,SAAyB,CAAC;IAC9B,IAAI,aAAiD,CAAC;IACtD,IAAI,YAAiD,CAAC;IAEtD,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,aAAa,GAAG,OAAO,CAAC;YACxB,YAAY,GAAG,MAAM,CAAC;YAEtB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gBAChC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;oBACjC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC,CAAM,CAAC;AACV,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAA6C,EAAK,EAAE,EAAU;IACpF,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAe,CAAC;IAEpB,OAAO,CAAC,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,CAAC;YAClB,UAAU,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/B,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAM,CAAC;AACV,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAI,OAAmB;IAC/C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,OAAO;aACJ,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,GAAG,EAAE;YACX,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IAMf;IACA;IANF,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,GAAG,CAAC,CAAC;IACpB,KAAK,GAAoC,QAAQ,CAAC;IAE1D,YACU,EAAK,EACL,UAIJ,EAAE;QALE,OAAE,GAAF,EAAE,CAAG;QACL,YAAO,GAAP,OAAO,CAIT;QAEN,MAAM,EAAE,gBAAgB,GAAG,CAAC,EAAE,eAAe,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE5F,IAAI,CAAC,OAAO,GAAG,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAG,IAAmB;QAClC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAgB,EAAE,CAAC;gBACtE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAiB,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IAID;IAHZ,KAAK,GAA4B,EAAE,CAAC;IACpC,OAAO,GAAG,CAAC,CAAC;IAEpB,YAAoB,cAAsB,CAAC;QAAvB,gBAAW,GAAX,WAAW,CAAY;IAAG,CAAC;IAE/C,KAAK,CAAC,GAAG,CAAI,EAAoB;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;oBAC1B,OAAO,CAAC,MAAa,CAAC,CAAC;oBACvB,OAAO,MAAa,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format Utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Format bytes to human readable string
|
|
6
|
+
*/
|
|
7
|
+
export declare function formatBytes(bytes: number, decimals?: number): string;
|
|
8
|
+
/**
|
|
9
|
+
* Format duration in milliseconds to human readable string
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatDuration(ms: number): string;
|
|
12
|
+
/**
|
|
13
|
+
* Format number with thousands separator
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatNumber(num: number, separator?: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Format percentage
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatPercentage(value: number, total: number, decimals?: number): string;
|
|
20
|
+
/**
|
|
21
|
+
* Format timestamp to relative time
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatRelativeTime(timestamp: number | Date): string;
|
|
24
|
+
/**
|
|
25
|
+
* Format table data
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatTable(headers: string[], rows: string[][], options?: {
|
|
28
|
+
padding?: number;
|
|
29
|
+
align?: Array<'left' | 'center' | 'right'>;
|
|
30
|
+
borders?: boolean;
|
|
31
|
+
}): string;
|
|
32
|
+
//# sourceMappingURL=format.d.ts.map
|