@depup/nitro 3.0.260311-beta-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 (370) hide show
  1. package/LICENSE +27 -0
  2. package/README.md +32 -0
  3. package/changes.json +14 -0
  4. package/dist/THIRD-PARTY-LICENSES.md +1646 -0
  5. package/dist/_build/common.mjs +29361 -0
  6. package/dist/_build/rolldown.mjs +173 -0
  7. package/dist/_build/rollup.mjs +194 -0
  8. package/dist/_build/vite.build.mjs +18 -0
  9. package/dist/_chunks/nitro.mjs +1159 -0
  10. package/dist/_chunks/nitro2.mjs +102 -0
  11. package/dist/_chunks/nitro3.mjs +129 -0
  12. package/dist/_chunks/utils.mjs +272 -0
  13. package/dist/_common.mjs +35 -0
  14. package/dist/_dev.d.mts +12 -0
  15. package/dist/_dev.mjs +519 -0
  16. package/dist/_libs/_.mjs +3 -0
  17. package/dist/_libs/_2.mjs +2 -0
  18. package/dist/_libs/_3.mjs +3 -0
  19. package/dist/_libs/_4.mjs +2 -0
  20. package/dist/_libs/_5.mjs +3 -0
  21. package/dist/_libs/_6.mjs +4 -0
  22. package/dist/_libs/_7.mjs +5 -0
  23. package/dist/_libs/c12+rc9.mjs +812 -0
  24. package/dist/_libs/c12+readdirp+chokidar.d.mts +230 -0
  25. package/dist/_libs/citty.mjs +361 -0
  26. package/dist/_libs/commondir+is-reference.mjs +1311 -0
  27. package/dist/_libs/compatx.d.mts +47 -0
  28. package/dist/_libs/compatx.mjs +45 -0
  29. package/dist/_libs/esbuild.d.mts +20 -0
  30. package/dist/_libs/escape-string-regexp.mjs +7 -0
  31. package/dist/_libs/estree+pluginutils.d.mts +241 -0
  32. package/dist/_libs/estree-walker.mjs +184 -0
  33. package/dist/_libs/exsolve.d.mts +1 -0
  34. package/dist/_libs/hasown+resolve+deepmerge.mjs +1949 -0
  35. package/dist/_libs/httpxy.d.mts +82 -0
  36. package/dist/_libs/httpxy.mjs +671 -0
  37. package/dist/_libs/js-tokens.d.mts +1 -0
  38. package/dist/_libs/klona.mjs +37 -0
  39. package/dist/_libs/magic-string.d.mts +220 -0
  40. package/dist/_libs/mlly.d.mts +57 -0
  41. package/dist/_libs/nypm+tinyexec.mjs +845 -0
  42. package/dist/_libs/perfect-debounce.mjs +88 -0
  43. package/dist/_libs/pkg-types.d.mts +23 -0
  44. package/dist/_libs/plugin-alias.mjs +64 -0
  45. package/dist/_libs/plugin-inject.mjs +131 -0
  46. package/dist/_libs/plugin-json.mjs +34 -0
  47. package/dist/_libs/pluginutils.mjs +646 -0
  48. package/dist/_libs/readdirp+chokidar.mjs +1606 -0
  49. package/dist/_libs/remapping.mjs +115 -0
  50. package/dist/_libs/resolve-uri+gen-mapping.mjs +442 -0
  51. package/dist/_libs/rou3.d.mts +44 -0
  52. package/dist/_libs/rou3.mjs +496 -0
  53. package/dist/_libs/std-env.d.mts +12 -0
  54. package/dist/_libs/strip-literal.d.mts +1 -0
  55. package/dist/_libs/tsconfck.mjs +813 -0
  56. package/dist/_libs/ultrahtml.mjs +127 -0
  57. package/dist/_libs/unimport+unplugin.mjs +1684 -0
  58. package/dist/_libs/unplugin+unimport.d.mts +423 -0
  59. package/dist/_libs/unwasm.d.mts +29 -0
  60. package/dist/_presets.mjs +1759 -0
  61. package/dist/builder.d.mts +64 -0
  62. package/dist/builder.mjs +15 -0
  63. package/dist/cli/_chunks/build.mjs +47 -0
  64. package/dist/cli/_chunks/common.mjs +14 -0
  65. package/dist/cli/_chunks/deploy.mjs +40 -0
  66. package/dist/cli/_chunks/dev.mjs +62 -0
  67. package/dist/cli/_chunks/docs.mjs +30 -0
  68. package/dist/cli/_chunks/list.mjs +25 -0
  69. package/dist/cli/_chunks/prepare.mjs +17 -0
  70. package/dist/cli/_chunks/preview.mjs +51 -0
  71. package/dist/cli/_chunks/run.mjs +53 -0
  72. package/dist/cli/_chunks/task.mjs +14 -0
  73. package/dist/cli/index.d.mts +1 -0
  74. package/dist/cli/index.mjs +22 -0
  75. package/dist/node_modules/@poppinss/colors/build/index.js +139 -0
  76. package/dist/node_modules/@poppinss/colors/package.json +118 -0
  77. package/dist/node_modules/@poppinss/dumper/build/chunk-26HALFTP.js +602 -0
  78. package/dist/node_modules/@poppinss/dumper/build/formatters/console/main.js +441 -0
  79. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +725 -0
  80. package/dist/node_modules/@poppinss/dumper/package.json +122 -0
  81. package/dist/node_modules/@poppinss/exception/build/index.js +44 -0
  82. package/dist/node_modules/@poppinss/exception/package.json +109 -0
  83. package/dist/node_modules/@sindresorhus/is/distribution/index.js +1354 -0
  84. package/dist/node_modules/@sindresorhus/is/distribution/utilities.js +3 -0
  85. package/dist/node_modules/@sindresorhus/is/package.json +81 -0
  86. package/dist/node_modules/@speed-highlight/core/dist/index.js +4 -0
  87. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -0
  88. package/dist/node_modules/@speed-highlight/core/package.json +94 -0
  89. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  90. package/dist/node_modules/cookie-es/package.json +37 -0
  91. package/dist/node_modules/croner/dist/croner.js +1 -0
  92. package/dist/node_modules/croner/package.json +73 -0
  93. package/dist/node_modules/defu/dist/defu.mjs +69 -0
  94. package/dist/node_modules/defu/package.json +43 -0
  95. package/dist/node_modules/destr/dist/index.mjs +72 -0
  96. package/dist/node_modules/destr/package.json +47 -0
  97. package/dist/node_modules/error-stack-parser-es/dist/index.mjs +38 -0
  98. package/dist/node_modules/error-stack-parser-es/dist/lite.mjs +167 -0
  99. package/dist/node_modules/error-stack-parser-es/package.json +83 -0
  100. package/dist/node_modules/get-port-please/dist/index.mjs +430 -0
  101. package/dist/node_modules/get-port-please/package.json +39 -0
  102. package/dist/node_modules/kleur/index.mjs +110 -0
  103. package/dist/node_modules/kleur/package.json +51 -0
  104. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  105. package/dist/node_modules/rendu/package.json +47 -0
  106. package/dist/node_modules/scule/dist/index.mjs +80 -0
  107. package/dist/node_modules/scule/package.json +43 -0
  108. package/dist/node_modules/source-map/lib/array-set.js +100 -0
  109. package/dist/node_modules/source-map/lib/base64-vlq.js +94 -0
  110. package/dist/node_modules/source-map/lib/base64.js +19 -0
  111. package/dist/node_modules/source-map/lib/binary-search.js +113 -0
  112. package/dist/node_modules/source-map/lib/mapping-list.js +83 -0
  113. package/dist/node_modules/source-map/lib/mappings.wasm +0 -0
  114. package/dist/node_modules/source-map/lib/read-wasm.js +27 -0
  115. package/dist/node_modules/source-map/lib/source-map-consumer.js +1081 -0
  116. package/dist/node_modules/source-map/lib/source-map-generator.js +439 -0
  117. package/dist/node_modules/source-map/lib/source-node.js +430 -0
  118. package/dist/node_modules/source-map/lib/url.js +13 -0
  119. package/dist/node_modules/source-map/lib/util.js +444 -0
  120. package/dist/node_modules/source-map/lib/wasm.js +138 -0
  121. package/dist/node_modules/source-map/package.json +79 -0
  122. package/dist/node_modules/source-map/source-map.js +10 -0
  123. package/dist/node_modules/supports-color/index.js +202 -0
  124. package/dist/node_modules/supports-color/package.json +64 -0
  125. package/dist/node_modules/ufo/dist/index.mjs +645 -0
  126. package/dist/node_modules/ufo/package.json +48 -0
  127. package/dist/node_modules/unctx/dist/index.mjs +131 -0
  128. package/dist/node_modules/unctx/package.json +67 -0
  129. package/dist/node_modules/youch/build/helpers-B9BQYaS6.js +23 -0
  130. package/dist/node_modules/youch/build/index.js +212 -0
  131. package/dist/node_modules/youch/build/public/error_cause/style.css +5 -0
  132. package/dist/node_modules/youch/build/public/error_info/script.js +13 -0
  133. package/dist/node_modules/youch/build/public/error_info/style.css +145 -0
  134. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  135. package/dist/node_modules/youch/build/public/error_stack/script.js +72 -0
  136. package/dist/node_modules/youch/build/public/error_stack/style.css +219 -0
  137. package/dist/node_modules/youch/build/public/error_stack_source/style.css +123 -0
  138. package/dist/node_modules/youch/build/public/header/script.js +14 -0
  139. package/dist/node_modules/youch/build/public/header/style.css +56 -0
  140. package/dist/node_modules/youch/build/public/layout/script.js +12 -0
  141. package/dist/node_modules/youch/build/public/layout/style.css +435 -0
  142. package/dist/node_modules/youch/build/public_dir-C5bujZKB.js +25 -0
  143. package/dist/node_modules/youch/build/src/templates/error_cause/main.js +44 -0
  144. package/dist/node_modules/youch/build/src/templates/error_info/main.js +72 -0
  145. package/dist/node_modules/youch/build/src/templates/error_metadata/main.js +65 -0
  146. package/dist/node_modules/youch/build/src/templates/error_stack/main.js +152 -0
  147. package/dist/node_modules/youch/build/src/templates/error_stack_source/main.js +46 -0
  148. package/dist/node_modules/youch/build/src/templates/header/main.js +24 -0
  149. package/dist/node_modules/youch/build/src/templates/layout/main.js +27 -0
  150. package/dist/node_modules/youch/package.json +135 -0
  151. package/dist/node_modules/youch-core/build/index.js +316 -0
  152. package/dist/node_modules/youch-core/package.json +124 -0
  153. package/dist/presets/_nitro/runtime/nitro-dev.mjs +20 -0
  154. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +15 -0
  155. package/dist/presets/_nitro/runtime/service-worker.mjs +23 -0
  156. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +14 -0
  157. package/dist/presets/aws-lambda/runtime/_utils.mjs +116 -0
  158. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +31 -0
  159. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +13 -0
  160. package/dist/presets/azure/runtime/_utils.mjs +50 -0
  161. package/dist/presets/azure/runtime/azure-swa.mjs +30 -0
  162. package/dist/presets/bun/runtime/bun.mjs +40 -0
  163. package/dist/presets/cloudflare/runtime/_module-handler.mjs +87 -0
  164. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +72 -0
  165. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +17 -0
  166. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +39 -0
  167. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +96 -0
  168. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  169. package/dist/presets/deno/runtime/deno-deploy.mjs +19 -0
  170. package/dist/presets/deno/runtime/deno-server.mjs +39 -0
  171. package/dist/presets/netlify/runtime/netlify-edge.mjs +20 -0
  172. package/dist/presets/netlify/runtime/netlify.mjs +20 -0
  173. package/dist/presets/node/runtime/node-cluster.mjs +54 -0
  174. package/dist/presets/node/runtime/node-middleware.mjs +14 -0
  175. package/dist/presets/node/runtime/node-server.mjs +47 -0
  176. package/dist/presets/standard/runtime/server.mjs +4 -0
  177. package/dist/presets/stormkit/runtime/stormkit.mjs +27 -0
  178. package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
  179. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  180. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  181. package/dist/presets/vercel/runtime/vercel.web.mjs +23 -0
  182. package/dist/presets/winterjs/runtime/winterjs.mjs +91 -0
  183. package/dist/presets/zeabur/runtime/zeabur.mjs +4 -0
  184. package/dist/presets/zephyr/runtime/server.mjs +3 -0
  185. package/dist/runtime/app.d.mts +1 -0
  186. package/dist/runtime/app.mjs +1 -0
  187. package/dist/runtime/cache.d.mts +1 -0
  188. package/dist/runtime/cache.mjs +1 -0
  189. package/dist/runtime/config.d.mts +3 -0
  190. package/dist/runtime/config.mjs +4 -0
  191. package/dist/runtime/context.d.mts +1 -0
  192. package/dist/runtime/context.mjs +1 -0
  193. package/dist/runtime/database.d.mts +1 -0
  194. package/dist/runtime/database.mjs +1 -0
  195. package/dist/runtime/internal/app.d.mts +16 -0
  196. package/dist/runtime/internal/app.mjs +208 -0
  197. package/dist/runtime/internal/cache.d.mts +7 -0
  198. package/dist/runtime/internal/cache.mjs +41 -0
  199. package/dist/runtime/internal/context.d.mts +14 -0
  200. package/dist/runtime/internal/context.mjs +24 -0
  201. package/dist/runtime/internal/database.d.mts +2 -0
  202. package/dist/runtime/internal/database.mjs +12 -0
  203. package/dist/runtime/internal/empty.mjs +0 -0
  204. package/dist/runtime/internal/error/dev.d.mts +10 -0
  205. package/dist/runtime/internal/error/dev.mjs +121 -0
  206. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  207. package/dist/runtime/internal/error/hooks.mjs +9 -0
  208. package/dist/runtime/internal/error/prod.d.mts +6 -0
  209. package/dist/runtime/internal/error/prod.mjs +40 -0
  210. package/dist/runtime/internal/error/utils.d.mts +8 -0
  211. package/dist/runtime/internal/error/utils.mjs +3 -0
  212. package/dist/runtime/internal/meta.d.mts +2 -0
  213. package/dist/runtime/internal/meta.mjs +3 -0
  214. package/dist/runtime/internal/plugin.d.mts +3 -0
  215. package/dist/runtime/internal/plugin.mjs +4 -0
  216. package/dist/runtime/internal/route-rules.d.mts +9 -0
  217. package/dist/runtime/internal/route-rules.mjs +72 -0
  218. package/dist/runtime/internal/routes/dev-tasks.d.mts +3 -0
  219. package/dist/runtime/internal/routes/dev-tasks.mjs +25 -0
  220. package/dist/runtime/internal/routes/openapi.d.mts +3 -0
  221. package/dist/runtime/internal/routes/openapi.mjs +94 -0
  222. package/dist/runtime/internal/routes/renderer-template.d.mts +2 -0
  223. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +3 -0
  224. package/dist/runtime/internal/routes/renderer-template.dev.mjs +19 -0
  225. package/dist/runtime/internal/routes/renderer-template.mjs +4 -0
  226. package/dist/runtime/internal/routes/scalar.d.mts +3 -0
  227. package/dist/runtime/internal/routes/scalar.mjs +193 -0
  228. package/dist/runtime/internal/routes/swagger.d.mts +3 -0
  229. package/dist/runtime/internal/routes/swagger.mjs +42 -0
  230. package/dist/runtime/internal/runtime-config.d.mts +9 -0
  231. package/dist/runtime/internal/runtime-config.mjs +54 -0
  232. package/dist/runtime/internal/static.d.mts +3 -0
  233. package/dist/runtime/internal/static.mjs +67 -0
  234. package/dist/runtime/internal/storage.d.mts +2 -0
  235. package/dist/runtime/internal/storage.mjs +6 -0
  236. package/dist/runtime/internal/task.d.mts +19 -0
  237. package/dist/runtime/internal/task.mjs +69 -0
  238. package/dist/runtime/internal/vite/dev-entry.mjs +18 -0
  239. package/dist/runtime/internal/vite/dev-worker.mjs +264 -0
  240. package/dist/runtime/internal/vite/ssr-renderer.mjs +6 -0
  241. package/dist/runtime/meta.d.mts +5 -0
  242. package/dist/runtime/meta.mjs +27 -0
  243. package/dist/runtime/nitro.d.mts +11 -0
  244. package/dist/runtime/nitro.mjs +34 -0
  245. package/dist/runtime/runtime-config.d.mts +1 -0
  246. package/dist/runtime/runtime-config.mjs +1 -0
  247. package/dist/runtime/storage.d.mts +1 -0
  248. package/dist/runtime/storage.mjs +1 -0
  249. package/dist/runtime/task.d.mts +1 -0
  250. package/dist/runtime/task.mjs +1 -0
  251. package/dist/runtime/virtual/_runtime_warn.d.mts +1 -0
  252. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  253. package/dist/runtime/virtual/database.d.mts +8 -0
  254. package/dist/runtime/virtual/database.mjs +2 -0
  255. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  256. package/dist/runtime/virtual/error-handler.mjs +9 -0
  257. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  258. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  259. package/dist/runtime/virtual/plugins.d.mts +3 -0
  260. package/dist/runtime/virtual/plugins.mjs +2 -0
  261. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  262. package/dist/runtime/virtual/polyfills.mjs +2 -0
  263. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  264. package/dist/runtime/virtual/public-assets.mjs +8 -0
  265. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  266. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  267. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  268. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  269. package/dist/runtime/virtual/routing.d.mts +8 -0
  270. package/dist/runtime/virtual/routing.mjs +11 -0
  271. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  272. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  273. package/dist/runtime/virtual/server-assets.d.mts +7 -0
  274. package/dist/runtime/virtual/server-assets.mjs +12 -0
  275. package/dist/runtime/virtual/storage.d.mts +3 -0
  276. package/dist/runtime/virtual/storage.mjs +5 -0
  277. package/dist/runtime/virtual/tasks.d.mts +10 -0
  278. package/dist/runtime/virtual/tasks.mjs +3 -0
  279. package/dist/runtime/vite.d.mts +8 -0
  280. package/dist/runtime/vite.mjs +9 -0
  281. package/dist/types/index.d.mts +3010 -0
  282. package/dist/types/index.mjs +1 -0
  283. package/dist/vite.d.mts +52 -0
  284. package/dist/vite.mjs +740 -0
  285. package/lib/h3.d.mts +1 -0
  286. package/lib/h3.mjs +1 -0
  287. package/lib/tsconfig.json +27 -0
  288. package/lib/vite.types.d.mts +26 -0
  289. package/lib/vite.types.mjs +2 -0
  290. package/package.json +256 -0
  291. package/skills/nitro/SKILL.md +10 -0
  292. package/skills/nitro/docs/TOC.md +83 -0
  293. package/skills/nitro/docs/_navigation.json +679 -0
  294. package/skills/nitro/docs/config/index.md +1147 -0
  295. package/skills/nitro/docs/deploy/index.md +64 -0
  296. package/skills/nitro/docs/deploy/providers/alwaysdata.md +50 -0
  297. package/skills/nitro/docs/deploy/providers/aws-amplify.md +81 -0
  298. package/skills/nitro/docs/deploy/providers/aws.md +47 -0
  299. package/skills/nitro/docs/deploy/providers/azure.md +72 -0
  300. package/skills/nitro/docs/deploy/providers/cleavr.md +33 -0
  301. package/skills/nitro/docs/deploy/providers/cloudflare.md +375 -0
  302. package/skills/nitro/docs/deploy/providers/deno-deploy.md +66 -0
  303. package/skills/nitro/docs/deploy/providers/digitalocean.md +46 -0
  304. package/skills/nitro/docs/deploy/providers/firebase.md +32 -0
  305. package/skills/nitro/docs/deploy/providers/flightcontrol.md +67 -0
  306. package/skills/nitro/docs/deploy/providers/genezio.md +67 -0
  307. package/skills/nitro/docs/deploy/providers/github-pages.md +68 -0
  308. package/skills/nitro/docs/deploy/providers/gitlab-pages.md +37 -0
  309. package/skills/nitro/docs/deploy/providers/heroku.md +84 -0
  310. package/skills/nitro/docs/deploy/providers/iis.md +38 -0
  311. package/skills/nitro/docs/deploy/providers/koyeb.md +109 -0
  312. package/skills/nitro/docs/deploy/providers/netlify.md +47 -0
  313. package/skills/nitro/docs/deploy/providers/platform-sh.md +37 -0
  314. package/skills/nitro/docs/deploy/providers/render.md +37 -0
  315. package/skills/nitro/docs/deploy/providers/stormkit.md +24 -0
  316. package/skills/nitro/docs/deploy/providers/vercel.md +179 -0
  317. package/skills/nitro/docs/deploy/providers/zeabur.md +19 -0
  318. package/skills/nitro/docs/deploy/providers/zephyr.md +99 -0
  319. package/skills/nitro/docs/deploy/providers/zerops.md +102 -0
  320. package/skills/nitro/docs/deploy/runtimes/bun.md +15 -0
  321. package/skills/nitro/docs/deploy/runtimes/deno.md +19 -0
  322. package/skills/nitro/docs/deploy/runtimes/node.md +63 -0
  323. package/skills/nitro/docs/docs/assets.md +166 -0
  324. package/skills/nitro/docs/docs/cache.md +408 -0
  325. package/skills/nitro/docs/docs/configuration.md +256 -0
  326. package/skills/nitro/docs/docs/database.md +185 -0
  327. package/skills/nitro/docs/docs/index.md +56 -0
  328. package/skills/nitro/docs/docs/lifecycle.md +204 -0
  329. package/skills/nitro/docs/docs/migration.md +215 -0
  330. package/skills/nitro/docs/docs/nightly.md +31 -0
  331. package/skills/nitro/docs/docs/plugins.md +164 -0
  332. package/skills/nitro/docs/docs/quick-start.md +110 -0
  333. package/skills/nitro/docs/docs/renderer.md +322 -0
  334. package/skills/nitro/docs/docs/routing.md +711 -0
  335. package/skills/nitro/docs/docs/server-entry.md +239 -0
  336. package/skills/nitro/docs/docs/storage.md +261 -0
  337. package/skills/nitro/docs/docs/tasks.md +277 -0
  338. package/skills/nitro/docs/examples/api-routes.md +145 -0
  339. package/skills/nitro/docs/examples/auto-imports.md +93 -0
  340. package/skills/nitro/docs/examples/cached-handler.md +81 -0
  341. package/skills/nitro/docs/examples/custom-error-handler.md +98 -0
  342. package/skills/nitro/docs/examples/database.md +157 -0
  343. package/skills/nitro/docs/examples/elysia.md +70 -0
  344. package/skills/nitro/docs/examples/express.md +78 -0
  345. package/skills/nitro/docs/examples/fastify.md +79 -0
  346. package/skills/nitro/docs/examples/hello-world.md +68 -0
  347. package/skills/nitro/docs/examples/hono.md +74 -0
  348. package/skills/nitro/docs/examples/import-alias.md +100 -0
  349. package/skills/nitro/docs/examples/index.md +3 -0
  350. package/skills/nitro/docs/examples/middleware.md +91 -0
  351. package/skills/nitro/docs/examples/mono-jsx.md +68 -0
  352. package/skills/nitro/docs/examples/nano-jsx.md +70 -0
  353. package/skills/nitro/docs/examples/plugins.md +91 -0
  354. package/skills/nitro/docs/examples/renderer.md +113 -0
  355. package/skills/nitro/docs/examples/runtime-config.md +97 -0
  356. package/skills/nitro/docs/examples/server-fetch.md +87 -0
  357. package/skills/nitro/docs/examples/shiki.md +198 -0
  358. package/skills/nitro/docs/examples/virtual-routes.md +74 -0
  359. package/skills/nitro/docs/examples/vite-nitro-plugin.md +79 -0
  360. package/skills/nitro/docs/examples/vite-rsc.md +1041 -0
  361. package/skills/nitro/docs/examples/vite-ssr-html.md +217 -0
  362. package/skills/nitro/docs/examples/vite-ssr-preact.md +247 -0
  363. package/skills/nitro/docs/examples/vite-ssr-react.md +226 -0
  364. package/skills/nitro/docs/examples/vite-ssr-solid.md +256 -0
  365. package/skills/nitro/docs/examples/vite-ssr-tsr-react.md +442 -0
  366. package/skills/nitro/docs/examples/vite-ssr-tss-react.md +444 -0
  367. package/skills/nitro/docs/examples/vite-ssr-vue-router.md +616 -0
  368. package/skills/nitro/docs/examples/vite-trpc.md +335 -0
  369. package/skills/nitro/docs/examples/websocket.md +282 -0
  370. package/skills/nitro/docs/index.md +121 -0
