@untestutils/perf 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/dist/average.d.mts +4 -0
  3. package/dist/average.d.ts +5 -0
  4. package/dist/average.d.ts.map +1 -0
  5. package/dist/average.mjs +92 -0
  6. package/dist/build.d.mts +2 -0
  7. package/dist/build.d.ts +3 -0
  8. package/dist/build.d.ts.map +1 -0
  9. package/dist/build.mjs +69 -0
  10. package/dist/bundle.d.mts +2 -0
  11. package/dist/bundle.d.ts +3 -0
  12. package/dist/bundle.d.ts.map +1 -0
  13. package/dist/bundle.mjs +42 -0
  14. package/dist/define.d.mts +2 -0
  15. package/dist/define.d.ts +3 -0
  16. package/dist/define.d.ts.map +1 -0
  17. package/dist/define.mjs +3 -0
  18. package/dist/format.d.mts +2 -0
  19. package/dist/format.d.ts +3 -0
  20. package/dist/format.d.ts.map +1 -0
  21. package/dist/format.mjs +15 -0
  22. package/dist/index.d.mts +17 -0
  23. package/dist/index.d.ts +18 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.mjs +15 -0
  26. package/dist/load/artillery.d.mts +10 -0
  27. package/dist/load/artillery.d.ts +11 -0
  28. package/dist/load/artillery.d.ts.map +1 -0
  29. package/dist/load/artillery.mjs +77 -0
  30. package/dist/load/autocannon.d.mts +9 -0
  31. package/dist/load/autocannon.d.ts +10 -0
  32. package/dist/load/autocannon.d.ts.map +1 -0
  33. package/dist/load/autocannon.mjs +96 -0
  34. package/dist/load/index.d.mts +7 -0
  35. package/dist/load/index.d.ts +8 -0
  36. package/dist/load/index.d.ts.map +1 -0
  37. package/dist/load/index.mjs +48 -0
  38. package/dist/load/parse.d.mts +5 -0
  39. package/dist/load/parse.d.ts +6 -0
  40. package/dist/load/parse.d.ts.map +1 -0
  41. package/dist/load/parse.mjs +8 -0
  42. package/dist/process-sample.d.ts +31 -0
  43. package/dist/process-sample.d.ts.map +1 -0
  44. package/dist/process-sample.mjs +64 -0
  45. package/dist/report/console.d.mts +2 -0
  46. package/dist/report/console.d.ts +3 -0
  47. package/dist/report/console.d.ts.map +1 -0
  48. package/dist/report/console.mjs +25 -0
  49. package/dist/report/json.d.mts +4 -0
  50. package/dist/report/json.d.ts +5 -0
  51. package/dist/report/json.d.ts.map +1 -0
  52. package/dist/report/json.mjs +19 -0
  53. package/dist/run.d.mts +5 -0
  54. package/dist/run.d.ts +6 -0
  55. package/dist/run.d.ts.map +1 -0
  56. package/dist/run.mjs +88 -0
  57. package/dist/start.d.ts +12 -0
  58. package/dist/start.d.ts.map +1 -0
  59. package/dist/start.mjs +114 -0
  60. package/dist/thresholds.d.mts +8 -0
  61. package/dist/thresholds.d.ts +9 -0
  62. package/dist/thresholds.d.ts.map +1 -0
  63. package/dist/thresholds.mjs +48 -0
  64. package/dist/types.d.mts +172 -0
  65. package/dist/types.d.ts +173 -0
  66. package/dist/types.d.ts.map +1 -0
  67. package/dist/types.mjs +1 -0
  68. package/package.json +60 -0
