vercel 59.15.0 → 59.16.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 (127) hide show
  1. package/dist/chunks/{add-7XFD2OHW.js → add-65ZSJF26.js} +1 -1
  2. package/dist/chunks/{add-HZC7AUBY.js → add-7G6574RA.js} +1 -1
  3. package/dist/chunks/{add-PYUNJZ6K.js → add-MFTI65B7.js} +1 -1
  4. package/dist/chunks/{build-EFKQ6BND.js → build-BLQRFSLM.js} +1 -1
  5. package/dist/chunks/{chunk-KO733OJG.js → chunk-265LYROU.js} +1 -1
  6. package/dist/chunks/{chunk-HZZ5L472.js → chunk-3EBQRPCU.js} +1 -1
  7. package/dist/chunks/{chunk-KNEWCUWF.js → chunk-4XH66IEQ.js} +1 -1
  8. package/dist/chunks/{chunk-EOBD4ZEG.js → chunk-4XO6BRQW.js} +1 -1
  9. package/dist/chunks/{chunk-3QT7VOE3.js → chunk-65JYSI26.js} +1 -1
  10. package/dist/chunks/{chunk-JIYY3B4C.js → chunk-6NVGLVCH.js} +1 -1
  11. package/dist/chunks/{chunk-3IAQUNQH.js → chunk-7FEWFNWG.js} +1 -1
  12. package/dist/chunks/{chunk-NGNOUPWS.js → chunk-7GU2GVQ7.js} +1 -1
  13. package/dist/chunks/{chunk-RKAUVPOQ.js → chunk-7HSQ4ULK.js} +1 -1
  14. package/dist/chunks/{chunk-EE3FVJLV.js → chunk-7V6DZO2T.js} +1 -1
  15. package/dist/chunks/{chunk-ADUYPK2G.js → chunk-AK5EV3WD.js} +1 -1
  16. package/dist/chunks/{chunk-XHOGOH6N.js → chunk-BMOWQEWL.js} +1 -1
  17. package/dist/chunks/{chunk-GTRGQIY2.js → chunk-DFE7LVAK.js} +1 -1
  18. package/dist/chunks/{chunk-7R5FEXZ5.js → chunk-EIXOJUNN.js} +1 -1
  19. package/dist/chunks/{chunk-AFPOIDM5.js → chunk-FANE2VO3.js} +1 -1
  20. package/dist/chunks/{chunk-FVGESGJI.js → chunk-G4QF3M55.js} +1 -1
  21. package/dist/chunks/{chunk-NHTF332K.js → chunk-GYGIBRFB.js} +1 -1
  22. package/dist/chunks/{chunk-SGWVKRSR.js → chunk-IT3UX6V4.js} +1 -1
  23. package/dist/chunks/chunk-LSBEGBBX.js +9 -0
  24. package/dist/chunks/{chunk-VLZ47RWM.js → chunk-M67S3ZNJ.js} +2 -2
  25. package/dist/chunks/chunk-MPV7JL34.js +29 -0
  26. package/dist/chunks/{chunk-M2XARQBF.js → chunk-NB2UCUFL.js} +1 -1
  27. package/dist/chunks/{chunk-5QQNYN4N.js → chunk-O3QTFKP3.js} +1 -1
  28. package/dist/chunks/chunk-OAKO6LVS.js +7 -0
  29. package/dist/chunks/{chunk-OD6RZ3XZ.js → chunk-OTVTI2GM.js} +1 -1
  30. package/dist/chunks/chunk-PV5PBVER.js +7 -0
  31. package/dist/chunks/{chunk-HSJ6AHWG.js → chunk-PZPLBXHU.js} +1 -1
  32. package/dist/chunks/{chunk-MAVRGZQP.js → chunk-QGHN2WOY.js} +1 -1
  33. package/dist/chunks/{chunk-LDM3SQAU.js → chunk-R3RHRLGI.js} +1 -1
  34. package/dist/chunks/chunk-RN2EWPUH.js +18 -0
  35. package/dist/chunks/{chunk-ENS6KX2F.js → chunk-RUJT2JBX.js} +1 -1
  36. package/dist/chunks/chunk-TEAQZXCV.js +9 -0
  37. package/dist/chunks/{chunk-TKBXN4H3.js → chunk-TGVB4DJ4.js} +2 -2
  38. package/dist/chunks/{chunk-WKZ6JSGZ.js → chunk-TKBORMUF.js} +1 -1
  39. package/dist/chunks/{chunk-UGMZQZJE.js → chunk-V4L6NUSW.js} +1 -1
  40. package/dist/chunks/{chunk-OK3S6KFX.js → chunk-V6GSMYQB.js} +2 -2
  41. package/dist/chunks/{chunk-ZT6KDLLY.js → chunk-XK2BQUWV.js} +6 -5
  42. package/dist/chunks/{chunk-OKZDOANA.js → chunk-XZ2JXEXU.js} +1 -1
  43. package/dist/chunks/{chunk-2PPXY24N.js → chunk-YCCBAQIH.js} +2 -2
  44. package/dist/chunks/{chunk-CUAIEGNE.js → chunk-YCD5VEHQ.js} +1 -1
  45. package/dist/chunks/{chunk-HVUHCRZB.js → chunk-ZM2RFVTV.js} +1 -1
  46. package/dist/chunks/{clear-5NQAVWIF.js → clear-OJ6EDV3Q.js} +1 -1
  47. package/dist/chunks/{compile-vercel-config-6J2XUFRK.js → compile-vercel-config-HKMFYX2L.js} +1 -1
  48. package/dist/chunks/{config-CKYRXZXL.js → config-IVZNLEUK.js} +1 -1
  49. package/dist/chunks/{config-VNUY4RJ4.js → config-LULRZCTY.js} +1 -1
  50. package/dist/chunks/config-validator.mjs +1 -1
  51. package/dist/chunks/{constants-G4UYVLOF.js → constants-NCE2LWSS.js} +1 -1
  52. package/dist/chunks/{delete-HRJEO4MI.js → delete-DUHLA627.js} +1 -1
  53. package/dist/chunks/{delete-GTXXCSKQ.js → delete-HBL7TKZ5.js} +1 -1
  54. package/dist/chunks/{detect-services-GHILEGNU.js → detect-services-5GIRISUS.js} +1 -1
  55. package/dist/chunks/{disable-RWCRVG5O.js → disable-XTZ2FN2I.js} +1 -1
  56. package/dist/chunks/{discard-SHFIYCJU.js → discard-4IW37YWA.js} +1 -1
  57. package/dist/chunks/{edit-DMO3NSO2.js → edit-BBEW6J4Y.js} +1 -1
  58. package/dist/chunks/{edit-EVQI2RSS.js → edit-PUQ4NHNH.js} +1 -1
  59. package/dist/chunks/{enable-AWDU6STD.js → enable-4AIU4V44.js} +1 -1
  60. package/dist/chunks/{export-IQKTA4RS.js → export-NQ4SZHRW.js} +1 -1
  61. package/dist/chunks/{generate-cert-for-deploy-VKOWC4PZ.js → generate-cert-for-deploy-IGJNGQLD.js} +1 -1
  62. package/dist/chunks/{image-LDFYNOCA.js → image-PEDML4FR.js} +1 -1
  63. package/dist/chunks/{import-builders-P7CXSX2D.js → import-builders-UAMMKJAT.js} +1 -1
  64. package/dist/chunks/{inspect-53SGDDAH.js → inspect-DXFD47VC.js} +1 -1
  65. package/dist/chunks/{inspect-5INZDUQS.js → inspect-EEGSI64I.js} +1 -1
  66. package/dist/chunks/{inspect-WMT2M335.js → inspect-EZP7WID3.js} +1 -1
  67. package/dist/chunks/{inspect-3N47ODIH.js → inspect-TUXRUGES.js} +1 -1
  68. package/dist/chunks/{inspect-Y6BUCOUV.js → inspect-WY6ISJM6.js} +1 -1
  69. package/dist/chunks/{list-K5J7OULR.js → list-EQBJKUH7.js} +1 -1
  70. package/dist/chunks/{list-BIAPHKFM.js → list-JC24ACBV.js} +1 -1
  71. package/dist/chunks/{list-DMOCRRSE.js → list-QTYHA5QM.js} +1 -1
  72. package/dist/chunks/{login-SRVNHI4Y.js → login-WDMVEUBV.js} +1 -1
  73. package/dist/chunks/{logs-GK7CJBYY.js → logs-JWDSCEI5.js} +1 -1
  74. package/dist/chunks/{ls-AJWN5ZR4.js → ls-3VJGBK3L.js} +1 -1
  75. package/dist/chunks/{ls-UVKTHBTE.js → ls-3ZKP7ZPO.js} +1 -1
  76. package/dist/chunks/{ls-KGIE6HCO.js → ls-BAMHXX2I.js} +1 -1
  77. package/dist/chunks/{ls-WEG45IOC.js → ls-S6JZYPGH.js} +1 -1
  78. package/dist/chunks/ls-TYHGH2W4.js +11 -0
  79. package/dist/chunks/{ls-7ZX6DCJW.js → ls-YA2L3HO5.js} +1 -1
  80. package/dist/chunks/{ls-BFJWCRLZ.js → ls-YXJ4X57G.js} +1 -1
  81. package/dist/chunks/mutate-PE6TUYAM.js +9 -0
  82. package/dist/chunks/notifications-T3RUG34N.js +7 -0
  83. package/dist/chunks/{open-OEWPI5G6.js → open-BAWCRPNZ.js} +1 -1
  84. package/dist/chunks/{permissions-EPQBQFE3.js → permissions-4AXOWGE6.js} +1 -1
  85. package/dist/chunks/{publish-JG7MEPWT.js → publish-2XWTYLVS.js} +1 -1
  86. package/dist/chunks/{pull-MRKXG6TO.js → pull-KCOUWGVC.js} +1 -1
  87. package/dist/chunks/{purchase-domain-if-available-O5ARXEZ5.js → purchase-domain-if-available-BLEETOAR.js} +1 -1
  88. package/dist/chunks/{push-XOXJDFYO.js → push-HVT3DU7K.js} +1 -1
  89. package/dist/chunks/query-MJ7EBPCB.js +12 -0
  90. package/dist/chunks/{reorder-5DMRFDBY.js → reorder-2L5YJSXX.js} +1 -1
  91. package/dist/chunks/{reply-WSRNZWFD.js → reply-PPDMG3MF.js} +1 -1
  92. package/dist/chunks/{resolve-YJUXQVOZ.js → resolve-YJVUNKED.js} +1 -1
  93. package/dist/chunks/{restore-QT3DBGKU.js → restore-V6I26UDI.js} +1 -1
  94. package/dist/chunks/{rm-MVZFU6RG.js → rm-3NXDUNS4.js} +1 -1
  95. package/dist/chunks/{rm-WB2AIP3N.js → rm-43ZFE4U2.js} +1 -1
  96. package/dist/chunks/{rm-XRP6MRUT.js → rm-CD6UH446.js} +1 -1
  97. package/dist/chunks/{rm-PXR4J2US.js → rm-SQNLLMLK.js} +1 -1
  98. package/dist/chunks/{rm-MHPIUEZ5.js → rm-VUOBWXNR.js} +1 -1
  99. package/dist/chunks/{rule-inspect-TT3DRGCS.js → rule-inspect-D6NCXGFR.js} +1 -1
  100. package/dist/chunks/rules-CI4NIZTK.js +7 -0
  101. package/dist/chunks/schema-C2ZBFLA5.js +14 -0
  102. package/dist/chunks/{schema-KCNKVFT3.js → schema-GTOTPNEE.js} +1 -1
  103. package/dist/chunks/{set-7BANEWEL.js → set-5OG2JDEK.js} +1 -1
  104. package/dist/chunks/{setup-and-link-ZAV3EFGC.js → setup-and-link-KW27P3UH.js} +1 -1
  105. package/dist/chunks/{tags-VZR66NUC.js → tags-77GJR6ZK.js} +1 -1
  106. package/dist/chunks/{update-RBFNNSWE.js → update-5BEQ4XCV.js} +2 -2
  107. package/dist/chunks/utils-BG3TNJBX.js +86 -0
  108. package/dist/commands/build/index.js +1 -1
  109. package/dist/commands/deploy/index.js +9 -9
  110. package/dist/commands/dev/index.js +4 -4
  111. package/dist/commands/env/index.js +1 -1
  112. package/dist/commands/link/index.js +1 -1
  113. package/dist/commands/list/index.js +1 -1
  114. package/dist/commands-bulk.js +508 -492
  115. package/dist/index.js +1 -1
  116. package/dist/version.mjs +1 -1
  117. package/package.json +47 -47
  118. package/dist/chunks/chunk-BATE73HA.js +0 -9
  119. package/dist/chunks/chunk-EOCTK4EA.js +0 -7
  120. package/dist/chunks/chunk-FKCOBJFH.js +0 -7
  121. package/dist/chunks/chunk-G5FC5ZCO.js +0 -9
  122. package/dist/chunks/chunk-NWFHHUKZ.js +0 -7
  123. package/dist/chunks/chunk-TXELFFNK.js +0 -15
  124. package/dist/chunks/query-AL7C6WV2.js +0 -12
  125. package/dist/chunks/rules-B5GW4KJH.js +0 -7
  126. package/dist/chunks/schema-JY5QTZOG.js +0 -14
  127. package/dist/chunks/utils-B5ZTMQKY.js +0 -58
