@fjell/registry 4.4.52 → 4.4.54
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/package.json +4 -4
- package/API.md +0 -62
- package/GETTING_STARTED.md +0 -69
- package/build.js +0 -38
- package/docs/README.md +0 -74
- package/docs/TIMING_NODE_OPTIMIZATION.md +0 -207
- package/docs/TIMING_README.md +0 -170
- package/docs/docs.config.ts +0 -114
- package/docs/index.html +0 -26
- package/docs/package-lock.json +0 -5129
- package/docs/package.json +0 -34
- package/docs/public/404.html +0 -53
- package/docs/public/GETTING_STARTED.md +0 -69
- package/docs/public/README.md +0 -623
- package/docs/public/TIMING_NODE_OPTIMIZATION.md +0 -207
- package/docs/public/api.md +0 -62
- package/docs/public/client-api-overview.md +0 -137
- package/docs/public/configuration.md +0 -759
- package/docs/public/error-handling/README.md +0 -356
- package/docs/public/error-handling/network-errors.md +0 -485
- package/docs/public/examples/coordinates-example.ts +0 -253
- package/docs/public/examples/multi-level-keys.ts +0 -374
- package/docs/public/examples/registry-hub-coordinates-example.ts +0 -370
- package/docs/public/examples/registry-hub-types.ts +0 -437
- package/docs/public/examples/simple-example.ts +0 -250
- package/docs/public/examples-README.md +0 -241
- package/docs/public/fjell-icon.svg +0 -1
- package/docs/public/icon.png +0 -0
- package/docs/public/icon2.png +0 -0
- package/docs/public/memory-overhead.svg +0 -120
- package/docs/public/memory.md +0 -430
- package/docs/public/operations/README.md +0 -121
- package/docs/public/operations/all.md +0 -325
- package/docs/public/operations/create.md +0 -415
- package/docs/public/operations/get.md +0 -389
- package/docs/public/package.json +0 -63
- package/docs/public/pano.png +0 -0
- package/docs/public/pano2.png +0 -0
- package/docs/public/timing-range.svg +0 -176
- package/docs/public/timing.md +0 -483
- package/docs/timing-range.svg +0 -174
- package/docs/vitest.config.ts +0 -14
- package/examples/README.md +0 -241
- package/examples/coordinates-example.ts +0 -253
- package/examples/multi-level-keys.ts +0 -382
- package/examples/registry-hub-coordinates-example.ts +0 -370
- package/examples/registry-hub-types.ts +0 -437
- package/examples/registry-statistics-example.ts +0 -264
- package/examples/simple-example.ts +0 -250
- package/tsconfig.docs.json +0 -28
- package/vitest.config.ts +0 -22
package/docs/public/timing.md
DELETED
|
@@ -1,483 +0,0 @@
|
|
|
1
|
-
# Performance Timing Report
|
|
2
|
-
|
|
3
|
-
Generated: 2025-07-19T19:08:20.231Z
|
|
4
|
-
Version: 4.4.5
|
|
5
|
-
Node.js: v22.0.0
|
|
6
|
-
Platform: darwin arm64
|
|
7
|
-
|
|
8
|
-
## Summary
|
|
9
|
-
|
|
10
|
-
This document contains performance timing metrics for key operations in @fjell/registry.
|
|
11
|
-
All measurements are taken over 200 iterations (unless otherwise noted) with warm-up runs.
|
|
12
|
-
Timing results are reported in microseconds (µs) for precision.
|
|
13
|
-
|
|
14
|
-
## Basic Operations Performance
|
|
15
|
-
|
|
16
|
-
| Operation | Description | Avg Time (µs) | Min Time (µs) | Max Time (µs) | Threshold (µs) | Status |
|
|
17
|
-
|-----------|-------------|---------------|---------------|---------------|----------------|--------|
|
|
18
|
-
| createRegistry | Time to create a new registry | 0.2 | 0.0 | 865.0 | 5000 | ✅ PASS |
|
|
19
|
-
| createRegistryHub | Time to create a new registry hub | 0.1 | 0.0 | 395.9 | 5000 | ✅ PASS |
|
|
20
|
-
| createInstance | Time to create a new instance | 1.0 | 0.2 | 3362.4 | 10000 | ✅ PASS |
|
|
21
|
-
| registerInstance | Time to register an instance in registry | 6.0 | 0.7 | 14657.3 | 5000 | ✅ PASS |
|
|
22
|
-
| lookupInstance | Time to lookup an existing instance from registry | 0.3 | 0.0 | 685.2 | 2000 | ✅ PASS |
|
|
23
|
-
| completeWorkflow | Time for complete workflow: create hub, registry, instance, register, and lookup | 6.4 | 2.1 | 7064.8 | 25000 | ✅ PASS |
|
|
24
|
-
|
|
25
|
-
## Scaling Performance Tests
|
|
26
|
-
|
|
27
|
-
| Operation | Tree Size | Avg Time (µs) | Min Time (µs) | Max Time (µs) | Threshold (µs) | Status |
|
|
28
|
-
|-----------|-----------|---------------|---------------|---------------|----------------|--------|
|
|
29
|
-
| registerInstance_10 | 10 | 2.9 | 0.8 | 8043.9 | 5000 | ✅ PASS |
|
|
30
|
-
| lookupInstance_10 | 10 | 0.2 | 0.0 | 57.5 | 2000 | ✅ PASS |
|
|
31
|
-
| registerInstance_20 | 20 | 4.0 | 0.8 | 5138.1 | 5000 | ✅ PASS |
|
|
32
|
-
| lookupInstance_20 | 20 | 0.4 | 0.0 | 2896.7 | 2000 | ✅ PASS |
|
|
33
|
-
| registerInstance_50 | 50 | 1.8 | 0.7 | 3538.8 | 5000 | ✅ PASS |
|
|
34
|
-
| lookupInstance_50 | 50 | 0.2 | 0.0 | 17.3 | 2000 | ✅ PASS |
|
|
35
|
-
| registerInstance_100 | 100 | 3.0 | 0.8 | 3714.0 | 5000 | ✅ PASS |
|
|
36
|
-
| lookupInstance_100 | 100 | 0.3 | 0.0 | 2029.2 | 2000 | ✅ PASS |
|
|
37
|
-
| registerInstance_200 | 200 | 1.6 | 0.8 | 2891.4 | 10000 | ✅ PASS |
|
|
38
|
-
| lookupInstance_200 | 200 | 0.3 | 0.0 | 2867.3 | 5000 | ✅ PASS |
|
|
39
|
-
| registerInstance_500 | 500 | 1.5 | 0.7 | 3092.2 | 10000 | ✅ PASS |
|
|
40
|
-
| lookupInstance_500 | 500 | 0.3 | 0.0 | 3657.6 | 5000 | ✅ PASS |
|
|
41
|
-
| registerInstance_1000 | 1000 | 1.6 | 0.7 | 4527.8 | 10000 | ✅ PASS |
|
|
42
|
-
| lookupInstance_1000 | 1000 | 0.2 | 0.0 | 2594.0 | 5000 | ✅ PASS |
|
|
43
|
-
| registerInstance_2000 | 2000 | 1.1 | 0.8 | 63.3 | 20000 | ✅ PASS |
|
|
44
|
-
| lookupInstance_2000 | 2000 | 0.2 | 0.0 | 8.2 | 10000 | ✅ PASS |
|
|
45
|
-
| registerInstance_5000 | 5000 | 1.7 | 1.1 | 291.6 | 20000 | ✅ PASS |
|
|
46
|
-
| lookupInstance_5000 | 5000 | 1.8 | 0.0 | 7794.5 | 10000 | ✅ PASS |
|
|
47
|
-
| registerInstance_10000 | 10000 | 4.7 | 1.1 | 4041.7 | 20000 | ✅ PASS |
|
|
48
|
-
| lookupInstance_10000 | 10000 | 0.3 | 0.0 | 46.0 | 10000 | ✅ PASS |
|
|
49
|
-
| registerInstance_20000 | 20000 | 1.2 | 0.9 | 5.8 | 50000 | ✅ PASS |
|
|
50
|
-
| lookupInstance_20000 | 20000 | 0.3 | 0.1 | 4.8 | 25000 | ✅ PASS |
|
|
51
|
-
| registerInstance_50000 | 50000 | 1.2 | 0.9 | 18.1 | 50000 | ✅ PASS |
|
|
52
|
-
| lookupInstance_50000 | 50000 | 0.2 | 0.1 | 3.4 | 25000 | ✅ PASS |
|
|
53
|
-
| registerInstance_100000 | 100000 | 1.3 | 0.9 | 31.5 | 50000 | ✅ PASS |
|
|
54
|
-
| lookupInstance_100000 | 100000 | 0.2 | 0.1 | 5.2 | 25000 | ✅ PASS |
|
|
55
|
-
|
|
56
|
-
## Scaling Performance Visualization
|
|
57
|
-
|
|
58
|
-
### Performance Range Chart
|
|
59
|
-

