@depup/vercel 50.32.5-depup.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 (96) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +38 -0
  3. package/changes.json +38 -0
  4. package/dist/chunks/chunk-2DLBVZWU.js +197 -0
  5. package/dist/chunks/chunk-2HSQ7YUK.js +93 -0
  6. package/dist/chunks/chunk-2IQTNMUG.js +86 -0
  7. package/dist/chunks/chunk-3FRG2XGZ.js +466 -0
  8. package/dist/chunks/chunk-3KMKI2FP.js +34 -0
  9. package/dist/chunks/chunk-3XFFP2BA.js +110 -0
  10. package/dist/chunks/chunk-4S3Y3ATR.js +5383 -0
  11. package/dist/chunks/chunk-7EHTK7LP.js +359 -0
  12. package/dist/chunks/chunk-7YHZDJ4G.js +116 -0
  13. package/dist/chunks/chunk-A3NYPUKZ.js +17 -0
  14. package/dist/chunks/chunk-AA7QEJFB.js +5204 -0
  15. package/dist/chunks/chunk-AHU7WNL2.js +24 -0
  16. package/dist/chunks/chunk-AKQZ7KG3.js +4172 -0
  17. package/dist/chunks/chunk-AQLVWVEN.js +39155 -0
  18. package/dist/chunks/chunk-BQ3DXZNT.js +968 -0
  19. package/dist/chunks/chunk-E65JE2CC.js +102 -0
  20. package/dist/chunks/chunk-EKPSCRJZ.js +26 -0
  21. package/dist/chunks/chunk-EOZFDJSY.js +18 -0
  22. package/dist/chunks/chunk-FDJURQMQ.js +4676 -0
  23. package/dist/chunks/chunk-FLKHKWZV.js +1854 -0
  24. package/dist/chunks/chunk-G6BUEBF5.js +192 -0
  25. package/dist/chunks/chunk-GBNIO3KP.js +771 -0
  26. package/dist/chunks/chunk-GGP5R3FU.js +129 -0
  27. package/dist/chunks/chunk-H5XJSH37.js +91 -0
  28. package/dist/chunks/chunk-IB5L4LKZ.js +1082 -0
  29. package/dist/chunks/chunk-IE7MNZ56.js +149 -0
  30. package/dist/chunks/chunk-IK7DLK2T.js +16112 -0
  31. package/dist/chunks/chunk-IUGPWINM.js +104 -0
  32. package/dist/chunks/chunk-J7HDA5GH.js +54 -0
  33. package/dist/chunks/chunk-JLYZNGYY.js +293 -0
  34. package/dist/chunks/chunk-JQ4NA5MX.js +250 -0
  35. package/dist/chunks/chunk-LL26LVRR.js +81 -0
  36. package/dist/chunks/chunk-LW5ZNGW7.js +127 -0
  37. package/dist/chunks/chunk-LWBSOTJP.js +1772 -0
  38. package/dist/chunks/chunk-MBGJBHYD.js +388 -0
  39. package/dist/chunks/chunk-NUKAG3YM.js +168 -0
  40. package/dist/chunks/chunk-O7I4ZOCC.js +58 -0
  41. package/dist/chunks/chunk-OWR3XNE3.js +48 -0
  42. package/dist/chunks/chunk-P3SKP5WM.js +27 -0
  43. package/dist/chunks/chunk-P4I4DMEU.js +342 -0
  44. package/dist/chunks/chunk-P5Q6F5IA.js +107 -0
  45. package/dist/chunks/chunk-PMSMUMUO.js +30 -0
  46. package/dist/chunks/chunk-QXRJ52T4.js +2977 -0
  47. package/dist/chunks/chunk-RQXPRFRM.js +90 -0
  48. package/dist/chunks/chunk-S7KYDPEM.js +1564 -0
  49. package/dist/chunks/chunk-SGGLJFUZ.js +68 -0
  50. package/dist/chunks/chunk-SOTR4CXR.js +34 -0
  51. package/dist/chunks/chunk-TEVP63TU.js +1717 -0
  52. package/dist/chunks/chunk-TNBMKNET.js +323 -0
  53. package/dist/chunks/chunk-TZ2YI2VH.js +87 -0
  54. package/dist/chunks/chunk-U6XOC6E4.js +903 -0
  55. package/dist/chunks/chunk-V5P25P7F.js +22 -0
  56. package/dist/chunks/chunk-WQ5CUZWR.js +333 -0
  57. package/dist/chunks/chunk-WU2BPWRP.js +12237 -0
  58. package/dist/chunks/chunk-XPKWKPWA.js +44 -0
  59. package/dist/chunks/chunk-XR53KVJD.js +33 -0
  60. package/dist/chunks/chunk-Y4JJYHUG.js +16 -0
  61. package/dist/chunks/chunk-YPQSDAEW.js +29 -0
  62. package/dist/chunks/chunk-ZB2UO4V2.js +135 -0
  63. package/dist/chunks/chunk-ZLCMHY2G.js +1528 -0
  64. package/dist/chunks/compile-vercel-config-XU3YY2CZ.js +32 -0
  65. package/dist/chunks/delete-EJ2V7KQO.js +144 -0
  66. package/dist/chunks/disable-BKRFMX4U.js +122 -0
  67. package/dist/chunks/discard-4WF34DXK.js +118 -0
  68. package/dist/chunks/edit-FQE7JGU3.js +509 -0
  69. package/dist/chunks/emit-flags-datafiles-QYKPNWPX.js +17 -0
  70. package/dist/chunks/enable-VCNMX63U.js +122 -0
  71. package/dist/chunks/export-3KNVJCQR.js +133 -0
  72. package/dist/chunks/list-43XQCGKH.js +382 -0
  73. package/dist/chunks/list-DUL6PHUR.js +394 -0
  74. package/dist/chunks/publish-CF7GVZK3.js +128 -0
  75. package/dist/chunks/query-KWKO7VWO.js +954 -0
  76. package/dist/chunks/reorder-GU65YMIN.js +259 -0
  77. package/dist/chunks/restore-Q7ENGWVJ.js +158 -0
  78. package/dist/chunks/routes-Q5CWG44T.js +20 -0
  79. package/dist/chunks/schema-PJKLO2K2.js +176 -0
  80. package/dist/chunks/stamp-RTPE2EBB.js +15 -0
  81. package/dist/chunks/types-563KUQRV.js +108 -0
  82. package/dist/chunks/update-route-version-E3V47KNI.js +13 -0
  83. package/dist/commands/build/index.js +1597 -0
  84. package/dist/commands/deploy/index.js +1711 -0
  85. package/dist/commands/dev/builder-worker.cjs +95 -0
  86. package/dist/commands/dev/index.js +20810 -0
  87. package/dist/commands/env/index.js +2154 -0
  88. package/dist/commands/link/index.js +225 -0
  89. package/dist/commands/list/index.js +528 -0
  90. package/dist/commands-bulk.js +29627 -0
  91. package/dist/get-latest-worker.cjs +272 -0
  92. package/dist/help.js +14 -0
  93. package/dist/index.js +24274 -0
  94. package/dist/vc.js +36 -0
  95. package/dist/version.mjs +1 -0
  96. package/package.json +254 -0
