modestbench 0.0.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/CHANGELOG.md +45 -0
- package/LICENSE.md +55 -0
- package/README.md +699 -0
- package/dist/bootstrap.cjs +37 -0
- package/dist/bootstrap.cjs.map +1 -0
- package/dist/bootstrap.d.cts +17 -0
- package/dist/bootstrap.d.cts.map +1 -0
- package/dist/bootstrap.d.ts +17 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +33 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/cli/commands/history.cjs +459 -0
- package/dist/cli/commands/history.cjs.map +1 -0
- package/dist/cli/commands/history.d.cts +34 -0
- package/dist/cli/commands/history.d.cts.map +1 -0
- package/dist/cli/commands/history.d.ts +34 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +422 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/init.cjs +566 -0
- package/dist/cli/commands/init.cjs.map +1 -0
- package/dist/cli/commands/init.d.cts +26 -0
- package/dist/cli/commands/init.d.cts.map +1 -0
- package/dist/cli/commands/init.d.ts +26 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +562 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/run.cjs +285 -0
- package/dist/cli/commands/run.cjs.map +1 -0
- package/dist/cli/commands/run.d.cts +37 -0
- package/dist/cli/commands/run.d.cts.map +1 -0
- package/dist/cli/commands/run.d.ts +37 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +248 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/index.cjs +523 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +58 -0
- package/dist/cli/index.d.cts.map +1 -0
- package/dist/cli/index.d.ts +58 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +515 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/manager.cjs +370 -0
- package/dist/config/manager.cjs.map +1 -0
- package/dist/config/manager.d.cts +46 -0
- package/dist/config/manager.d.cts.map +1 -0
- package/dist/config/manager.d.ts +46 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +333 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/schema.cjs +182 -0
- package/dist/config/schema.cjs.map +1 -0
- package/dist/config/schema.d.cts +51 -0
- package/dist/config/schema.d.cts.map +1 -0
- package/dist/config/schema.d.ts +51 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +145 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/constants.cjs +22 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +10 -0
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.ts +10 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +19 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/benchmark-schema.cjs +135 -0
- package/dist/core/benchmark-schema.cjs.map +1 -0
- package/dist/core/benchmark-schema.d.cts +139 -0
- package/dist/core/benchmark-schema.d.cts.map +1 -0
- package/dist/core/benchmark-schema.d.ts +139 -0
- package/dist/core/benchmark-schema.d.ts.map +1 -0
- package/dist/core/benchmark-schema.js +132 -0
- package/dist/core/benchmark-schema.js.map +1 -0
- package/dist/core/engine.cjs +669 -0
- package/dist/core/engine.cjs.map +1 -0
- package/dist/core/engine.d.cts +128 -0
- package/dist/core/engine.d.cts.map +1 -0
- package/dist/core/engine.d.ts +128 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +632 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/engines/accurate-engine.cjs +292 -0
- package/dist/core/engines/accurate-engine.cjs.map +1 -0
- package/dist/core/engines/accurate-engine.d.cts +63 -0
- package/dist/core/engines/accurate-engine.d.cts.map +1 -0
- package/dist/core/engines/accurate-engine.d.ts +63 -0
- package/dist/core/engines/accurate-engine.d.ts.map +1 -0
- package/dist/core/engines/accurate-engine.js +288 -0
- package/dist/core/engines/accurate-engine.js.map +1 -0
- package/dist/core/engines/index.cjs +21 -0
- package/dist/core/engines/index.cjs.map +1 -0
- package/dist/core/engines/index.d.cts +16 -0
- package/dist/core/engines/index.d.cts.map +1 -0
- package/dist/core/engines/index.d.ts +16 -0
- package/dist/core/engines/index.d.ts.map +1 -0
- package/dist/core/engines/index.js +16 -0
- package/dist/core/engines/index.js.map +1 -0
- package/dist/core/engines/tinybench-engine.cjs +286 -0
- package/dist/core/engines/tinybench-engine.cjs.map +1 -0
- package/dist/core/engines/tinybench-engine.d.cts +18 -0
- package/dist/core/engines/tinybench-engine.d.cts.map +1 -0
- package/dist/core/engines/tinybench-engine.d.ts +18 -0
- package/dist/core/engines/tinybench-engine.d.ts.map +1 -0
- package/dist/core/engines/tinybench-engine.js +282 -0
- package/dist/core/engines/tinybench-engine.js.map +1 -0
- package/dist/core/error-manager.cjs +303 -0
- package/dist/core/error-manager.cjs.map +1 -0
- package/dist/core/error-manager.d.cts +77 -0
- package/dist/core/error-manager.d.cts.map +1 -0
- package/dist/core/error-manager.d.ts +77 -0
- package/dist/core/error-manager.d.ts.map +1 -0
- package/dist/core/error-manager.js +299 -0
- package/dist/core/error-manager.js.map +1 -0
- package/dist/core/loader.cjs +287 -0
- package/dist/core/loader.cjs.map +1 -0
- package/dist/core/loader.d.cts +55 -0
- package/dist/core/loader.d.cts.map +1 -0
- package/dist/core/loader.d.ts +55 -0
- package/dist/core/loader.d.ts.map +1 -0
- package/dist/core/loader.js +250 -0
- package/dist/core/loader.js.map +1 -0
- package/dist/core/stats-utils.cjs +99 -0
- package/dist/core/stats-utils.cjs.map +1 -0
- package/dist/core/stats-utils.d.cts +50 -0
- package/dist/core/stats-utils.d.cts.map +1 -0
- package/dist/core/stats-utils.d.ts +50 -0
- package/dist/core/stats-utils.d.ts.map +1 -0
- package/dist/core/stats-utils.js +94 -0
- package/dist/core/stats-utils.js.map +1 -0
- package/dist/index.cjs +64 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +22 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/progress/manager.cjs +325 -0
- package/dist/progress/manager.cjs.map +1 -0
- package/dist/progress/manager.d.cts +125 -0
- package/dist/progress/manager.d.cts.map +1 -0
- package/dist/progress/manager.d.ts +125 -0
- package/dist/progress/manager.d.ts.map +1 -0
- package/dist/progress/manager.js +321 -0
- package/dist/progress/manager.js.map +1 -0
- package/dist/reporters/csv.cjs +250 -0
- package/dist/reporters/csv.cjs.map +1 -0
- package/dist/reporters/csv.d.cts +92 -0
- package/dist/reporters/csv.d.cts.map +1 -0
- package/dist/reporters/csv.d.ts +92 -0
- package/dist/reporters/csv.d.ts.map +1 -0
- package/dist/reporters/csv.js +246 -0
- package/dist/reporters/csv.js.map +1 -0
- package/dist/reporters/human.cjs +516 -0
- package/dist/reporters/human.cjs.map +1 -0
- package/dist/reporters/human.d.cts +86 -0
- package/dist/reporters/human.d.cts.map +1 -0
- package/dist/reporters/human.d.ts +86 -0
- package/dist/reporters/human.d.ts.map +1 -0
- package/dist/reporters/human.js +509 -0
- package/dist/reporters/human.js.map +1 -0
- package/dist/reporters/index.cjs +17 -0
- package/dist/reporters/index.cjs.map +1 -0
- package/dist/reporters/index.d.cts +10 -0
- package/dist/reporters/index.d.cts.map +1 -0
- package/dist/reporters/index.d.ts +10 -0
- package/dist/reporters/index.d.ts.map +1 -0
- package/dist/reporters/index.js +10 -0
- package/dist/reporters/index.js.map +1 -0
- package/dist/reporters/json.cjs +215 -0
- package/dist/reporters/json.cjs.map +1 -0
- package/dist/reporters/json.d.cts +79 -0
- package/dist/reporters/json.d.cts.map +1 -0
- package/dist/reporters/json.d.ts +79 -0
- package/dist/reporters/json.d.ts.map +1 -0
- package/dist/reporters/json.js +211 -0
- package/dist/reporters/json.js.map +1 -0
- package/dist/reporters/registry.cjs +255 -0
- package/dist/reporters/registry.cjs.map +1 -0
- package/dist/reporters/registry.d.cts +155 -0
- package/dist/reporters/registry.d.cts.map +1 -0
- package/dist/reporters/registry.d.ts +155 -0
- package/dist/reporters/registry.d.ts.map +1 -0
- package/dist/reporters/registry.js +249 -0
- package/dist/reporters/registry.js.map +1 -0
- package/dist/reporters/simple.cjs +328 -0
- package/dist/reporters/simple.cjs.map +1 -0
- package/dist/reporters/simple.d.cts +51 -0
- package/dist/reporters/simple.d.cts.map +1 -0
- package/dist/reporters/simple.d.ts +51 -0
- package/dist/reporters/simple.d.ts.map +1 -0
- package/dist/reporters/simple.js +321 -0
- package/dist/reporters/simple.js.map +1 -0
- package/dist/schema/modestbench-config.schema.json +162 -0
- package/dist/storage/history.cjs +456 -0
- package/dist/storage/history.cjs.map +1 -0
- package/dist/storage/history.d.cts +99 -0
- package/dist/storage/history.d.cts.map +1 -0
- package/dist/storage/history.d.ts +99 -0
- package/dist/storage/history.d.ts.map +1 -0
- package/dist/storage/history.js +452 -0
- package/dist/storage/history.js.map +1 -0
- package/dist/types/cli.cjs +21 -0
- package/dist/types/cli.cjs.map +1 -0
- package/dist/types/cli.d.cts +296 -0
- package/dist/types/cli.d.cts.map +1 -0
- package/dist/types/cli.d.ts +296 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +18 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/core.cjs +14 -0
- package/dist/types/core.cjs.map +1 -0
- package/dist/types/core.d.cts +380 -0
- package/dist/types/core.d.cts.map +1 -0
- package/dist/types/core.d.ts +380 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +13 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.cjs +27 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +11 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/interfaces.cjs +10 -0
- package/dist/types/interfaces.cjs.map +1 -0
- package/dist/types/interfaces.d.cts +381 -0
- package/dist/types/interfaces.d.cts.map +1 -0
- package/dist/types/interfaces.d.ts +381 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/interfaces.js +9 -0
- package/dist/types/interfaces.js.map +1 -0
- package/dist/types/utility.cjs +92 -0
- package/dist/types/utility.cjs.map +1 -0
- package/dist/types/utility.d.cts +330 -0
- package/dist/types/utility.d.cts.map +1 -0
- package/dist/types/utility.d.ts +330 -0
- package/dist/types/utility.d.ts.map +1 -0
- package/dist/types/utility.js +78 -0
- package/dist/types/utility.js.map +1 -0
- package/package.json +211 -0
- package/src/bootstrap.ts +35 -0
- package/src/cli/commands/history.ts +569 -0
- package/src/cli/commands/init.ts +658 -0
- package/src/cli/commands/run.ts +346 -0
- package/src/cli/index.ts +642 -0
- package/src/config/manager.ts +387 -0
- package/src/config/schema.ts +188 -0
- package/src/constants.ts +21 -0
- package/src/core/benchmark-schema.ts +185 -0
- package/src/core/engine.ts +888 -0
- package/src/core/engines/accurate-engine.ts +408 -0
- package/src/core/engines/index.ts +16 -0
- package/src/core/engines/tinybench-engine.ts +335 -0
- package/src/core/error-manager.ts +372 -0
- package/src/core/loader.ts +324 -0
- package/src/core/stats-utils.ts +135 -0
- package/src/index.ts +46 -0
- package/src/progress/manager.ts +415 -0
- package/src/reporters/csv.ts +368 -0
- package/src/reporters/human.ts +707 -0
- package/src/reporters/index.ts +10 -0
- package/src/reporters/json.ts +302 -0
- package/src/reporters/registry.ts +349 -0
- package/src/reporters/simple.ts +459 -0
- package/src/storage/history.ts +600 -0
- package/src/types/cli.ts +312 -0
- package/src/types/core.ts +414 -0
- package/src/types/index.ts +18 -0
- package/src/types/interfaces.ts +451 -0
- package/src/types/utility.ts +446 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModestBench Utility Types
|
|
3
|
+
*
|
|
4
|
+
* Defines utility types, helper functions, and common type transformations used
|
|
5
|
+
* throughout the ModestBench system.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Represents an async function
|
|
9
|
+
*/
|
|
10
|
+
export type AsyncCallable<TArgs extends readonly unknown[] = readonly unknown[], TReturn = unknown> = (...args: TArgs) => Promise<TReturn>;
|
|
11
|
+
/**
|
|
12
|
+
* Async iterator interface
|
|
13
|
+
*/
|
|
14
|
+
export interface AsyncIterable<T> {
|
|
15
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Tuple with at least one element
|
|
19
|
+
*/
|
|
20
|
+
export type AtLeastOne<T> = [T, ...T[]];
|
|
21
|
+
/**
|
|
22
|
+
* Branded type for creating nominal types
|
|
23
|
+
*/
|
|
24
|
+
export type Brand<T, TBrand extends string> = T & {
|
|
25
|
+
readonly __brand: TBrand;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Builder pattern interface
|
|
29
|
+
*/
|
|
30
|
+
export interface Builder<T> {
|
|
31
|
+
build(): T;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Bytes count
|
|
35
|
+
*/
|
|
36
|
+
export type Bytes = Brand<number, 'Bytes'>;
|
|
37
|
+
/**
|
|
38
|
+
* Cache interface
|
|
39
|
+
*/
|
|
40
|
+
export interface Cache<TKey = string, TValue = unknown> {
|
|
41
|
+
clear(): void;
|
|
42
|
+
delete(key: TKey): boolean;
|
|
43
|
+
get(key: TKey): Option<TValue>;
|
|
44
|
+
has(key: TKey): boolean;
|
|
45
|
+
set(key: TKey, value: TValue, ttl?: number): void;
|
|
46
|
+
size(): number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Represents a function that can be called with arguments
|
|
50
|
+
*/
|
|
51
|
+
export type Callable<TArgs extends readonly unknown[] = readonly unknown[], TReturn = unknown> = (...args: TArgs) => TReturn;
|
|
52
|
+
/**
|
|
53
|
+
* Git commit hash
|
|
54
|
+
*/
|
|
55
|
+
export type CommitHash = Brand<string, 'CommitHash'>;
|
|
56
|
+
/**
|
|
57
|
+
* Error with additional context
|
|
58
|
+
*/
|
|
59
|
+
export interface ContextualError extends Error {
|
|
60
|
+
readonly code?: string;
|
|
61
|
+
readonly context?: Record<string, unknown>;
|
|
62
|
+
readonly severity?: 'critical' | 'high' | 'low' | 'medium';
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* CSV string representation
|
|
66
|
+
*/
|
|
67
|
+
export type CsvString = Brand<string, 'CsvString'>;
|
|
68
|
+
/**
|
|
69
|
+
* Makes all properties in T deeply partial
|
|
70
|
+
*/
|
|
71
|
+
export type DeepPartial<T> = {
|
|
72
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Makes all properties in T deeply readonly
|
|
76
|
+
*/
|
|
77
|
+
export type DeepReadonly<T> = {
|
|
78
|
+
readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Directory path brand for type safety
|
|
82
|
+
*/
|
|
83
|
+
export type DirectoryPath = Brand<string, 'DirectoryPath'>;
|
|
84
|
+
/**
|
|
85
|
+
* Disposable resource interface
|
|
86
|
+
*/
|
|
87
|
+
export interface Disposable {
|
|
88
|
+
dispose(): MaybePromise<void>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Environment variable name
|
|
92
|
+
*/
|
|
93
|
+
export type EnvVar = Brand<string, 'EnvVar'>;
|
|
94
|
+
/**
|
|
95
|
+
* Event emitter interface
|
|
96
|
+
*/
|
|
97
|
+
export interface EventEmitter<TEvents extends Record<string, unknown> = Record<string, unknown>> {
|
|
98
|
+
emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
|
|
99
|
+
off<K extends keyof TEvents>(event: K, listener: EventListener<TEvents[K]>): void;
|
|
100
|
+
on<K extends keyof TEvents>(event: K, listener: EventListener<TEvents[K]>): void;
|
|
101
|
+
once<K extends keyof TEvents>(event: K, listener: EventListener<TEvents[K]>): void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Event listener function type
|
|
105
|
+
*/
|
|
106
|
+
export type EventListener<TData = unknown> = (data: TData) => MaybePromise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Factory interface for creating instances
|
|
109
|
+
*/
|
|
110
|
+
export interface Factory<T, TOptions = unknown> {
|
|
111
|
+
create(options?: TOptions): T;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* File path brand for type safety
|
|
115
|
+
*/
|
|
116
|
+
export type FilePath = Brand<string, 'FilePath'>;
|
|
117
|
+
/**
|
|
118
|
+
* Integer number
|
|
119
|
+
*/
|
|
120
|
+
export type Integer = Brand<number, 'Integer'>;
|
|
121
|
+
/**
|
|
122
|
+
* JSON string representation
|
|
123
|
+
*/
|
|
124
|
+
export type JsonString = Brand<string, 'JsonString'>;
|
|
125
|
+
/**
|
|
126
|
+
* Extracts keys from T that have values assignable to U
|
|
127
|
+
*/
|
|
128
|
+
export type KeysOfType<T, U> = {
|
|
129
|
+
[K in keyof T]: T[K] extends U ? K : never;
|
|
130
|
+
}[keyof T];
|
|
131
|
+
/**
|
|
132
|
+
* Logger interface
|
|
133
|
+
*/
|
|
134
|
+
export interface Logger {
|
|
135
|
+
debug(message: string, ...args: unknown[]): void;
|
|
136
|
+
error(message: string, ...args: unknown[]): void;
|
|
137
|
+
info(message: string, ...args: unknown[]): void;
|
|
138
|
+
trace(message: string, ...args: unknown[]): void;
|
|
139
|
+
warn(message: string, ...args: unknown[]): void;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Represents a function that may be async or sync
|
|
143
|
+
*/
|
|
144
|
+
export type MaybePromise<T> = Promise<T> | T;
|
|
145
|
+
/**
|
|
146
|
+
* Memory usage information
|
|
147
|
+
*/
|
|
148
|
+
export interface MemoryUsage {
|
|
149
|
+
readonly arrayBuffers: Bytes;
|
|
150
|
+
readonly external: Bytes;
|
|
151
|
+
readonly heapTotal: Bytes;
|
|
152
|
+
readonly heapUsed: Bytes;
|
|
153
|
+
readonly rss: Bytes;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Duration in milliseconds
|
|
157
|
+
*/
|
|
158
|
+
export type MillisecondDuration = Brand<number, 'MillisecondDuration'>;
|
|
159
|
+
/**
|
|
160
|
+
* Timestamp in milliseconds
|
|
161
|
+
*/
|
|
162
|
+
export type MillisecondTimestamp = Brand<number, 'MillisecondTimestamp'>;
|
|
163
|
+
/**
|
|
164
|
+
* Duration in nanoseconds
|
|
165
|
+
*/
|
|
166
|
+
export type NanoDuration = Brand<number, 'NanoDuration'>;
|
|
167
|
+
/**
|
|
168
|
+
* Timestamp in nanoseconds
|
|
169
|
+
*/
|
|
170
|
+
export type NanosecondTimestamp = Brand<number, 'NanoTimestamp'>;
|
|
171
|
+
/**
|
|
172
|
+
* Non-empty array type
|
|
173
|
+
*/
|
|
174
|
+
export type NonEmptyArray<T> = [T, ...T[]];
|
|
175
|
+
/**
|
|
176
|
+
* String that is not empty
|
|
177
|
+
*/
|
|
178
|
+
export type NonEmptyString = Brand<string, 'NonEmptyString'>;
|
|
179
|
+
/**
|
|
180
|
+
* Non-negative number (>= 0)
|
|
181
|
+
*/
|
|
182
|
+
export type NonNegativeNumber = Brand<number, 'NonNegativeNumber'>;
|
|
183
|
+
/**
|
|
184
|
+
* Option type for values that may not exist
|
|
185
|
+
*/
|
|
186
|
+
export type Option<T> = null | T | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* Makes specified keys K in T optional
|
|
189
|
+
*/
|
|
190
|
+
export type OptionalKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
191
|
+
/**
|
|
192
|
+
* Percentage value (0-100)
|
|
193
|
+
*/
|
|
194
|
+
export type Percentage = Brand<number, 'Percentage'>;
|
|
195
|
+
/**
|
|
196
|
+
* Port number (1-65535)
|
|
197
|
+
*/
|
|
198
|
+
export type Port = Brand<number, 'Port'>;
|
|
199
|
+
/**
|
|
200
|
+
* Positive number (> 0)
|
|
201
|
+
*/
|
|
202
|
+
export type PositiveNumber = Brand<number, 'PositiveNumber'>;
|
|
203
|
+
/**
|
|
204
|
+
* Makes specified keys K in T required
|
|
205
|
+
*/
|
|
206
|
+
export type RequiredKeys<T, K extends keyof T> = Required<Pick<T, K>> & T;
|
|
207
|
+
/**
|
|
208
|
+
* System resource usage
|
|
209
|
+
*/
|
|
210
|
+
export interface ResourceUsage {
|
|
211
|
+
readonly cpu: {
|
|
212
|
+
readonly system: number;
|
|
213
|
+
readonly user: number;
|
|
214
|
+
};
|
|
215
|
+
readonly memory: MemoryUsage;
|
|
216
|
+
readonly timing: TimingInfo;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Result type for operations that can fail
|
|
220
|
+
*/
|
|
221
|
+
export type Result<T, E = Error> = {
|
|
222
|
+
readonly data: T;
|
|
223
|
+
readonly success: true;
|
|
224
|
+
} | {
|
|
225
|
+
readonly error: E;
|
|
226
|
+
readonly success: false;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Run identifier
|
|
230
|
+
*/
|
|
231
|
+
export type RunId = Brand<string, 'RunId'>;
|
|
232
|
+
/**
|
|
233
|
+
* Configuration that can be serialized to JSON
|
|
234
|
+
*/
|
|
235
|
+
export type SerializableConfig = {
|
|
236
|
+
readonly [K in string]: boolean | null | number | readonly (boolean | null | number | string)[] | readonly SerializableConfig[] | SerializableConfig | string;
|
|
237
|
+
};
|
|
238
|
+
/**
|
|
239
|
+
* Serializer interface
|
|
240
|
+
*/
|
|
241
|
+
export interface Serializer<T, TSerialized = string> {
|
|
242
|
+
deserialize(serialized: TSerialized): T;
|
|
243
|
+
serialize(value: T): TSerialized;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Stream interface
|
|
247
|
+
*/
|
|
248
|
+
export interface Stream<T> extends AsyncIterable<T> {
|
|
249
|
+
filter(predicate: (value: T) => boolean): Stream<T>;
|
|
250
|
+
pipe<U>(transform: (value: T) => U): Stream<U>;
|
|
251
|
+
skip(count: number): Stream<T>;
|
|
252
|
+
take(count: number): Stream<T>;
|
|
253
|
+
toArray(): Promise<T[]>;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Suite identifier
|
|
257
|
+
*/
|
|
258
|
+
export type SuiteId = Brand<string, 'SuiteId'>;
|
|
259
|
+
/**
|
|
260
|
+
* Task identifier
|
|
261
|
+
*/
|
|
262
|
+
export type TaskId = Brand<string, 'TaskId'>;
|
|
263
|
+
/**
|
|
264
|
+
* Timing information
|
|
265
|
+
*/
|
|
266
|
+
export interface TimingInfo {
|
|
267
|
+
readonly duration: MillisecondDuration;
|
|
268
|
+
readonly end: MillisecondTimestamp;
|
|
269
|
+
readonly start: MillisecondTimestamp;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* URL brand for type safety
|
|
273
|
+
*/
|
|
274
|
+
export type Url = Brand<string, 'Url'>;
|
|
275
|
+
/**
|
|
276
|
+
* Validator interface
|
|
277
|
+
*/
|
|
278
|
+
export interface Validator<T> {
|
|
279
|
+
validate(value: unknown): value is T;
|
|
280
|
+
validateAsync(value: unknown): Promise<boolean>;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* YAML string representation
|
|
284
|
+
*/
|
|
285
|
+
export type YamlString = Brand<string, 'YamlString'>;
|
|
286
|
+
/**
|
|
287
|
+
* Type predicate for checking if value is not null or undefined
|
|
288
|
+
*/
|
|
289
|
+
export declare const isDefined: <T>(value: null | T | undefined) => value is T;
|
|
290
|
+
/**
|
|
291
|
+
* Type predicate for checking if value is a non-empty string
|
|
292
|
+
*/
|
|
293
|
+
export declare const isNonEmptyString: (value: unknown) => value is NonEmptyString;
|
|
294
|
+
/**
|
|
295
|
+
* Type predicate for checking if value is a positive number
|
|
296
|
+
*/
|
|
297
|
+
export declare const isPositiveNumber: (value: unknown) => value is PositiveNumber;
|
|
298
|
+
/**
|
|
299
|
+
* Type predicate for checking if value is a non-negative number
|
|
300
|
+
*/
|
|
301
|
+
export declare const isNonNegativeNumber: (value: unknown) => value is NonNegativeNumber;
|
|
302
|
+
/**
|
|
303
|
+
* Type predicate for checking if value is an integer
|
|
304
|
+
*/
|
|
305
|
+
export declare const isInteger: (value: unknown) => value is Integer;
|
|
306
|
+
/**
|
|
307
|
+
* Type predicate for checking if array is non-empty
|
|
308
|
+
*/
|
|
309
|
+
export declare const isNonEmptyArray: <T>(value: T[]) => value is NonEmptyArray<T>;
|
|
310
|
+
/**
|
|
311
|
+
* Creates a Result success value
|
|
312
|
+
*/
|
|
313
|
+
export declare const success: <T>(data: T) => Result<T, never>;
|
|
314
|
+
/**
|
|
315
|
+
* Creates a Result error value
|
|
316
|
+
*/
|
|
317
|
+
export declare const failure: <E>(error: E) => Result<never, E>;
|
|
318
|
+
/**
|
|
319
|
+
* Type assertion that a value is defined (throws if not)
|
|
320
|
+
*/
|
|
321
|
+
export declare const assertDefined: <T>(value: null | T | undefined, message?: string) => T;
|
|
322
|
+
/**
|
|
323
|
+
* Creates a branded type value
|
|
324
|
+
*/
|
|
325
|
+
export declare const brand: <T, TBrand extends string>(value: T) => Brand<T, TBrand>;
|
|
326
|
+
/**
|
|
327
|
+
* Removes brand from a branded type
|
|
328
|
+
*/
|
|
329
|
+
export declare const unbrand: <T, TBrand extends string>(value: Brand<T, TBrand>) => T;
|
|
330
|
+
//# sourceMappingURL=utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/types/utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModestBench Utility Types
|
|
3
|
+
*
|
|
4
|
+
* Defines utility types, helper functions, and common type transformations used
|
|
5
|
+
* throughout the ModestBench system.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Represents an async function
|
|
9
|
+
*/
|
|
10
|
+
export type AsyncCallable<TArgs extends readonly unknown[] = readonly unknown[], TReturn = unknown> = (...args: TArgs) => Promise<TReturn>;
|
|
11
|
+
/**
|
|
12
|
+
* Async iterator interface
|
|
13
|
+
*/
|
|
14
|
+
export interface AsyncIterable<T> {
|
|
15
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Tuple with at least one element
|
|
19
|
+
*/
|
|
20
|
+
export type AtLeastOne<T> = [T, ...T[]];
|
|
21
|
+
/**
|
|
22
|
+
* Branded type for creating nominal types
|
|
23
|
+
*/
|
|
24
|
+
export type Brand<T, TBrand extends string> = T & {
|
|
25
|
+
readonly __brand: TBrand;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Builder pattern interface
|
|
29
|
+
*/
|
|
30
|
+
export interface Builder<T> {
|
|
31
|
+
build(): T;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Bytes count
|
|
35
|
+
*/
|
|
36
|
+
export type Bytes = Brand<number, 'Bytes'>;
|
|
37
|
+
/**
|
|
38
|
+
* Cache interface
|
|
39
|
+
*/
|
|
40
|
+
export interface Cache<TKey = string, TValue = unknown> {
|
|
41
|
+
clear(): void;
|
|
42
|
+
delete(key: TKey): boolean;
|
|
43
|
+
get(key: TKey): Option<TValue>;
|
|
44
|
+
has(key: TKey): boolean;
|
|
45
|
+
set(key: TKey, value: TValue, ttl?: number): void;
|
|
46
|
+
size(): number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Represents a function that can be called with arguments
|
|
50
|
+
*/
|
|
51
|
+
export type Callable<TArgs extends readonly unknown[] = readonly unknown[], TReturn = unknown> = (...args: TArgs) => TReturn;
|
|
52
|
+
/**
|
|
53
|
+
* Git commit hash
|
|
54
|
+
*/
|
|
55
|
+
export type CommitHash = Brand<string, 'CommitHash'>;
|
|
56
|
+
/**
|
|
57
|
+
* Error with additional context
|
|
58
|
+
*/
|
|
59
|
+
export interface ContextualError extends Error {
|
|
60
|
+
readonly code?: string;
|
|
61
|
+
readonly context?: Record<string, unknown>;
|
|
62
|
+
readonly severity?: 'critical' | 'high' | 'low' | 'medium';
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* CSV string representation
|
|
66
|
+
*/
|
|
67
|
+
export type CsvString = Brand<string, 'CsvString'>;
|
|
68
|
+
/**
|
|
69
|
+
* Makes all properties in T deeply partial
|
|
70
|
+
*/
|
|
71
|
+
export type DeepPartial<T> = {
|
|
72
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Makes all properties in T deeply readonly
|
|
76
|
+
*/
|
|
77
|
+
export type DeepReadonly<T> = {
|
|
78
|
+
readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Directory path brand for type safety
|
|
82
|
+
*/
|
|
83
|
+
export type DirectoryPath = Brand<string, 'DirectoryPath'>;
|
|
84
|
+
/**
|
|
85
|
+
* Disposable resource interface
|
|
86
|
+
*/
|
|
87
|
+
export interface Disposable {
|
|
88
|
+
dispose(): MaybePromise<void>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Environment variable name
|
|
92
|
+
*/
|
|
93
|
+
export type EnvVar = Brand<string, 'EnvVar'>;
|
|
94
|
+
/**
|
|
95
|
+
* Event emitter interface
|
|
96
|
+
*/
|
|
97
|
+
export interface EventEmitter<TEvents extends Record<string, unknown> = Record<string, unknown>> {
|
|
98
|
+
emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
|
|
99
|
+
off<K extends keyof TEvents>(event: K, listener: EventListener<TEvents[K]>): void;
|
|
100
|
+
on<K extends keyof TEvents>(event: K, listener: EventListener<TEvents[K]>): void;
|
|
101
|
+
once<K extends keyof TEvents>(event: K, listener: EventListener<TEvents[K]>): void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Event listener function type
|
|
105
|
+
*/
|
|
106
|
+
export type EventListener<TData = unknown> = (data: TData) => MaybePromise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Factory interface for creating instances
|
|
109
|
+
*/
|
|
110
|
+
export interface Factory<T, TOptions = unknown> {
|
|
111
|
+
create(options?: TOptions): T;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* File path brand for type safety
|
|
115
|
+
*/
|
|
116
|
+
export type FilePath = Brand<string, 'FilePath'>;
|
|
117
|
+
/**
|
|
118
|
+
* Integer number
|
|
119
|
+
*/
|
|
120
|
+
export type Integer = Brand<number, 'Integer'>;
|
|
121
|
+
/**
|
|
122
|
+
* JSON string representation
|
|
123
|
+
*/
|
|
124
|
+
export type JsonString = Brand<string, 'JsonString'>;
|
|
125
|
+
/**
|
|
126
|
+
* Extracts keys from T that have values assignable to U
|
|
127
|
+
*/
|
|
128
|
+
export type KeysOfType<T, U> = {
|
|
129
|
+
[K in keyof T]: T[K] extends U ? K : never;
|
|
130
|
+
}[keyof T];
|
|
131
|
+
/**
|
|
132
|
+
* Logger interface
|
|
133
|
+
*/
|
|
134
|
+
export interface Logger {
|
|
135
|
+
debug(message: string, ...args: unknown[]): void;
|
|
136
|
+
error(message: string, ...args: unknown[]): void;
|
|
137
|
+
info(message: string, ...args: unknown[]): void;
|
|
138
|
+
trace(message: string, ...args: unknown[]): void;
|
|
139
|
+
warn(message: string, ...args: unknown[]): void;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Represents a function that may be async or sync
|
|
143
|
+
*/
|
|
144
|
+
export type MaybePromise<T> = Promise<T> | T;
|
|
145
|
+
/**
|
|
146
|
+
* Memory usage information
|
|
147
|
+
*/
|
|
148
|
+
export interface MemoryUsage {
|
|
149
|
+
readonly arrayBuffers: Bytes;
|
|
150
|
+
readonly external: Bytes;
|
|
151
|
+
readonly heapTotal: Bytes;
|
|
152
|
+
readonly heapUsed: Bytes;
|
|
153
|
+
readonly rss: Bytes;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Duration in milliseconds
|
|
157
|
+
*/
|
|
158
|
+
export type MillisecondDuration = Brand<number, 'MillisecondDuration'>;
|
|
159
|
+
/**
|
|
160
|
+
* Timestamp in milliseconds
|
|
161
|
+
*/
|
|
162
|
+
export type MillisecondTimestamp = Brand<number, 'MillisecondTimestamp'>;
|
|
163
|
+
/**
|
|
164
|
+
* Duration in nanoseconds
|
|
165
|
+
*/
|
|
166
|
+
export type NanoDuration = Brand<number, 'NanoDuration'>;
|
|
167
|
+
/**
|
|
168
|
+
* Timestamp in nanoseconds
|
|
169
|
+
*/
|
|
170
|
+
export type NanosecondTimestamp = Brand<number, 'NanoTimestamp'>;
|
|
171
|
+
/**
|
|
172
|
+
* Non-empty array type
|
|
173
|
+
*/
|
|
174
|
+
export type NonEmptyArray<T> = [T, ...T[]];
|
|
175
|
+
/**
|
|
176
|
+
* String that is not empty
|
|
177
|
+
*/
|
|
178
|
+
export type NonEmptyString = Brand<string, 'NonEmptyString'>;
|
|
179
|
+
/**
|
|
180
|
+
* Non-negative number (>= 0)
|
|
181
|
+
*/
|
|
182
|
+
export type NonNegativeNumber = Brand<number, 'NonNegativeNumber'>;
|
|
183
|
+
/**
|
|
184
|
+
* Option type for values that may not exist
|
|
185
|
+
*/
|
|
186
|
+
export type Option<T> = null | T | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* Makes specified keys K in T optional
|
|
189
|
+
*/
|
|
190
|
+
export type OptionalKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
191
|
+
/**
|
|
192
|
+
* Percentage value (0-100)
|
|
193
|
+
*/
|
|
194
|
+
export type Percentage = Brand<number, 'Percentage'>;
|
|
195
|
+
/**
|
|
196
|
+
* Port number (1-65535)
|
|
197
|
+
*/
|
|
198
|
+
export type Port = Brand<number, 'Port'>;
|
|
199
|
+
/**
|
|
200
|
+
* Positive number (> 0)
|
|
201
|
+
*/
|
|
202
|
+
export type PositiveNumber = Brand<number, 'PositiveNumber'>;
|
|
203
|
+
/**
|
|
204
|
+
* Makes specified keys K in T required
|
|
205
|
+
*/
|
|
206
|
+
export type RequiredKeys<T, K extends keyof T> = Required<Pick<T, K>> & T;
|
|
207
|
+
/**
|
|
208
|
+
* System resource usage
|
|
209
|
+
*/
|
|
210
|
+
export interface ResourceUsage {
|
|
211
|
+
readonly cpu: {
|
|
212
|
+
readonly system: number;
|
|
213
|
+
readonly user: number;
|
|
214
|
+
};
|
|
215
|
+
readonly memory: MemoryUsage;
|
|
216
|
+
readonly timing: TimingInfo;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Result type for operations that can fail
|
|
220
|
+
*/
|
|
221
|
+
export type Result<T, E = Error> = {
|
|
222
|
+
readonly data: T;
|
|
223
|
+
readonly success: true;
|
|
224
|
+
} | {
|
|
225
|
+
readonly error: E;
|
|
226
|
+
readonly success: false;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Run identifier
|
|
230
|
+
*/
|
|
231
|
+
export type RunId = Brand<string, 'RunId'>;
|
|
232
|
+
/**
|
|
233
|
+
* Configuration that can be serialized to JSON
|
|
234
|
+
*/
|
|
235
|
+
export type SerializableConfig = {
|
|
236
|
+
readonly [K in string]: boolean | null | number | readonly (boolean | null | number | string)[] | readonly SerializableConfig[] | SerializableConfig | string;
|
|
237
|
+
};
|
|
238
|
+
/**
|
|
239
|
+
* Serializer interface
|
|
240
|
+
*/
|
|
241
|
+
export interface Serializer<T, TSerialized = string> {
|
|
242
|
+
deserialize(serialized: TSerialized): T;
|
|
243
|
+
serialize(value: T): TSerialized;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Stream interface
|
|
247
|
+
*/
|
|
248
|
+
export interface Stream<T> extends AsyncIterable<T> {
|
|
249
|
+
filter(predicate: (value: T) => boolean): Stream<T>;
|
|
250
|
+
pipe<U>(transform: (value: T) => U): Stream<U>;
|
|
251
|
+
skip(count: number): Stream<T>;
|
|
252
|
+
take(count: number): Stream<T>;
|
|
253
|
+
toArray(): Promise<T[]>;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Suite identifier
|
|
257
|
+
*/
|
|
258
|
+
export type SuiteId = Brand<string, 'SuiteId'>;
|
|
259
|
+
/**
|
|
260
|
+
* Task identifier
|
|
261
|
+
*/
|
|
262
|
+
export type TaskId = Brand<string, 'TaskId'>;
|
|
263
|
+
/**
|
|
264
|
+
* Timing information
|
|
265
|
+
*/
|
|
266
|
+
export interface TimingInfo {
|
|
267
|
+
readonly duration: MillisecondDuration;
|
|
268
|
+
readonly end: MillisecondTimestamp;
|
|
269
|
+
readonly start: MillisecondTimestamp;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* URL brand for type safety
|
|
273
|
+
*/
|
|
274
|
+
export type Url = Brand<string, 'Url'>;
|
|
275
|
+
/**
|
|
276
|
+
* Validator interface
|
|
277
|
+
*/
|
|
278
|
+
export interface Validator<T> {
|
|
279
|
+
validate(value: unknown): value is T;
|
|
280
|
+
validateAsync(value: unknown): Promise<boolean>;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* YAML string representation
|
|
284
|
+
*/
|
|
285
|
+
export type YamlString = Brand<string, 'YamlString'>;
|
|
286
|
+
/**
|
|
287
|
+
* Type predicate for checking if value is not null or undefined
|
|
288
|
+
*/
|
|
289
|
+
export declare const isDefined: <T>(value: null | T | undefined) => value is T;
|
|
290
|
+
/**
|
|
291
|
+
* Type predicate for checking if value is a non-empty string
|
|
292
|
+
*/
|
|
293
|
+
export declare const isNonEmptyString: (value: unknown) => value is NonEmptyString;
|
|
294
|
+
/**
|
|
295
|
+
* Type predicate for checking if value is a positive number
|
|
296
|
+
*/
|
|
297
|
+
export declare const isPositiveNumber: (value: unknown) => value is PositiveNumber;
|
|
298
|
+
/**
|
|
299
|
+
* Type predicate for checking if value is a non-negative number
|
|
300
|
+
*/
|
|
301
|
+
export declare const isNonNegativeNumber: (value: unknown) => value is NonNegativeNumber;
|
|
302
|
+
/**
|
|
303
|
+
* Type predicate for checking if value is an integer
|
|
304
|
+
*/
|
|
305
|
+
export declare const isInteger: (value: unknown) => value is Integer;
|
|
306
|
+
/**
|
|
307
|
+
* Type predicate for checking if array is non-empty
|
|
308
|
+
*/
|
|
309
|
+
export declare const isNonEmptyArray: <T>(value: T[]) => value is NonEmptyArray<T>;
|
|
310
|
+
/**
|
|
311
|
+
* Creates a Result success value
|
|
312
|
+
*/
|
|
313
|
+
export declare const success: <T>(data: T) => Result<T, never>;
|
|
314
|
+
/**
|
|
315
|
+
* Creates a Result error value
|
|
316
|
+
*/
|
|
317
|
+
export declare const failure: <E>(error: E) => Result<never, E>;
|
|
318
|
+
/**
|
|
319
|
+
* Type assertion that a value is defined (throws if not)
|
|
320
|
+
*/
|
|
321
|
+
export declare const assertDefined: <T>(value: null | T | undefined, message?: string) => T;
|
|
322
|
+
/**
|
|
323
|
+
* Creates a branded type value
|
|
324
|
+
*/
|
|
325
|
+
export declare const brand: <T, TBrand extends string>(value: T) => Brand<T, TBrand>;
|
|
326
|
+
/**
|
|
327
|
+
* Removes brand from a branded type
|
|
328
|
+
*/
|
|
329
|
+
export declare const unbrand: <T, TBrand extends string>(value: Brand<T, TBrand>) => T;
|
|
330
|
+
//# sourceMappingURL=utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/types/utility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,CACvB,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EACrD,OAAO,GAAG,OAAO,IACf,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,KAAK,CAAC,IAAI,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO;IACpD,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC;IACxB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,IAAI,IAAI,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAClB,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EACrD,OAAO,GAAG,OAAO,IACf,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACzE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY,CAC3B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjE,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChE,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EACzB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAClC,IAAI,CAAC;IACR,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EACxB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAClC,IAAI,CAAC;IACR,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAC1B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAClC,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,GAAG,OAAO,IAAI,CAC3C,IAAI,EAAE,KAAK,KACR,YAAY,CAAC,IAAI,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAC5C,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI;KAC5B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;CAC3C,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,CAAC,IAAI,MAAM,GACjB,OAAO,GACP,IAAI,GACJ,MAAM,GACN,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,SAAS,kBAAkB,EAAE,GAC7B,kBAAkB,GAClB,MAAM;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;IACjD,WAAW,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC;IACrC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,SAAS,KAAG,KAAK,IAAI,CAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAE1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAE1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,OAAO,KACb,KAAK,IAAI,iBAEX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAEnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAEvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAGlD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAGnD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,OAAO,IAAI,GAAG,CAAC,GAAG,SAAS,EAC3B,UAAU,MAAM,KACf,CAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,OAAO,CAAC,KAAG,KAAK,CAAC,CAAC,EAAE,MAAM,CAEzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,MAAM,SAAS,MAAM,EAC9C,OAAO,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KACtB,CAEF,CAAC"}
|