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.
Files changed (275) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE.md +55 -0
  3. package/README.md +699 -0
  4. package/dist/bootstrap.cjs +37 -0
  5. package/dist/bootstrap.cjs.map +1 -0
  6. package/dist/bootstrap.d.cts +17 -0
  7. package/dist/bootstrap.d.cts.map +1 -0
  8. package/dist/bootstrap.d.ts +17 -0
  9. package/dist/bootstrap.d.ts.map +1 -0
  10. package/dist/bootstrap.js +33 -0
  11. package/dist/bootstrap.js.map +1 -0
  12. package/dist/cli/commands/history.cjs +459 -0
  13. package/dist/cli/commands/history.cjs.map +1 -0
  14. package/dist/cli/commands/history.d.cts +34 -0
  15. package/dist/cli/commands/history.d.cts.map +1 -0
  16. package/dist/cli/commands/history.d.ts +34 -0
  17. package/dist/cli/commands/history.d.ts.map +1 -0
  18. package/dist/cli/commands/history.js +422 -0
  19. package/dist/cli/commands/history.js.map +1 -0
  20. package/dist/cli/commands/init.cjs +566 -0
  21. package/dist/cli/commands/init.cjs.map +1 -0
  22. package/dist/cli/commands/init.d.cts +26 -0
  23. package/dist/cli/commands/init.d.cts.map +1 -0
  24. package/dist/cli/commands/init.d.ts +26 -0
  25. package/dist/cli/commands/init.d.ts.map +1 -0
  26. package/dist/cli/commands/init.js +562 -0
  27. package/dist/cli/commands/init.js.map +1 -0
  28. package/dist/cli/commands/run.cjs +285 -0
  29. package/dist/cli/commands/run.cjs.map +1 -0
  30. package/dist/cli/commands/run.d.cts +37 -0
  31. package/dist/cli/commands/run.d.cts.map +1 -0
  32. package/dist/cli/commands/run.d.ts +37 -0
  33. package/dist/cli/commands/run.d.ts.map +1 -0
  34. package/dist/cli/commands/run.js +248 -0
  35. package/dist/cli/commands/run.js.map +1 -0
  36. package/dist/cli/index.cjs +523 -0
  37. package/dist/cli/index.cjs.map +1 -0
  38. package/dist/cli/index.d.cts +58 -0
  39. package/dist/cli/index.d.cts.map +1 -0
  40. package/dist/cli/index.d.ts +58 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +515 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/config/manager.cjs +370 -0
  45. package/dist/config/manager.cjs.map +1 -0
  46. package/dist/config/manager.d.cts +46 -0
  47. package/dist/config/manager.d.cts.map +1 -0
  48. package/dist/config/manager.d.ts +46 -0
  49. package/dist/config/manager.d.ts.map +1 -0
  50. package/dist/config/manager.js +333 -0
  51. package/dist/config/manager.js.map +1 -0
  52. package/dist/config/schema.cjs +182 -0
  53. package/dist/config/schema.cjs.map +1 -0
  54. package/dist/config/schema.d.cts +51 -0
  55. package/dist/config/schema.d.cts.map +1 -0
  56. package/dist/config/schema.d.ts +51 -0
  57. package/dist/config/schema.d.ts.map +1 -0
  58. package/dist/config/schema.js +145 -0
  59. package/dist/config/schema.js.map +1 -0
  60. package/dist/constants.cjs +22 -0
  61. package/dist/constants.cjs.map +1 -0
  62. package/dist/constants.d.cts +10 -0
  63. package/dist/constants.d.cts.map +1 -0
  64. package/dist/constants.d.ts +10 -0
  65. package/dist/constants.d.ts.map +1 -0
  66. package/dist/constants.js +19 -0
  67. package/dist/constants.js.map +1 -0
  68. package/dist/core/benchmark-schema.cjs +135 -0
  69. package/dist/core/benchmark-schema.cjs.map +1 -0
  70. package/dist/core/benchmark-schema.d.cts +139 -0
  71. package/dist/core/benchmark-schema.d.cts.map +1 -0
  72. package/dist/core/benchmark-schema.d.ts +139 -0
  73. package/dist/core/benchmark-schema.d.ts.map +1 -0
  74. package/dist/core/benchmark-schema.js +132 -0
  75. package/dist/core/benchmark-schema.js.map +1 -0
  76. package/dist/core/engine.cjs +669 -0
  77. package/dist/core/engine.cjs.map +1 -0
  78. package/dist/core/engine.d.cts +128 -0
  79. package/dist/core/engine.d.cts.map +1 -0
  80. package/dist/core/engine.d.ts +128 -0
  81. package/dist/core/engine.d.ts.map +1 -0
  82. package/dist/core/engine.js +632 -0
  83. package/dist/core/engine.js.map +1 -0
  84. package/dist/core/engines/accurate-engine.cjs +292 -0
  85. package/dist/core/engines/accurate-engine.cjs.map +1 -0
  86. package/dist/core/engines/accurate-engine.d.cts +63 -0
  87. package/dist/core/engines/accurate-engine.d.cts.map +1 -0
  88. package/dist/core/engines/accurate-engine.d.ts +63 -0
  89. package/dist/core/engines/accurate-engine.d.ts.map +1 -0
  90. package/dist/core/engines/accurate-engine.js +288 -0
  91. package/dist/core/engines/accurate-engine.js.map +1 -0
  92. package/dist/core/engines/index.cjs +21 -0
  93. package/dist/core/engines/index.cjs.map +1 -0
  94. package/dist/core/engines/index.d.cts +16 -0
  95. package/dist/core/engines/index.d.cts.map +1 -0
  96. package/dist/core/engines/index.d.ts +16 -0
  97. package/dist/core/engines/index.d.ts.map +1 -0
  98. package/dist/core/engines/index.js +16 -0
  99. package/dist/core/engines/index.js.map +1 -0
  100. package/dist/core/engines/tinybench-engine.cjs +286 -0
  101. package/dist/core/engines/tinybench-engine.cjs.map +1 -0
  102. package/dist/core/engines/tinybench-engine.d.cts +18 -0
  103. package/dist/core/engines/tinybench-engine.d.cts.map +1 -0
  104. package/dist/core/engines/tinybench-engine.d.ts +18 -0
  105. package/dist/core/engines/tinybench-engine.d.ts.map +1 -0
  106. package/dist/core/engines/tinybench-engine.js +282 -0
  107. package/dist/core/engines/tinybench-engine.js.map +1 -0
  108. package/dist/core/error-manager.cjs +303 -0
  109. package/dist/core/error-manager.cjs.map +1 -0
  110. package/dist/core/error-manager.d.cts +77 -0
  111. package/dist/core/error-manager.d.cts.map +1 -0
  112. package/dist/core/error-manager.d.ts +77 -0
  113. package/dist/core/error-manager.d.ts.map +1 -0
  114. package/dist/core/error-manager.js +299 -0
  115. package/dist/core/error-manager.js.map +1 -0
  116. package/dist/core/loader.cjs +287 -0
  117. package/dist/core/loader.cjs.map +1 -0
  118. package/dist/core/loader.d.cts +55 -0
  119. package/dist/core/loader.d.cts.map +1 -0
  120. package/dist/core/loader.d.ts +55 -0
  121. package/dist/core/loader.d.ts.map +1 -0
  122. package/dist/core/loader.js +250 -0
  123. package/dist/core/loader.js.map +1 -0
  124. package/dist/core/stats-utils.cjs +99 -0
  125. package/dist/core/stats-utils.cjs.map +1 -0
  126. package/dist/core/stats-utils.d.cts +50 -0
  127. package/dist/core/stats-utils.d.cts.map +1 -0
  128. package/dist/core/stats-utils.d.ts +50 -0
  129. package/dist/core/stats-utils.d.ts.map +1 -0
  130. package/dist/core/stats-utils.js +94 -0
  131. package/dist/core/stats-utils.js.map +1 -0
  132. package/dist/index.cjs +64 -0
  133. package/dist/index.cjs.map +1 -0
  134. package/dist/index.d.cts +22 -0
  135. package/dist/index.d.cts.map +1 -0
  136. package/dist/index.d.ts +22 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +30 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/progress/manager.cjs +325 -0
  141. package/dist/progress/manager.cjs.map +1 -0
  142. package/dist/progress/manager.d.cts +125 -0
  143. package/dist/progress/manager.d.cts.map +1 -0
  144. package/dist/progress/manager.d.ts +125 -0
  145. package/dist/progress/manager.d.ts.map +1 -0
  146. package/dist/progress/manager.js +321 -0
  147. package/dist/progress/manager.js.map +1 -0
  148. package/dist/reporters/csv.cjs +250 -0
  149. package/dist/reporters/csv.cjs.map +1 -0
  150. package/dist/reporters/csv.d.cts +92 -0
  151. package/dist/reporters/csv.d.cts.map +1 -0
  152. package/dist/reporters/csv.d.ts +92 -0
  153. package/dist/reporters/csv.d.ts.map +1 -0
  154. package/dist/reporters/csv.js +246 -0
  155. package/dist/reporters/csv.js.map +1 -0
  156. package/dist/reporters/human.cjs +516 -0
  157. package/dist/reporters/human.cjs.map +1 -0
  158. package/dist/reporters/human.d.cts +86 -0
  159. package/dist/reporters/human.d.cts.map +1 -0
  160. package/dist/reporters/human.d.ts +86 -0
  161. package/dist/reporters/human.d.ts.map +1 -0
  162. package/dist/reporters/human.js +509 -0
  163. package/dist/reporters/human.js.map +1 -0
  164. package/dist/reporters/index.cjs +17 -0
  165. package/dist/reporters/index.cjs.map +1 -0
  166. package/dist/reporters/index.d.cts +10 -0
  167. package/dist/reporters/index.d.cts.map +1 -0
  168. package/dist/reporters/index.d.ts +10 -0
  169. package/dist/reporters/index.d.ts.map +1 -0
  170. package/dist/reporters/index.js +10 -0
  171. package/dist/reporters/index.js.map +1 -0
  172. package/dist/reporters/json.cjs +215 -0
  173. package/dist/reporters/json.cjs.map +1 -0
  174. package/dist/reporters/json.d.cts +79 -0
  175. package/dist/reporters/json.d.cts.map +1 -0
  176. package/dist/reporters/json.d.ts +79 -0
  177. package/dist/reporters/json.d.ts.map +1 -0
  178. package/dist/reporters/json.js +211 -0
  179. package/dist/reporters/json.js.map +1 -0
  180. package/dist/reporters/registry.cjs +255 -0
  181. package/dist/reporters/registry.cjs.map +1 -0
  182. package/dist/reporters/registry.d.cts +155 -0
  183. package/dist/reporters/registry.d.cts.map +1 -0
  184. package/dist/reporters/registry.d.ts +155 -0
  185. package/dist/reporters/registry.d.ts.map +1 -0
  186. package/dist/reporters/registry.js +249 -0
  187. package/dist/reporters/registry.js.map +1 -0
  188. package/dist/reporters/simple.cjs +328 -0
  189. package/dist/reporters/simple.cjs.map +1 -0
  190. package/dist/reporters/simple.d.cts +51 -0
  191. package/dist/reporters/simple.d.cts.map +1 -0
  192. package/dist/reporters/simple.d.ts +51 -0
  193. package/dist/reporters/simple.d.ts.map +1 -0
  194. package/dist/reporters/simple.js +321 -0
  195. package/dist/reporters/simple.js.map +1 -0
  196. package/dist/schema/modestbench-config.schema.json +162 -0
  197. package/dist/storage/history.cjs +456 -0
  198. package/dist/storage/history.cjs.map +1 -0
  199. package/dist/storage/history.d.cts +99 -0
  200. package/dist/storage/history.d.cts.map +1 -0
  201. package/dist/storage/history.d.ts +99 -0
  202. package/dist/storage/history.d.ts.map +1 -0
  203. package/dist/storage/history.js +452 -0
  204. package/dist/storage/history.js.map +1 -0
  205. package/dist/types/cli.cjs +21 -0
  206. package/dist/types/cli.cjs.map +1 -0
  207. package/dist/types/cli.d.cts +296 -0
  208. package/dist/types/cli.d.cts.map +1 -0
  209. package/dist/types/cli.d.ts +296 -0
  210. package/dist/types/cli.d.ts.map +1 -0
  211. package/dist/types/cli.js +18 -0
  212. package/dist/types/cli.js.map +1 -0
  213. package/dist/types/core.cjs +14 -0
  214. package/dist/types/core.cjs.map +1 -0
  215. package/dist/types/core.d.cts +380 -0
  216. package/dist/types/core.d.cts.map +1 -0
  217. package/dist/types/core.d.ts +380 -0
  218. package/dist/types/core.d.ts.map +1 -0
  219. package/dist/types/core.js +13 -0
  220. package/dist/types/core.js.map +1 -0
  221. package/dist/types/index.cjs +27 -0
  222. package/dist/types/index.cjs.map +1 -0
  223. package/dist/types/index.d.cts +11 -0
  224. package/dist/types/index.d.cts.map +1 -0
  225. package/dist/types/index.d.ts +11 -0
  226. package/dist/types/index.d.ts.map +1 -0
  227. package/dist/types/index.js +11 -0
  228. package/dist/types/index.js.map +1 -0
  229. package/dist/types/interfaces.cjs +10 -0
  230. package/dist/types/interfaces.cjs.map +1 -0
  231. package/dist/types/interfaces.d.cts +381 -0
  232. package/dist/types/interfaces.d.cts.map +1 -0
  233. package/dist/types/interfaces.d.ts +381 -0
  234. package/dist/types/interfaces.d.ts.map +1 -0
  235. package/dist/types/interfaces.js +9 -0
  236. package/dist/types/interfaces.js.map +1 -0
  237. package/dist/types/utility.cjs +92 -0
  238. package/dist/types/utility.cjs.map +1 -0
  239. package/dist/types/utility.d.cts +330 -0
  240. package/dist/types/utility.d.cts.map +1 -0
  241. package/dist/types/utility.d.ts +330 -0
  242. package/dist/types/utility.d.ts.map +1 -0
  243. package/dist/types/utility.js +78 -0
  244. package/dist/types/utility.js.map +1 -0
  245. package/package.json +211 -0
  246. package/src/bootstrap.ts +35 -0
  247. package/src/cli/commands/history.ts +569 -0
  248. package/src/cli/commands/init.ts +658 -0
  249. package/src/cli/commands/run.ts +346 -0
  250. package/src/cli/index.ts +642 -0
  251. package/src/config/manager.ts +387 -0
  252. package/src/config/schema.ts +188 -0
  253. package/src/constants.ts +21 -0
  254. package/src/core/benchmark-schema.ts +185 -0
  255. package/src/core/engine.ts +888 -0
  256. package/src/core/engines/accurate-engine.ts +408 -0
  257. package/src/core/engines/index.ts +16 -0
  258. package/src/core/engines/tinybench-engine.ts +335 -0
  259. package/src/core/error-manager.ts +372 -0
  260. package/src/core/loader.ts +324 -0
  261. package/src/core/stats-utils.ts +135 -0
  262. package/src/index.ts +46 -0
  263. package/src/progress/manager.ts +415 -0
  264. package/src/reporters/csv.ts +368 -0
  265. package/src/reporters/human.ts +707 -0
  266. package/src/reporters/index.ts +10 -0
  267. package/src/reporters/json.ts +302 -0
  268. package/src/reporters/registry.ts +349 -0
  269. package/src/reporters/simple.ts +459 -0
  270. package/src/storage/history.ts +600 -0
  271. package/src/types/cli.ts +312 -0
  272. package/src/types/core.ts +414 -0
  273. package/src/types/index.ts +18 -0
  274. package/src/types/interfaces.ts +451 -0
  275. 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":"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"}