@@ -0,0 +1,968 @@
1
+ import { createRequire as __createRequire } from 'node:module';
2
+ import { fileURLToPath as __fileURLToPath } from 'node:url';
3
+ import { dirname as __dirname_ } from 'node:path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __dirname_(__filename);
7
+ import {
8
+ validateAllProjectMutualExclusivity
9
+ } from "./chunk-IE7MNZ56.js";
10
+
11
+ // src/commands/metrics/schema-data.ts
12
+ var COUNT_AGGREGATIONS = ["sum", "persecond", "percent"];
13
+ var VALUE_AGGREGATIONS = [
14
+ "sum",
15
+ "persecond",
16
+ "percent",
17
+ "avg",
18
+ "min",
19
+ "max",
20
+ "p50",
21
+ "p75",
22
+ "p90",
23
+ "p95",
24
+ "p99",
25
+ "stddev"
26
+ ];
27
+ var SCHEMA = {
28
+ aiGatewayRequest: {
29
+ description: "AI Gateway Requests",
30
+ dimensions: [
31
+ {
32
+ name: "aiGatewayModelId",
33
+ label: "AI Gateway Model ID",
34
+ filterOnly: true
35
+ },
36
+ { name: "aiModel", label: "AI Model", filterOnly: false },
37
+ { name: "aiModelType", label: "AI Model Type", filterOnly: false },
38
+ { name: "aiProvider", label: "AI Provider", filterOnly: false },
39
+ {
40
+ name: "cacheCreationInputTokensCurrency",
41
+ label: "Cache Creation Input Tokens Currency",
42
+ filterOnly: true
43
+ },
44
+ {
45
+ name: "cachedInputTokensCurrency",
46
+ label: "Cached Input Tokens Currency",
47
+ filterOnly: true
48
+ },
49
+ { name: "costCurrency", label: "Currency", filterOnly: true },
50
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
51
+ { name: "environment", label: "Environment", filterOnly: false },
52
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
53
+ { name: "isByok", label: "BYOK", filterOnly: false },
54
+ { name: "keyId", label: "Key ID", filterOnly: true },
55
+ { name: "keyName", label: "Key Name", filterOnly: true },
56
+ {
57
+ name: "marketCostCurrency",
58
+ label: "Market Cost Currency",
59
+ filterOnly: true
60
+ },
61
+ { name: "projectId", label: "Project", filterOnly: false },
62
+ { name: "projectName", label: "Project", filterOnly: true },
63
+ {
64
+ name: "videoAspectRatio",
65
+ label: "Video Aspect Ratio",
66
+ filterOnly: false
67
+ },
68
+ { name: "videoResolution", label: "Video Resolution", filterOnly: false }
69
+ ],
70
+ measures: [
71
+ {
72
+ name: "aiRequestDurationMs",
73
+ label: "Request Duration",
74
+ unit: "milliseconds"
75
+ },
76
+ {
77
+ name: "cacheCreationInputTokens",
78
+ label: "Cache Creation Tokens",
79
+ unit: "count"
80
+ },
81
+ {
82
+ name: "cachedInputTokens",
83
+ label: "Cached Input Tokens",
84
+ unit: "count"
85
+ },
86
+ { name: "cost", label: "Cost", unit: "US dollars" },
87
+ { name: "count", label: "Count", unit: "count" },
88
+ { name: "inputTokens", label: "Input Tokens", unit: "count" },
89
+ { name: "outputTokens", label: "Output Tokens", unit: "count" },
90
+ {
91
+ name: "timeToFirstTokenMs",
92
+ label: "Time to First Token",
93
+ unit: "milliseconds"
94
+ },
95
+ { name: "videoCount", label: "Video Count", unit: "count" },
96
+ {
97
+ name: "videoDurationSeconds",
98
+ label: "Video Duration",
99
+ unit: "seconds"
100
+ },
101
+ { name: "videoFps", label: "Video FPS", unit: "count" },
102
+ { name: "webSearchCallCount", label: "Web Search Calls", unit: "count" }
103
+ ]
104
+ },
105
+ blobDataTransfer: {
106
+ description: "Blob store data transfer operations",
107
+ dimensions: [
108
+ { name: "cacheHitLevel", label: "Cache Hit Level", filterOnly: true },
109
+ { name: "cacheHitState", label: "Cache Hit State", filterOnly: true },
110
+ { name: "cacheResult", label: "Cache Result", filterOnly: false },
111
+ { name: "clientIp", label: "IP Address", filterOnly: false },
112
+ { name: "clientIpCountry", label: "IP Country", filterOnly: false },
113
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
114
+ {
115
+ name: "edgeNetworkRegion",
116
+ label: "Edge Network Region",
117
+ filterOnly: false
118
+ },
119
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
120
+ { name: "pathType", label: "Path Type", filterOnly: false },
121
+ {
122
+ name: "referrerHostname",
123
+ label: "Referrer Hostname",
124
+ filterOnly: false
125
+ },
126
+ { name: "referrerUrl", label: "Referrer URL", filterOnly: false },
127
+ { name: "requestId", label: "Request ID", filterOnly: true },
128
+ { name: "requestMethod", label: "Request Method", filterOnly: false },
129
+ { name: "requestPath", label: "Request Path", filterOnly: false },
130
+ { name: "storeId", label: "Store ID", filterOnly: true },
131
+ { name: "storeName", label: "Store", filterOnly: true }
132
+ ],
133
+ measures: [
134
+ { name: "bdtOutBytes", label: "Blob Data Transfer", unit: "bytes" },
135
+ { name: "count", label: "Count", unit: "count" }
136
+ ]
137
+ },
138
+ blobOperation: {
139
+ description: "Blob store operations including reads writes and deletes",
140
+ dimensions: [
141
+ {
142
+ name: "blobOperationLevel",
143
+ label: "Operation Level",
144
+ filterOnly: true
145
+ },
146
+ { name: "blobOperationType", label: "Operation", filterOnly: true },
147
+ { name: "storeId", label: "Store ID", filterOnly: true },
148
+ { name: "storeName", label: "Store", filterOnly: true }
149
+ ],
150
+ measures: [{ name: "count", label: "Count", unit: "count" }]
151
+ },
152
+ blockedConnection: {
153
+ description: "Blocked Connections",
154
+ dimensions: [
155
+ { name: "asnId", label: "AS Number", filterOnly: false },
156
+ { name: "asnName", label: "AS Name", filterOnly: false },
157
+ { name: "clientIp", label: "IP Address", filterOnly: false },
158
+ { name: "clientIpCountry", label: "IP Country", filterOnly: false },
159
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
160
+ {
161
+ name: "edgeNetworkRegion",
162
+ label: "Edge Network Region",
163
+ filterOnly: false
164
+ },
165
+ { name: "projectId", label: "Project", filterOnly: false },
166
+ { name: "projectName", label: "Project", filterOnly: true },
167
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
168
+ { name: "requestPath", label: "Request Path", filterOnly: false },
169
+ { name: "route", label: "Route", filterOnly: false },
170
+ { name: "wafAction", label: "WAF Action", filterOnly: false },
171
+ { name: "wafRuleId", label: "WAF Rule ID", filterOnly: false }
172
+ ],
173
+ measures: [{ name: "count", label: "Count", unit: "count" }]
174
+ },
175
+ botIdCheck: {
176
+ description: "BotID Checks",
177
+ dimensions: [
178
+ { name: "asnId", label: "AS Number", filterOnly: false },
179
+ { name: "asnName", label: "AS Name", filterOnly: false },
180
+ { name: "botCheckResult", label: "BotID", filterOnly: false },
181
+ { name: "clientIp", label: "IP Address", filterOnly: false },
182
+ { name: "clientIpCountry", label: "IP Country", filterOnly: false },
183
+ { name: "clientJa4Digest", label: "JA4 Digest", filterOnly: false },
184
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
185
+ {
186
+ name: "deepAnalysisCheck",
187
+ label: "Deep Analysis Check",
188
+ filterOnly: false
189
+ },
190
+ { name: "projectId", label: "Project", filterOnly: false },
191
+ { name: "projectName", label: "Project", filterOnly: true },
192
+ { name: "referrerUrl", label: "Referrer URL", filterOnly: false },
193
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
194
+ { name: "requestPath", label: "Request Path", filterOnly: false },
195
+ { name: "route", label: "Route", filterOnly: false }
196
+ ],
197
+ measures: [{ name: "count", label: "Count", unit: "count" }]
198
+ },
199
+ dataCacheEntryOperation: {
200
+ description: "Individual Vercel Data Cache entry operations",
201
+ dimensions: [
202
+ { name: "cacheApi", label: "Cache API", filterOnly: true },
203
+ { name: "cacheOperation", label: "Cache Operation", filterOnly: true },
204
+ { name: "cacheResult", label: "Cache Result", filterOnly: false },
205
+ {
206
+ name: "dataCacheRegion",
207
+ label: "Vercel Data Cache Region",
208
+ filterOnly: true
209
+ },
210
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
211
+ { name: "entryName", label: "Entry Name", filterOnly: true },
212
+ {
213
+ name: "entryRevalidateSeconds",
214
+ label: "Entry Revalidate Lifetime",
215
+ filterOnly: true
216
+ },
217
+ { name: "environment", label: "Environment", filterOnly: false },
218
+ { name: "projectId", label: "Project", filterOnly: false },
219
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
220
+ { name: "requestId", label: "Request ID", filterOnly: true }
221
+ ],
222
+ measures: [{ name: "count", label: "Count", unit: "count" }]
223
+ },
224
+ firewallAction: {
225
+ description: "Firewall Actions",
226
+ dimensions: [
227
+ { name: "asnId", label: "AS Number", filterOnly: false },
228
+ { name: "asnName", label: "AS Name", filterOnly: false },
229
+ { name: "clientIp", label: "IP Address", filterOnly: false },
230
+ { name: "clientIpCountry", label: "IP Country", filterOnly: false },
231
+ { name: "clientJa4Digest", label: "JA4 Digest", filterOnly: false },
232
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
233
+ {
234
+ name: "edgeNetworkRegion",
235
+ label: "Edge Network Region",
236
+ filterOnly: false
237
+ },
238
+ { name: "projectId", label: "Project", filterOnly: false },
239
+ { name: "projectName", label: "Project", filterOnly: true },
240
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
241
+ { name: "requestPath", label: "Request Path", filterOnly: false },
242
+ { name: "route", label: "Route", filterOnly: false },
243
+ { name: "wafAction", label: "WAF Action", filterOnly: false },
244
+ { name: "wafRuleId", label: "WAF Rule ID", filterOnly: false }
245
+ ],
246
+ measures: [{ name: "count", label: "Count", unit: "count" }]
247
+ },
248
+ functionExecution: {
249
+ description: "Function Executions",
250
+ dimensions: [
251
+ { name: "cause", label: "Cause", filterOnly: false },
252
+ { name: "clientIp", label: "IP Address", filterOnly: false },
253
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
254
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
255
+ {
256
+ name: "edgeNetworkRegion",
257
+ label: "Edge Network Region",
258
+ filterOnly: false
259
+ },
260
+ { name: "environment", label: "Environment", filterOnly: false },
261
+ { name: "errorCode", label: "Error Code", filterOnly: false },
262
+ { name: "functionRegion", label: "Function Region", filterOnly: false },
263
+ {
264
+ name: "functionStartType",
265
+ label: "Function Start Type",
266
+ filterOnly: false
267
+ },
268
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
269
+ {
270
+ name: "middlewareAction",
271
+ label: "Middleware Action",
272
+ filterOnly: false
273
+ },
274
+ {
275
+ name: "middlewareActionTarget",
276
+ label: "Middleware Action Target",
277
+ filterOnly: false
278
+ },
279
+ { name: "pathType", label: "Path Type", filterOnly: false },
280
+ { name: "projectId", label: "Project", filterOnly: false },
281
+ { name: "projectName", label: "Project", filterOnly: true },
282
+ { name: "provider", label: "Provider", filterOnly: true },
283
+ {
284
+ name: "referrerHostname",
285
+ label: "Referrer Hostname",
286
+ filterOnly: false
287
+ },
288
+ { name: "referrerUrl", label: "Referrer URL", filterOnly: false },
289
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
290
+ { name: "requestMethod", label: "Request Method", filterOnly: false },
291
+ { name: "requestPath", label: "Request Path", filterOnly: false },
292
+ { name: "route", label: "Route", filterOnly: false },
293
+ { name: "runtime", label: "Runtime", filterOnly: false },
294
+ {
295
+ name: "serverActionName",
296
+ label: "Server Action Name",
297
+ filterOnly: false
298
+ }
299
+ ],
300
+ measures: [
301
+ { name: "count", label: "Count", unit: "count" },
302
+ {
303
+ name: "fotInBytes",
304
+ label: "Incoming Fast Origin Transfer",
305
+ unit: "bytes"
306
+ },
307
+ {
308
+ name: "fotOutBytes",
309
+ label: "Outgoing Fast Origin Transfer",
310
+ unit: "bytes"
311
+ },
312
+ {
313
+ name: "functionCpuTimeMs",
314
+ label: "Active CPU Time",
315
+ unit: "milliseconds"
316
+ },
317
+ {
318
+ name: "functionDurationMs",
319
+ label: "Duration",
320
+ unit: "milliseconds"
321
+ },
322
+ {
323
+ name: "provisionedMemoryMb",
324
+ label: "Provisioned Memory",
325
+ unit: "megabytes"
326
+ },
327
+ {
328
+ name: "requestDurationMs",
329
+ label: "Request Duration",
330
+ unit: "milliseconds"
331
+ },
332
+ { name: "ttfbMs", label: "Time to First Byte", unit: "milliseconds" }
333
+ ]
334
+ },
335
+ imageTransformation: {
336
+ description: "Image Transformations",
337
+ dimensions: [
338
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
339
+ { name: "environment", label: "Environment", filterOnly: false },
340
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
341
+ {
342
+ name: "imageTransformationRegion",
343
+ label: "Image Optimization Region",
344
+ filterOnly: false
345
+ },
346
+ { name: "optimizedFormatMimeType", label: "Format", filterOnly: false },
347
+ { name: "optimizedQuality", label: "Quality", filterOnly: false },
348
+ { name: "optimizedWidthPixels", label: "Width", filterOnly: false },
349
+ { name: "projectId", label: "Project", filterOnly: false },
350
+ { name: "projectName", label: "Project", filterOnly: true },
351
+ { name: "sourceImage", label: "Source Image", filterOnly: true },
352
+ {
353
+ name: "sourceImageHash",
354
+ label: "Source Image Hash",
355
+ filterOnly: false
356
+ },
357
+ {
358
+ name: "sourceImageHostname",
359
+ label: "Source Image Hostname",
360
+ filterOnly: false
361
+ },
362
+ {
363
+ name: "sourceImagePathname",
364
+ label: "Source Image Pathname",
365
+ filterOnly: true
366
+ }
367
+ ],
368
+ measures: [
369
+ { name: "compressionRatio", label: "Compression Ratio", unit: "ratio" },
370
+ { name: "count", label: "Count", unit: "count" },
371
+ { name: "optimizedSizeBytes", label: "Optimized Size", unit: "bytes" },
372
+ {
373
+ name: "requestDurationMs",
374
+ label: "Request Duration",
375
+ unit: "milliseconds"
376
+ },
377
+ { name: "sizeChangePercent", label: "Size Change", unit: "percent" },
378
+ { name: "sourceSizeBytes", label: "Source Size", unit: "bytes" }
379
+ ]
380
+ },
381
+ imageTransformationFailure: {
382
+ description: "Image Transformation Failures",
383
+ dimensions: [
384
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
385
+ { name: "environment", label: "Environment", filterOnly: false },
386
+ { name: "errorMessage", label: "Error Message", filterOnly: true },
387
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
388
+ { name: "imageSource", label: "Image Source", filterOnly: true },
389
+ {
390
+ name: "imageTransformationRegion",
391
+ label: "Image Optimization Region",
392
+ filterOnly: false
393
+ },
394
+ { name: "optimizedFormatMimeType", label: "Format", filterOnly: false },
395
+ { name: "optimizedQuality", label: "Quality", filterOnly: false },
396
+ { name: "optimizedWidthPixels", label: "Width", filterOnly: false },
397
+ { name: "projectId", label: "Project", filterOnly: false },
398
+ { name: "projectName", label: "Project", filterOnly: true },
399
+ { name: "sourceImage", label: "Source Image", filterOnly: true },
400
+ {
401
+ name: "sourceImageHostname",
402
+ label: "Source Image Hostname",
403
+ filterOnly: false
404
+ },
405
+ {
406
+ name: "sourceImagePathname",
407
+ label: "Source Image Pathname",
408
+ filterOnly: true
409
+ }
410
+ ],
411
+ measures: [
412
+ { name: "count", label: "Count", unit: "count" },
413
+ {
414
+ name: "requestDurationMs",
415
+ label: "Request Duration",
416
+ unit: "milliseconds"
417
+ }
418
+ ]
419
+ },
420
+ edgeRequest: {
421
+ description: "Edge Requests",
422
+ queryEngineEvent: "incomingRequest",
423
+ dimensions: [
424
+ { name: "asnId", label: "AS Number", filterOnly: false },
425
+ { name: "asnName", label: "AS Name", filterOnly: false },
426
+ { name: "botCategory", label: "Bot Category", filterOnly: false },
427
+ {
428
+ name: "botCategoryLegacy",
429
+ label: "Bot Category (Legacy)",
430
+ filterOnly: false
431
+ },
432
+ { name: "botName", label: "Bot Name", filterOnly: false },
433
+ { name: "botVerified", label: "Bot Verified", filterOnly: false },
434
+ { name: "cacheHitLevel", label: "Cache Hit Level", filterOnly: true },
435
+ { name: "cacheHitState", label: "Cache Hit State", filterOnly: true },
436
+ { name: "cacheResult", label: "Cache Result", filterOnly: false },
437
+ { name: "clientIp", label: "IP Address", filterOnly: false },
438
+ { name: "clientIpCountry", label: "IP Country", filterOnly: false },
439
+ { name: "clientJa4Digest", label: "JA4 Digest", filterOnly: false },
440
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
441
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
442
+ {
443
+ name: "edgeNetworkRegion",
444
+ label: "Edge Network Region",
445
+ filterOnly: false
446
+ },
447
+ { name: "environment", label: "Environment", filterOnly: false },
448
+ { name: "errorCode", label: "Error Code", filterOnly: false },
449
+ {
450
+ name: "externalRewriteTargetHost",
451
+ label: "External Rewrite Destination Hostname",
452
+ filterOnly: true
453
+ },
454
+ {
455
+ name: "externalRewriteTargetPath",
456
+ label: "External Rewrite Destination Path",
457
+ filterOnly: true
458
+ },
459
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
460
+ { name: "isrCacheRegion", label: "ISR Cache Region", filterOnly: false },
461
+ {
462
+ name: "microfrontendsDefaultAppDeploymentId",
463
+ label: "Microfrontends Default App Deployment ID",
464
+ filterOnly: true
465
+ },
466
+ {
467
+ name: "microfrontendsDefaultAppProjectId",
468
+ label: "Microfrontends Default App Project ID",
469
+ filterOnly: true
470
+ },
471
+ {
472
+ name: "microfrontendsMatchedPath",
473
+ label: "Microfrontends Matched Path",
474
+ filterOnly: false
475
+ },
476
+ {
477
+ name: "microfrontendsResponseReason",
478
+ label: "Microfrontends Response Reason",
479
+ filterOnly: false
480
+ },
481
+ { name: "pathType", label: "Path Type", filterOnly: false },
482
+ { name: "pathTypeVariant", label: "Path Type Variant", filterOnly: true },
483
+ { name: "projectId", label: "Project", filterOnly: false },
484
+ { name: "projectName", label: "Project", filterOnly: true },
485
+ {
486
+ name: "redirectLocation",
487
+ label: "Redirect Location",
488
+ filterOnly: false
489
+ },
490
+ {
491
+ name: "referrerHostname",
492
+ label: "Referrer Hostname",
493
+ filterOnly: false
494
+ },
495
+ { name: "referrerUrl", label: "Referrer URL", filterOnly: false },
496
+ {
497
+ name: "requestExtension",
498
+ label: "Request Extension",
499
+ filterOnly: true
500
+ },
501
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
502
+ { name: "requestId", label: "Request ID", filterOnly: true },
503
+ { name: "requestMethod", label: "Request Method", filterOnly: false },
504
+ { name: "requestPath", label: "Request Path", filterOnly: false },
505
+ {
506
+ name: "rewriteDestinationHostname",
507
+ label: "Rewrite Destination Hostname",
508
+ filterOnly: true
509
+ },
510
+ { name: "route", label: "Route", filterOnly: false },
511
+ {
512
+ name: "serverActionName",
513
+ label: "Server Action Name",
514
+ filterOnly: false
515
+ },
516
+ { name: "skewProtection", label: "Skew Protection", filterOnly: false },
517
+ { name: "wafAction", label: "WAF Action", filterOnly: false },
518
+ { name: "wafRuleId", label: "WAF Rule ID", filterOnly: false }
519
+ ],
520
+ measures: [
521
+ { name: "count", label: "Count", unit: "count" },
522
+ {
523
+ name: "externalRewriteConnectMs",
524
+ label: "External Rewrite Connect Time",
525
+ unit: "milliseconds"
526
+ },
527
+ {
528
+ name: "externalRewriteDnsMs",
529
+ label: "External Rewrite DNS Time",
530
+ unit: "milliseconds"
531
+ },
532
+ {
533
+ name: "fdtInBytes",
534
+ label: "Fast Data Transfer (Incoming)",
535
+ unit: "bytes"
536
+ },
537
+ {
538
+ name: "fdtOutBytes",
539
+ label: "Fast Data Transfer (Outgoing)",
540
+ unit: "bytes"
541
+ },
542
+ {
543
+ name: "fdtTotalBytes",
544
+ label: "Fast Data Transfer (Total)",
545
+ unit: "bytes"
546
+ },
547
+ {
548
+ name: "requestDurationMs",
549
+ label: "Edge Request Duration",
550
+ unit: "milliseconds"
551
+ }
552
+ ]
553
+ },
554
+ isrOperation: {
555
+ description: "ISR Operations",
556
+ dimensions: [
557
+ { name: "cacheHitLevel", label: "Cache Hit Level", filterOnly: true },
558
+ { name: "cacheHitState", label: "Cache Hit State", filterOnly: true },
559
+ { name: "cacheResult", label: "Cache Result", filterOnly: false },
560
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
561
+ {
562
+ name: "edgeNetworkRegion",
563
+ label: "Edge Network Region",
564
+ filterOnly: false
565
+ },
566
+ { name: "environment", label: "Environment", filterOnly: false },
567
+ { name: "errorCode", label: "Error Code", filterOnly: false },
568
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
569
+ { name: "isrAction", label: "ISR Action", filterOnly: true },
570
+ { name: "isrCacheRegion", label: "ISR Cache Region", filterOnly: false },
571
+ { name: "pathType", label: "Path Type", filterOnly: false },
572
+ { name: "projectId", label: "Project", filterOnly: false },
573
+ { name: "projectName", label: "Project", filterOnly: true },
574
+ {
575
+ name: "referrerHostname",
576
+ label: "Referrer Hostname",
577
+ filterOnly: false
578
+ },
579
+ { name: "referrerUrl", label: "Referrer URL", filterOnly: false },
580
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
581
+ { name: "requestMethod", label: "Request Method", filterOnly: false },
582
+ { name: "requestPath", label: "Request Path", filterOnly: false },
583
+ { name: "route", label: "Route", filterOnly: false }
584
+ ],
585
+ measures: [
586
+ { name: "isrReadBytes", label: "Read Bandwidth", unit: "bytes" },
587
+ { name: "isrReadUnits", label: "Read Units", unit: "count" },
588
+ { name: "isrWriteBytes", label: "Write Bandwidth", unit: "bytes" },
589
+ { name: "isrWriteUnits", label: "Write Units", unit: "count" },
590
+ { name: "count", label: "Count", unit: "count" }
591
+ ]
592
+ },
593
+ middlewareInvocation: {
594
+ description: "Middleware Invocations",
595
+ dimensions: [
596
+ { name: "clientIp", label: "IP Address", filterOnly: false },
597
+ { name: "clientUserAgent", label: "User Agent", filterOnly: false },
598
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
599
+ {
600
+ name: "edgeNetworkRegion",
601
+ label: "Edge Network Region",
602
+ filterOnly: false
603
+ },
604
+ { name: "environment", label: "Environment", filterOnly: false },
605
+ { name: "functionRegion", label: "Function Region", filterOnly: false },
606
+ {
607
+ name: "functionStartType",
608
+ label: "Function Start Type",
609
+ filterOnly: false
610
+ },
611
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
612
+ {
613
+ name: "isAdditionalRequest",
614
+ label: "Is Additional Request",
615
+ filterOnly: true
616
+ },
617
+ {
618
+ name: "middlewareAction",
619
+ label: "Middleware Action",
620
+ filterOnly: false
621
+ },
622
+ {
623
+ name: "middlewareActionTarget",
624
+ label: "Middleware Action Target",
625
+ filterOnly: false
626
+ },
627
+ { name: "projectId", label: "Project", filterOnly: false },
628
+ { name: "projectName", label: "Project", filterOnly: true },
629
+ {
630
+ name: "referrerHostname",
631
+ label: "Referrer Hostname",
632
+ filterOnly: false
633
+ },
634
+ { name: "referrerUrl", label: "Referrer URL", filterOnly: false },
635
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
636
+ { name: "requestMethod", label: "Request Method", filterOnly: false },
637
+ { name: "requestPath", label: "Request Path", filterOnly: false }
638
+ ],
639
+ measures: [
640
+ { name: "count", label: "Count", unit: "count" },
641
+ { name: "durationMs", label: "Duration", unit: "milliseconds" },
642
+ {
643
+ name: "fotInBytes",
644
+ label: "Incoming Fast Origin Transfer",
645
+ unit: "bytes"
646
+ },
647
+ {
648
+ name: "fotOutBytes",
649
+ label: "Outgoing Fast Origin Transfer",
650
+ unit: "bytes"
651
+ },
652
+ {
653
+ name: "fotTotalBytes",
654
+ label: "Total Fast Origin Transfer",
655
+ unit: "bytes"
656
+ },
657
+ {
658
+ name: "functionCpuTimeMs",
659
+ label: "Active CPU Time",
660
+ unit: "milliseconds"
661
+ },
662
+ { name: "ttfbMs", label: "Time to First Byte", unit: "milliseconds" }
663
+ ]
664
+ },
665
+ outgoingRequest: {
666
+ description: "External APIs",
667
+ dimensions: [
668
+ { name: "cacheHostname", label: "Cache Hostname", filterOnly: true },
669
+ { name: "cachePath", label: "Cache Path", filterOnly: true },
670
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
671
+ { name: "edgeType", label: "Edge Type", filterOnly: true },
672
+ { name: "environment", label: "Environment", filterOnly: false },
673
+ { name: "errorCode", label: "Error Code", filterOnly: false },
674
+ { name: "fetchIndex", label: "Fetch Index", filterOnly: true },
675
+ { name: "fetchType", label: "Request Target", filterOnly: false },
676
+ { name: "functionRegion", label: "Function Region", filterOnly: false },
677
+ { name: "httpStatus", label: "HTTP Status", filterOnly: false },
678
+ { name: "originHostname", label: "Function Hostname", filterOnly: false },
679
+ { name: "originPath", label: "Function Path", filterOnly: false },
680
+ { name: "originRoute", label: "Function Route", filterOnly: false },
681
+ { name: "projectId", label: "Project", filterOnly: false },
682
+ { name: "projectName", label: "Project", filterOnly: true },
683
+ {
684
+ name: "reason",
685
+ label: "Reason of failure for outgoing requests",
686
+ filterOnly: true
687
+ },
688
+ { name: "requestApi", label: "Request API", filterOnly: true },
689
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
690
+ { name: "requestId", label: "Request ID", filterOnly: true },
691
+ { name: "requestMethod", label: "Request Method", filterOnly: false },
692
+ { name: "requestPath", label: "Request Path", filterOnly: false },
693
+ {
694
+ name: "requestResolvedIp",
695
+ label: "Resolved Request IP",
696
+ filterOnly: true
697
+ },
698
+ { name: "source", label: "edge vs lambda", filterOnly: true }
699
+ ],
700
+ measures: [
701
+ { name: "count", label: "Count", unit: "count" },
702
+ {
703
+ name: "requestDurationMs",
704
+ label: "Time to First Byte",
705
+ unit: "milliseconds"
706
+ }
707
+ ]
708
+ },
709
+ queueOperation: {
710
+ description: "Queue operations for message processing",
711
+ dimensions: [
712
+ { name: "consumerGroup", label: "Consumer Group", filterOnly: true },
713
+ { name: "contentType", label: "Content Type", filterOnly: true },
714
+ { name: "environment", label: "Environment", filterOnly: false },
715
+ { name: "eventType", label: "Queue Event Type", filterOnly: true },
716
+ { name: "messageId", label: "Message ID", filterOnly: true },
717
+ { name: "projectId", label: "Project", filterOnly: false },
718
+ { name: "projectName", label: "Project", filterOnly: true },
719
+ { name: "queueName", label: "Queue Name", filterOnly: true }
720
+ ],
721
+ measures: [{ name: "count", label: "Count", unit: "count" }]
722
+ },
723
+ speedInsightsMetric: {
724
+ description: "Core Web Vitals and performance metrics",
725
+ dimensions: [
726
+ { name: "browserName", label: "Browser", filterOnly: true },
727
+ { name: "country", label: "Country", filterOnly: true },
728
+ { name: "deploymentId", label: "Deployment ID", filterOnly: false },
729
+ { name: "deviceType", label: "Device Type", filterOnly: true },
730
+ { name: "environment", label: "Environment", filterOnly: false },
731
+ { name: "osName", label: "Operating System", filterOnly: true },
732
+ { name: "projectId", label: "Project", filterOnly: false },
733
+ { name: "requestHostname", label: "Request Hostname", filterOnly: false },
734
+ { name: "requestPath", label: "Request Path", filterOnly: false },
735
+ { name: "route", label: "Route", filterOnly: false }
736
+ ],
737
+ measures: [
738
+ { name: "cls", label: "Cumulative Layout Shift", unit: "ratio" },
739
+ { name: "count", label: "Count", unit: "count" },
740
+ { name: "fcp", label: "First Contentful Paint", unit: "milliseconds" },
741
+ { name: "fid", label: "First Input Delay", unit: "milliseconds" },
742
+ { name: "inp", label: "Interaction to Next Paint", unit: "milliseconds" },
743
+ { name: "lcp", label: "Largest Contentful Paint", unit: "milliseconds" },
744
+ { name: "ttfbMs", label: "Time to First Byte", unit: "milliseconds" }
745
+ ]
746
+ },
747
+ workflowOperation: {
748
+ description: "Workflow Operations",
749
+ dimensions: [
750
+ { name: "environment", label: "Environment", filterOnly: false },
751
+ { name: "projectId", label: "Project", filterOnly: false },
752
+ { name: "projectName", label: "Project", filterOnly: true },
753
+ { name: "stepRunId", label: "Step Run ID", filterOnly: false },
754
+ { name: "workflowEventType", label: "Event Type", filterOnly: false },
755
+ { name: "workflowName", label: "Workflow Name", filterOnly: false },
756
+ { name: "workflowRunId", label: "Run ID", filterOnly: false },
757
+ { name: "workflowStatus", label: "Status", filterOnly: false },
758
+ { name: "workflowStepName", label: "Step Name", filterOnly: false }
759
+ ],
760
+ measures: [{ name: "count", label: "Count", unit: "count" }]
761
+ }
762
+ };
763
+ function getEventNames() {
764
+ return Object.keys(SCHEMA).sort();
765
+ }
766
+ function getEvent(name) {
767
+ return SCHEMA[name];
768
+ }
769
+ function getQueryEngineEventName(name) {
770
+ const event = getEvent(name);
771
+ return event?.queryEngineEvent ?? name;
772
+ }
773
+ function getDimensions(eventName) {
774
+ return getEvent(eventName)?.dimensions ?? [];
775
+ }
776
+ function getMeasures(eventName) {
777
+ return getEvent(eventName)?.measures ?? [];
778
+ }
779
+ function getDefaultAggregation(eventName, measureName) {
780
+ if (measureName === "count")
781
+ return "sum";
782
+ const event = getEvent(eventName);
783
+ if (!event)
784
+ return "sum";
785
+ const measure = event.measures.find((m) => m.name === measureName);
786
+ if (!measure)
787
+ return "sum";
788
+ switch (measure.unit) {
789
+ case "count":
790
+ case "bytes":
791
+ case "US dollars":
792
+ return "sum";
793
+ case "milliseconds":
794
+ case "seconds":
795
+ case "megabytes":
796
+ case "gigabyte hours":
797
+ case "ratio":
798
+ case "percent":
799
+ return "avg";
800
+ default:
801
+ return "sum";
802
+ }
803
+ }
804
+ function getAggregations(eventName, measureName) {
805
+ const event = getEvent(eventName);
806
+ if (!event) {
807
+ return [];
808
+ }
809
+ const measure = event.measures.find((m) => m.name === measureName);
810
+ if (!measure) {
811
+ return [];
812
+ }
813
+ if (measureName === "count") {
814
+ return COUNT_AGGREGATIONS;
815
+ }
816
+ return VALUE_AGGREGATIONS;
817
+ }
818
+
819
+ // src/commands/metrics/validation.ts
820
+ function validateEvent(event) {
821
+ if (getEvent(event)) {
822
+ return { valid: true };
823
+ }
824
+ return {
825
+ valid: false,
826
+ code: "UNKNOWN_EVENT",
827
+ message: `Unknown event "${event}".`,
828
+ allowedValues: getEventNames()
829
+ };
830
+ }
831
+ function validateMeasure(event, measure) {
832
+ const measures = getMeasures(event);
833
+ if (measures.some((m) => m.name === measure)) {
834
+ return { valid: true };
835
+ }
836
+ return {
837
+ valid: false,
838
+ code: "UNKNOWN_MEASURE",
839
+ message: `Measure "${measure}" is not available for event "${event}".`,
840
+ allowedValues: measures.map((m) => m.name)
841
+ };
842
+ }
843
+ function validateAggregation(event, measure, aggregation) {
844
+ const aggs = getAggregations(event, measure);
845
+ const found = aggs.find((agg) => agg === aggregation);
846
+ if (found) {
847
+ return { valid: true, value: found };
848
+ }
849
+ return {
850
+ valid: false,
851
+ code: "INVALID_AGGREGATION",
852
+ message: `Aggregation "${aggregation}" is not valid for measure "${measure}" on event "${event}".`,
853
+ allowedValues: [...aggs]
854
+ };
855
+ }
856
+ function validateGroupBy(event, dims) {
857
+ const dimensions = getDimensions(event);
858
+ for (const dim of dims) {
859
+ const found = dimensions.find((d) => d.name === dim);
860
+ if (!found) {
861
+ return {
862
+ valid: false,
863
+ code: "UNKNOWN_DIMENSION",
864
+ message: `Dimension "${dim}" is not available for event "${event}".`,
865
+ allowedValues: dimensions.map((d) => d.name)
866
+ };
867
+ }
868
+ if (found.filterOnly) {
869
+ return {
870
+ valid: false,
871
+ code: "FILTER_ONLY_DIMENSION",
872
+ message: `Dimension "${dim}" on event "${event}" is filter-only and cannot be used in --group-by.
873
+ Use it with --filter instead: --filter "${dim} eq '<value>'"`
874
+ };
875
+ }
876
+ }
877
+ return { valid: true };
878
+ }
879
+ function validateMutualExclusivity(all, project) {
880
+ return validateAllProjectMutualExclusivity(all, project);
881
+ }
882
+ function validateRequiredEvent(event) {
883
+ if (event) {
884
+ return { valid: true, value: event };
885
+ }
886
+ return {
887
+ valid: false,
888
+ code: "MISSING_EVENT",
889
+ message: "Missing required flag --event. Specify the event type to query.\n\nRun 'vercel metrics schema' to see available events."
890
+ };
891
+ }
892
+
893
+ // src/commands/metrics/output.ts
894
+ function getRollupColumnName(measure, aggregation) {
895
+ return `${measure}_${aggregation}`;
896
+ }
897
+ function formatQueryJson(query, response) {
898
+ return JSON.stringify(
899
+ {
900
+ query,
901
+ summary: response.summary ?? [],
902
+ data: response.data ?? [],
903
+ statistics: response.statistics ?? {}
904
+ },
905
+ null,
906
+ 2
907
+ );
908
+ }
909
+ function formatSchemaDetailJson(event, aggregations) {
910
+ const dimensions = event.dimensions.map((d) => {
911
+ const obj = {
912
+ name: d.name,
913
+ label: d.label
914
+ };
915
+ if (d.filterOnly) {
916
+ obj.filterOnly = true;
917
+ }
918
+ return obj;
919
+ });
920
+ return JSON.stringify(
921
+ {
922
+ event: event.name,
923
+ description: event.description,
924
+ dimensions,
925
+ measures: event.measures.map((m) => ({
926
+ name: m.name,
927
+ label: m.label,
928
+ unit: m.unit
929
+ })),
930
+ aggregations: [...aggregations]
931
+ },
932
+ null,
933
+ 2
934
+ );
935
+ }
936
+ function formatSchemaListJson(events) {
937
+ return JSON.stringify(events, null, 2);
938
+ }
939
+ function formatErrorJson(code, message, allowedValues) {
940
+ const error = {
941
+ code,
942
+ message
943
+ };
944
+ if (allowedValues && allowedValues.length > 0) {
945
+ error.allowedValues = allowedValues;
946
+ }
947
+ return JSON.stringify({ error }, null, 2);
948
+ }
949
+
950
+ export {
951
+ getEventNames,
952
+ getEvent,
953
+ getQueryEngineEventName,
954
+ getMeasures,
955
+ getDefaultAggregation,
956
+ getAggregations,
957
+ validateEvent,
958
+ validateMeasure,
959
+ validateAggregation,
960
+ validateGroupBy,
961
+ validateMutualExclusivity,
962
+ validateRequiredEvent,
963
+ getRollupColumnName,
964
+ formatQueryJson,
965
+ formatSchemaDetailJson,
966
+ formatSchemaListJson,
967
+ formatErrorJson
968
+ };