@@ -0,0 +1,230 @@
1
+ import { Stats } from "node:fs";
2
+ import { EventEmitter } from "node:events";
3
+ import { Readable } from "node:stream";
4
+ import { DownloadTemplateOptions } from "giget";
5
+
6
+ //#region node_modules/.pnpm/c12@4.0.0-beta.3_chokidar@5.0.0_dotenv@17.3.1_giget@3.1.2_jiti@2.6.1_magicast@0.5.2/node_modules/c12/dist/_chunks/libs/ohash.d.mts
7
+ //#region node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/utils/index.d.mts
8
+ /**
9
+ * Calculates the difference between two objects and returns a list of differences.
10
+ *
11
+ * @param {any} obj1 - The first object to compare.
12
+ * @param {any} obj2 - The second object to compare.
13
+ * @param {HashOptions} [opts={}] - Configuration options for hashing the objects. See {@link HashOptions}.
14
+ * @returns {DiffEntry[]} An array with the differences between the two objects.
15
+ */
16
+ declare function diff(obj1: any, obj2: any): DiffEntry[];
17
+ declare class DiffEntry {
18
+ key: string;
19
+ type: "changed" | "added" | "removed";
20
+ newValue: DiffHashedObject;
21
+ oldValue?: DiffHashedObject | undefined;
22
+ constructor(key: string, type: "changed" | "added" | "removed", newValue: DiffHashedObject, oldValue?: DiffHashedObject | undefined);
23
+ toString(): string;
24
+ toJSON(): string;
25
+ }
26
+ declare class DiffHashedObject {
27
+ key: string;
28
+ value: any;
29
+ hash?: string | undefined;
30
+ props?: Record<string, DiffHashedObject> | undefined;
31
+ constructor(key: string, value: any, hash?: string | undefined, props?: Record<string, DiffHashedObject> | undefined);
32
+ toString(): string;
33
+ toJSON(): string;
34
+ } //#endregion
35
+ //#endregion
36
+ //#region node_modules/.pnpm/chokidar@5.0.0/node_modules/chokidar/index.d.ts
37
+ type AWF = {
38
+ stabilityThreshold: number;
39
+ pollInterval: number;
40
+ };
41
+ type BasicOpts = {
42
+ persistent: boolean;
43
+ ignoreInitial: boolean;
44
+ followSymlinks: boolean;
45
+ cwd?: string;
46
+ usePolling: boolean;
47
+ interval: number;
48
+ binaryInterval: number;
49
+ alwaysStat?: boolean;
50
+ depth?: number;
51
+ ignorePermissionErrors: boolean;
52
+ atomic: boolean | number;
53
+ };
54
+ type ChokidarOptions = Partial<BasicOpts & {
55
+ ignored: Matcher | Matcher[];
56
+ awaitWriteFinish: boolean | Partial<AWF>;
57
+ }>;
58
+ type MatchFunction = (val: string, stats?: Stats) => boolean;
59
+ interface MatcherObject {
60
+ path: string;
61
+ recursive?: boolean;
62
+ }
63
+ type Matcher = string | RegExp | MatchFunction | MatcherObject;
64
+ //#endregion
65
+ //#region node_modules/.pnpm/c12@4.0.0-beta.3_chokidar@5.0.0_dotenv@17.3.1_giget@3.1.2_jiti@2.6.1_magicast@0.5.2/node_modules/c12/dist/index.d.mts
66
+ //#region src/dotenv.d.ts
67
+ interface DotenvOptions {
68
+ /**
69
+ * The project root directory (either absolute or relative to the current working directory).
70
+ *
71
+ * Defaults to `options.cwd` in `loadConfig` context, or `process.cwd()` when used as standalone.
72
+ */
73
+ cwd?: string;
74
+ /**
75
+ * What file or files to look in for environment variables (either absolute or relative
76
+ * to the current working directory). For example, `.env`.
77
+ * With the array type, the order enforce the env loading priority (last one overrides).
78
+ */
79
+ fileName?: string | string[];
80
+ /**
81
+ * Whether to interpolate variables within .env.
82
+ *
83
+ * @example
84
+ * ```env
85
+ * BASE_DIR="/test"
86
+ * # resolves to "/test/further"
87
+ * ANOTHER_DIR="${BASE_DIR}/further"
88
+ * ```
89
+ */
90
+ interpolate?: boolean;
91
+ /**
92
+ * An object describing environment variables (key, value pairs).
93
+ */
94
+ env?: NodeJS.ProcessEnv;
95
+ /**
96
+ * Resolve `_FILE` suffixed environment variables by reading the file at the
97
+ * specified path and assigning its trimmed content to the base key.
98
+ *
99
+ * This is useful for container secrets (e.g. Docker, Kubernetes) where
100
+ * sensitive values are mounted as files.
101
+ *
102
+ * @default false
103
+ *
104
+ * @example
105
+ * ```env
106
+ * DATABASE_PASSWORD_FILE="/run/secrets/db_password"
107
+ * # resolves to DATABASE_PASSWORD=<contents of /run/secrets/db_password>
108
+ * ```
109
+ */
110
+ expandFileReferences?: boolean;
111
+ }
112
+ declare global {
113
+ var __c12_dotenv_vars__: Map<Record<string, any>, Set<string>>;
114
+ } //#endregion
115
+ //#region src/types.d.ts
116
+ interface ConfigLayerMeta {
117
+ name?: string;
118
+ [key: string]: any;
119
+ }
120
+ type UserInputConfig = Record<string, any>;
121
+ interface C12InputConfig<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> {
122
+ $test?: T;
123
+ $development?: T;
124
+ $production?: T;
125
+ $env?: Record<string, T>;
126
+ $meta?: MT;
127
+ }
128
+ interface SourceOptions<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> {
129
+ /** Custom meta for layer */
130
+ meta?: MT;
131
+ /** Layer config overrides */
132
+ overrides?: T;
133
+ [key: string]: any;
134
+ /**
135
+ * Options for cloning remote sources
136
+ *
137
+ * @see https://giget.unjs.io
138
+ */
139
+ giget?: DownloadTemplateOptions;
140
+ /**
141
+ * Install dependencies after cloning
142
+ *
143
+ * @see https://nypm.unjs.io
144
+ */
145
+ install?: boolean;
146
+ /**
147
+ * Token for cloning private sources
148
+ *
149
+ * @see https://giget.unjs.io#providing-token-for-private-repositories
150
+ */
151
+ auth?: string;
152
+ }
153
+ interface ConfigLayer<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> {
154
+ config: T | null;
155
+ source?: string;
156
+ sourceOptions?: SourceOptions<T, MT>;
157
+ meta?: MT;
158
+ cwd?: string;
159
+ configFile?: string;
160
+ }
161
+ interface ResolvedConfig<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> extends ConfigLayer<T, MT> {
162
+ config: T;
163
+ layers?: ConfigLayer<T, MT>[];
164
+ cwd?: string;
165
+ _configFile?: string;
166
+ }
167
+ type ConfigSource = "overrides" | "main" | "rc" | "packageJson" | "defaultConfig";
168
+ interface ConfigFunctionContext {
169
+ [key: string]: any;
170
+ }
171
+ interface ResolvableConfigContext<T extends UserInputConfig = UserInputConfig> {
172
+ configs: Record<ConfigSource, T | null | undefined>;
173
+ rawConfigs: Record<ConfigSource, ResolvableConfig<T> | null | undefined>;
174
+ }
175
+ type MaybePromise<T> = T | Promise<T>;
176
+ type ResolvableConfig<T extends UserInputConfig = UserInputConfig> = MaybePromise<T | null | undefined> | ((ctx: ResolvableConfigContext<T>) => MaybePromise<T | null | undefined>);
177
+ interface LoadConfigOptions<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> {
178
+ name?: string;
179
+ cwd?: string;
180
+ configFile?: string;
181
+ rcFile?: false | string;
182
+ globalRc?: boolean;
183
+ dotenv?: boolean | DotenvOptions;
184
+ envName?: string | false;
185
+ packageJson?: boolean | string | string[];
186
+ defaults?: T;
187
+ defaultConfig?: ResolvableConfig<T>;
188
+ overrides?: ResolvableConfig<T>;
189
+ omit$Keys?: boolean;
190
+ /** Context passed to config functions */
191
+ context?: ConfigFunctionContext;
192
+ resolve?: (id: string, options: LoadConfigOptions<T, MT>) => null | undefined | ResolvedConfig<T, MT> | Promise<ResolvedConfig<T, MT> | undefined | null>;
193
+ /** Custom import function used to load configuration files */
194
+ import?: (id: string) => Promise<unknown>;
195
+ /** Custom resolver for picking which export to use from the loaded module. Default: `(mod) => mod.default || mod` */
196
+ resolveModule?: (mod: any) => any;
197
+ giget?: false | DownloadTemplateOptions;
198
+ merger?: (...sources: Array<T | null | undefined>) => T;
199
+ extend?: false | {
200
+ extendKey?: string | string[];
201
+ };
202
+ configFileRequired?: boolean;
203
+ }
204
+ //#endregion
205
+ //#region src/watch.d.ts
206
+ type DiffEntries = ReturnType<typeof diff>;
207
+ type ConfigWatcher<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> = ResolvedConfig<T, MT> & {
208
+ watchingFiles: string[];
209
+ unwatch: () => Promise<void>;
210
+ };
211
+ interface WatchConfigOptions<T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta> extends LoadConfigOptions<T, MT> {
212
+ chokidarOptions?: ChokidarOptions;
213
+ debounce?: false | number;
214
+ onWatch?: (event: {
215
+ type: "created" | "updated" | "removed";
216
+ path: string;
217
+ }) => void | Promise<void>;
218
+ acceptHMR?: (context: {
219
+ getDiff: () => DiffEntries;
220
+ newConfig: ResolvedConfig<T, MT>;
221
+ oldConfig: ResolvedConfig<T, MT>;
222
+ }) => void | boolean | Promise<void | boolean>;
223
+ onUpdate?: (context: {
224
+ getDiff: () => ReturnType<typeof diff>;
225
+ newConfig: ResolvedConfig<T, MT>;
226
+ oldConfig: ResolvedConfig<T, MT>;
227
+ }) => void | Promise<void>;
228
+ }
229
+ //#endregion
230
+ export { WatchConfigOptions as a, ResolvedConfig as i, ConfigWatcher as n, ChokidarOptions as o, DotenvOptions as r, C12InputConfig as t };
@@ -0,0 +1,361 @@
1
+ import { parseArgs } from "node:util";
2
+ //#region node_modules/.pnpm/citty@0.2.1/node_modules/citty/dist/_chunks/libs/scule.mjs
3
+ const NUMBER_CHAR_RE = /\d/;
4
+ const STR_SPLITTERS = [
5
+ "-",
6
+ "_",
7
+ "/",
8
+ "."
9
+ ];
10
+ function isUppercase(char = "") {
11
+ if (NUMBER_CHAR_RE.test(char)) return;
12
+ return char !== char.toLowerCase();
13
+ }
14
+ function splitByCase(str, separators) {
15
+ const splitters = separators ?? STR_SPLITTERS;
16
+ const parts = [];
17
+ if (!str || typeof str !== "string") return parts;
18
+ let buff = "";
19
+ let previousUpper;
20
+ let previousSplitter;
21
+ for (const char of str) {
22
+ const isSplitter = splitters.includes(char);
23
+ if (isSplitter === true) {
24
+ parts.push(buff);
25
+ buff = "";
26
+ previousUpper = void 0;
27
+ continue;
28
+ }
29
+ const isUpper = isUppercase(char);
30
+ if (previousSplitter === false) {
31
+ if (previousUpper === false && isUpper === true) {
32
+ parts.push(buff);
33
+ buff = char;
34
+ previousUpper = isUpper;
35
+ continue;
36
+ }
37
+ if (previousUpper === true && isUpper === false && buff.length > 1) {
38
+ const lastChar = buff.at(-1);
39
+ parts.push(buff.slice(0, Math.max(0, buff.length - 1)));
40
+ buff = lastChar + char;
41
+ previousUpper = isUpper;
42
+ continue;
43
+ }
44
+ }
45
+ buff += char;
46
+ previousUpper = isUpper;
47
+ previousSplitter = isSplitter;
48
+ }
49
+ parts.push(buff);
50
+ return parts;
51
+ }
52
+ function upperFirst(str) {
53
+ return str ? str[0].toUpperCase() + str.slice(1) : "";
54
+ }
55
+ function lowerFirst(str) {
56
+ return str ? str[0].toLowerCase() + str.slice(1) : "";
57
+ }
58
+ function pascalCase(str, opts) {
59
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join("") : "";
60
+ }
61
+ function camelCase(str, opts) {
62
+ return lowerFirst(pascalCase(str || "", opts));
63
+ }
64
+ function kebabCase(str, joiner) {
65
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? "-") : "";
66
+ }
67
+ //#endregion
68
+ //#region node_modules/.pnpm/citty@0.2.1/node_modules/citty/dist/index.mjs
69
+ function toArray(val) {
70
+ if (Array.isArray(val)) return val;
71
+ return val === void 0 ? [] : [val];
72
+ }
73
+ function formatLineColumns(lines, linePrefix = "") {
74
+ const maxLength = [];
75
+ for (const line of lines) for (const [i, element] of line.entries()) maxLength[i] = Math.max(maxLength[i] || 0, element.length);
76
+ return lines.map((l) => l.map((c, i) => linePrefix + c[i === 0 ? "padStart" : "padEnd"](maxLength[i])).join(" ")).join("\n");
77
+ }
78
+ function resolveValue(input) {
79
+ return typeof input === "function" ? input() : input;
80
+ }
81
+ var CLIError = class extends Error {
82
+ code;
83
+ constructor(message, code) {
84
+ super(message);
85
+ this.name = "CLIError";
86
+ this.code = code;
87
+ }
88
+ };
89
+ function parseRawArgs(args = [], opts = {}) {
90
+ const booleans = new Set(opts.boolean || []);
91
+ const strings = new Set(opts.string || []);
92
+ const aliasMap = opts.alias || {};
93
+ const defaults = opts.default || {};
94
+ const aliasToMain = /* @__PURE__ */ new Map();
95
+ const mainToAliases = /* @__PURE__ */ new Map();
96
+ for (const [key, value] of Object.entries(aliasMap)) {
97
+ const targets = value;
98
+ for (const target of targets) {
99
+ aliasToMain.set(key, target);
100
+ if (!mainToAliases.has(target)) mainToAliases.set(target, []);
101
+ mainToAliases.get(target).push(key);
102
+ aliasToMain.set(target, key);
103
+ if (!mainToAliases.has(key)) mainToAliases.set(key, []);
104
+ mainToAliases.get(key).push(target);
105
+ }
106
+ }
107
+ const options = {};
108
+ function getType(name) {
109
+ if (booleans.has(name)) return "boolean";
110
+ const aliases = mainToAliases.get(name) || [];
111
+ for (const alias of aliases) if (booleans.has(alias)) return "boolean";
112
+ return "string";
113
+ }
114
+ const allOptions = new Set([
115
+ ...booleans,
116
+ ...strings,
117
+ ...Object.keys(aliasMap),
118
+ ...Object.values(aliasMap).flat(),
119
+ ...Object.keys(defaults)
120
+ ]);
121
+ for (const name of allOptions) if (!options[name]) options[name] = {
122
+ type: getType(name),
123
+ default: defaults[name]
124
+ };
125
+ for (const [alias, main] of aliasToMain.entries()) if (alias.length === 1 && options[main] && !options[main].short) options[main].short = alias;
126
+ const processedArgs = [];
127
+ const negatedFlags = {};
128
+ for (let i = 0; i < args.length; i++) {
129
+ const arg = args[i];
130
+ if (arg === "--") {
131
+ processedArgs.push(...args.slice(i));
132
+ break;
133
+ }
134
+ if (arg.startsWith("--no-")) {
135
+ const flagName = arg.slice(5);
136
+ negatedFlags[flagName] = true;
137
+ continue;
138
+ }
139
+ processedArgs.push(arg);
140
+ }
141
+ let parsed;
142
+ try {
143
+ parsed = parseArgs({
144
+ args: processedArgs,
145
+ options: Object.keys(options).length > 0 ? options : void 0,
146
+ allowPositionals: true,
147
+ strict: false
148
+ });
149
+ } catch {
150
+ parsed = {
151
+ values: {},
152
+ positionals: processedArgs
153
+ };
154
+ }
155
+ const out = { _: [] };
156
+ out._ = parsed.positionals;
157
+ for (const [key, value] of Object.entries(parsed.values)) out[key] = value;
158
+ for (const [name] of Object.entries(negatedFlags)) {
159
+ out[name] = false;
160
+ const mainName = aliasToMain.get(name);
161
+ if (mainName) out[mainName] = false;
162
+ const aliases = mainToAliases.get(name);
163
+ if (aliases) for (const alias of aliases) out[alias] = false;
164
+ }
165
+ for (const [alias, main] of aliasToMain.entries()) {
166
+ if (out[alias] !== void 0 && out[main] === void 0) out[main] = out[alias];
167
+ if (out[main] !== void 0 && out[alias] === void 0) out[alias] = out[main];
168
+ }
169
+ return out;
170
+ }
171
+ const noColor = /* @__PURE__ */ (() => {
172
+ const env = globalThis.process?.env ?? {};
173
+ return env.NO_COLOR === "1" || env.TERM === "dumb" || env.TEST || env.CI;
174
+ })();
175
+ const _c = (c, r = 39) => (t) => noColor ? t : `\u001B[${c}m${t}\u001B[${r}m`;
176
+ const bold = /* @__PURE__ */ _c(1, 22);
177
+ const cyan = /* @__PURE__ */ _c(36);
178
+ const gray = /* @__PURE__ */ _c(90);
179
+ const underline = /* @__PURE__ */ _c(4, 24);
180
+ function parseArgs$1(rawArgs, argsDef) {
181
+ const parseOptions = {
182
+ boolean: [],
183
+ string: [],
184
+ alias: {},
185
+ default: {}
186
+ };
187
+ const args = resolveArgs(argsDef);
188
+ for (const arg of args) {
189
+ if (arg.type === "positional") continue;
190
+ if (arg.type === "string" || arg.type === "enum") parseOptions.string.push(arg.name);
191
+ else if (arg.type === "boolean") parseOptions.boolean.push(arg.name);
192
+ if (arg.default !== void 0) parseOptions.default[arg.name] = arg.default;
193
+ if (arg.alias) parseOptions.alias[arg.name] = arg.alias;
194
+ const camelName = camelCase(arg.name);
195
+ const kebabName = kebabCase(arg.name);
196
+ if (camelName !== arg.name || kebabName !== arg.name) {
197
+ const existingAliases = toArray(parseOptions.alias[arg.name] || []);
198
+ if (camelName !== arg.name && !existingAliases.includes(camelName)) existingAliases.push(camelName);
199
+ if (kebabName !== arg.name && !existingAliases.includes(kebabName)) existingAliases.push(kebabName);
200
+ if (existingAliases.length > 0) parseOptions.alias[arg.name] = existingAliases;
201
+ }
202
+ }
203
+ const parsed = parseRawArgs(rawArgs, parseOptions);
204
+ const [ ...positionalArguments] = parsed._;
205
+ const parsedArgsProxy = new Proxy(parsed, { get(target, prop) {
206
+ return target[prop] ?? target[camelCase(prop)] ?? target[kebabCase(prop)];
207
+ } });
208
+ for (const [, arg] of args.entries()) if (arg.type === "positional") {
209
+ const nextPositionalArgument = positionalArguments.shift();
210
+ if (nextPositionalArgument !== void 0) parsedArgsProxy[arg.name] = nextPositionalArgument;
211
+ else if (arg.default === void 0 && arg.required !== false) throw new CLIError(`Missing required positional argument: ${arg.name.toUpperCase()}`, "EARG");
212
+ else parsedArgsProxy[arg.name] = arg.default;
213
+ } else if (arg.type === "enum") {
214
+ const argument = parsedArgsProxy[arg.name];
215
+ const options = arg.options || [];
216
+ if (argument !== void 0 && options.length > 0 && !options.includes(argument)) throw new CLIError(`Invalid value for argument: ${cyan(`--${arg.name}`)} (${cyan(argument)}). Expected one of: ${options.map((o) => cyan(o)).join(", ")}.`, "EARG");
217
+ } else if (arg.required && parsedArgsProxy[arg.name] === void 0) throw new CLIError(`Missing required argument: --${arg.name}`, "EARG");
218
+ return parsedArgsProxy;
219
+ }
220
+ function resolveArgs(argsDef) {
221
+ const args = [];
222
+ for (const [name, argDef] of Object.entries(argsDef || {})) args.push({
223
+ ...argDef,
224
+ name,
225
+ alias: toArray(argDef.alias)
226
+ });
227
+ return args;
228
+ }
229
+ function defineCommand(def) {
230
+ return def;
231
+ }
232
+ async function runCommand(cmd, opts) {
233
+ const cmdArgs = await resolveValue(cmd.args || {});
234
+ const parsedArgs = parseArgs$1(opts.rawArgs, cmdArgs);
235
+ const context = {
236
+ rawArgs: opts.rawArgs,
237
+ args: parsedArgs,
238
+ data: opts.data,
239
+ cmd
240
+ };
241
+ if (typeof cmd.setup === "function") await cmd.setup(context);
242
+ let result;
243
+ try {
244
+ const subCommands = await resolveValue(cmd.subCommands);
245
+ if (subCommands && Object.keys(subCommands).length > 0) {
246
+ const subCommandArgIndex = opts.rawArgs.findIndex((arg) => !arg.startsWith("-"));
247
+ const subCommandName = opts.rawArgs[subCommandArgIndex];
248
+ if (subCommandName) {
249
+ if (!subCommands[subCommandName]) throw new CLIError(`Unknown command ${cyan(subCommandName)}`, "E_UNKNOWN_COMMAND");
250
+ const subCommand = await resolveValue(subCommands[subCommandName]);
251
+ if (subCommand) await runCommand(subCommand, { rawArgs: opts.rawArgs.slice(subCommandArgIndex + 1) });
252
+ } else if (!cmd.run) throw new CLIError(`No command specified.`, "E_NO_COMMAND");
253
+ }
254
+ if (typeof cmd.run === "function") result = await cmd.run(context);
255
+ } finally {
256
+ if (typeof cmd.cleanup === "function") await cmd.cleanup(context);
257
+ }
258
+ return { result };
259
+ }
260
+ async function resolveSubCommand(cmd, rawArgs, parent) {
261
+ const subCommands = await resolveValue(cmd.subCommands);
262
+ if (subCommands && Object.keys(subCommands).length > 0) {
263
+ const subCommandArgIndex = rawArgs.findIndex((arg) => !arg.startsWith("-"));
264
+ const subCommandName = rawArgs[subCommandArgIndex];
265
+ const subCommand = await resolveValue(subCommands[subCommandName]);
266
+ if (subCommand) return resolveSubCommand(subCommand, rawArgs.slice(subCommandArgIndex + 1), cmd);
267
+ }
268
+ return [cmd, parent];
269
+ }
270
+ async function showUsage(cmd, parent) {
271
+ try {
272
+ console.log(await renderUsage(cmd, parent) + "\n");
273
+ } catch (error) {
274
+ console.error(error);
275
+ }
276
+ }
277
+ const negativePrefixRe = /^no[-A-Z]/;
278
+ async function renderUsage(cmd, parent) {
279
+ const cmdMeta = await resolveValue(cmd.meta || {});
280
+ const cmdArgs = resolveArgs(await resolveValue(cmd.args || {}));
281
+ const parentMeta = await resolveValue(parent?.meta || {});
282
+ const commandName = `${parentMeta.name ? `${parentMeta.name} ` : ""}` + (cmdMeta.name || process.argv[1]);
283
+ const argLines = [];
284
+ const posLines = [];
285
+ const commandsLines = [];
286
+ const usageLine = [];
287
+ for (const arg of cmdArgs) if (arg.type === "positional") {
288
+ const name = arg.name.toUpperCase();
289
+ const isRequired = arg.required !== false && arg.default === void 0;
290
+ const defaultHint = arg.default ? `="${arg.default}"` : "";
291
+ posLines.push([
292
+ cyan(name + defaultHint),
293
+ arg.description || "",
294
+ arg.valueHint ? `<${arg.valueHint}>` : ""
295
+ ]);
296
+ usageLine.push(isRequired ? `<${name}>` : `[${name}]`);
297
+ } else {
298
+ const isRequired = arg.required === true && arg.default === void 0;
299
+ const argStr = [...(arg.alias || []).map((a) => `-${a}`), `--${arg.name}`].join(", ") + (arg.type === "string" && (arg.valueHint || arg.default) ? `=${arg.valueHint ? `<${arg.valueHint}>` : `"${arg.default || ""}"`}` : "") + (arg.type === "enum" && arg.options ? `=<${arg.options.join("|")}>` : "");
300
+ argLines.push([cyan(argStr + (isRequired ? " (required)" : "")), arg.description || ""]);
301
+ if (arg.type === "boolean" && (arg.default === true || arg.negativeDescription) && !negativePrefixRe.test(arg.name)) {
302
+ const negativeArgStr = [...(arg.alias || []).map((a) => `--no-${a}`), `--no-${arg.name}`].join(", ");
303
+ argLines.push([cyan(negativeArgStr + (isRequired ? " (required)" : "")), arg.negativeDescription || ""]);
304
+ }
305
+ if (isRequired) usageLine.push(argStr);
306
+ }
307
+ if (cmd.subCommands) {
308
+ const commandNames = [];
309
+ const subCommands = await resolveValue(cmd.subCommands);
310
+ for (const [name, sub] of Object.entries(subCommands)) {
311
+ const meta = await resolveValue((await resolveValue(sub))?.meta);
312
+ if (meta?.hidden) continue;
313
+ commandsLines.push([cyan(name), meta?.description || ""]);
314
+ commandNames.push(name);
315
+ }
316
+ usageLine.push(commandNames.join("|"));
317
+ }
318
+ const usageLines = [];
319
+ const version = cmdMeta.version || parentMeta.version;
320
+ usageLines.push(gray(`${cmdMeta.description} (${commandName + (version ? ` v${version}` : "")})`), "");
321
+ const hasOptions = argLines.length > 0 || posLines.length > 0;
322
+ usageLines.push(`${underline(bold("USAGE"))} ${cyan(`${commandName}${hasOptions ? " [OPTIONS]" : ""} ${usageLine.join(" ")}`)}`, "");
323
+ if (posLines.length > 0) {
324
+ usageLines.push(underline(bold("ARGUMENTS")), "");
325
+ usageLines.push(formatLineColumns(posLines, " "));
326
+ usageLines.push("");
327
+ }
328
+ if (argLines.length > 0) {
329
+ usageLines.push(underline(bold("OPTIONS")), "");
330
+ usageLines.push(formatLineColumns(argLines, " "));
331
+ usageLines.push("");
332
+ }
333
+ if (commandsLines.length > 0) {
334
+ usageLines.push(underline(bold("COMMANDS")), "");
335
+ usageLines.push(formatLineColumns(commandsLines, " "));
336
+ usageLines.push("", `Use ${cyan(`${commandName} <command> --help`)} for more information about a command.`);
337
+ }
338
+ return usageLines.filter((l) => typeof l === "string").join("\n");
339
+ }
340
+ async function runMain(cmd, opts = {}) {
341
+ const rawArgs = opts.rawArgs || process.argv.slice(2);
342
+ const showUsage$1 = opts.showUsage || showUsage;
343
+ try {
344
+ if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
345
+ await showUsage$1(...await resolveSubCommand(cmd, rawArgs));
346
+ process.exit(0);
347
+ } else if (rawArgs.length === 1 && rawArgs[0] === "--version") {
348
+ const meta = typeof cmd.meta === "function" ? await cmd.meta() : await cmd.meta;
349
+ if (!meta?.version) throw new CLIError("No version specified", "E_NO_VERSION");
350
+ console.log(meta.version);
351
+ } else await runCommand(cmd, { rawArgs });
352
+ } catch (error) {
353
+ if (error instanceof CLIError) {
354
+ await showUsage$1(...await resolveSubCommand(cmd, rawArgs));
355
+ console.error(error.message);
356
+ } else console.error(error, "\n");
357
+ process.exit(1);
358
+ }
359
+ }
360
+ //#endregion
361
+ export { runMain as n, defineCommand as t };