@@ -1,7 +0,0 @@
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{require_dist,require_dist2}from"./chunk-7RMCBXBB.js";import{require_types}from"./chunk-GHM7V3GG.js";import{require_build_utils}from"./chunk-XFVGX5HG.js";import{__commonJS,__toESM}from"./chunk-6L236MNA.js";var require_dist3=__commonJS({"../../internals/service-topology/dist/index.js"(exports,module){"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),src_exports={};__export(src_exports,{INTERNAL_SERVICE_PREFIX:()=>import_fs_detectors2.INTERNAL_SERVICE_PREFIX,autoDetectServices:()=>import_fs_detectors2.autoDetectServices,detectServices:()=>import_fs_detectors2.detectServices,generateServiceRewrites:()=>import_fs_detectors2.generateServiceRewrites,generateServicesRoutes:()=>import_fs_detectors2.generateServicesRoutes,getInternalServiceCronPath:()=>import_fs_detectors2.getInternalServiceCronPath,getInternalServiceCronPathPrefix:()=>import_fs_detectors2.getInternalServiceCronPathPrefix,getInternalServiceFunctionPath:()=>import_fs_detectors2.getInternalServiceFunctionPath,getInternalServiceWorkerPath:()=>import_fs_detectors2.getInternalServiceWorkerPath,getInternalServiceWorkerPathPrefix:()=>import_fs_detectors2.getInternalServiceWorkerPathPrefix,isExperimentalService:()=>import_fs_detectors2.isExperimentalService,isExperimentalServiceV2:()=>import_fs_detectors2.isExperimentalServiceV2,isRouteOwningBuilder:()=>import_fs_detectors2.isRouteOwningBuilder,isStaticBuild:()=>import_fs_detectors2.isStaticBuild,resolveAllConfiguredServicesV2:()=>import_fs_detectors2.resolveAllConfiguredServicesV2,resolveConfiguredServiceV2:()=>import_fs_detectors2.resolveConfiguredServiceV2,validateServiceConfigV2:()=>import_fs_detectors2.validateServiceConfigV2});module.exports=__toCommonJS(src_exports);var import_fs_detectors2=require_dist2()}});var import_routing_utils=__toESM(require_dist(),1),import_build_utils=__toESM(require_build_utils(),1),import_types=__toESM(require_types(),1),import_fs_detectors=__toESM(require_dist2(),1);import{getConfigValidator}from"./config-validator.mjs";var imagesSchema={type:"object",additionalProperties:!1,required:["sizes"],properties:{contentDispositionType:{enum:["inline","attachment"]},contentSecurityPolicy:{type:"string",minLength:1,maxLength:256},dangerouslyAllowSVG:{type:"boolean"},domains:{type:"array",minItems:0,maxItems:50,items:{type:"string",minLength:1,maxLength:256}},formats:{type:"array",minItems:1,maxItems:4,items:{enum:["image/avif","image/webp","image/jpeg","image/png"]}},localPatterns:{type:"array",minItems:0,maxItems:25,items:{type:"object",additionalProperties:!1,properties:{pathname:{type:"string",minLength:1,maxLength:256},search:{type:"string",minLength:0,maxLength:256}}}},minimumCacheTTL:{type:"integer",minimum:1,maximum:31536e4},qualities:{type:"array",minItems:1,maxItems:20,items:{type:"integer",minimum:1,maximum:100}},remotePatterns:{type:"array",minItems:0,maxItems:50,items:{type:"object",additionalProperties:!1,required:["hostname"],properties:{protocol:{enum:["http","https"]},hostname:{type:"string",minLength:1,maxLength:256},port:{type:"string",minLength:0,maxLength:5},pathname:{type:"string",minLength:1,maxLength:256},search:{type:"string",minLength:0,maxLength:256}}}},sizes:{type:"array",minItems:1,maxItems:50,items:{type:"number"}}}},cronsSchema={type:"array",minItems:0,items:{type:"object",additionalProperties:!1,required:["path","schedule"],properties:{path:{type:"string",minLength:1,maxLength:512,pattern:"^/.*"},schedule:{type:"string",minLength:9,maxLength:256}}}},schedulesSchema={type:"array",minItems:0,maxItems:100,items:{type:"object",additionalProperties:!1,required:["expression","target","name"],properties:{expression:{type:"object",additionalProperties:!1,required:["cron"],properties:{cron:{type:"string"},jitter:{type:"string",minLength:1,maxLength:256}}},target:{oneOf:[{type:"object",additionalProperties:!1,required:["function"],properties:{function:{type:"string",minLength:1}}},{type:"object",additionalProperties:!1,required:["topic"],properties:{topic:{type:"string",minLength:1,maxLength:256}}}]},name:{type:"string",minLength:1,maxLength:256},payload:{}}}},experimentalServicesMountSchema={oneOf:[{type:"string",minLength:1,maxLength:512},{type:"object",additionalProperties:!1,properties:{path:{type:"string",minLength:1,maxLength:512},subdomain:{type:"string",minLength:1,maxLength:63}},anyOf:[{required:["path"]},{required:["subdomain"]}]}]},staticExperimentalServiceScheduleSchema={type:"string",minLength:9,maxLength:256,not:{const:"<dynamic>"}},experimentalServiceScheduleSchema={oneOf:[{type:"string",minLength:9,maxLength:256},{type:"array",minItems:1,items:staticExperimentalServiceScheduleSchema}]},experimentalServiceQueueTopicSchema={type:"object",additionalProperties:!1,required:["topic"],properties:{topic:{type:"string",minLength:1,maxLength:256},retryAfterSeconds:{type:"integer",minimum:1,maximum:86400},initialDelaySeconds:{type:"integer",minimum:0,maximum:86400}}},experimentalServiceTopicsSchema={oneOf:[{type:"array",minItems:1,items:{type:"string",minLength:1,maxLength:256}},{type:"array",minItems:1,items:experimentalServiceQueueTopicSchema}]},envVarNamesSchema={pattern:"^[A-Za-z_][A-Za-z0-9_]*$",maxLength:256},getExperimentalServicesCommonProperties=()=>({entrypoint:{type:"string",minLength:1,maxLength:512},root:{type:"string",minLength:1,maxLength:512},workspace:{type:"string",minLength:1,maxLength:512},framework:{type:"string",minLength:1,maxLength:256},builder:{type:"string",minLength:1,maxLength:256},runtime:{type:"string",minLength:1,maxLength:256},buildCommand:{type:"string",minLength:1,maxLength:2048},installCommand:{type:"string",minLength:1,maxLength:2048},preDeployCommand:{type:"string",minLength:1,maxLength:2048},command:{oneOf:[{type:"string",minLength:1,maxLength:2048},{type:"array",minItems:1,items:{type:"string",minLength:1,maxLength:2048}}]},memory:{type:"integer",minimum:128,maximum:10240},maxDuration:(0,import_build_utils.getMaxDurationSchema)(),includeFiles:{oneOf:[{type:"string",minLength:1},{type:"array",items:{type:"string",minLength:1}}]},excludeFiles:{oneOf:[{type:"string",minLength:1},{type:"array",items:{type:"string",minLength:1}}]}}),experimentalServicesRoutableProperties={mount:experimentalServicesMountSchema,routePrefix:{type:"string",minLength:1,maxLength:512},subdomain:{type:"string",minLength:1,maxLength:63}},getExperimentalServicesServiceConfigSchema=()=>({oneOf:[{type:"object",additionalProperties:!1,properties:{...getExperimentalServicesCommonProperties(),...experimentalServicesRoutableProperties,type:{enum:["web"]}}},{type:"object",additionalProperties:!1,required:["type","trigger","schedule"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"job"},trigger:{const:"schedule"},schedule:experimentalServiceScheduleSchema}},{type:"object",additionalProperties:!1,required:["type","trigger","topics"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"job"},trigger:{const:"queue"},topics:experimentalServiceTopicsSchema,consumer:{type:"string",minLength:1,maxLength:256}}},{type:"object",additionalProperties:!1,required:["type","trigger","entrypoint"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"job"},trigger:{const:"workflow"}}},{type:"object",additionalProperties:!1,required:["type"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"worker"},topics:{type:"array",items:{type:"string",minLength:1,maxLength:256},minItems:1},consumer:{type:"string",minLength:1,maxLength:256}}},{type:"object",additionalProperties:!1,required:["type","schedule"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"cron"},schedule:experimentalServiceScheduleSchema}}]}),getExperimentalServicesSchema=()=>({type:"object",propertyNames:{pattern:"^[a-zA-Z]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$",maxLength:64},additionalProperties:getExperimentalServicesServiceConfigSchema()}),experimentalServiceGroupsSchema={type:"object",propertyNames:{pattern:"^[a-zA-Z]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$",maxLength:64},additionalProperties:{type:"array",items:{type:"string",minLength:1,maxLength:256}}},servicesPathSchema={type:"string",minLength:1,maxLength:512},servicesCommandSchema={type:"string",minLength:1,maxLength:2048},servicesServiceNamePattern="^[a-z]([a-z_-]*[a-z])?$",servicesBindingSchema={type:"object",additionalProperties:!1,required:["service","format","env"],properties:{type:{description:"Optional binding type marker. Currently the only supported type is `service`. When present this must be `service`.",const:"service"},service:{type:"string",minLength:1,maxLength:64,pattern:servicesServiceNamePattern},format:{const:"url"},env:{type:"string",...envVarNamesSchema}}},servicesBindingsSchema={type:"array",maxItems:100,items:servicesBindingSchema},getServicesServiceConfigSchema=()=>({type:"object",additionalProperties:!1,required:["root"],properties:{root:servicesPathSchema,framework:{type:"string",minLength:1,maxLength:256},runtime:{type:"string",minLength:1,maxLength:256},entrypoint:servicesPathSchema,command:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}}]},installCommand:servicesCommandSchema,buildCommand:servicesCommandSchema,devCommand:servicesCommandSchema,ignoreCommand:servicesCommandSchema,outputDirectory:servicesPathSchema,bindings:servicesBindingsSchema,functions:(0,import_build_utils.getFunctionsSchema)(),headers:import_routing_utils.headersSchema,redirects:import_routing_utils.redirectsSchema,rewrites:import_routing_utils.rewritesSchema,routes:import_routing_utils.routesSchema,cleanUrls:import_routing_utils.cleanUrlsSchema,trailingSlash:import_routing_utils.trailingSlashSchema}}),getServicesSchema=()=>({type:"object",propertyNames:{pattern:servicesServiceNamePattern,maxLength:64},additionalProperties:getServicesServiceConfigSchema()}),proxySchema={type:"object",additionalProperties:!1,required:["entrypoint"],properties:{entrypoint:{type:"string",minLength:1},matcher:{oneOf:[{type:"string",minLength:1},{type:"array",minItems:1,items:{type:"string",minLength:1}}]}}};function buildVercelConfigSchema(){return{type:"object",additionalProperties:!0,properties:{builds:import_build_utils.buildsSchema,routes:import_routing_utils.routesSchema,cleanUrls:import_routing_utils.cleanUrlsSchema,headers:import_routing_utils.headersSchema,redirects:import_routing_utils.redirectsSchema,rewrites:import_routing_utils.rewritesSchema,trailingSlash:import_routing_utils.trailingSlashSchema,functions:(0,import_build_utils.getFunctionsSchema)(),images:imagesSchema,crons:cronsSchema,schedules:schedulesSchema,bunVersion:{type:"string"},proxy:proxySchema,experimentalServices:getExperimentalServicesSchema(),experimentalServiceGroups:experimentalServiceGroupsSchema,services:getServicesSchema(),experimentalServicesV2:getServicesSchema()}}}function validateConfig(config){let validate=getConfigValidator(buildVercelConfigSchema);if(!validate(config)&&validate.errors&&validate.errors[0]){let error=validate.errors[0],fileName=config[import_types.fileNameSymbol]||"vercel.json",niceError=(0,import_build_utils.getPrettyError)(error);return niceError.message=`Invalid ${fileName} - ${niceError.message}`,niceError}for(let[pattern,fn]of Object.entries(config.functions??{}))if(fn.affinity!==void 0)return new import_build_utils.NowBuildError({code:"FUNCTION_AFFINITY_REQUIRES_SERVICE",message:`Function affinity can only be configured under a service. Move functions[${JSON.stringify(pattern)}].affinity into the relevant service's functions configuration.`,link:"https://vercel.com/docs/concepts/projects/project-configuration#functions"});let functionMaps=[config.functions,...Object.values(config.services??{}).map(service=>service.functions),...Object.values(config.experimentalServicesV2??{}).map(service=>service.functions)];for(let functions of functionMaps)for(let[pattern,fn]of Object.entries(functions??{})){let regions=[...new Set(fn.regions)];if(fn.affinity?.mode==="strict"&&(regions.includes("all")||regions.length>1))return new import_build_utils.NowBuildError({code:"INVALID_FUNCTION_AFFINITY_REGIONS",message:`Function affinity mode "strict" requires at most one statically configured region. Update \`functions[${JSON.stringify(pattern)}].regions\` to contain a single region.`,link:"https://vercel.com/docs/concepts/projects/project-configuration#functions"})}if(config.proxy){let proxyError=(0,import_fs_detectors.validateProxyConfig)(config.proxy);if(proxyError)return new import_build_utils.NowBuildError({code:proxyError.code.toUpperCase(),message:proxyError.message})}if(config.functions&&config.builds)return new import_build_utils.NowBuildError({code:"FUNCTIONS_AND_BUILDS",message:"The `functions` property cannot be used in conjunction with the `builds` property. Please remove one of them.",link:"https://vercel.link/functions-and-builds"});if(config.proxy&&config.builds)return new import_build_utils.NowBuildError({code:"PROXY_AND_BUILDS",message:"The `proxy` property cannot be used with the `builds` property. Remove `builds` to use an explicit proxy entrypoint."});let hasExperimentalServices=!!config.experimentalServices;if(hasExperimentalServices&&config.builds)return new import_build_utils.NowBuildError({code:"EXPERIMENTAL_SERVICES_AND_BUILDS",message:"The `experimentalServices` property cannot be used in conjunction with the `builds` property. Please remove one of them."});if(hasExperimentalServices&&config.functions)return new import_build_utils.NowBuildError({code:"EXPERIMENTAL_SERVICES_AND_FUNCTIONS",message:"The `experimentalServices` property cannot be used in conjunction with the `functions` property. Please remove one of them."});if(config.experimentalServiceGroups&&!config.experimentalServices)return new import_build_utils.NowBuildError({code:"SERVICE_GROUPS_WITHOUT_SERVICES",message:"The `experimentalServiceGroups` property requires `experimentalServices` to be defined. Service groups reference services by name."});let hasServices=config.services!=null,hasExperimentalServicesV2=config.experimentalServicesV2!=null;if(hasServices&&hasExperimentalServicesV2)return new import_build_utils.NowBuildError({code:"SERVICES_AND_EXPERIMENTAL_SERVICES_V2",message:"The `services` property cannot be used in conjunction with its deprecated alias `experimentalServicesV2`. Please use only `services`."});let servicesConfig=config.services??config.experimentalServicesV2,servicesConfigKey=hasServices?"services":"experimentalServicesV2",servicesErrorCodePrefix=hasServices?"SERVICES":"EXPERIMENTAL_SERVICES_V2";if(servicesConfig&&hasExperimentalServices)return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_AND_EXPERIMENTAL_SERVICES`,message:`The \`${servicesConfigKey}\` property cannot be used in conjunction with the \`experimentalServices\` property. Please use only one services configuration.`});if(servicesConfig&&config.builds)return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_AND_BUILDS`,message:`The \`${servicesConfigKey}\` property cannot be used in conjunction with the \`builds\` property. Please remove one of them.`});if(servicesConfig){let ambiguousTopLevel=[];if(config.functions!=null&&ambiguousTopLevel.push("functions"),config.installCommand!=null&&ambiguousTopLevel.push("installCommand"),config.buildCommand!=null&&ambiguousTopLevel.push("buildCommand"),config.devCommand!=null&&ambiguousTopLevel.push("devCommand"),config.ignoreCommand!=null&&ambiguousTopLevel.push("ignoreCommand"),config.outputDirectory!=null&&ambiguousTopLevel.push("outputDirectory"),config.framework!=null&&ambiguousTopLevel.push("framework"),ambiguousTopLevel.length>0){let count=ambiguousTopLevel.length,fields=ambiguousTopLevel.map(field=>`\`${field}\``).join(", ");return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_AND_TOP_LEVEL_BUILD_SETTINGS`,message:`The top-level ${count>1?"properties":"property"} ${fields} cannot be used with \`${servicesConfigKey}\` because the owning service is ambiguous. Move ${count>1?"them":"it"} under the relevant service in \`${servicesConfigKey}\`.`})}}if(servicesConfig){let serviceNames=new Set(Object.keys(servicesConfig));for(let[serviceName,serviceConfig]of Object.entries(servicesConfig))for(let binding of serviceConfig.bindings??[])if(!serviceNames.has(binding.service))return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_BINDING_UNKNOWN_SERVICE`,message:`Service "${serviceName}" declares a binding to unknown service "${binding.service}". Add "${binding.service}" to \`${servicesConfigKey}\` or fix the binding.`})}return null}export{require_dist3 as require_dist,validateConfig};
@@ -1,7 +0,0 @@
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{formatOption,jsonOption,projectOption,yesOption}from"./chunk-JAJW3P42.js";import{packageName}from"./chunk-FI772UVH.js";var projectScopeOption={...projectOption,shorthand:"p",description:"Use a project by name or ID"},listAllOption={name:"all",shorthand:"a",type:Boolean,deprecated:!1,description:"List all accessible rules in the selected team"},mutationAllOption={...listAllOption,description:"Apply the rule to all projects in the selected team"},deprecatedItemScopeOptions=[{...projectScopeOption,deprecated:!0},{...listAllOption,deprecated:!0}],bodyOption={name:"body",shorthand:null,type:String,argument:"PATH",deprecated:!1,description:"Read the alert rule body from a JSON file"},rulesLsSubcommand={name:"ls",aliases:["list"],description:"List alert rules for a project or team",arguments:[],options:[projectScopeOption,listAllOption,{name:"type",shorthand:null,type:[String],argument:"TYPE",deprecated:!1,description:"Filter by rule type: built-in or custom"},formatOption,jsonOption],examples:[{name:"List rules affecting the linked project",value:`${packageName} alerts rules ls`},{name:"List all rules in the selected team",value:`${packageName} alerts rules ls --all`},{name:"List custom rules for a project",value:`${packageName} alerts rules ls --project my-app --type custom`},{name:"Write JSON output",value:`${packageName} alerts rules ls --all --json`}]},rulesSchemaSubcommand={name:"schema",aliases:[],description:"Show alert rule request fields and examples",arguments:[],options:[{name:"type",shorthand:null,type:String,argument:"TYPE",deprecated:!1,description:"Rule type to describe: built-in or custom"},formatOption],examples:[{name:"List supported rule types",value:`${packageName} alerts rules schema`},{name:"Show the built-in rule schema",value:`${packageName} alerts rules schema --type built-in`},{name:"Show the custom rule schema as JSON",value:`${packageName} alerts rules schema --type custom --format json`}]},rulesAddSubcommand={name:"add",aliases:["create"],description:"Create an alert rule from a JSON body",arguments:[],options:[projectScopeOption,mutationAllOption,formatOption,jsonOption,bodyOption],examples:[{name:"Create a project-scoped rule",value:`${packageName} alerts rules add --project my-app --body ./rule.json`},{name:"Create a team-wide built-in rule",value:`${packageName} alerts rules add --all --body ./rule.json`}]},rulesInspectSubcommand={name:"inspect",aliases:["get"],description:"Show one alert rule by ID",arguments:[{name:"ruleId",required:!0}],options:[...deprecatedItemScopeOptions,formatOption,jsonOption],examples:[{name:"Inspect a rule",value:`${packageName} alerts rules inspect ar_abc123`},{name:"Write JSON output",value:`${packageName} alerts rules inspect ar_abc123 --json`}]},rulesRmSubcommand={name:"rm",aliases:["remove","delete"],description:"Delete an alert rule",arguments:[{name:"ruleId",required:!0}],options:[...deprecatedItemScopeOptions,formatOption,jsonOption,yesOption],examples:[{name:"Delete with confirmation",value:`${packageName} alerts rules rm ar_abc123`},{name:"Delete without a prompt",value:`${packageName} alerts rules rm ar_abc123 --yes`}]},rulesUpdateSubcommand={name:"update",aliases:["patch"],description:"Patch an alert rule or change its scope",arguments:[{name:"ruleId",required:!0}],options:[projectScopeOption,mutationAllOption,formatOption,jsonOption,{...bodyOption,description:"Read the partial update body from a JSON file"}],examples:[{name:"Update fields from a file",value:`${packageName} alerts rules update ar_abc123 --body ./patch.json`},{name:"Move a rule to a project",value:`${packageName} alerts rules update ar_abc123 --project my-app`}]},rulesAggregateCommand={name:"rules",aliases:[],description:"Create, inspect, list, update, and delete alert rules",arguments:[],subcommands:[rulesLsSubcommand,rulesSchemaSubcommand,rulesAddSubcommand,rulesInspectSubcommand,rulesRmSubcommand,rulesUpdateSubcommand],options:[],examples:[{name:"List rules for the linked project",value:`${packageName} alerts rules ls`},{name:"Show the custom rule schema",value:`${packageName} alerts rules schema --type custom`},{name:"Add a rule",value:`${packageName} alerts rules add --project my-app --body ./rule.json`},{name:"Inspect a rule",value:`${packageName} alerts rules inspect ar_abc123`},{name:"Update a rule",value:`${packageName} alerts rules update ar_abc123 --body ./patch.json`},{name:"Delete a rule",value:`${packageName} alerts rules rm ar_abc123`}]};export{rulesLsSubcommand,rulesSchemaSubcommand,rulesAddSubcommand,rulesInspectSubcommand,rulesRmSubcommand,rulesUpdateSubcommand,rulesAggregateCommand};
@@ -1,9 +0,0 @@
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{output_manager_default}from"./chunk-Z6Y55QJW.js";function getRollupColumnName(metric,aggregation){return`${metric}_${aggregation}`.replace(/[./]/g,"_")}function getResolvedOrderMetadata(query,response){let orderBy=query.orderBy??(response.orderBy?"count":void 0),orderDirection=response.orderDirection??query.orderDirection;return{...orderBy?{orderBy}:{},...orderDirection?{orderDirection}:{}}}function formatQueryJson(query,response){let orderMetadata=getResolvedOrderMetadata(query,response),queryWithResponseMetadata={...query,...orderMetadata};return JSON.stringify({query:queryWithResponseMetadata,summary:response.summary??[],data:response.data??[],...orderMetadata},null,2)}function formatErrorJson(code,message,allowedValues){let error={code,message};return allowedValues&&allowedValues.length>0&&(error.allowedValues=allowedValues),JSON.stringify({error},null,2)}function handleApiError(err,jsonOutput,client,overrides={}){let code,message,override=overrides[err.status];if(override)code=override.code||err.code||"BAD_REQUEST",message=override.message;else switch(err.status){case 402:code=err.code||"PAYMENT_REQUIRED",message=err.serverMessage||"This feature requires an Observability Plus subscription. Upgrade at https://vercel.com/dashboard/settings/billing";break;case 429:code=err.code||"RATE_LIMITED",message=err.serverMessage||"You have reached the metrics query rate limit. Please wait and try again. If you need a higher limit, request one from your Vercel account team.";break;case 403:code="FORBIDDEN",message="You do not have permission to query metrics for this project/team.";break;case 500:code="INTERNAL_ERROR",message="An internal error occurred. Please try again later.";break;case 504:code="TIMEOUT",message="The query timed out. Try a shorter time range or fewer groups.";break;case 400:code=err.code||"BAD_REQUEST",message=err.serverMessage||`API error (${err.status})`;break;default:code=err.code||"BAD_REQUEST",message=err.serverMessage||`API error (${err.status})`}return jsonOutput?client.stdout.write(formatErrorJson(code,message,err.allowedValues)):(output_manager_default.error(message),err.allowedValues&&err.allowedValues.length>0&&output_manager_default.print(`
8
- Available values: ${err.allowedValues.join(", ")}
9
- `)),1}export{getRollupColumnName,getResolvedOrderMetadata,formatQueryJson,formatErrorJson,handleApiError};
@@ -1,7 +0,0 @@
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{formatErrorJson,handleApiError}from"./chunk-G5FC5ZCO.js";import{isAPIError}from"./chunk-R2TGGVCT.js";import{output_manager_default}from"./chunk-Z6Y55QJW.js";var OBSERVABILITY_METRICS_PATH="/metrics/v1",METRIC_CATALOG_PAGE_SIZE=250;function toMetricDetail(metric){return{id:metric.id,description:metric.description,dimensions:metric.dimensions,unit:metric.unit,aggregations:metric.aggregations,defaultAggregation:metric.defaultAggregation}}function getDefaultAggregation(detail,metricId){return detail.find(metric=>metric.id===metricId)?.defaultAggregation}async function fetchMetricList(client,accountId){let{metrics}=await client.fetch("/v2/observability/schema",{accountId});return metrics}async function fetchMetricCatalog(client,accountId,kind,search,activeSince){let metrics=[],cursor=null;do{let searchParams=new URLSearchParams({limit:String(METRIC_CATALOG_PAGE_SIZE),kind});search&&searchParams.set("search",search),activeSince&&searchParams.set("activeSince",activeSince),cursor&&searchParams.set("cursor",cursor);let response=await client.fetch(`${OBSERVABILITY_METRICS_PATH}?${searchParams}`,{accountId,bailOn429:!0});metrics.push(...response.metrics.map(metric=>({id:metric.id,description:metric.description,dimensions:metric.dimensions,unit:metric.unit,aggregations:metric.aggregations}))),cursor=response.pagination.hasMore?response.pagination.nextCursor:null}while(cursor);return metrics.filter(metric=>(kind==="all"||(kind==="system"?metric.id.startsWith("vercel."):!metric.id.startsWith("vercel.")))&&(!search||metric.id.startsWith(search))).sort((left,right)=>left.id.localeCompare(right.id))}function fetchCustomMetricCatalog(client,accountId,search,activeSince){return fetchMetricCatalog(client,accountId,"custom",search,activeSince)}async function fetchCatalogMetricDetail(client,accountId,metricId,kind,activeSince){let metrics=await fetchMetricCatalog(client,accountId,kind,metricId,activeSince),exactMetric=metrics.find(metric=>metric.id===metricId);return exactMetric?[exactMetric]:metrics}async function fetchMetricDetail(client,accountId,metricId){return(await client.fetch(`/v2/observability/schema/${encodeURIComponent(metricId)}`,{accountId})).map(toMetricDetail)}async function fetchSchemaOrExit(client,jsonOutput,operation){try{return await operation()}catch(err){if(isAPIError(err))return handleApiError(err,jsonOutput,client,{401:{code:"SCHEMA_UNAUTHORIZED",message:"The metrics schema API request was not authorized. Run `vercel login` to authenticate and `vercel switch` to select a team, then try again."},403:{code:"SCHEMA_UNAUTHORIZED",message:"The metrics schema API request was not authorized. Run `vercel login` to authenticate and `vercel switch` to select a team, then try again."}});let message=err instanceof Error?`Failed to fetch metrics schema: ${err.message}`:`Failed to fetch metrics schema: ${String(err)}`;return jsonOutput?client.stdout.write(formatErrorJson("SCHEMA_FETCH_FAILED",message)):output_manager_default.error(message),1}}function fetchCustomMetricDetailOrExit(client,accountId,jsonOutput,metricId){return fetchSchemaOrExit(client,jsonOutput,()=>fetchCatalogMetricDetail(client,accountId,metricId,"custom"))}function fetchCatalogMetricDetailOrExit(client,accountId,jsonOutput,metricId,kind,activeSince){return fetchSchemaOrExit(client,jsonOutput,()=>fetchCatalogMetricDetail(client,accountId,metricId,kind,activeSince))}function fetchMetricCatalogListOrExit(client,accountId,jsonOutput){return fetchSchemaOrExit(client,jsonOutput,()=>fetchMetricCatalog(client,accountId,"all").then(metrics=>metrics.map(({id,description})=>({id,description}))))}function fetchCombinedMetricListOrExit(client,accountId,jsonOutput){return fetchSchemaOrExit(client,jsonOutput,async()=>{let[platformMetrics,customMetrics]=await Promise.all([fetchMetricList(client,accountId),fetchCustomMetricCatalog(client,accountId).catch(()=>[])]);return[...platformMetrics.filter(metric=>metric.id.startsWith("vercel.")),...customMetrics.map(({id,description})=>({id,description}))].sort((left,right)=>left.id.localeCompare(right.id))})}async function fetchMetricDetailOrExit(client,accountId,metricId,jsonOutput){return fetchSchemaOrExit(client,jsonOutput,()=>fetchMetricDetail(client,accountId,metricId))}export{OBSERVABILITY_METRICS_PATH,getDefaultAggregation,fetchCustomMetricDetailOrExit,fetchCatalogMetricDetailOrExit,fetchMetricCatalogListOrExit,fetchCombinedMetricListOrExit,fetchMetricDetailOrExit};
@@ -1,15 +0,0 @@
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{events_default}from"./chunk-M2XARQBF.js";import{progress}from"./chunk-U56NHYAH.js";import{isJSONObject,printIndications}from"./chunk-2PPXY24N.js";import{require_dist as require_dist2}from"./chunk-TRTEXGVN.js";import{sleep}from"./chunk-T3GQAMBJ.js";import{suggestNextCommands}from"./chunk-6YAADRQB.js";import{require_dist as require_dist3}from"./chunk-ZT6KDLLY.js";import{require_ms}from"./chunk-QTKJC2O5.js";import{withGlobalFlags}from"./chunk-NS4FH2TY.js";import{ua_default}from"./chunk-5XJNPXQK.js";import{responseError}from"./chunk-LNPMDXBJ.js";import{fetch,getFetchDispatcher}from"./chunk-MY4MONOH.js";import{getProjectByNameOrId}from"./chunk-VLZ47RWM.js";import{require_strip_ansi}from"./chunk-OSCCYU74.js";import{printAlignedLabel}from"./chunk-XSVBYDYI.js";import{APIError,BuildError,require_bytes}from"./chunk-R2TGGVCT.js";import{emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunk-Z6Y55QJW.js";import{require_dist}from"./chunk-QGIQK47P.js";import{require_source}from"./chunk-U7KCDTCH.js";import{__toESM}from"./chunk-6L236MNA.js";var import_client=__toESM(require_dist3(),1),import_error_utils=__toESM(require_dist(),1),import_bytes=__toESM(require_bytes(),1),import_chalk=__toESM(require_source(),1);function printInspectUrl(inspectorUrl){inspectorUrl&&printAlignedLabel("Inspect",import_chalk.default.cyan(inspectorUrl))}async function processDeployment({org,projectName,isSettingUpProject,archive,skipAutoDetectionConfirmation,noWait,withFullLogs,anonymous,manual,jsonOutput,linkedProject,linkedProjectIsPartial,gitMetadata,...args}){let{now,path,requestBody,force,withCache,quiet,prebuilt,vercelOutputDir,rootDirectory,bulkRedirectsPath}=args,client=now._client,aliasedRowWillPrint=!noWait&&requestBody.autoAssignCustomDomains!==!1,{env={}}=requestBody,token=now._token;if(!token)throw new Error("Missing authentication token");let aliasAssignedController=new AbortController,onAliasAssigned=event=>{aliasAssignedController.abort(event)},clientOptions={teamId:now.currentTeam??void 0,apiUrl:now._apiUrl,token,debug:output_manager_default.isDebugEnabled(),userAgent:ua_default,path,force,withCache,prebuilt,vercelOutputDir,rootDirectory,skipAutoDetectionConfirmation,archive,dispatcher:getFetchDispatcher(),projectName,bulkRedirectsPath,manual,aliasAssignedSignal:aliasAssignedController.signal},deployingSpinnerVal=isSettingUpProject?"Setting up project":`Deploying ${import_chalk.default.bold(org.slug?`${org.slug}/${projectName}`:projectName)}`;output_manager_default.spinner(deployingSpinnerVal,0);let indications=[],abortController;function stopSpinner(){abortController?.abort(),output_manager_default.stopSpinner()}let linkedProjectLookup=linkedProjectIsPartial&&linkedProject&&!noWait?getProjectByNameOrId(client,linkedProject.id,linkedProject.accountId).then(project2=>({project:project2}),error=>({error})):void 0,rollingRelease=linkedProject?.rollingRelease,project=linkedProjectLookup?void 0:linkedProject,latestLogMessage="";async function resolveProject(){if(!linkedProjectLookup)return getProjectByNameOrId(client,projectName);let result=await linkedProjectLookup;if("error"in result)throw result.error;return result.project}try{let deploymentOptions=Promise.resolve(gitMetadata).then(gitMetadata2=>({...requestBody,...gitMetadata2===void 0?{}:{gitMetadata:gitMetadata2}}));for await(let event of(0,import_client.createDeployment)(clientOptions,deploymentOptions)){if(["tip","notice","warning"].includes(event.type)&&indications.push(event),event.type==="file-count"){let{total,missing,uploads}=event.payload;output_manager_default.debug(`Total files ${total.size}, ${missing.length} changed`);let missingSize=missing.map(sha=>{let file=total.get(sha);return file?.data?.length??file?.size??0}).reduce((a,b)=>a+b,0),totalSizeHuman=import_bytes.default.format(missingSize,{decimalPlaces:1}),nextStep=0,stepSize=now._client.stderr.isTTY?0:.25,updateProgress=()=>{let uploadedBytes=uploads.reduce((acc,e)=>acc+e.bytesUploaded,0),bar=progress(uploadedBytes,missingSize);if(!bar)output_manager_default.spinner(deployingSpinnerVal,0);else{let uploadedHuman=import_bytes.default.format(uploadedBytes,{decimalPlaces:1,fixedDecimals:!0});uploadedBytes/missingSize>=nextStep&&(output_manager_default.spinner(`Uploading ${import_chalk.default.reset(`[${bar}] (${uploadedHuman}/${totalSizeHuman})`)}`,0),nextStep+=stepSize)}};uploads.forEach(e=>e.on("progress",updateProgress)),updateProgress()}if(event.type==="file-uploaded"){let{file}=event.payload;output_manager_default.debug(`Uploaded: ${file.names.join(" ")} (${(0,import_bytes.default)(file.data?.length??file.size??0)})`)}if(event.type==="created"){let deployment=event.payload;if(now.url=deployment.url,stopSpinner(),!anonymous){printInspectUrl(deployment.inspectorUrl);let isProdDeployment=deployment.target==="production",previewUrl=`https://${deployment.url}`;isProdDeployment&&!requestBody.target&&indications.push({type:"notice",payload:"This is your project\u2019s first deployment, so it was assigned to production. Future deployments will be preview deployments unless you use --prod.",link:"https://vercel.com/docs/deployments/environments"}),printAlignedLabel(isProdDeployment?"Production":"Preview",import_chalk.default.cyan(previewUrl),isProdDeployment&&!aliasedRowWillPrint?{gutter:"\u25B2"}:{}),!jsonOutput&&(quiet||process.env.FORCE_TTY==="1")&&process.stdout.write(`https://${event.payload.url}`)}if(noWait)return deployment.indications=indications,deployment;if(latestLogMessage=deployment.readyState==="QUEUED"?"Queued\u2026":"Building\u2026",withFullLogs&&!anonymous){let{displayBuildLogs}=await import("./logs-GK7CJBYY.js"),promise;({abortController,promise}=displayBuildLogs(client,deployment,!0,onAliasAssigned)),promise.catch(error=>output_manager_default.warn(`Failed to read build logs: ${error}`))}else if(!anonymous){let{parseLogLines}=await import("./logs-GK7CJBYY.js");abortController=new AbortController,events_default(client,deployment.id,{mode:"logs",onAliasAssigned,onEvent:event2=>{if(!event2.created)return;let message=parseLogLines(event2)[0];message&&(latestLogMessage=message,output_manager_default.spinner(latestLogMessage,0))},quiet:!1,findOpts:{direction:"forward",follow:!0}},abortController).catch(error=>output_manager_default.warn(`Failed to read build logs: ${error}`))}output_manager_default.spinner(latestLogMessage,0)}if(event.type==="building"&&!withFullLogs&&output_manager_default.spinner(latestLogMessage||"Building\u2026",0),event.type==="canceled")return stopSpinner(),event.payload;if(project===void 0&&(!linkedProjectLookup||event.type==="ready")&&(project=await resolveProject(),rollingRelease=project?.rollingRelease),event.type==="ready"&&rollingRelease)return output_manager_default.spinner("Releasing\u2026",0),stopSpinner(),event.payload.indications=indications,event.payload;if(event.type==="ready"&&!withFullLogs){let v1ChecksPending=event.payload.checksState&&event.payload.checksState!=="completed",v2ChecksPending=event.payload.checks?.["deployment-alias"]?.state==="pending";if(output_manager_default.stopSpinner(),!anonymous){process.stderr.write(eraseLines(2));let isProdDeployment=event.payload.target==="production",previewUrl=`https://${event.payload.url}`;printAlignedLabel(isProdDeployment?"Production":"Preview",import_chalk.default.cyan(previewUrl),isProdDeployment&&!aliasedRowWillPrint?{gutter:"\u25B2"}:{})}v1ChecksPending||v2ChecksPending?output_manager_default.spinner("Running Checks\u2026",0):output_manager_default.spinner("Completing\u2026",0)}if(event.type==="checks-running"&&!withFullLogs&&output_manager_default.spinner("Running Checks\u2026",0),event.type==="checks-conclusion-failed"||event.type==="checks-v2-failed")return stopSpinner(),event.payload;if(event.type==="error"){if(stopSpinner(),!archive){let maybeError=handleErrorSolvableWithArchive(event.payload);if(maybeError)throw maybeError}let error=await now.handleDeploymentError(event.payload,{env});if(error.code==="missing_project_settings"||error.code==="forbidden")return error;throw error}if(event.type==="alias-assigned"){if(stopSpinner(),event.payload.target==="production"&&event.payload.alias&&event.payload.alias.length>0){let prodUrl=`https://${event.payload.alias[0]}`;anonymous&&output_manager_default.print(`
8
- `),printAlignedLabel(anonymous?"Temporary":"Aliased",import_chalk.default.cyan(prodUrl),{gutter:"\u25B2"}),anonymous&&!jsonOutput&&(quiet||process.env.FORCE_TTY==="1")&&process.stdout.write(prodUrl)}return event.payload.indications=indications,event.payload}}}catch(err){throw stopSpinner(),err}}var archiveSuggestionText="Try using `--archive=tgz` to limit the amount of files you upload.",UploadErrorMissingArchive=class extends Error{constructor(){super(...arguments);this.link="https://vercel.com/docs/cli/deploy#archive"}};function handleErrorSolvableWithArchive(error){if((0,import_error_utils.isErrorLike)(error)){let isUploadRateLimit="errorName"in error&&typeof error.errorName=="string"&&error.errorName.startsWith("api-upload-"),isTooManyFilesLimit="code"in error&&error.code==="too_many_files",isEntityTooLarge=/entity too large|payload too large/i.test(error.message);if(isUploadRateLimit||isTooManyFilesLimit||isEntityTooLarge)return new UploadErrorMissingArchive(`${error.message}
9
- ${archiveSuggestionText}`)}}var import_async_retry=__toESM(require_dist2(),1),import_ms=__toESM(require_ms(),1);import qs from"querystring";import{parse as parseUrl}from"url";var import_bytes2=__toESM(require_bytes(),1),import_chalk2=__toESM(require_source(),1);var Now=class{constructor({client,url=null,currentTeam=null,forceNew=!1,withCache=!1}){this.url=url,this._client=client,this._forceNew=forceNew,this._withCache=withCache,this._onRetry=this._onRetry.bind(this),this.currentTeam=currentTeam}get _apiUrl(){return this._client.apiUrl}get _token(){return this._client.authConfig.token}async create(path,{nowConfig={},name,project,prebuilt=!1,anonymous=!1,vercelOutputDir,rootDirectory,meta,gitMetadata,regions,quiet=!1,env,build,forceNew=!1,withCache=!1,target=null,projectSettings,skipAutoDetectionConfirmation,noWait,withFullLogs,autoAssignCustomDomains,agentName,manual,jsonOutput=!1,linkedProject,linkedProjectIsPartial},org,isSettingUpProject,archive){let requestBody={...nowConfig,env,build,name,project,meta,regions,target:target||void 0,projectSettings,source:"cli",actor:agentName,autoAssignCustomDomains};delete requestBody.scope,delete requestBody.github,delete requestBody.public;let deployment=await processDeployment({now:this,path,requestBody,gitMetadata,quiet,force:forceNew,withCache,org,projectName:name,isSettingUpProject,archive,skipAutoDetectionConfirmation,prebuilt,anonymous,vercelOutputDir,rootDirectory,noWait,withFullLogs,bulkRedirectsPath:nowConfig.bulkRedirectsPath,manual,jsonOutput,linkedProject,linkedProjectIsPartial});if(deployment&&deployment.warnings){let sizeExceeded=0,{log,warn}=output_manager_default;deployment.warnings.forEach(warning=>{if(warning.reason==="size_limit_exceeded"){let{sha,limit}=warning;warn(`Skipping file ${sha} (size exceeded ${(0,import_bytes2.default)(limit)})`),sizeExceeded++}else warning.reason==="node_version_not_found"&&warn(`Requested node version ${warning.wanted} is not available`)}),sizeExceeded>0&&(warn(`${sizeExceeded} of the files exceeded the limit for your plan.`),log(`Please upgrade your plan here: ${import_chalk2.default.cyan("https://vercel.com/account/plan")}`))}return deployment}async handleDeploymentError(error,{env}){if(error.status===429){if(error.code==="builds_rate_limited"){let err2=new Error(error.message);return err2.status=error.status,err2.code=error.code,err2.retryAfterMs="never",err2.ctaLabel=error.ctaLabel,err2.ctaUrl=error.ctaUrl,err2.action=error.action,err2.link=error.link,err2}let msg="You have been creating deployments at a very fast pace. ";if(error.limit&&error.limit.reset){let{reset}=error.limit,difference=reset-Date.now();msg+=`Please retry in ${(0,import_ms.default)(difference,{long:!0})}.`}else msg+="Please slow down.";let err=Object.create(APIError.prototype);return err.message=msg,err.status=error.status,err.retryAfterMs="never",err}if(error.status===400&&error.code==="cert_missing")return responseError(error,null,error);if(error.status===400&&error.code==="missing_files")return this._missing=error.missing||[],error;if(error.status===404&&error.code==="not_found")return error;if(error.status>=400&&error.status<500){let err=new Error,{code}=error;if(code==="env_value_invalid_type"){let{key}=error;err.message=`The env key ${key} has an invalid type: ${typeof env[key]}. Please supply a String or a Number (https://err.sh/vercel/env-value-invalid-type)`}else Object.assign(err,error);return err}return error.id&&error.id.startsWith("bld_")?new BuildError({message:"Build failed",meta:{entrypoint:error.entrypoint}}):error.errorCode==="BUILD_FAILED"||error.errorCode==="UNEXPECTED_ERROR"||error.errorCode?.includes("BUILD_UTILS_SPAWN_")?new BuildError({message:error.errorMessage,meta:{}}):new Error(error.message||error.errorMessage)}async remove(deploymentId,{hard=!1}){let url=`/now/deployments/${deploymentId}?hard=${hard?1:0}`;return await this.retry(async bail=>{let res=await this._fetch(url,{method:"DELETE"});if(res.status!==200){let error=await responseError(res,"Failed to remove deployment");if(typeof error.retryAfterMs=="number"){let randomSkewMs=3e4*Math.random();throw await sleep(error.retryAfterMs+randomSkewMs),error}if(res.status>200&&res.status<500)return bail(error);throw error}}),!0}retry(fn,{retries=3,maxTimeout=1/0}={}){return(0,import_async_retry.default)(fn,{retries,maxTimeout,onRetry:this._onRetry})}_onRetry(err){output_manager_default.debug(`Retrying: ${err}
10
- ${err.stack}`)}async _fetch(_url,opts={}){if(opts.useCurrentTeam!==!1&&this.currentTeam){let parsedUrl=parseUrl(_url,!0),query=parsedUrl.query;query.teamId=this.currentTeam,_url=`${parsedUrl.pathname}?${qs.stringify(query)}`,delete opts.useCurrentTeam}opts.headers=new globalThis.Headers(opts.headers),opts.headers.set("accept","application/json"),this._token&&opts.headers.set("authorization",`Bearer ${this._token}`),opts.headers.set("user-agent",ua_default);let body;isJSONObject(opts.body)?(body=JSON.stringify(opts.body),opts.headers.set("content-type","application/json; charset=utf8")):body=opts.body;let res=await output_manager_default.time(`${opts.method||"GET"} ${this._apiUrl}${_url} ${opts.body||""}`,fetch(`${this._apiUrl}${_url}`,{...opts,body}));return printIndications(res),res}async fetch(url,opts={}){return this.retry(async bail=>{opts.json!==!1&&opts.body&&typeof opts.body=="object"&&(opts=Object.assign({},opts,{body:JSON.stringify(opts.body),headers:Object.assign({},opts.headers,{"Content-Type":"application/json"})}));let res=await this._fetch(url,opts);if(res.ok)return opts.json===!1?res:res.headers.get("content-type")?res.headers.get("content-type")?.includes("application/json")?res.json():res:null;let err=await responseError(res);if(typeof err.retryAfterMs=="number"){let randomSkewMs=3e4*Math.random();throw await sleep(err.retryAfterMs+randomSkewMs),err}if(res.status>=400&&res.status<500)return bail(err);throw err},opts.retry)}};var import_chalk3=__toESM(require_source(),1),import_strip_ansi=__toESM(require_strip_ansi(),1);var deploymentInProgressStates=["QUEUED","BUILDING","INITIALIZING"];function isDeploying(readyState){return deploymentInProgressStates.includes(readyState)}function bareDuration(stamp){return(0,import_strip_ansi.default)(stamp).replace(/^\[|\]$/g,"")}async function printDeploymentStatus(client,{readyState,aliasError,indications,aliasWarning,url,target},deployStamp,noWait,guidanceMode,isInit,gitConnectCommand){indications=indications||[];let isStillBuilding=!1;if(noWait&&isDeploying(readyState)){isStillBuilding=!0;let message=isInit?"Deployment is awaiting continuation\u2026":"Note: Deployment is still processing\u2026";output_manager_default.print(prependEmoji(message,emoji("notice"))+`
11
- `)}if(!isStillBuilding&&readyState!=="READY")return output_manager_default.error("Your deployment failed. Please retry later. More: https://err.sh/vercel/deployment-error"),1;if(!isStillBuilding&&readyState==="READY"){let duration=bareDuration(deployStamp());output_manager_default.print(`
12
- ${import_chalk3.default.green("\u2713")} ${import_chalk3.default.bold("Ready")} ${import_chalk3.default.dim(`in ${duration}`)}
13
- `)}aliasError&&output_manager_default.warn(`Failed to assign aliases${aliasError.message?`: ${aliasError.message}`:""}`),aliasWarning?.message&&indications.push({type:"warning",payload:aliasWarning.message,link:aliasWarning.link,action:aliasWarning.action});let newline=`
14
- `;for(let indication of indications){let message=prependEmoji(import_chalk3.default.dim(indication.payload),emoji(indication.type))+newline,link="";indication.link&&(link=import_chalk3.default.dim(`${indication.action||"Learn More"}: ${link_default(indication.link)}`)+newline),output_manager_default.print(message+link)}if(gitConnectCommand||guidanceMode){output_manager_default.print(`
15
- `);let nextCommands=[];gitConnectCommand&&nextCommands.push({description:"Automatically deploy changes on every push by connecting Git",command:gitConnectCommand}),readyState==="READY"?(nextCommands.push({description:"Check the deployment response",command:withGlobalFlags(client,`curl https://${url}`,{preserveProject:!0})}),nextCommands.push({description:"View build logs",command:withGlobalFlags(client,`inspect ${url} --logs`,{preserveProject:!0})},{description:"Create a new deployment from the same source",command:withGlobalFlags(client,`redeploy ${url}`,{preserveProject:!0})}),target!=="production"&&nextCommands.push({description:"Deploy the current project to production",command:withGlobalFlags(client,"deploy --prod",{preserveProject:!0})})):nextCommands.push({description:"Check deployment status",command:withGlobalFlags(client,`inspect ${url}`,{preserveProject:!0})}),suggestNextCommands(nextCommands)}return 0}export{UploadErrorMissingArchive,Now,isDeploying,printDeploymentStatus};
@@ -1,12 +0,0 @@
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{OBSERVABILITY_METRICS_PATH,fetchCatalogMetricDetailOrExit,fetchMetricDetailOrExit,getDefaultAggregation}from"./chunk-NWFHHUKZ.js";import{computeGranularity,formatText,getDefaultCustomMetricAggregation,isCanonicalAggregation}from"./chunk-OK3S6KFX.js";import{formatErrorJson,formatQueryJson,getRollupColumnName,handleApiError}from"./chunk-G5FC5ZCO.js";import"./chunk-IVSSTHB6.js";import"./chunk-GZNDA6SV.js";import{resolveTimeRange,validateAllProjectMutualExclusivity}from"./chunk-6RIQPTJA.js";import"./chunk-MBL6TXEJ.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import{metricsCommand}from"./chunk-WUZD4KBL.js";import"./chunk-JZRMH5UA.js";import"./chunk-QTKJC2O5.js";import"./chunk-6TAQ6OWD.js";import"./chunk-WPS6JZF6.js";import{getScope}from"./chunk-5QQNYN4N.js";import{parseArguments}from"./chunk-HTC6KO2B.js";import"./chunk-5XJNPXQK.js";import{printError}from"./chunk-LNPMDXBJ.js";import"./chunk-MY4MONOH.js";import{getLinkedProject,getProjectByNameOrId}from"./chunk-VLZ47RWM.js";import"./chunk-F2ZWW2IO.js";import"./chunk-B4ATVYZW.js";import"./chunk-PPCFQQSU.js";import"./chunk-OSCCYU74.js";import{getFlagsSpecification}from"./chunk-JAJW3P42.js";import"./chunk-XSVBYDYI.js";import"./chunk-EVZRQGNK.js";import{ProjectNotFound,isAPIError}from"./chunk-R2TGGVCT.js";import"./chunk-FI772UVH.js";import"./chunk-XFVGX5HG.js";import{output_manager_default}from"./chunk-Z6Y55QJW.js";import"./chunk-QGIQK47P.js";import"./chunk-AVSPFBLM.js";import"./chunk-XCJDGQO7.js";import"./chunk-YPTLSODC.js";import"./chunk-7HL2RPUO.js";import{require_source}from"./chunk-U7KCDTCH.js";import"./chunk-N3ZZ7FHQ.js";import"./chunk-GU6VIFR5.js";import{__toESM}from"./chunk-6L236MNA.js";var import_chalk=__toESM(require_source(),1);function validateRequiredMetric(metric){return metric?{valid:!0,value:metric}:{valid:!1,code:"MISSING_METRIC",message:`Missing required metric. Specify the metric to query.
8
-
9
- Run 'vercel metrics schema' to see available metrics.`}}function validateOrderDirection(orderDirection){return orderDirection===void 0?{valid:!0,value:void 0}:orderDirection==="asc"||orderDirection==="desc"?{valid:!0,value:orderDirection}:{valid:!1,code:"INVALID_ORDER",message:`Invalid order "${orderDirection}". Use "asc" or "desc".`,allowedValues:["asc","desc"]}}function validateOrderBy(orderBy){return orderBy===void 0?{valid:!0,value:void 0}:orderBy==="value"||orderBy==="count"?{valid:!0,value:orderBy}:{valid:!1,code:"INVALID_ORDER_BY",message:`Invalid order-by "${orderBy}". Use "value" or "count".`,allowedValues:["value","count"]}}function handleValidationError(result,jsonOutput,client,telemetry){return telemetry.trackCliError(result.code),jsonOutput?client.stdout.write(formatErrorJson(result.code,result.message,result.allowedValues)):(output_manager_default.error(result.message),result.allowedValues&&result.allowedValues.length>0&&output_manager_default.print(`
10
- Available values: ${result.allowedValues.join(", ")}
11
- `)),1}var PRODUCTION_ENVIRONMENT_FILTER="environment eq 'production'",PRODUCTION_ENVIRONMENT_KQL_FILTER="environment:production",CUSTOM_METRIC_VALUE_ALIAS="value",CUSTOM_METRIC_COUNT_ALIAS="__seriesCount",SUM_DEFAULT_METRIC_UNITS=new Set(["bytes","count","usd","units"]),FILTER_DEPRECATION_WARNING="OData support in --filter is deprecated and will be removed soon. KQL will be the only supported filter syntax.";function combineFilters(filters,prod,syntax="odata"){let nonEmptyFilters=[...filters?.filter(filter=>filter.length>0)??[],...prod?[syntax==="kql"?PRODUCTION_ENVIRONMENT_KQL_FILTER:PRODUCTION_ENVIRONMENT_FILTER]:[]];if(nonEmptyFilters.length===0)return;if(nonEmptyFilters.length===1)return nonEmptyFilters[0];let conjunction=syntax==="kql"?" AND ":" and ";return nonEmptyFilters.map(filter=>`(${filter})`).join(conjunction)}function usesODataSyntax(filters){return filters?.some(filter=>{let unquoted=filter.replace(/"(?:\\.|[^"\\])*"|'(?:''|[^'])*'/g,"");return/\s(?:eq|ne|gt|ge|lt|le|in)\s/i.test(unquoted)||/\b(?:contains|startswith|endswith)\s*\(/i.test(unquoted)})??!1}function getRequestOrderBy(metric,aggregation,orderBy){return orderBy==="value"?getRollupColumnName(metric,aggregation):void 0}function toBucketSeconds(granularity){return"minutes"in granularity?granularity.minutes*60:"hours"in granularity?granularity.hours*60*60:granularity.days*24*60*60}function alignTimeRangeToGranularity(startTime,endTime,granularity){let bucketMs=toBucketSeconds(granularity)*1e3;return{startTime:new Date(Math.floor(startTime.getTime()/bucketMs)*bucketMs),endTime:new Date(Math.ceil(endTime.getTime()/bucketMs)*bucketMs)}}function getCatalogDefaultAggregation(metric,isPlatformMetric){if(!isPlatformMetric)return getDefaultCustomMetricAggregation(metric.unit,metric.aggregations);let defaultAggregation=SUM_DEFAULT_METRIC_UNITS.has(metric.unit)?"sum":"avg";return metric.aggregations.includes(defaultAggregation)?defaultAggregation:defaultAggregation==="sum"&&metric.aggregations.includes("count")?"count":metric.aggregations.includes("sum")?"sum":metric.aggregations[0]}function toCanonicalMetricSelection(metric,aggregation,supportedAggregations){let[aggregationName,...dimensionParts]=aggregation.split("/"),dimension=dimensionParts.join("/")||void 0,countOnlyMetric=supportedAggregations?.includes("count")===!0&&!supportedAggregations.includes("sum"),additiveAggregation=supportedAggregations?.includes("sum")?"sum":countOnlyMetric||supportedAggregations===void 0&&metric.endsWith(".count")?"count":"sum";return aggregation==="persecond"?{metric,aggregation:additiveAggregation,per:"second"}:aggregation==="percent"?{metric,aggregation:additiveAggregation,normalize:"percent"}:aggregationName==="unique"?dimension?{metric,aggregation:"unique",dimensions:[dimension]}:{valid:!1,code:"UNSUPPORTED_AGGREGATION",message:'The unique aggregation requires a dimension, for example "unique/visitorId".'}:isCanonicalAggregation(aggregation)?{metric,aggregation}:{valid:!1,code:"INVALID_AGGREGATION",message:`Aggregation "${aggregation}" is not supported by the Observability query API.`}}function getCanonicalOrderBy(orderBy,selection,supportedAggregations){if(orderBy==="value")return"value";let supportsCount=supportedAggregations===void 0||supportedAggregations.includes("count");return selection.aggregation==="count"||supportsCount?"count":orderBy==="count"?{valid:!1,code:"INVALID_ORDER_BY",message:"--order-by count is not available because this metric does not support the count aggregation. Use --order-by value.",allowedValues:["value"]}:"value"}function createCanonicalMetricsRequest(options){let metrics={[CUSTOM_METRIC_VALUE_ALIAS]:options.selection},rankMetric=CUSTOM_METRIC_VALUE_ALIAS;return options.groupBy.length>0&&options.orderBy==="count"&&options.selection.aggregation!=="count"&&(metrics[CUSTOM_METRIC_COUNT_ALIAS]={metric:options.metric,aggregation:"count"},rankMetric=CUSTOM_METRIC_COUNT_ALIAS),{scope:{ownerId:options.scope.ownerId,...options.scope.type==="project"?{projectIds:options.scope.projectIds}:{}},timeRange:{start:options.startTime.toISOString(),end:options.endTime.toISOString()},bucketSeconds:toBucketSeconds(options.granularity),...options.groupBy.length>0?{groupBy:options.groupBy}:{},...options.filter?{filter:options.filter}:{},metrics,outputs:[CUSTOM_METRIC_VALUE_ALIAS],...options.groupBy.length>0?{seriesSelection:{limit:options.limit,mode:"exact",rankBy:[{metric:rankMetric,direction:options.orderDirection??"desc"}]}}:{}}}function canonicalResponseToMetricsResponse(response,rollupColumn,orderBy,orderDirection){let toRow=point=>({...point.dimensions,[rollupColumn]:point.values[CUSTOM_METRIC_VALUE_ALIAS]??null});return{...response.series?{data:response.series.map(point=>({timestamp:point.timestamp,...toRow(point)}))}:{},summary:response.summary.map(toRow),statistics:{rowsRead:response.meta.statistics.rowsRead,bytesRead:response.meta.statistics.bytesRead,dbTimeSeconds:response.meta.statistics.databaseElapsedMs/1e3,engineTimeSeconds:response.meta.statistics.elapsedMs/1e3,queryTable:[...new Set(response.meta.sources.map(source=>source.id))].sort().join(",")},...orderBy?{orderBy}:{},...orderDirection?{orderDirection}:{}}}async function resolveQueryScope(client,telemetry,opts){if(opts.project||opts.all){let{team}=await getScope(client);if(!team)return handleValidationError({valid:!1,code:"NO_TEAM",message:"No team context found. Run `vercel switch` to select a team, or use `vercel link` in a project directory."},opts.jsonOutput,client,telemetry);if(opts.all)return{scope:{type:"owner",ownerId:team.id},accountId:team.id,teamName:team.slug};let project=await getProjectByNameOrId(client,opts.project,team.id);if(project instanceof ProjectNotFound){let errMsg=`Project "${opts.project}" was not found in team "${team.slug}".`;return handleValidationError({valid:!1,code:"PROJECT_NOT_FOUND",message:errMsg},opts.jsonOutput,client,telemetry)}return{scope:{type:"project",ownerId:team.id,projectIds:[project.id]},accountId:team.id,teamName:team.slug,projectName:project.name}}let linkedProject=await getLinkedProject(client);return linkedProject.status==="error"?(telemetry.trackCliError("LINK_ERROR"),linkedProject.exitCode):linkedProject.status==="not_linked"?handleValidationError({valid:!1,code:"NOT_LINKED",message:"No linked project found. Run `vercel link` to link a project, or use --project <name-or-id> or --all."},opts.jsonOutput,client,telemetry):{scope:{type:"project",ownerId:linkedProject.org.id,projectIds:[linkedProject.project.id]},accountId:linkedProject.org.id,teamName:linkedProject.org.slug,projectName:linkedProject.project.name}}async function query(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(metricsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return telemetry.trackCliError("INVALID_ARGUMENTS"),printError(err),1}let flags=parsedArgs.flags,positionalArgs=parsedArgs.args.slice(1),positionalMetric=positionalArgs[0]==="query"?positionalArgs[1]:positionalArgs[0],formatResult=validateJsonOutput(flags);if(!formatResult.valid)return telemetry.trackCliError("INVALID_OUTPUT_FORMAT"),output_manager_default.error(formatResult.error),1;let jsonOutput=formatResult.jsonOutput,metricFlag=positionalMetric,aggregationFlag=flags["--aggregation"],groupBy=flags["--group-by"]??[],limit=flags["--limit"],orderByInput=typeof flags["--order-by"]=="string"?flags["--order-by"].trim().toLowerCase():void 0,orderInput=typeof flags["--order"]=="string"?flags["--order"].trim().toLowerCase():void 0,filters=flags["--filter"],prod=flags["--prod"],since=flags["--since"],until=flags["--until"],granularity=flags["--granularity"],bucketTimezone=flags["--bucket-timezone"]?.trim(),project=flags["--project"],all=flags["--all"];telemetry.trackCliArgumentMetricId(metricFlag),telemetry.trackCliOptionAggregation(aggregationFlag),telemetry.trackCliOptionGroupBy(groupBy.length>0?groupBy:void 0),telemetry.trackCliOptionLimit(limit),telemetry.trackCliOptionOrderBy(orderByInput),telemetry.trackCliOptionOrder(orderInput),telemetry.trackCliOptionFilter(filters),telemetry.trackCliFlagProd(prod),telemetry.trackCliOptionSince(since),telemetry.trackCliOptionUntil(until),telemetry.trackCliOptionGranularity(granularity),telemetry.trackCliOptionBucketTimezone(bucketTimezone),telemetry.trackCliOptionProject(project),telemetry.trackCliFlagAll(all),telemetry.trackCliOptionFormat(flags["--format"]);let orderByResult=validateOrderBy(orderByInput);if(!orderByResult.valid)return handleValidationError(orderByResult,jsonOutput,client,telemetry);let orderByMode=orderByResult.value,requiredMetric=validateRequiredMetric(metricFlag);if(!requiredMetric.valid)return handleValidationError(requiredMetric,jsonOutput,client,telemetry);let metric=requiredMetric.value,mutualResult=validateAllProjectMutualExclusivity(all,project);if(!mutualResult.valid)return handleValidationError(mutualResult,jsonOutput,client,telemetry);let orderDirectionResult=validateOrderDirection(orderInput);if(!orderDirectionResult.valid)return handleValidationError(orderDirectionResult,jsonOutput,client,telemetry);let orderDirection=orderDirectionResult.value,scopeResult=await resolveQueryScope(client,telemetry,{project,all,jsonOutput});if(typeof scopeResult=="number")return scopeResult;let{scope,accountId,teamName,projectName}=scopeResult,isPlatformMetric=metric.startsWith("vercel."),useCanonicalQuery=!isPlatformMetric||!process.env.FF_LEGACY_METRICS,filterUsesOData=usesODataSyntax(filters);useCanonicalQuery&&filterUsesOData&&output_manager_default.print(`${import_chalk.default.yellow("!")} ${FILTER_DEPRECATION_WARNING}
12
- `);let filter=combineFilters(filters,prod,useCanonicalQuery&&!filterUsesOData?"kql":"odata"),startTime,endTime;try{({startTime,endTime}=resolveTimeRange(since,until))}catch(err){let errMsg=err instanceof Error?err.message:String(err);return handleValidationError({valid:!1,code:"INVALID_TIME",message:errMsg},jsonOutput,client,telemetry)}let metricUnit,aggregationInput,canonicalAggregations;if(useCanonicalQuery){let catalogOrExitCode=await fetchCatalogMetricDetailOrExit(client,accountId,jsonOutput,metric,isPlatformMetric?"system":"custom",startTime.toISOString());if(typeof catalogOrExitCode=="number")return telemetry.trackCliError("SCHEMA_FETCH_FAILED"),catalogOrExitCode;let catalogMetric=catalogOrExitCode.find(item=>item.id===metric);if(!catalogMetric)return handleValidationError({valid:!1,code:"UNKNOWN_METRIC",message:`Unknown metric "${metric}".`,allowedValues:catalogOrExitCode.map(item=>item.id)},jsonOutput,client,telemetry);if(metricUnit=catalogMetric.unit,canonicalAggregations=catalogMetric.aggregations,aggregationFlag)aggregationInput=aggregationFlag;else{let defaultAggregation=getCatalogDefaultAggregation(catalogMetric,isPlatformMetric);if(!defaultAggregation)return handleValidationError({valid:!1,code:"INVALID_AGGREGATION",message:`Metric "${metric}" does not support any query aggregations.`},jsonOutput,client,telemetry);aggregationInput=defaultAggregation}}else{let detailOrExitCode=await fetchMetricDetailOrExit(client,accountId,metric,jsonOutput);if(typeof detailOrExitCode=="number")return telemetry.trackCliError("SCHEMA_FETCH_FAILED"),detailOrExitCode;aggregationInput=aggregationFlag??getDefaultAggregation(detailOrExitCode,metric)??"sum",metricUnit=detailOrExitCode.find(item=>item.id===metric)?.unit??"count"}let aggregation=aggregationInput,orderBy=getRequestOrderBy(metric,aggregation,orderByMode),rangeMs=endTime.getTime()-startTime.getTime(),granResult=computeGranularity(rangeMs,granularity),queryTimeRange=useCanonicalQuery?alignTimeRangeToGranularity(startTime,endTime,granResult.duration):{startTime,endTime};!jsonOutput&&granResult.adjusted&&granResult.notice&&output_manager_default.log(`Notice: ${granResult.notice}`);let body,canonicalOrderBy;if(!useCanonicalQuery)body={scope,metric,aggregation,startTime:startTime.toISOString(),endTime:endTime.toISOString(),granularity:granResult.duration,...bucketTimezone?{bucketTimezone}:{},...groupBy.length>0?{groupBy}:{},...filter?{filter}:{},limit:limit??10,...orderBy?{orderBy}:{},...orderDirection?{orderDirection}:{}};else{if(bucketTimezone)return handleValidationError({valid:!1,code:"UNSUPPORTED_BUCKET_TIMEZONE",message:"--bucket-timezone is not supported by the new Observability query API yet."},jsonOutput,client,telemetry);let selection=toCanonicalMetricSelection(metric,aggregation,canonicalAggregations);if("valid"in selection)return handleValidationError(selection,jsonOutput,client,telemetry);let supportedAggregation=selection.aggregation;if(canonicalAggregations&&!canonicalAggregations.includes(supportedAggregation))return handleValidationError({valid:!1,code:"INVALID_AGGREGATION",message:`Aggregation "${aggregation}" is not valid for metric "${metric}".`,allowedValues:[...canonicalAggregations]},jsonOutput,client,telemetry);let canonicalOrderByResult=groupBy.length>0?getCanonicalOrderBy(orderByMode,selection,canonicalAggregations):void 0;if(canonicalOrderByResult&&typeof canonicalOrderByResult!="string")return handleValidationError(canonicalOrderByResult,jsonOutput,client,telemetry);canonicalOrderBy=canonicalOrderByResult,body=createCanonicalMetricsRequest({scope,metric,selection,startTime:queryTimeRange.startTime,endTime:queryTimeRange.endTime,granularity:granResult.duration,groupBy,filter,limit:limit??10,orderBy:canonicalOrderBy,orderDirection})}let resolvedOrderBy=canonicalOrderBy??orderByMode;jsonOutput||output_manager_default.spinner("Querying metrics...");let response;try{if(!useCanonicalQuery)response=await client.fetch("/v2/observability/query",{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},accountId,bailOn429:!0});else{let canonicalResponse=await client.fetch(OBSERVABILITY_METRICS_PATH,{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},accountId,bailOn429:!0});response=canonicalResponseToMetricsResponse(canonicalResponse,getRollupColumnName(metric,aggregation),canonicalOrderBy,groupBy.length>0?orderDirection??"desc":void 0)}}catch(err){if(isAPIError(err))return telemetry.trackCliError(err.code??"API_ERROR",err.status),handleApiError(err,jsonOutput,client);let errMsg=err instanceof Error?err.message:String(err);return telemetry.trackCliError("NETWORK_ERROR"),jsonOutput?client.stdout.write(formatErrorJson("NETWORK_ERROR",errMsg)):output_manager_default.error(errMsg),1}finally{jsonOutput||output_manager_default.stopSpinner()}return jsonOutput?client.stdout.write(formatQueryJson({metric,aggregation,groupBy,filter,startTime:queryTimeRange.startTime.toISOString(),endTime:queryTimeRange.endTime.toISOString(),granularity:granResult.duration,...bucketTimezone?{bucketTimezone}:{},...resolvedOrderBy?{orderBy:resolvedOrderBy}:{},...orderDirection?{orderDirection}:{}},response)):client.stdout.write(formatText(response,{metric,metricUnit,aggregation,groupBy,filter,scope,projectName,teamName,periodStart:queryTimeRange.startTime.toISOString(),periodEnd:queryTimeRange.endTime.toISOString(),granularity:granResult.duration,bucketTimezone,orderBy:resolvedOrderBy,orderDirection})),0}export{query as default};
@@ -1,7 +0,0 @@
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{getSubcommand}from"./chunk-ETV3C2CV.js";import{AGENT_REASON}from"./chunk-ENBTTYJR.js";import{buildCommandWithGlobalFlags,outputAgentError}from"./chunk-NS4FH2TY.js";import"./chunk-JAJW3P42.js";import"./chunk-R2TGGVCT.js";import"./chunk-FI772UVH.js";import"./chunk-XFVGX5HG.js";import{output_manager_default}from"./chunk-Z6Y55QJW.js";import"./chunk-QGIQK47P.js";import"./chunk-AVSPFBLM.js";import"./chunk-XCJDGQO7.js";import"./chunk-YPTLSODC.js";import"./chunk-7HL2RPUO.js";import"./chunk-U7KCDTCH.js";import"./chunk-N3ZZ7FHQ.js";import"./chunk-GU6VIFR5.js";import"./chunk-6L236MNA.js";var RULES_CONFIG={ls:["ls","list"],schema:["schema"],add:["add","create"],inspect:["inspect","get"],rm:["rm","remove","delete"],update:["update","patch"]};async function rules(client,argv){if(argv.length===0||argv[0]?.startsWith("-")){let lsFn=(await import("./ls-WEG45IOC.js")).default;return lsFn(client,argv)}let{subcommand,args,subcommandOriginal}=getSubcommand(argv,RULES_CONFIG);if(subcommand==null)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:`Unknown "alerts rules" subcommand "${argv[0]}".`,next:[{command:buildCommandWithGlobalFlags(client.argv,"alerts rules --help"),when:"Show valid rules subcommands"}]},1),output_manager_default.error(`Unknown "alerts rules" subcommand "${argv[0]}". Run \`vercel alerts rules --help\`.`),1;switch(subcommand){case"ls":return(await import("./ls-WEG45IOC.js")).default(client,args);case"schema":return(await import("./schema-KCNKVFT3.js")).default(client,args);case"add":return(await import("./add-PYUNJZ6K.js")).default(client,args);case"inspect":return(await import("./rule-inspect-TT3DRGCS.js")).default(client,args);case"rm":return(await import("./rm-WB2AIP3N.js")).default(client,args);case"update":return(await import("./update-RBFNNSWE.js")).default(client,args);default:return output_manager_default.error(`Unhandled rules subcommand: ${String(subcommandOriginal)}`),1}}export{rules as default};
@@ -1,14 +0,0 @@
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{fetchCatalogMetricDetailOrExit,fetchCombinedMetricListOrExit,fetchCustomMetricDetailOrExit,fetchMetricCatalogListOrExit,fetchMetricDetailOrExit}from"./chunk-NWFHHUKZ.js";import{formatErrorJson}from"./chunk-G5FC5ZCO.js";import{indent_default}from"./chunk-GZNDA6SV.js";import{formatTable}from"./chunk-NUGLE4QY.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import{schemaSubcommand}from"./chunk-WUZD4KBL.js";import"./chunk-6TAQ6OWD.js";import"./chunk-WPS6JZF6.js";import{getScope}from"./chunk-5QQNYN4N.js";import{parseArguments}from"./chunk-HTC6KO2B.js";import"./chunk-5XJNPXQK.js";import{printError}from"./chunk-LNPMDXBJ.js";import"./chunk-MY4MONOH.js";import{require_pluralize}from"./chunk-VLZ47RWM.js";import"./chunk-F2ZWW2IO.js";import"./chunk-B4ATVYZW.js";import"./chunk-PPCFQQSU.js";import"./chunk-OSCCYU74.js";import{getFlagsSpecification}from"./chunk-JAJW3P42.js";import"./chunk-XSVBYDYI.js";import"./chunk-EVZRQGNK.js";import"./chunk-R2TGGVCT.js";import"./chunk-FI772UVH.js";import"./chunk-XFVGX5HG.js";import{output_manager_default}from"./chunk-Z6Y55QJW.js";import"./chunk-QGIQK47P.js";import"./chunk-AVSPFBLM.js";import"./chunk-XCJDGQO7.js";import"./chunk-YPTLSODC.js";import"./chunk-7HL2RPUO.js";import"./chunk-U7KCDTCH.js";import"./chunk-N3ZZ7FHQ.js";import"./chunk-GU6VIFR5.js";import{__toESM}from"./chunk-6L236MNA.js";var import_pluralize=__toESM(require_pluralize(),1);async function schema(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(schemaSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return printError(err),1}let flags=parsedArgs.flags,positionalArgs=parsedArgs.args.slice(1),positionalMetric=positionalArgs[0]==="schema"?positionalArgs[1]:positionalArgs[0],formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),1;let jsonOutput=formatResult.jsonOutput,metric=positionalMetric;telemetry.trackCliArgumentMetricId(metric),telemetry.trackCliOptionFormat(flags["--format"]);let{team}=await getScope(client);if(!team){let message="The metrics schema API request was not authorized. Run `vercel login` to authenticate and `vercel switch` to select a team, then try again.";return jsonOutput?client.stdout.write(formatErrorJson("SCHEMA_UNAUTHORIZED",message)):output_manager_default.error(message),1}let useMetricsV1=!process.env.FF_LEGACY_METRICS;if(metric){let isPlatformMetric=metric.startsWith("vercel."),detail;if(useMetricsV1){let result=await fetchCatalogMetricDetailOrExit(client,team.id,jsonOutput,metric,isPlatformMetric?"system":"custom");if(typeof result=="number")return result;detail=result}else if(isPlatformMetric){let result=await fetchMetricDetailOrExit(client,team.id,metric,jsonOutput);if(typeof result=="number")return result;detail=result}else{let result=await fetchCustomMetricDetailOrExit(client,team.id,jsonOutput,metric);if(typeof result=="number")return result;detail=result}if(detail.length===0){let message=`No metrics match "${metric}". Run \`vercel metrics schema\` to see available metrics.`;return jsonOutput?client.stdout.write(formatErrorJson("METRIC_NOT_FOUND",message)):output_manager_default.error(message),1}if(jsonOutput)return client.stdout.write(JSON.stringify(detail,null,2)),0;output_manager_default.log(`Metric: ${metric}`);let metricsTable=formatMetricsTable(toDisplayMetrics(detail));return metricsTable&&(output_manager_default.print(metricsTable),output_manager_default.print(`
8
- `)),0}let metricsOrExitCode=useMetricsV1?await fetchMetricCatalogListOrExit(client,team.id,jsonOutput):await fetchCombinedMetricListOrExit(client,team.id,jsonOutput);return typeof metricsOrExitCode=="number"?metricsOrExitCode:(jsonOutput?client.stdout.write(JSON.stringify(metricsOrExitCode,null,2)):(output_manager_default.log(`${(0,import_pluralize.default)("Metric",metricsOrExitCode.length,!0)} found`),output_manager_default.print(formatMetricListTable(metricsOrExitCode)),output_manager_default.print(`
9
- `)),0)}function formatMetricListTable(metrics){return indent_default(formatTable(["Metric","Description"],["l","l"],[{rows:metrics.map(metric=>[metric.id,metric.description])}]),1)}function toDisplayMetrics(metrics){return metrics.map(metric=>{let dimensions=metric.dimensions.map(dimension=>typeof dimension=="string"?dimension:dimension.name);return{id:metric.id,description:metric.description,dimensions,unit:metric.unit,aggregations:metric.aggregations.map(aggregation=>"defaultAggregation"in metric&&aggregation===metric.defaultAggregation?`${aggregation} (default)`:aggregation)}})}function formatMetricsTable(metrics){if(metrics.length===0)return null;let dimensionsByMetric=metrics.map(metric=>metric.dimensions),sharedDimensions=dimensionsByMetric[0].filter(dimension=>dimensionsByMetric.every(metricDimensions=>metricDimensions.includes(dimension))),rows=metrics.map(metric=>{let extraDimensions=metric.dimensions.filter(dimension=>!sharedDimensions.includes(dimension)).map(dimension=>`+${dimension}`),aggregations=metric.aggregations.join(", ");return{metric:metric.id,description:metric.description,unit:metric.unit,aggregations,extraDimensions}}),hasExtraDimensions=rows.some(row=>row.extraDimensions.length>0),tableHeaders=hasExtraDimensions?["Metric","Description","Unit","Aggregations","Dimensions"]:["Metric","Description","Unit","Aggregations"],tableRows=rows.map(row=>hasExtraDimensions?[row.metric,row.description,row.unit,row.aggregations,row.extraDimensions.join(", ")||"\u2014"]:[row.metric,row.description,row.unit,row.aggregations]),sharedDimensionsLine=sharedDimensions.length>0?metrics.length===1?`Dimensions:
10
- ${sharedDimensions.join(", ")}`:`Shared dimensions:
11
- ${sharedDimensions.join(", ")}`:null;return[`
12
- ${indent_default(formatTable(tableHeaders,hasExtraDimensions?["l","l","l","l","l"]:["l","l","l","l"],[{rows:tableRows}]),1)}`,sharedDimensionsLine].filter(Boolean).join(`
13
-
14
- `)}export{schema as default};