|
|
60
|
-
|
|
61
|
-
*This performance range chart shows the average performance (center line) with ±1 standard deviation bands for each tree size.
|
|
62
|
-
The bands reveal performance consistency and variability across 100 test rounds. Tight bands indicate
|
|
63
|
-
consistent performance, while wider bands show more variability.*
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
## Detailed Results
|
|
67
|
-
|
|
68
|
-
### Basic Operations
|
|
69
|
-
|
|
70
|
-
#### createRegistry
|
|
71
|
-
|
|
72
|
-
**Description:** Time to create a new registry
|
|
73
|
-
**Iterations:** 20000
|
|
74
|
-
**Average Time:** 0.2 µs
|
|
75
|
-
**Min Time:** 0.0 µs
|
|
76
|
-
**Max Time:** 865.0 µs
|
|
77
|
-
**Threshold:** 5000 µs
|
|
78
|
-
**Status:** ✅ PASS
|
|
79
|
-
|
|
80
|
-
#### createRegistryHub
|
|
81
|
-
|
|
82
|
-
**Description:** Time to create a new registry hub
|
|
83
|
-
**Iterations:** 20000
|
|
84
|
-
**Average Time:** 0.1 µs
|
|
85
|
-
**Min Time:** 0.0 µs
|
|
86
|
-
**Max Time:** 395.9 µs
|
|
87
|
-
**Threshold:** 5000 µs
|
|
88
|
-
**Status:** ✅ PASS
|
|
89
|
-
|
|
90
|
-
#### createInstance
|
|
91
|
-
|
|
92
|
-
**Description:** Time to create a new instance
|
|
93
|
-
**Iterations:** 20000
|
|
94
|
-
**Average Time:** 1.0 µs
|
|
95
|
-
**Min Time:** 0.2 µs
|
|
96
|
-
**Max Time:** 3362.4 µs
|
|
97
|
-
**Threshold:** 10000 µs
|
|
98
|
-
**Status:** ✅ PASS
|
|
99
|
-
|
|
100
|
-
#### registerInstance
|
|
101
|
-
|
|
102
|
-
**Description:** Time to register an instance in registry
|
|
103
|
-
**Iterations:** 20000
|
|
104
|
-
**Average Time:** 6.0 µs
|
|
105
|
-
**Min Time:** 0.7 µs
|
|
106
|
-
**Max Time:** 14657.3 µs
|
|
107
|
-
**Threshold:** 5000 µs
|
|
108
|
-
**Status:** ✅ PASS
|
|
109
|
-
|
|
110
|
-
#### lookupInstance
|
|
111
|
-
|
|
112
|
-
**Description:** Time to lookup an existing instance from registry
|
|
113
|
-
**Iterations:** 20000
|
|
114
|
-
**Average Time:** 0.3 µs
|
|
115
|
-
**Min Time:** 0.0 µs
|
|
116
|
-
**Max Time:** 685.2 µs
|
|
117
|
-
**Threshold:** 2000 µs
|
|
118
|
-
**Status:** ✅ PASS
|
|
119
|
-
|
|
120
|
-
#### completeWorkflow
|
|
121
|
-
|
|
122
|
-
**Description:** Time for complete workflow: create hub, registry, instance, register, and lookup
|
|
123
|
-
**Iterations:** 10000
|
|
124
|
-
**Average Time:** 6.4 µs
|
|
125
|
-
**Min Time:** 2.1 µs
|
|
126
|
-
**Max Time:** 7064.8 µs
|
|
127
|
-
**Threshold:** 25000 µs
|
|
128
|
-
**Status:** ✅ PASS
|
|
129
|
-
|
|
130
|
-
### Scaling Tests
|
|
131
|
-
|
|
132
|
-
#### registerInstance_10 (Tree Size: 10)
|
|
133
|
-
|
|
134
|
-
**Description:** Time to register instance with 10 existing items in tree
|
|
135
|
-
**Tree Size:** 10 items
|
|
136
|
-
**Iterations:** 10000
|
|
137
|
-
**Average Time:** 2.9 µs
|
|
138
|
-
**Min Time:** 0.8 µs
|
|
139
|
-
**Max Time:** 8043.9 µs
|
|
140
|
-
**Threshold:** 5000 µs
|
|
141
|
-
**Status:** ✅ PASS
|
|
142
|
-
|
|
143
|
-
#### lookupInstance_10 (Tree Size: 10)
|
|
144
|
-
|
|
145
|
-
**Description:** Time to lookup instance with 10 items in tree
|
|
146
|
-
**Tree Size:** 10 items
|
|
147
|
-
**Iterations:** 20000
|
|
148
|
-
**Average Time:** 0.2 µs
|
|
149
|
-
**Min Time:** 0.0 µs
|
|
150
|
-
**Max Time:** 57.5 µs
|
|
151
|
-
**Threshold:** 2000 µs
|
|
152
|
-
**Status:** ✅ PASS
|
|
153
|
-
|
|
154
|
-
#### registerInstance_20 (Tree Size: 20)
|
|
155
|
-
|
|
156
|
-
**Description:** Time to register instance with 20 existing items in tree
|
|
157
|
-
**Tree Size:** 20 items
|
|
158
|
-
**Iterations:** 10000
|
|
159
|
-
**Average Time:** 4.0 µs
|
|
160
|
-
**Min Time:** 0.8 µs
|
|
161
|
-
**Max Time:** 5138.1 µs
|
|
162
|
-
**Threshold:** 5000 µs
|
|
163
|
-
**Status:** ✅ PASS
|
|
164
|
-
|
|
165
|
-
#### lookupInstance_20 (Tree Size: 20)
|
|
166
|
-
|
|
167
|
-
**Description:** Time to lookup instance with 20 items in tree
|
|
168
|
-
**Tree Size:** 20 items
|
|
169
|
-
**Iterations:** 20000
|
|
170
|
-
**Average Time:** 0.4 µs
|
|
171
|
-
**Min Time:** 0.0 µs
|
|
172
|
-
**Max Time:** 2896.7 µs
|
|
173
|
-
**Threshold:** 2000 µs
|
|
174
|
-
**Status:** ✅ PASS
|
|
175
|
-
|
|
176
|
-
#### registerInstance_50 (Tree Size: 50)
|
|
177
|
-
|
|
178
|
-
**Description:** Time to register instance with 50 existing items in tree
|
|
179
|
-
**Tree Size:** 50 items
|
|
180
|
-
**Iterations:** 10000
|
|
181
|
-
**Average Time:** 1.8 µs
|
|
182
|
-
**Min Time:** 0.7 µs
|
|
183
|
-
**Max Time:** 3538.8 µs
|
|
184
|
-
**Threshold:** 5000 µs
|
|
185
|
-
**Status:** ✅ PASS
|
|
186
|
-
|
|
187
|
-
#### lookupInstance_50 (Tree Size: 50)
|
|
188
|
-
|
|
189
|
-
**Description:** Time to lookup instance with 50 items in tree
|
|
190
|
-
**Tree Size:** 50 items
|
|
191
|
-
**Iterations:** 20000
|
|
192
|
-
**Average Time:** 0.2 µs
|
|
193
|
-
**Min Time:** 0.0 µs
|
|
194
|
-
**Max Time:** 17.3 µs
|
|
195
|
-
**Threshold:** 2000 µs
|
|
196
|
-
**Status:** ✅ PASS
|
|
197
|
-
|
|
198
|
-
#### registerInstance_100 (Tree Size: 100)
|
|
199
|
-
|
|
200
|
-
**Description:** Time to register instance with 100 existing items in tree
|
|
201
|
-
**Tree Size:** 100 items
|
|
202
|
-
**Iterations:** 10000
|
|
203
|
-
**Average Time:** 3.0 µs
|
|
204
|
-
**Min Time:** 0.8 µs
|
|
205
|
-
**Max Time:** 3714.0 µs
|
|
206
|
-
**Threshold:** 5000 µs
|
|
207
|
-
**Status:** ✅ PASS
|
|
208
|
-
|
|
209
|
-
#### lookupInstance_100 (Tree Size: 100)
|
|
210
|
-
|
|
211
|
-
**Description:** Time to lookup instance with 100 items in tree
|
|
212
|
-
**Tree Size:** 100 items
|
|
213
|
-
**Iterations:** 20000
|
|
214
|
-
**Average Time:** 0.3 µs
|
|
215
|
-
**Min Time:** 0.0 µs
|
|
216
|
-
**Max Time:** 2029.2 µs
|
|
217
|
-
**Threshold:** 2000 µs
|
|
218
|
-
**Status:** ✅ PASS
|
|
219
|
-
|
|
220
|
-
#### registerInstance_200 (Tree Size: 200)
|
|
221
|
-
|
|
222
|
-
**Description:** Time to register instance with 200 existing items in tree
|
|
223
|
-
**Tree Size:** 200 items
|
|
224
|
-
**Iterations:** 10000
|
|
225
|
-
**Average Time:** 1.6 µs
|
|
226
|
-
**Min Time:** 0.8 µs
|
|
227
|
-
**Max Time:** 2891.4 µs
|
|
228
|
-
**Threshold:** 10000 µs
|
|
229
|
-
**Status:** ✅ PASS
|
|
230
|
-
|
|
231
|
-
#### lookupInstance_200 (Tree Size: 200)
|
|
232
|
-
|
|
233
|
-
**Description:** Time to lookup instance with 200 items in tree
|
|
234
|
-
**Tree Size:** 200 items
|
|
235
|
-
**Iterations:** 20000
|
|
236
|
-
**Average Time:** 0.3 µs
|
|
237
|
-
**Min Time:** 0.0 µs
|
|
238
|
-
**Max Time:** 2867.3 µs
|
|
239
|
-
**Threshold:** 5000 µs
|
|
240
|
-
**Status:** ✅ PASS
|
|
241
|
-
|
|
242
|
-
#### registerInstance_500 (Tree Size: 500)
|
|
243
|
-
|
|
244
|
-
**Description:** Time to register instance with 500 existing items in tree
|
|
245
|
-
**Tree Size:** 500 items
|
|
246
|
-
**Iterations:** 10000
|
|
247
|
-
**Average Time:** 1.5 µs
|
|
248
|
-
**Min Time:** 0.7 µs
|
|
249
|
-
**Max Time:** 3092.2 µs
|
|
250
|
-
**Threshold:** 10000 µs
|
|
251
|
-
**Status:** ✅ PASS
|
|
252
|
-
|
|
253
|
-
#### lookupInstance_500 (Tree Size: 500)
|
|
254
|
-
|
|
255
|
-
**Description:** Time to lookup instance with 500 items in tree
|
|
256
|
-
**Tree Size:** 500 items
|
|
257
|
-
**Iterations:** 20000
|
|
258
|
-
**Average Time:** 0.3 µs
|
|
259
|
-
**Min Time:** 0.0 µs
|
|
260
|
-
**Max Time:** 3657.6 µs
|
|
261
|
-
**Threshold:** 5000 µs
|
|
262
|
-
**Status:** ✅ PASS
|
|
263
|
-
|
|
264
|
-
#### registerInstance_1000 (Tree Size: 1000)
|
|
265
|
-
|
|
266
|
-
**Description:** Time to register instance with 1000 existing items in tree
|
|
267
|
-
**Tree Size:** 1000 items
|
|
268
|
-
**Iterations:** 10000
|
|
269
|
-
**Average Time:** 1.6 µs
|
|
270
|
-
**Min Time:** 0.7 µs
|
|
271
|
-
**Max Time:** 4527.8 µs
|
|
272
|
-
**Threshold:** 10000 µs
|
|
273
|
-
**Status:** ✅ PASS
|
|
274
|
-
|
|
275
|
-
#### lookupInstance_1000 (Tree Size: 1000)
|
|
276
|
-
|
|
277
|
-
**Description:** Time to lookup instance with 1000 items in tree
|
|
278
|
-
**Tree Size:** 1000 items
|
|
279
|
-
**Iterations:** 20000
|
|
280
|
-
**Average Time:** 0.2 µs
|
|
281
|
-
**Min Time:** 0.0 µs
|
|
282
|
-
**Max Time:** 2594.0 µs
|
|
283
|
-
**Threshold:** 5000 µs
|
|
284
|
-
**Status:** ✅ PASS
|
|
285
|
-
|
|
286
|
-
#### registerInstance_2000 (Tree Size: 2000)
|
|
287
|
-
|
|
288
|
-
**Description:** Time to register instance with 2000 existing items in tree
|
|
289
|
-
**Tree Size:** 2000 items
|
|
290
|
-
**Iterations:** 2500
|
|
291
|
-
**Average Time:** 1.1 µs
|
|
292
|
-
**Min Time:** 0.8 µs
|
|
293
|
-
**Max Time:** 63.3 µs
|
|
294
|
-
**Threshold:** 20000 µs
|
|
295
|
-
**Status:** ✅ PASS
|
|
296
|
-
|
|
297
|
-
#### lookupInstance_2000 (Tree Size: 2000)
|
|
298
|
-
|
|
299
|
-
**Description:** Time to lookup instance with 2000 items in tree
|
|
300
|
-
**Tree Size:** 2000 items
|
|
301
|
-
**Iterations:** 5000
|
|
302
|
-
**Average Time:** 0.2 µs
|
|
303
|
-
**Min Time:** 0.0 µs
|
|
304
|
-
**Max Time:** 8.2 µs
|
|
305
|
-
**Threshold:** 10000 µs
|
|
306
|
-
**Status:** ✅ PASS
|
|
307
|
-
|
|
308
|
-
#### registerInstance_5000 (Tree Size: 5000)
|
|
309
|
-
|
|
310
|
-
**Description:** Time to register instance with 5000 existing items in tree
|
|
311
|
-
**Tree Size:** 5000 items
|
|
312
|
-
**Iterations:** 2500
|
|
313
|
-
**Average Time:** 1.7 µs
|
|
314
|
-
**Min Time:** 1.1 µs
|
|
315
|
-
**Max Time:** 291.6 µs
|
|
316
|
-
**Threshold:** 20000 µs
|
|
317
|
-
**Status:** ✅ PASS
|
|
318
|
-
|
|
319
|
-
#### lookupInstance_5000 (Tree Size: 5000)
|
|
320
|
-
|
|
321
|
-
**Description:** Time to lookup instance with 5000 items in tree
|
|
322
|
-
**Tree Size:** 5000 items
|
|
323
|
-
**Iterations:** 5000
|
|
324
|
-
**Average Time:** 1.8 µs
|
|
325
|
-
**Min Time:** 0.0 µs
|
|
326
|
-
**Max Time:** 7794.5 µs
|
|
327
|
-
**Threshold:** 10000 µs
|
|
328
|
-
**Status:** ✅ PASS
|
|
329
|
-
|
|
330
|
-
#### registerInstance_10000 (Tree Size: 10000)
|
|
331
|
-
|
|
332
|
-
**Description:** Time to register instance with 10000 existing items in tree
|
|
333
|
-
**Tree Size:** 10000 items
|
|
334
|
-
**Iterations:** 2500
|
|
335
|
-
**Average Time:** 4.7 µs
|
|
336
|
-
**Min Time:** 1.1 µs
|
|
337
|
-
**Max Time:** 4041.7 µs
|
|
338
|
-
**Threshold:** 20000 µs
|
|
339
|
-
**Status:** ✅ PASS
|
|
340
|
-
|
|
341
|
-
#### lookupInstance_10000 (Tree Size: 10000)
|
|
342
|
-
|
|
343
|
-
**Description:** Time to lookup instance with 10000 items in tree
|
|
344
|
-
**Tree Size:** 10000 items
|
|
345
|
-
**Iterations:** 5000
|
|
346
|
-
**Average Time:** 0.3 µs
|
|
347
|
-
**Min Time:** 0.0 µs
|
|
348
|
-
**Max Time:** 46.0 µs
|
|
349
|
-
**Threshold:** 10000 µs
|
|
350
|
-
**Status:** ✅ PASS
|
|
351
|
-
|
|
352
|
-
#### registerInstance_20000 (Tree Size: 20000)
|
|
353
|
-
|
|
354
|
-
**Description:** Time to register instance with 20000 existing items in tree
|
|
355
|
-
**Tree Size:** 20000 items
|
|
356
|
-
**Iterations:** 500
|
|
357
|
-
**Average Time:** 1.2 µs
|
|
358
|
-
**Min Time:** 0.9 µs
|
|
359
|
-
**Max Time:** 5.8 µs
|
|
360
|
-
**Threshold:** 50000 µs
|
|
361
|
-
**Status:** ✅ PASS
|
|
362
|
-
|
|
363
|
-
#### lookupInstance_20000 (Tree Size: 20000)
|
|
364
|
-
|
|
365
|
-
**Description:** Time to lookup instance with 20000 items in tree
|
|
366
|
-
**Tree Size:** 20000 items
|
|
367
|
-
**Iterations:** 1250
|
|
368
|
-
**Average Time:** 0.3 µs
|
|
369
|
-
**Min Time:** 0.1 µs
|
|
370
|
-
**Max Time:** 4.8 µs
|
|
371
|
-
**Threshold:** 25000 µs
|
|
372
|
-
**Status:** ✅ PASS
|
|
373
|
-
|
|
374
|
-
#### registerInstance_50000 (Tree Size: 50000)
|
|
375
|
-
|
|
376
|
-
**Description:** Time to register instance with 50000 existing items in tree
|
|
377
|
-
**Tree Size:** 50000 items
|
|
378
|
-
**Iterations:** 500
|
|
379
|
-
**Average Time:** 1.2 µs
|
|
380
|
-
**Min Time:** 0.9 µs
|
|
381
|
-
**Max Time:** 18.1 µs
|
|
382
|
-
**Threshold:** 50000 µs
|
|
383
|
-
**Status:** ✅ PASS
|
|
384
|
-
|
|
385
|
-
#### lookupInstance_50000 (Tree Size: 50000)
|
|
386
|
-
|
|
387
|
-
**Description:** Time to lookup instance with 50000 items in tree
|
|
388
|
-
**Tree Size:** 50000 items
|
|
389
|
-
**Iterations:** 1250
|
|
390
|
-
**Average Time:** 0.2 µs
|
|
391
|
-
**Min Time:** 0.1 µs
|
|
392
|
-
**Max Time:** 3.4 µs
|
|
393
|
-
**Threshold:** 25000 µs
|
|
394
|
-
**Status:** ✅ PASS
|
|
395
|
-
|
|
396
|
-
#### registerInstance_100000 (Tree Size: 100000)
|
|
397
|
-
|
|
398
|
-
**Description:** Time to register instance with 100000 existing items in tree
|
|
399
|
-
**Tree Size:** 100000 items
|
|
400
|
-
**Iterations:** 500
|
|
401
|
-
**Average Time:** 1.3 µs
|
|
402
|
-
**Min Time:** 0.9 µs
|
|
403
|
-
**Max Time:** 31.5 µs
|
|
404
|
-
**Threshold:** 50000 µs
|
|
405
|
-
**Status:** ✅ PASS
|
|
406
|
-
|
|
407
|
-
#### lookupInstance_100000 (Tree Size: 100000)
|
|
408
|
-
|
|
409
|
-
**Description:** Time to lookup instance with 100000 items in tree
|
|
410
|
-
**Tree Size:** 100000 items
|
|
411
|
-
**Iterations:** 1250
|
|
412
|
-
**Average Time:** 0.2 µs
|
|
413
|
-
**Min Time:** 0.1 µs
|
|
414
|
-
**Max Time:** 5.2 µs
|
|
415
|
-
**Threshold:** 25000 µs
|
|
416
|
-
**Status:** ✅ PASS
|
|
417
|
-
|
|
418
|
-
## Performance Analysis
|
|
419
|
-
|
|
420
|
-
### Key Metrics
|
|
421
|
-
|
|
422
|
-
- **Registry Creation**: Fast lightweight object creation
|
|
423
|
-
- **RegistryHub Creation**: Minimal overhead for hub management
|
|
424
|
-
- **Instance Creation**: Efficient coordinate-based instance creation
|
|
425
|
-
- **Instance Lookup**: Optimized tree traversal for instance retrieval
|
|
426
|
-
- **Registration**: Quick instance registration with scope support
|
|
427
|
-
|
|
428
|
-
### Scaling Analysis
|
|
429
|
-
|
|
430
|
-
The scaling tests measure performance across a wide range of tree sizes to identify potential O(n) issues:
|
|
431
|
-
|
|
432
|
-
- **Small Scale (10-100)**: Baseline performance for small registries
|
|
433
|
-
- **Medium Scale (200-1000)**: Standard application-scale registry performance
|
|
434
|
-
- **Large Scale (2000-10000)**: Enterprise-scale registry performance
|
|
435
|
-
- **Very Large Scale (20000-100000)**: Extreme-scale registry stress testing
|
|
436
|
-
|
|
437
|
-
Tree sizes tested: 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000
|
|
438
|
-
|
|
439
|
-
These comprehensive tests help ensure that the registry maintains good performance characteristics across all
|
|
440
|
-
deployment scenarios, from small applications to large-scale enterprise systems.
|
|
441
|
-
|
|
442
|
-
### Timing Constraints
|
|
443
|
-
|
|
444
|
-
The following timing constraints are enforced to ensure optimal performance:
|
|
445
|
-
|
|
446
|
-
#### Basic Operations
|
|
447
|
-
- **createRegistry**: ≤ 5000µs (5.0ms)
|
|
448
|
-
- **createRegistryHub**: ≤ 5000µs (5.0ms)
|
|
449
|
-
- **createInstance**: ≤ 10000µs (10.0ms)
|
|
450
|
-
- **lookupInstance**: ≤ 2000µs (2.0ms)
|
|
451
|
-
- **registerInstance**: ≤ 5000µs (5.0ms)
|
|
452
|
-
|
|
453
|
-
#### Scaling Operations
|
|
454
|
-
- **registerInstance** (≤100 items): ≤ 5000µs (5ms)
|
|
455
|
-
- **registerInstance** (100-1000 items): ≤ 10000µs (10ms)
|
|
456
|
-
- **registerInstance** (1000-10000 items): ≤ 20000µs (20ms)
|
|
457
|
-
- **registerInstance** (>10000 items): ≤ 50000µs (50ms)
|
|
458
|
-
- **lookupInstance** (≤100 items): ≤ 2000µs (2ms)
|
|
459
|
-
- **lookupInstance** (100-1000 items): ≤ 5000µs (5ms)
|
|
460
|
-
- **lookupInstance** (1000-10000 items): ≤ 10000µs (10ms)
|
|
461
|
-
- **lookupInstance** (>10000 items): ≤ 25000µs (25ms)
|
|
462
|
-
|
|
463
|
-
### Notes
|
|
464
|
-
|
|
465
|
-
- All timing tests include warm-up iterations to account for JIT compilation
|
|
466
|
-
- Tests are run in isolation to minimize interference
|
|
467
|
-
- Results may vary based on system specifications and current load
|
|
468
|
-
- Timing results are reported in microseconds (µs) for precision
|
|
469
|
-
- Timing constraints are set to ensure the library performs well in production environments
|
|
470
|
-
- Scaling tests help identify performance degradation as registry size increases
|
|
471
|
-
|
|
472
|
-
### Recommendations
|
|
473
|
-
|
|
474
|
-
If any timing tests fail:
|
|
475
|
-
|
|
476
|
-
1. **Review Recent Changes**: Check if recent code changes have introduced performance regressions
|
|
477
|
-
2. **System Resources**: Ensure adequate system resources are available during testing
|
|
478
|
-
3. **Optimization**: Consider optimizing the failing operations if thresholds are consistently exceeded
|
|
479
|
-
4. **Threshold Review**: Review if timing constraints are still appropriate for current use cases
|
|
480
|
-
|
|
481
|
-
---
|
|
482
|
-
|
|
483
|
-
*This document is automatically generated during testing and should be updated with each release.*
|
package/docs/timing-range.svg
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg width="1200" height="800" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<style>
|
|
4
|
-
.axis { stroke: #333; stroke-width: 1; }
|
|
5
|
-
.grid { stroke: #ddd; stroke-width: 0.5; }
|
|
6
|
-
.label { font-family: Arial, sans-serif; font-size: 14px; fill: #333; }
|
|
7
|
-
.title { font-family: Arial, sans-serif; font-size: 16px; font-weight: bold; fill: #333; }
|
|
8
|
-
.subtitle { font-family: Arial, sans-serif; font-size: 12px; fill: #666; }
|
|
9
|
-
.register-mean { stroke: #e74c3c; stroke-width: 3; fill: none; }
|
|
10
|
-
.lookup-mean { stroke: #3498db; stroke-width: 3; fill: none; }
|
|
11
|
-
.register-band { fill: rgba(231, 76, 60, 0.2); stroke: #e74c3c; stroke-width: 1; }
|
|
12
|
-
.lookup-band { fill: rgba(52, 152, 219, 0.2); stroke: #3498db; stroke-width: 1; }
|
|
13
|
-
.register-dot { fill: #e74c3c; }
|
|
14
|
-
.lookup-dot { fill: #3498db; }
|
|
15
|
-
.legend { font-family: Arial, sans-serif; font-size: 12px; fill: #333; }
|
|
16
|
-
.axis-title { font-family: Arial, sans-serif; font-size: 16px; font-weight: bold; fill: #333; }
|
|
17
|
-
.metadata-title { font-family: Arial, sans-serif; font-size: 14px; font-weight: bold; fill: #333; }
|
|
18
|
-
.metadata-section { font-family: Arial, sans-serif; font-size: 14px; font-weight: bold; fill: #444; }
|
|
19
|
-
.metadata-label { font-family: Arial, sans-serif; font-size: 10px; fill: #666; }
|
|
20
|
-
.metadata-value { font-family: Arial, sans-serif; font-size: 10px; fill: #333; }
|
|
21
|
-
</style>
|
|
22
|
-
|
|
23
|
-
<!-- Background -->
|
|
24
|
-
<rect width="1200" height="800" fill="white"/>
|
|
25
|
-
|
|
26
|
-
<!-- Title -->
|
|
27
|
-
<text x="600" y="25" text-anchor="middle" class="title">Timing of Common Registry Operations</text>
|
|
28
|
-
<text x="600" y="45" text-anchor="middle" class="subtitle">Performance measurements across varying tree sizes</text>
|
|
29
|
-
|
|
30
|
-
<!-- Plot area -->
|
|
31
|
-
<g transform="translate(110,60)">
|
|
32
|
-
|
|
33
|
-
<!-- Grid lines (logarithmic scale) -->
|
|
34
|
-
<line x1="0" y1="443.10897627676053" x2="1015" y2="443.10897627676053" class="grid"/>
|
|
35
|
-
<text x="-10" y="447.10897627676053" text-anchor="end" class="label">0.10µs</text>
|
|
36
|
-
<line x1="0" y1="364.5972351236878" x2="1015" y2="364.5972351236878" class="grid"/>
|
|
37
|
-
<text x="-10" y="368.5972351236878" text-anchor="end" class="label">0.20µs</text>
|
|
38
|
-
<line x1="0" y1="260.8103587149167" x2="1015" y2="260.8103587149167" class="grid"/>
|
|
39
|
-
<text x="-10" y="264.8103587149167" text-anchor="end" class="label">0.50µs</text>
|
|
40
|
-
<line x1="0" y1="182.2986175618439" x2="1015" y2="182.2986175618439" class="grid"/>
|
|
41
|
-
<text x="-10" y="186.2986175618439" text-anchor="end" class="label">1.0µs</text>
|
|
42
|
-
<line x1="0" y1="103.78687640877115" x2="1015" y2="103.78687640877115" class="grid"/>
|
|
43
|
-
<text x="-10" y="107.78687640877115" text-anchor="end" class="label">2.0µs</text>
|
|
44
|
-
<line x1="0" y1="0" x2="1015" y2="0" class="grid"/>
|
|
45
|
-
<text x="-10" y="4" text-anchor="end" class="label">5.0µs</text>
|
|
46
|
-
<line x1="0" y1="0" x2="0" y2="460" class="grid"/>
|
|
47
|
-
<text x="0" y="480" text-anchor="middle" class="label">10</text>
|
|
48
|
-
<line x1="76.38636139973525" y1="0" x2="76.38636139973525" y2="460" class="grid"/>
|
|
49
|
-
<text x="76.38636139973525" y="480" text-anchor="middle" class="label">20</text>
|
|
50
|
-
<line x1="177.36363860026475" y1="0" x2="177.36363860026475" y2="460" class="grid"/>
|
|
51
|
-
<text x="177.36363860026475" y="480" text-anchor="middle" class="label">50</text>
|
|
52
|
-
<line x1="253.75" y1="0" x2="253.75" y2="460" class="grid"/>
|
|
53
|
-
<text x="253.75" y="480" text-anchor="middle" class="label">100</text>
|
|
54
|
-
<line x1="330.1363613997352" y1="0" x2="330.1363613997352" y2="460" class="grid"/>
|
|
55
|
-
<text x="330.1363613997352" y="480" text-anchor="middle" class="label">200</text>
|
|
56
|
-
<line x1="431.1136386002648" y1="0" x2="431.1136386002648" y2="460" class="grid"/>
|
|
57
|
-
<text x="431.1136386002648" y="480" text-anchor="middle" class="label">500</text>
|
|
58
|
-
<line x1="507.5" y1="0" x2="507.5" y2="460" class="grid"/>
|
|
59
|
-
<text x="507.5" y="480" text-anchor="middle" class="label">1k</text>
|
|
60
|
-
<line x1="583.8863613997353" y1="0" x2="583.8863613997353" y2="460" class="grid"/>
|
|
61
|
-
<text x="583.8863613997353" y="480" text-anchor="middle" class="label">2k</text>
|
|
62
|
-
<line x1="684.8636386002647" y1="0" x2="684.8636386002647" y2="460" class="grid"/>
|
|
63
|
-
<text x="684.8636386002647" y="480" text-anchor="middle" class="label">5k</text>
|
|
64
|
-
<line x1="761.25" y1="0" x2="761.25" y2="460" class="grid"/>
|
|
65
|
-
<text x="761.25" y="480" text-anchor="middle" class="label">10k</text>
|
|
66
|
-
<line x1="837.6363613997353" y1="0" x2="837.6363613997353" y2="460" class="grid"/>
|
|
67
|
-
<text x="837.6363613997353" y="480" text-anchor="middle" class="label">20k</text>
|
|
68
|
-
<line x1="938.6136386002647" y1="0" x2="938.6136386002647" y2="460" class="grid"/>
|
|
69
|
-
<text x="938.6136386002647" y="480" text-anchor="middle" class="label">50k</text>
|
|
70
|
-
<line x1="1015" y1="0" x2="1015" y2="460" class="grid"/>
|
|
71
|
-
<text x="1015" y="480" text-anchor="middle" class="label">100k</text>
|
|
72
|
-
<!-- Y-axis -->
|
|
73
|
-
<line x1="0" y1="0" x2="0" y2="460" class="axis"/>
|
|
74
|
-
|
|
75
|
-
<!-- X-axis -->
|
|
76
|
-
<line x1="0" y1="460" x2="1015" y2="460" class="axis"/>
|
|
77
|
-
|
|
78
|
-
<!-- Axis labels -->
|
|
79
|
-
<text x="507.5" y="510" text-anchor="middle" class="axis-title">Tree Size (items) - Log Scale</text>
|
|
80
|
-
<text transform="rotate(-90,-70,230)" x="-70" y="230" text-anchor="middle" class="axis-title">Execution Time (µs)</text>
|
|
81
|
-
<path d="M 0 175.37463139035953 L 76.38636139973525 171.7562601144943 L 177.36363860026475 177.09198908626382 L 253.75 185.53577825747828 L 330.1363613997352 181.45530917533853 L 431.1136386002648 193.30788044935775 L 507.5 183.85009950272268 L 583.8863613997353 192.5502021682463 L 684.8636386002647 182.2419974656646 L 761.25 192.11308462438052 L 837.6363613997353 158.53592854903906 L 938.6136386002647 189.80227573711466 L 1015 178.48303277884725" class="register-mean"/>
|
|
82
|
-
<path d="M 0 379.7137216999663 L 76.38636139973525 353.0132662444159 L 177.36363860026475 372.1511303452223 L 253.75 376.5702840755931 L 330.1363613997352 381.48825884692724 L 431.1136386002648 372.8653274994695 L 507.5 356.0276858613769 L 583.8863613997353 327.3781957596831 L 684.8636386002647 304.30603248991525 L 761.25 316.1453481631414 L 837.6363613997353 300.79175199582454 L 938.6136386002647 309.38444349636274 L 1015 299.69820512998433" class="lookup-mean"/>
|
|
83
|
-
<circle cx="0" cy="175.37463139035953" r="4" class="register-dot"/>
|
|
84
|
-
<circle cx="76.38636139973525" cy="171.7562601144943" r="4" class="register-dot"/>
|
|
85
|
-
<circle cx="177.36363860026475" cy="177.09198908626382" r="4" class="register-dot"/>
|
|
86
|
-
<circle cx="253.75" cy="185.53577825747828" r="4" class="register-dot"/>
|
|
87
|
-
<circle cx="330.1363613997352" cy="181.45530917533853" r="4" class="register-dot"/>
|
|
88
|
-
<circle cx="431.1136386002648" cy="193.30788044935775" r="4" class="register-dot"/>
|
|
89
|
-
<circle cx="507.5" cy="183.85009950272268" r="4" class="register-dot"/>
|
|
90
|
-
<circle cx="583.8863613997353" cy="192.5502021682463" r="4" class="register-dot"/>
|
|
91
|
-
<circle cx="684.8636386002647" cy="182.2419974656646" r="4" class="register-dot"/>
|
|
92
|
-
<circle cx="761.25" cy="192.11308462438052" r="4" class="register-dot"/>
|
|
93
|
-
<circle cx="837.6363613997353" cy="158.53592854903906" r="4" class="register-dot"/>
|
|
94
|
-
<circle cx="938.6136386002647" cy="189.80227573711466" r="4" class="register-dot"/>
|
|
95
|
-
<circle cx="1015" cy="178.48303277884725" r="4" class="register-dot"/>
|
|
96
|
-
<circle cx="0" cy="379.7137216999663" r="4" class="lookup-dot"/>
|
|
97
|
-
<circle cx="76.38636139973525" cy="353.0132662444159" r="4" class="lookup-dot"/>
|
|
98
|
-
<circle cx="177.36363860026475" cy="372.1511303452223" r="4" class="lookup-dot"/>
|
|
99
|
-
<circle cx="253.75" cy="376.5702840755931" r="4" class="lookup-dot"/>
|
|
100
|
-
<circle cx="330.1363613997352" cy="381.48825884692724" r="4" class="lookup-dot"/>
|
|
101
|
-
<circle cx="431.1136386002648" cy="372.8653274994695" r="4" class="lookup-dot"/>
|
|
102
|
-
<circle cx="507.5" cy="356.0276858613769" r="4" class="lookup-dot"/>
|
|
103
|
-
<circle cx="583.8863613997353" cy="327.3781957596831" r="4" class="lookup-dot"/>
|
|
104
|
-
<circle cx="684.8636386002647" cy="304.30603248991525" r="4" class="lookup-dot"/>
|
|
105
|
-
<circle cx="761.25" cy="316.1453481631414" r="4" class="lookup-dot"/>
|
|
106
|
-
<circle cx="837.6363613997353" cy="300.79175199582454" r="4" class="lookup-dot"/>
|
|
107
|
-
<circle cx="938.6136386002647" cy="309.38444349636274" r="4" class="lookup-dot"/>
|
|
108
|
-
<circle cx="1015" cy="299.69820512998433" r="4" class="lookup-dot"/>
|
|
109
|
-
<!-- Legend -->
|
|
110
|
-
<g transform="translate(20, 20)">
|
|
111
|
-
<rect x="0" y="0" width="190" height="80" fill="white" stroke="#ccc" stroke-width="1"/>
|
|
112
|
-
|
|
113
|
-
<!-- Register Instance Legend -->
|
|
114
|
-
<text x="10" y="20" class="legend" font-weight="bold">Register Instance</text>
|
|
115
|
-
<line x1="10" y1="30" x2="40" y2="30" class="register-mean"/>
|
|
116
|
-
<circle cx="25" cy="30" r="3" class="register-dot"/>
|
|
117
|
-
<text x="45" y="34" class="legend">Average Timing</text>
|
|
118
|
-
|
|
119
|
-
<!-- Lookup Instance Legend -->
|
|
120
|
-
<text x="10" y="55" class="legend" font-weight="bold">Lookup Instance</text>
|
|
121
|
-
<line x1="10" y1="65" x2="40" y2="65" class="lookup-mean"/>
|
|
122
|
-
<circle cx="25" cy="65" r="3" class="lookup-dot"/>
|
|
123
|
-
<text x="45" y="69" class="legend">Average Timing</text>
|
|
124
|
-
</g>
|
|
125
|
-
|
|
126
|
-
</g>
|
|
127
|
-
|
|
128
|
-
<!-- Test Metadata Section -->
|
|
129
|
-
<g transform="translate(50, 620)">
|
|
130
|
-
<!-- Left Column: System Information -->
|
|
131
|
-
<g transform="translate(20, 20)">
|
|
132
|
-
<text x="0" y="0" class="metadata-section">System Information</text>
|
|
133
|
-
|
|
134
|
-
<text x="0" y="25" class="metadata-label">Test Date:</text>
|
|
135
|
-
<text x="150" y="25" class="metadata-value">2025-10-19</text>
|
|
136
|
-
|
|
137
|
-
<text x="0" y="45" class="metadata-label">Package Version:</text>
|
|
138
|
-
<text x="150" y="45" class="metadata-value">@fjell/registry v4.4.5</text>
|
|
139
|
-
|
|
140
|
-
<text x="0" y="65" class="metadata-label">Node.js Version:</text>
|
|
141
|
-
<text x="150" y="65" class="metadata-value">v24.8.0 (darwin arm64)</text>
|
|
142
|
-
|
|
143
|
-
<text x="0" y="85" class="metadata-label">Platform:</text>
|
|
144
|
-
<text x="150" y="85" class="metadata-value">darwin arm64</text>
|
|
145
|
-
|
|
146
|
-
<text x="0" y="105" class="metadata-label">Compiler:</text>
|
|
147
|
-
<text x="150" y="105" class="metadata-value">TypeScript + Vite</text>
|
|
148
|
-
</g>
|
|
149
|
-
|
|
150
|
-
<!-- Center Column: Test Configuration -->
|
|
151
|
-
<g transform="translate(330, 20)">
|
|
152
|
-
<text x="0" y="0" class="metadata-section">Test Configuration</text>
|
|
153
|
-
|
|
154
|
-
<text x="0" y="25" class="metadata-label">Test Rounds:</text>
|
|
155
|
-
<text x="120" y="25" class="metadata-value">100 per tree size</text>
|
|
156
|
-
|
|
157
|
-
<text x="0" y="45" class="metadata-label">Iterations per Round:</text>
|
|
158
|
-
<text x="120" y="45" class="metadata-value">200 operations</text>
|
|
159
|
-
|
|
160
|
-
<text x="0" y="65" class="metadata-label">Total Measurements:</text>
|
|
161
|
-
<text x="120" y="65" class="metadata-value">20,000 per data point</text>
|
|
162
|
-
</g>
|
|
163
|
-
|
|
164
|
-
<!-- Right Column: Test Notes -->
|
|
165
|
-
<g transform="translate(600, 20)">
|
|
166
|
-
<text x="0" y="0" class="metadata-section">Test Notes</text>
|
|
167
|
-
<text x="0" y="25" class="metadata-label">• Performance measurements use Node.js performance.now() with microsecond precision</text>
|
|
168
|
-
<text x="0" y="42" class="metadata-label">• Each test includes warm-up iterations to minimize JIT compilation effects</text>
|
|
169
|
-
<text x="0" y="59" class="metadata-label">• Logging is mocked during timing tests to eliminate I/O overhead</text>
|
|
170
|
-
<text x="0" y="76" class="metadata-label">• Tests verify both mean performance and consistency (low standard deviation)</text>
|
|
171
|
-
<text x="0" y="93" class="metadata-label">• Statistical analysis ensures reliable performance measurements across all tree sizes</text>
|
|
172
|
-
</g>
|
|
173
|
-
</g>
|
|
174
|
-
</svg>
|
package/docs/vitest.config.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vitest/config'
|
|
2
|
-
import react from '@vitejs/plugin-react'
|
|
3
|
-
|
|
4
|
-
export default defineConfig({
|
|
5
|
-
plugins: [react()],
|
|
6
|
-
test: {
|
|
7
|
-
globals: true,
|
|
8
|
-
environment: 'jsdom',
|
|
9
|
-
setupFiles: ['./src/test/setup.ts'],
|
|
10
|
-
coverage: {
|
|
11
|
-
reporter: ['text', 'json', 'html']
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
})
|