@@ -0,0 +1,172 @@
1
+ export type BundleClass = "code" | "asset" | "other";
2
+ export type BundleSize = {
3
+ total: number;
4
+ code: number;
5
+ asset: number;
6
+ other: number;
7
+ /** Per top-level dir name → bytes */
8
+ byDir: Record<string, number>;
9
+ };
10
+ export type ProcessMetrics = {
11
+ maxMemoryMb: number;
12
+ minMemoryMb: number;
13
+ avgMemoryMb: number;
14
+ maxCpuPct: number;
15
+ minCpuPct: number;
16
+ avgCpuPct: number;
17
+ };
18
+ export type AutocannonResult = {
19
+ requests: {
20
+ average: number;
21
+ mean: number;
22
+ total: number;
23
+ };
24
+ latency: {
25
+ average: number;
26
+ mean: number;
27
+ min: number;
28
+ max: number;
29
+ p50: number;
30
+ p97_5: number;
31
+ p99: number;
32
+ };
33
+ throughput: {
34
+ average: number;
35
+ };
36
+ errors: number;
37
+ };
38
+ export type ArtillerySummary = {
39
+ min: number;
40
+ max: number;
41
+ count: number;
42
+ mean: number;
43
+ p50: number;
44
+ median: number;
45
+ p75: number;
46
+ p90: number;
47
+ p95: number;
48
+ p99: number;
49
+ p999: number;
50
+ };
51
+ export type ArtilleryResult = {
52
+ aggregate: {
53
+ counters: Record<string, number | undefined>;
54
+ rates: Record<string, number | undefined>;
55
+ firstMetricAt: number;
56
+ lastMetricAt: number;
57
+ summaries: Record<string, ArtillerySummary>;
58
+ histograms: Record<string, ArtillerySummary>;
59
+ };
60
+ intermediate?: Array<{
61
+ counters: Record<string, number>;
62
+ rates: Record<string, number | null | undefined>;
63
+ period?: string;
64
+ summaries?: Record<string, ArtillerySummary>;
65
+ histograms?: Record<string, ArtillerySummary>;
66
+ }>;
67
+ };
68
+ export type BuildMetrics = ProcessMetrics & {
69
+ buildTimeSec: number;
70
+ bundle?: BundleSize;
71
+ };
72
+ export type LoadMetrics = ProcessMetrics & {
73
+ durationSec?: number;
74
+ responseTimeAvg?: number;
75
+ responseTimeMin?: number;
76
+ responseTimeMax?: number;
77
+ responseTimeP50?: number;
78
+ responseTimeP95?: number;
79
+ responseTimeP99?: number;
80
+ requestsPerSecond?: number;
81
+ errorRate?: number;
82
+ autocannon?: AutocannonResult;
83
+ artillery?: ArtilleryResult;
84
+ };
85
+ export type PerfTargetResult = {
86
+ id: string;
87
+ label: string;
88
+ build: BuildMetrics;
89
+ load?: LoadMetrics;
90
+ };
91
+ export type SpawnSpec = {
92
+ command: string;
93
+ args?: string[];
94
+ cwd?: string;
95
+ env?: Record<string, string>;
96
+ };
97
+ export type PerfTargetBuild = SpawnSpec & {
98
+ /** Filter stdout lines to log (default: high-signal only) */
99
+ logFilter?: (line: string) => boolean;
100
+ };
101
+ export type PerfTargetStart = SpawnSpec & {
102
+ port: number;
103
+ host?: string;
104
+ readyPath?: string;
105
+ readyTimeoutMs?: number;
106
+ };
107
+ export type PerfTargetLoad = {
108
+ /** Paths for documentation / future multi-url; autocannon hits base URL */
109
+ paths?: string[];
110
+ /** `true` = defaults; object = overrides. Omitted = skip autocannon. */
111
+ autocannon?: boolean | {
112
+ connections?: number;
113
+ durationSec?: number;
114
+ };
115
+ artillery?: {
116
+ config: string;
117
+ };
118
+ };
119
+ export type PerfTargetBundle = {
120
+ /** Absolute or root-relative dirs to walk after build */
121
+ dirs: string[];
122
+ classify?: (absPath: string) => BundleClass;
123
+ };
124
+ export type PerfTarget = {
125
+ id: string;
126
+ label?: string;
127
+ root: string;
128
+ build: PerfTargetBuild;
129
+ start: PerfTargetStart;
130
+ load?: PerfTargetLoad;
131
+ bundle?: PerfTargetBundle;
132
+ };
133
+ export type PerfReporterContext = {
134
+ suite: PerfSuite;
135
+ results: PerfTargetResult[];
136
+ runs: number;
137
+ skipLoad: boolean;
138
+ };
139
+ export type PerfReporter = {
140
+ name: string;
141
+ onStart?: (suite: PerfSuite) => void | Promise<void>;
142
+ onTarget?: (result: PerfTargetResult) => void | Promise<void>;
143
+ onEnd?: (ctx: PerfReporterContext) => void | Promise<void>;
144
+ };
145
+ export type PerfThresholds = {
146
+ buildTimeSec?: number;
147
+ maxMemoryMb?: number;
148
+ requestsPerSecond?: number;
149
+ responseTimeP95?: number;
150
+ errorRate?: number;
151
+ };
152
+ export type PerfSuite = {
153
+ /** Absolute or cwd-relative output for JSON / temp load artifacts */
154
+ artifactsDir?: string;
155
+ runs?: number;
156
+ skipLoad?: boolean;
157
+ coolDownMs?: number;
158
+ targets: PerfTarget[];
159
+ beforeAll?: (suite: PerfSuite) => void | Promise<void>;
160
+ beforeTarget?: (target: PerfTarget) => void | Promise<void>;
161
+ afterTarget?: (target: PerfTarget, result: PerfTargetResult) => void | Promise<void>;
162
+ reporters?: PerfReporter[];
163
+ thresholds?: PerfThresholds;
164
+ /** Select subset by id or label prefix */
165
+ only?: string | string[];
166
+ };
167
+ export type RunPerfOptions = {
168
+ runs?: number;
169
+ skipLoad?: boolean;
170
+ only?: string | string[];
171
+ json?: boolean;
172
+ };
@@ -0,0 +1,173 @@
1
+ export type BundleClass = 'code' | 'asset' | 'other';
2
+ export type BundleSize = {
3
+ total: number;
4
+ code: number;
5
+ asset: number;
6
+ other: number;
7
+ /** Per top-level dir name → bytes */
8
+ byDir: Record<string, number>;
9
+ };
10
+ export type ProcessMetrics = {
11
+ maxMemoryMb: number;
12
+ minMemoryMb: number;
13
+ avgMemoryMb: number;
14
+ maxCpuPct: number;
15
+ minCpuPct: number;
16
+ avgCpuPct: number;
17
+ };
18
+ export type AutocannonResult = {
19
+ requests: {
20
+ average: number;
21
+ mean: number;
22
+ total: number;
23
+ };
24
+ latency: {
25
+ average: number;
26
+ mean: number;
27
+ min: number;
28
+ max: number;
29
+ p50: number;
30
+ p97_5: number;
31
+ p99: number;
32
+ };
33
+ throughput: {
34
+ average: number;
35
+ };
36
+ errors: number;
37
+ };
38
+ export type ArtillerySummary = {
39
+ min: number;
40
+ max: number;
41
+ count: number;
42
+ mean: number;
43
+ p50: number;
44
+ median: number;
45
+ p75: number;
46
+ p90: number;
47
+ p95: number;
48
+ p99: number;
49
+ p999: number;
50
+ };
51
+ export type ArtilleryResult = {
52
+ aggregate: {
53
+ counters: Record<string, number | undefined>;
54
+ rates: Record<string, number | undefined>;
55
+ firstMetricAt: number;
56
+ lastMetricAt: number;
57
+ summaries: Record<string, ArtillerySummary>;
58
+ histograms: Record<string, ArtillerySummary>;
59
+ };
60
+ intermediate?: Array<{
61
+ counters: Record<string, number>;
62
+ rates: Record<string, number | null | undefined>;
63
+ period?: string;
64
+ summaries?: Record<string, ArtillerySummary>;
65
+ histograms?: Record<string, ArtillerySummary>;
66
+ }>;
67
+ };
68
+ export type BuildMetrics = ProcessMetrics & {
69
+ buildTimeSec: number;
70
+ bundle?: BundleSize;
71
+ };
72
+ export type LoadMetrics = ProcessMetrics & {
73
+ durationSec?: number;
74
+ responseTimeAvg?: number;
75
+ responseTimeMin?: number;
76
+ responseTimeMax?: number;
77
+ responseTimeP50?: number;
78
+ responseTimeP95?: number;
79
+ responseTimeP99?: number;
80
+ requestsPerSecond?: number;
81
+ errorRate?: number;
82
+ autocannon?: AutocannonResult;
83
+ artillery?: ArtilleryResult;
84
+ };
85
+ export type PerfTargetResult = {
86
+ id: string;
87
+ label: string;
88
+ build: BuildMetrics;
89
+ load?: LoadMetrics;
90
+ };
91
+ export type SpawnSpec = {
92
+ command: string;
93
+ args?: string[];
94
+ cwd?: string;
95
+ env?: Record<string, string>;
96
+ };
97
+ export type PerfTargetBuild = SpawnSpec & {
98
+ /** Filter stdout lines to log (default: high-signal only) */
99
+ logFilter?: (line: string) => boolean;
100
+ };
101
+ export type PerfTargetStart = SpawnSpec & {
102
+ port: number;
103
+ host?: string;
104
+ readyPath?: string;
105
+ readyTimeoutMs?: number;
106
+ };
107
+ export type PerfTargetLoad = {
108
+ /** Paths for documentation / future multi-url; autocannon hits base URL */
109
+ paths?: string[];
110
+ /** `true` = defaults; object = overrides. Omitted = skip autocannon. */
111
+ autocannon?: boolean | {
112
+ connections?: number;
113
+ durationSec?: number;
114
+ };
115
+ artillery?: {
116
+ config: string;
117
+ };
118
+ };
119
+ export type PerfTargetBundle = {
120
+ /** Absolute or root-relative dirs to walk after build */
121
+ dirs: string[];
122
+ classify?: (absPath: string) => BundleClass;
123
+ };
124
+ export type PerfTarget = {
125
+ id: string;
126
+ label?: string;
127
+ root: string;
128
+ build: PerfTargetBuild;
129
+ start: PerfTargetStart;
130
+ load?: PerfTargetLoad;
131
+ bundle?: PerfTargetBundle;
132
+ };
133
+ export type PerfReporterContext = {
134
+ suite: PerfSuite;
135
+ results: PerfTargetResult[];
136
+ runs: number;
137
+ skipLoad: boolean;
138
+ };
139
+ export type PerfReporter = {
140
+ name: string;
141
+ onStart?: (suite: PerfSuite) => void | Promise<void>;
142
+ onTarget?: (result: PerfTargetResult) => void | Promise<void>;
143
+ onEnd?: (ctx: PerfReporterContext) => void | Promise<void>;
144
+ };
145
+ export type PerfThresholds = {
146
+ buildTimeSec?: number;
147
+ maxMemoryMb?: number;
148
+ requestsPerSecond?: number;
149
+ responseTimeP95?: number;
150
+ errorRate?: number;
151
+ };
152
+ export type PerfSuite = {
153
+ /** Absolute or cwd-relative output for JSON / temp load artifacts */
154
+ artifactsDir?: string;
155
+ runs?: number;
156
+ skipLoad?: boolean;
157
+ coolDownMs?: number;
158
+ targets: PerfTarget[];
159
+ beforeAll?: (suite: PerfSuite) => void | Promise<void>;
160
+ beforeTarget?: (target: PerfTarget) => void | Promise<void>;
161
+ afterTarget?: (target: PerfTarget, result: PerfTargetResult) => void | Promise<void>;
162
+ reporters?: PerfReporter[];
163
+ thresholds?: PerfThresholds;
164
+ /** Select subset by id or label prefix */
165
+ only?: string | string[];
166
+ };
167
+ export type RunPerfOptions = {
168
+ runs?: number;
169
+ skipLoad?: boolean;
170
+ only?: string | string[];
171
+ json?: boolean;
172
+ };
173
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.mjs ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@untestutils/perf",
3
+ "version": "0.5.0",
4
+ "description": "Build + load performance harness for recipe/fixture targets",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.mjs",
14
+ "default": "./dist/index.mjs"
15
+ },
16
+ "./package.json": "./package.json"
17
+ },
18
+ "dependencies": {
19
+ "pathe": "^2.0.3",
20
+ "@untestutils/core": "0.5.0"
21
+ },
22
+ "devDependencies": {
23
+ "@types/node": "^26.6.1",
24
+ "publint": "^0.3.24",
25
+ "typescript": "^6.0.3",
26
+ "obuild": "^0.4.40"
27
+ },
28
+ "peerDependencies": {
29
+ "artillery": "*",
30
+ "autocannon": "*"
31
+ },
32
+ "peerDependenciesMeta": {
33
+ "autocannon": {
34
+ "optional": true
35
+ },
36
+ "artillery": {
37
+ "optional": true
38
+ }
39
+ },
40
+ "engines": {
41
+ "node": ">=20"
42
+ },
43
+ "license": "MIT",
44
+ "homepage": "https://s00d.github.io/untestutils/",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/s00d/untestutils.git",
48
+ "directory": "packages/perf"
49
+ },
50
+ "main": "./dist/index.mjs",
51
+ "types": "./dist/index.d.ts",
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "scripts": {
56
+ "typecheck": "tsc --noEmit -p tsconfig.json",
57
+ "build": "obuild && tsc -p tsconfig.build.json",
58
+ "publint": "publint --strict"
59
+ }
60
+ }