nitro 3.0.1-alpha.0 → 3.0.1-alpha.2

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 (316) hide show
  1. package/README.md +2 -0
  2. package/dist/_build/common.mjs +24940 -0
  3. package/dist/_build/rolldown.mjs +172 -0
  4. package/dist/_build/rollup.mjs +201 -0
  5. package/dist/_build/vite.build.mjs +16 -0
  6. package/dist/_chunks/dev.mjs +707 -0
  7. package/dist/_chunks/nitro.mjs +1191 -0
  8. package/dist/_chunks/nitro2.mjs +101 -0
  9. package/dist/_chunks/utils.mjs +254 -0
  10. package/dist/_common.mjs +45 -0
  11. package/dist/_dev.d.mts +12 -0
  12. package/dist/_libs/c12+giget+readdirp+chokidar.d.mts +214 -0
  13. package/dist/_libs/citty.mjs +363 -0
  14. package/dist/_libs/commondir+is-reference.mjs +1300 -0
  15. package/dist/_libs/compatx.d.mts +47 -0
  16. package/dist/_libs/compatx.mjs +46 -0
  17. package/dist/_libs/confbox.mjs +2509 -0
  18. package/dist/_libs/esbuild.d.mts +20 -0
  19. package/dist/_libs/escape-string-regexp.mjs +8 -0
  20. package/dist/_libs/estree-walker.mjs +187 -0
  21. package/dist/_libs/hasown+resolve+deepmerge.mjs +1972 -0
  22. package/dist/_libs/httpxy.d.mts +79 -0
  23. package/dist/_libs/httpxy.mjs +415 -0
  24. package/dist/_libs/klona.mjs +38 -0
  25. package/dist/_libs/magic-string.d.mts +220 -0
  26. package/dist/_libs/mlly.d.mts +57 -0
  27. package/dist/_libs/nypm+giget+tinyexec.mjs +3603 -0
  28. package/dist/_libs/pkg-types.d.mts +23 -0
  29. package/dist/_libs/plugin-alias.mjs +66 -0
  30. package/dist/_libs/plugin-inject.mjs +135 -0
  31. package/dist/_libs/plugin-json.mjs +36 -0
  32. package/dist/_libs/pluginutils+plugin-commonjs.d.mts +241 -0
  33. package/dist/_libs/pluginutils.mjs +652 -0
  34. package/dist/_libs/rc9+c12+dotenv.mjs +972 -0
  35. package/dist/_libs/readdirp+chokidar.mjs +1611 -0
  36. package/dist/_libs/remapping.mjs +117 -0
  37. package/dist/_libs/resolve-uri+gen-mapping.mjs +448 -0
  38. package/dist/_libs/rou3.d.mts +43 -0
  39. package/dist/_libs/rou3.mjs +322 -0
  40. package/dist/_libs/std-env.d.mts +4 -0
  41. package/dist/_libs/tsconfck.mjs +832 -0
  42. package/dist/_libs/ultrahtml.mjs +138 -0
  43. package/dist/_libs/unimport+unplugin.mjs +1785 -0
  44. package/dist/_libs/unplugin+unimport.d.mts +426 -0
  45. package/dist/_libs/unwasm.d.mts +29 -0
  46. package/dist/_presets.mjs +1802 -0
  47. package/dist/builder.d.mts +63 -0
  48. package/dist/builder.mjs +9 -0
  49. package/dist/cli/_chunks/build.mjs +48 -0
  50. package/dist/cli/_chunks/common.mjs +15 -0
  51. package/dist/cli/_chunks/dev.mjs +62 -0
  52. package/dist/cli/_chunks/list.mjs +27 -0
  53. package/dist/cli/_chunks/prepare.mjs +19 -0
  54. package/dist/cli/_chunks/run.mjs +55 -0
  55. package/dist/cli/_chunks/task.mjs +16 -0
  56. package/dist/cli/index.d.mts +1 -1
  57. package/dist/cli/index.mjs +20 -476
  58. package/dist/node_modules/@poppinss/colors/build/index.js +130 -160
  59. package/dist/node_modules/@poppinss/colors/package.json +20 -18
  60. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  61. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  62. package/dist/node_modules/@poppinss/exception/build/index.js +36 -55
  63. package/dist/node_modules/@poppinss/exception/package.json +19 -16
  64. package/dist/node_modules/@sindresorhus/is/distribution/index.js +47 -6
  65. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  66. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  67. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  68. package/dist/node_modules/@speed-highlight/core/package.json +8 -4
  69. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  70. package/dist/node_modules/cookie-es/package.json +37 -0
  71. package/dist/node_modules/hookable/dist/index.mjs +244 -268
  72. package/dist/node_modules/hookable/package.json +29 -26
  73. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  74. package/dist/node_modules/rendu/package.json +47 -0
  75. package/dist/node_modules/ufo/dist/index.mjs +16 -9
  76. package/dist/node_modules/ufo/package.json +15 -14
  77. package/dist/node_modules/unctx/package.json +16 -16
  78. package/dist/node_modules/youch/build/{chunk-4XB2BYKC.js → chunk-7QV3D5YX.js} +2 -4
  79. package/dist/node_modules/youch/build/{chunk-PUHGL6HA.js → chunk-AUGPHE32.js} +2 -4
  80. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-CM7DWJNZ.js} +4 -5
  81. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-EJH674NB.js} +6 -5
  82. package/dist/node_modules/youch/build/{chunk-EUJBVOYB.js → chunk-OIJ3WD7L.js} +2 -4
  83. package/dist/node_modules/youch/build/{chunk-HFSXRSKS.js → chunk-P36L72PL.js} +5 -3
  84. package/dist/node_modules/youch/build/{chunk-4YEN7HVQ.js → chunk-PE3GG3TN.js} +5 -1
  85. package/dist/node_modules/youch/build/{chunk-PINJDICN.js → chunk-X53OIOJH.js} +2 -4
  86. package/dist/node_modules/youch/build/index.js +22 -15
  87. package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
  88. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  89. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  90. package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
  91. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  92. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  93. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  94. package/dist/node_modules/youch/package.json +16 -17
  95. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +2 -1
  96. package/dist/presets/_nitro/runtime/nitro-dev.mjs +47 -42
  97. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +3 -3
  98. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +11 -15
  99. package/dist/presets/_nitro/runtime/service-worker.d.mts +2 -1
  100. package/dist/presets/_nitro/runtime/service-worker.mjs +17 -14
  101. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +2 -1
  102. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +8 -7
  103. package/dist/presets/aws-lambda/runtime/_utils.d.mts +3 -13
  104. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  105. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +2 -3
  106. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -29
  107. package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +1 -1
  108. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +9 -9
  109. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  110. package/dist/presets/azure/runtime/azure-swa.d.mts +3 -3
  111. package/dist/presets/azure/runtime/azure-swa.mjs +25 -23
  112. package/dist/presets/bun/runtime/bun.d.mts +3 -1
  113. package/dist/presets/bun/runtime/bun.mjs +34 -22
  114. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +12 -9
  115. package/dist/presets/cloudflare/runtime/_module-handler.mjs +84 -90
  116. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +7 -15
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +62 -64
  118. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +2 -8
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +15 -18
  120. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +13 -13
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -43
  122. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  123. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  124. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +5 -1
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -13
  127. package/dist/presets/deno/runtime/deno-server.d.mts +1 -4
  128. package/dist/presets/deno/runtime/deno-server.mjs +32 -53
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -2
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +18 -14
  131. package/dist/presets/netlify/runtime/netlify.d.mts +3 -2
  132. package/dist/presets/netlify/runtime/netlify.mjs +15 -19
  133. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  134. package/dist/presets/node/runtime/node-cluster.mjs +49 -54
  135. package/dist/presets/node/runtime/node-middleware.d.mts +3 -4
  136. package/dist/presets/node/runtime/node-middleware.mjs +9 -9
  137. package/dist/presets/node/runtime/node-server.d.mts +1 -1
  138. package/dist/presets/node/runtime/node-server.mjs +36 -34
  139. package/dist/presets/standard/runtime/server.d.mts +2 -4
  140. package/dist/presets/standard/runtime/server.mjs +3 -5
  141. package/dist/presets/stormkit/runtime/stormkit.d.mts +14 -14
  142. package/dist/presets/stormkit/runtime/stormkit.mjs +22 -22
  143. package/dist/presets/vercel/runtime/isr.d.mts +2 -0
  144. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  145. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  146. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  147. package/dist/presets/vercel/runtime/vercel.web.d.mts +8 -0
  148. package/dist/presets/vercel/runtime/vercel.web.mjs +25 -0
  149. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -1
  150. package/dist/presets/winterjs/runtime/winterjs.mjs +74 -70
  151. package/dist/presets/zeabur/runtime/zeabur.d.mts +2 -2
  152. package/dist/presets/zeabur/runtime/zeabur.mjs +2 -2
  153. package/dist/runtime/app.d.mts +1 -0
  154. package/dist/runtime/app.mjs +1 -0
  155. package/dist/runtime/cache.d.mts +1 -0
  156. package/dist/runtime/cache.mjs +1 -0
  157. package/dist/runtime/config.d.mts +3 -0
  158. package/dist/runtime/config.mjs +4 -0
  159. package/dist/runtime/context.d.mts +1 -0
  160. package/dist/runtime/context.mjs +1 -0
  161. package/dist/runtime/database.d.mts +1 -0
  162. package/dist/runtime/database.mjs +1 -0
  163. package/dist/runtime/internal/app.d.mts +15 -1
  164. package/dist/runtime/internal/app.mjs +199 -144
  165. package/dist/runtime/internal/cache.d.mts +9 -5
  166. package/dist/runtime/internal/cache.mjs +248 -219
  167. package/dist/runtime/internal/context.d.mts +9 -9
  168. package/dist/runtime/internal/context.mjs +17 -10
  169. package/dist/runtime/internal/database.mjs +9 -11
  170. package/dist/runtime/internal/error/dev.d.mts +4 -4
  171. package/dist/runtime/internal/error/dev.mjs +106 -105
  172. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  173. package/dist/runtime/internal/error/hooks.mjs +9 -0
  174. package/dist/runtime/internal/error/prod.d.mts +5 -4
  175. package/dist/runtime/internal/error/prod.mjs +51 -59
  176. package/dist/runtime/internal/error/utils.d.mts +4 -4
  177. package/dist/runtime/internal/error/utils.mjs +1 -1
  178. package/dist/runtime/internal/meta.d.mts +1 -1
  179. package/dist/runtime/internal/meta.mjs +1 -1
  180. package/dist/runtime/internal/plugin.d.mts +2 -2
  181. package/dist/runtime/internal/plugin.mjs +1 -1
  182. package/dist/runtime/internal/route-rules.d.mts +4 -8
  183. package/dist/runtime/internal/route-rules.mjs +54 -52
  184. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  185. package/dist/runtime/internal/routes/dev-tasks.mjs +17 -19
  186. package/dist/runtime/internal/routes/openapi.mjs +82 -88
  187. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  188. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  189. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  190. package/dist/runtime/internal/routes/renderer-template.mjs +2 -2
  191. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  192. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  193. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  194. package/dist/runtime/internal/runtime-config.mjs +44 -39
  195. package/dist/runtime/internal/static.mjs +63 -74
  196. package/dist/runtime/internal/storage.mjs +3 -3
  197. package/dist/runtime/internal/task.d.mts +6 -6
  198. package/dist/runtime/internal/task.mjs +57 -61
  199. package/dist/runtime/internal/vite/dev-entry.mjs +11 -2
  200. package/dist/runtime/internal/vite/{dev-worker.mjs → node-runner.mjs} +54 -57
  201. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  202. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +2 -2
  203. package/dist/runtime/meta.mjs +26 -0
  204. package/dist/runtime/nitro.d.mts +9 -0
  205. package/dist/runtime/nitro.mjs +32 -0
  206. package/dist/runtime/runtime-config.d.mts +1 -0
  207. package/dist/runtime/runtime-config.mjs +1 -0
  208. package/dist/runtime/storage.d.mts +1 -0
  209. package/dist/runtime/storage.mjs +1 -0
  210. package/dist/runtime/task.d.mts +1 -0
  211. package/dist/runtime/task.mjs +1 -0
  212. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  213. package/dist/runtime/virtual/database.d.mts +8 -0
  214. package/dist/runtime/virtual/database.mjs +2 -0
  215. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  216. package/dist/runtime/virtual/error-handler.mjs +9 -0
  217. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  218. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  219. package/dist/runtime/virtual/plugins.d.mts +3 -0
  220. package/dist/runtime/virtual/plugins.mjs +2 -0
  221. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  222. package/dist/runtime/virtual/polyfills.mjs +2 -0
  223. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  224. package/dist/runtime/virtual/public-assets.mjs +8 -0
  225. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  226. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  227. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  228. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  229. package/dist/runtime/virtual/routing.d.mts +8 -0
  230. package/dist/runtime/virtual/routing.mjs +11 -0
  231. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  232. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  233. package/dist/runtime/virtual/server-assets.d.mts +6 -0
  234. package/dist/runtime/virtual/server-assets.mjs +12 -0
  235. package/dist/runtime/virtual/storage.d.mts +3 -0
  236. package/dist/runtime/virtual/storage.mjs +5 -0
  237. package/dist/runtime/virtual/tasks.d.mts +10 -0
  238. package/dist/runtime/virtual/tasks.mjs +3 -0
  239. package/dist/runtime/vite.d.mts +8 -0
  240. package/dist/runtime/vite.mjs +9 -0
  241. package/dist/types/index.d.mts +2561 -2312
  242. package/dist/types/index.mjs +10 -0
  243. package/dist/vite.d.mts +44 -51
  244. package/dist/vite.mjs +737 -68
  245. package/lib/tsconfig.json +27 -0
  246. package/lib/vite.types.d.mts +26 -0
  247. package/lib/vite.types.mjs +2 -0
  248. package/package.json +118 -101
  249. package/dist/_chunks/app.mjs +0 -19797
  250. package/dist/_chunks/build.mjs +0 -84
  251. package/dist/_chunks/build2.mjs +0 -318
  252. package/dist/_chunks/build3.mjs +0 -6452
  253. package/dist/_chunks/detect-acorn.mjs +0 -503
  254. package/dist/_chunks/index.mjs +0 -22242
  255. package/dist/_chunks/index2.mjs +0 -297
  256. package/dist/_chunks/index3.mjs +0 -1058
  257. package/dist/_chunks/index4.mjs +0 -1206
  258. package/dist/_chunks/info.mjs +0 -11157
  259. package/dist/_chunks/json5.mjs +0 -68
  260. package/dist/_chunks/jsonc.mjs +0 -51
  261. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  262. package/dist/_chunks/plugin.mjs +0 -960
  263. package/dist/_chunks/server.mjs +0 -254
  264. package/dist/_chunks/snapshot.mjs +0 -284
  265. package/dist/_chunks/toml.mjs +0 -259
  266. package/dist/_chunks/yaml.mjs +0 -86
  267. package/dist/cli/build.mjs +0 -54
  268. package/dist/cli/common.mjs +0 -13
  269. package/dist/cli/dev.mjs +0 -95
  270. package/dist/cli/index2.mjs +0 -17
  271. package/dist/cli/list.mjs +0 -34
  272. package/dist/cli/prepare.mjs +0 -24
  273. package/dist/cli/run.mjs +0 -60
  274. package/dist/index.d.mts +0 -52
  275. package/dist/index.mjs +0 -55
  276. package/dist/node_modules/cookie/dist/index.js +0 -239
  277. package/dist/node_modules/cookie/package.json +0 -42
  278. package/dist/node_modules/kleur/index.js +0 -110
  279. package/dist/node_modules/klona/dist/index.mjs +0 -81
  280. package/dist/node_modules/klona/full/index.mjs +0 -53
  281. package/dist/node_modules/klona/package.json +0 -74
  282. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  283. package/dist/node_modules/std-env/package.json +0 -46
  284. package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
  285. package/dist/presets/vercel/runtime/vercel.d.mts +0 -8
  286. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  287. package/dist/presets.mjs +0 -2460
  288. package/dist/runtime/index.d.mts +0 -11
  289. package/dist/runtime/index.mjs +0 -17
  290. package/dist/runtime/internal/debug.d.mts +0 -2
  291. package/dist/runtime/internal/debug.mjs +0 -5
  292. package/dist/runtime/internal/empty.d.mts +0 -0
  293. package/dist/runtime/internal/index.d.mts +0 -3
  294. package/dist/runtime/internal/index.mjs +0 -3
  295. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  296. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  297. package/dist/runtime/internal/renderer.d.mts +0 -3
  298. package/dist/runtime/internal/renderer.mjs +0 -36
  299. package/dist/runtime/internal/shutdown.d.mts +0 -9
  300. package/dist/runtime/internal/shutdown.mjs +0 -34
  301. package/dist/runtime/internal/utils.d.mts +0 -1
  302. package/dist/runtime/internal/utils.mjs +0 -15
  303. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  304. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  305. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  306. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  307. package/lib/config.d.mts +0 -9
  308. package/lib/config.mjs +0 -5
  309. package/lib/deps/ofetch.mjs +0 -1
  310. package/lib/deps/ofetch.mts +0 -1
  311. package/lib/meta.d.mts +0 -5
  312. package/lib/meta.mjs +0 -21
  313. package/lib/runtime-meta.mjs +0 -38
  314. /package/dist/runtime/{internal/vite/dev-worker.d.mts → virtual/_runtime_warn.d.mts} +0 -0
  315. /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
  316. /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
@@ -1,503 +0,0 @@
1
- import { g as getMagicString, p as parse } from './index.mjs';
2
- import 'node:path';
3
- import 'node:process';
4
- import 'scule';
5
- import 'consola';
6
- import 'hookable';
7
- import 'nitro/runtime/meta';
8
- import 'node:fs';
9
- import 'node:fs/promises';
10
- import 'node:url';
11
- import 'node:os';
12
- import 'node:assert';
13
- import 'node:v8';
14
- import 'node:util';
15
- import 'jiti';
16
- import 'destr';
17
- import 'defu';
18
- import './pathe.M-eThtNZ.mjs';
19
- import 'fs';
20
- import 'path';
21
- import 'os';
22
- import 'crypto';
23
- import './app.mjs';
24
- import 'node:worker_threads';
25
- import 'std-env';
26
- import 'fs/promises';
27
- import 'events';
28
- import 'node:stream';
29
- import 'h3';
30
- import 'url';
31
- import 'tty';
32
- import 'util';
33
- import 'stream';
34
- import 'ufo';
35
- import 'node:http';
36
- import 'node:https';
37
- import 'node:events';
38
- import 'undici';
39
- import 'youch-core';
40
- import 'youch';
41
- import 'source-map';
42
- import 'srvx';
43
- import 'klona/full';
44
- import 'node:module';
45
- import 'ofetch';
46
- import 'klona';
47
- import 'unstorage';
48
- import 'ohash';
49
- import 'module';
50
- import 'consola/utils';
51
- import 'node:zlib';
52
-
53
- /**
54
- * @typedef { import('estree').Node} Node
55
- * @typedef {{
56
- * skip: () => void;
57
- * remove: () => void;
58
- * replace: (node: Node) => void;
59
- * }} WalkerContext
60
- */
61
-
62
- class WalkerBase {
63
- constructor() {
64
- /** @type {boolean} */
65
- this.should_skip = false;
66
-
67
- /** @type {boolean} */
68
- this.should_remove = false;
69
-
70
- /** @type {Node | null} */
71
- this.replacement = null;
72
-
73
- /** @type {WalkerContext} */
74
- this.context = {
75
- skip: () => (this.should_skip = true),
76
- remove: () => (this.should_remove = true),
77
- replace: (node) => (this.replacement = node)
78
- };
79
- }
80
-
81
- /**
82
- * @template {Node} Parent
83
- * @param {Parent | null | undefined} parent
84
- * @param {keyof Parent | null | undefined} prop
85
- * @param {number | null | undefined} index
86
- * @param {Node} node
87
- */
88
- replace(parent, prop, index, node) {
89
- if (parent && prop) {
90
- if (index != null) {
91
- /** @type {Array<Node>} */ (parent[prop])[index] = node;
92
- } else {
93
- /** @type {Node} */ (parent[prop]) = node;
94
- }
95
- }
96
- }
97
-
98
- /**
99
- * @template {Node} Parent
100
- * @param {Parent | null | undefined} parent
101
- * @param {keyof Parent | null | undefined} prop
102
- * @param {number | null | undefined} index
103
- */
104
- remove(parent, prop, index) {
105
- if (parent && prop) {
106
- if (index !== null && index !== undefined) {
107
- /** @type {Array<Node>} */ (parent[prop]).splice(index, 1);
108
- } else {
109
- delete parent[prop];
110
- }
111
- }
112
- }
113
- }
114
-
115
- /**
116
- * @typedef { import('estree').Node} Node
117
- * @typedef { import('./walker.js').WalkerContext} WalkerContext
118
- * @typedef {(
119
- * this: WalkerContext,
120
- * node: Node,
121
- * parent: Node | null,
122
- * key: string | number | symbol | null | undefined,
123
- * index: number | null | undefined
124
- * ) => void} SyncHandler
125
- */
126
-
127
- class SyncWalker extends WalkerBase {
128
- /**
129
- *
130
- * @param {SyncHandler} [enter]
131
- * @param {SyncHandler} [leave]
132
- */
133
- constructor(enter, leave) {
134
- super();
135
-
136
- /** @type {boolean} */
137
- this.should_skip = false;
138
-
139
- /** @type {boolean} */
140
- this.should_remove = false;
141
-
142
- /** @type {Node | null} */
143
- this.replacement = null;
144
-
145
- /** @type {WalkerContext} */
146
- this.context = {
147
- skip: () => (this.should_skip = true),
148
- remove: () => (this.should_remove = true),
149
- replace: (node) => (this.replacement = node)
150
- };
151
-
152
- /** @type {SyncHandler | undefined} */
153
- this.enter = enter;
154
-
155
- /** @type {SyncHandler | undefined} */
156
- this.leave = leave;
157
- }
158
-
159
- /**
160
- * @template {Node} Parent
161
- * @param {Node} node
162
- * @param {Parent | null} parent
163
- * @param {keyof Parent} [prop]
164
- * @param {number | null} [index]
165
- * @returns {Node | null}
166
- */
167
- visit(node, parent, prop, index) {
168
- if (node) {
169
- if (this.enter) {
170
- const _should_skip = this.should_skip;
171
- const _should_remove = this.should_remove;
172
- const _replacement = this.replacement;
173
- this.should_skip = false;
174
- this.should_remove = false;
175
- this.replacement = null;
176
-
177
- this.enter.call(this.context, node, parent, prop, index);
178
-
179
- if (this.replacement) {
180
- node = this.replacement;
181
- this.replace(parent, prop, index, node);
182
- }
183
-
184
- if (this.should_remove) {
185
- this.remove(parent, prop, index);
186
- }
187
-
188
- const skipped = this.should_skip;
189
- const removed = this.should_remove;
190
-
191
- this.should_skip = _should_skip;
192
- this.should_remove = _should_remove;
193
- this.replacement = _replacement;
194
-
195
- if (skipped) return node;
196
- if (removed) return null;
197
- }
198
-
199
- /** @type {keyof Node} */
200
- let key;
201
-
202
- for (key in node) {
203
- /** @type {unknown} */
204
- const value = node[key];
205
-
206
- if (value && typeof value === 'object') {
207
- if (Array.isArray(value)) {
208
- const nodes = /** @type {Array<unknown>} */ (value);
209
- for (let i = 0; i < nodes.length; i += 1) {
210
- const item = nodes[i];
211
- if (isNode(item)) {
212
- if (!this.visit(item, node, key, i)) {
213
- // removed
214
- i--;
215
- }
216
- }
217
- }
218
- } else if (isNode(value)) {
219
- this.visit(value, node, key, null);
220
- }
221
- }
222
- }
223
-
224
- if (this.leave) {
225
- const _replacement = this.replacement;
226
- const _should_remove = this.should_remove;
227
- this.replacement = null;
228
- this.should_remove = false;
229
-
230
- this.leave.call(this.context, node, parent, prop, index);
231
-
232
- if (this.replacement) {
233
- node = this.replacement;
234
- this.replace(parent, prop, index, node);
235
- }
236
-
237
- if (this.should_remove) {
238
- this.remove(parent, prop, index);
239
- }
240
-
241
- const removed = this.should_remove;
242
-
243
- this.replacement = _replacement;
244
- this.should_remove = _should_remove;
245
-
246
- if (removed) return null;
247
- }
248
- }
249
-
250
- return node;
251
- }
252
- }
253
-
254
- /**
255
- * Ducktype a node.
256
- *
257
- * @param {unknown} value
258
- * @returns {value is Node}
259
- */
260
- function isNode(value) {
261
- return (
262
- value !== null && typeof value === 'object' && 'type' in value && typeof value.type === 'string'
263
- );
264
- }
265
-
266
- /**
267
- * @typedef {import('estree').Node} Node
268
- * @typedef {import('./sync.js').SyncHandler} SyncHandler
269
- * @typedef {import('./async.js').AsyncHandler} AsyncHandler
270
- */
271
-
272
- /**
273
- * @param {Node} ast
274
- * @param {{
275
- * enter?: SyncHandler
276
- * leave?: SyncHandler
277
- * }} walker
278
- * @returns {Node | null}
279
- */
280
- function walk(ast, { enter, leave }) {
281
- const instance = new SyncWalker(enter, leave);
282
- return instance.visit(ast, null);
283
- }
284
-
285
- async function detectImportsAcorn(code, ctx, options) {
286
- const s = getMagicString(code);
287
- const map = await ctx.getImportMap();
288
- let matchedImports = [];
289
- const enableAutoImport = options?.autoImport !== false;
290
- const enableTransformVirtualImports = options?.transformVirtualImports !== false && ctx.options.virtualImports?.length;
291
- if (enableAutoImport || enableTransformVirtualImports) {
292
- const ast = parse(s.original, {
293
- sourceType: "module",
294
- ecmaVersion: "latest",
295
- locations: true
296
- });
297
- const virtualImports = createVirtualImportsAcronWalker(map, ctx.options.virtualImports);
298
- const scopes = traveseScopes(
299
- ast,
300
- enableTransformVirtualImports ? virtualImports.walk : {}
301
- );
302
- if (enableAutoImport) {
303
- const identifiers = scopes.unmatched;
304
- matchedImports.push(
305
- ...Array.from(identifiers).map((name) => {
306
- const item = map.get(name);
307
- if (item && !item.disabled)
308
- return item;
309
- return null;
310
- }).filter(Boolean)
311
- );
312
- for (const addon of ctx.addons)
313
- matchedImports = await addon.matchImports?.call(ctx, identifiers, matchedImports) || matchedImports;
314
- }
315
- virtualImports.ranges.forEach(([start, end]) => {
316
- s.remove(start, end);
317
- });
318
- matchedImports.push(...virtualImports.imports);
319
- }
320
- return {
321
- s,
322
- strippedCode: code.toString(),
323
- matchedImports,
324
- isCJSContext: false,
325
- firstOccurrence: 0
326
- // TODO:
327
- };
328
- }
329
- function traveseScopes(ast, additionalWalk) {
330
- const scopes = [];
331
- let scopeCurrent = void 0;
332
- const scopesStack = [];
333
- function pushScope(node) {
334
- scopeCurrent = {
335
- node,
336
- parent: scopeCurrent,
337
- declarations: /* @__PURE__ */ new Set(),
338
- references: /* @__PURE__ */ new Set()
339
- };
340
- scopes.push(scopeCurrent);
341
- scopesStack.push(scopeCurrent);
342
- }
343
- function popScope(node) {
344
- const scope = scopesStack.pop();
345
- if (scope?.node !== node)
346
- throw new Error("Scope mismatch");
347
- scopeCurrent = scopesStack[scopesStack.length - 1];
348
- }
349
- pushScope(void 0);
350
- walk(ast, {
351
- enter(node, parent, prop, index) {
352
- additionalWalk?.enter?.call(this, node, parent, prop, index);
353
- switch (node.type) {
354
- // ====== Declaration ======
355
- case "ImportSpecifier":
356
- case "ImportDefaultSpecifier":
357
- case "ImportNamespaceSpecifier":
358
- scopeCurrent.declarations.add(node.local.name);
359
- return;
360
- case "FunctionDeclaration":
361
- case "ClassDeclaration":
362
- if (node.id)
363
- scopeCurrent.declarations.add(node.id.name);
364
- return;
365
- case "VariableDeclarator":
366
- if (node.id.type === "Identifier") {
367
- scopeCurrent.declarations.add(node.id.name);
368
- } else {
369
- walk(node.id, {
370
- enter(node2) {
371
- if (node2.type === "ObjectPattern") {
372
- node2.properties.forEach((i) => {
373
- if (i.type === "Property" && i.value.type === "Identifier")
374
- scopeCurrent.declarations.add(i.value.name);
375
- else if (i.type === "RestElement" && i.argument.type === "Identifier")
376
- scopeCurrent.declarations.add(i.argument.name);
377
- });
378
- } else if (node2.type === "ArrayPattern") {
379
- node2.elements.forEach((i) => {
380
- if (i?.type === "Identifier")
381
- scopeCurrent.declarations.add(i.name);
382
- if (i?.type === "RestElement" && i.argument.type === "Identifier")
383
- scopeCurrent.declarations.add(i.argument.name);
384
- });
385
- }
386
- }
387
- });
388
- }
389
- return;
390
- // ====== Scope ======
391
- case "BlockStatement":
392
- pushScope(node);
393
- return;
394
- // ====== Reference ======
395
- case "Identifier":
396
- switch (parent?.type) {
397
- case "CallExpression":
398
- if (parent.callee === node || parent.arguments.includes(node))
399
- scopeCurrent.references.add(node.name);
400
- return;
401
- case "MemberExpression":
402
- if (parent.object === node)
403
- scopeCurrent.references.add(node.name);
404
- return;
405
- case "VariableDeclarator":
406
- if (parent.init === node)
407
- scopeCurrent.references.add(node.name);
408
- return;
409
- case "SpreadElement":
410
- if (parent.argument === node)
411
- scopeCurrent.references.add(node.name);
412
- return;
413
- case "ClassDeclaration":
414
- if (parent.superClass === node)
415
- scopeCurrent.references.add(node.name);
416
- return;
417
- case "Property":
418
- if (parent.value === node)
419
- scopeCurrent.references.add(node.name);
420
- return;
421
- case "TemplateLiteral":
422
- if (parent.expressions.includes(node))
423
- scopeCurrent.references.add(node.name);
424
- return;
425
- case "AssignmentExpression":
426
- if (parent.right === node)
427
- scopeCurrent.references.add(node.name);
428
- return;
429
- case "IfStatement":
430
- case "WhileStatement":
431
- case "DoWhileStatement":
432
- if (parent.test === node)
433
- scopeCurrent.references.add(node.name);
434
- return;
435
- case "SwitchStatement":
436
- if (parent.discriminant === node)
437
- scopeCurrent.references.add(node.name);
438
- return;
439
- }
440
- if (parent?.type.includes("Expression"))
441
- scopeCurrent.references.add(node.name);
442
- }
443
- },
444
- leave(node, parent, prop, index) {
445
- additionalWalk?.leave?.call(this, node, parent, prop, index);
446
- switch (node.type) {
447
- case "BlockStatement":
448
- popScope(node);
449
- }
450
- }
451
- });
452
- const unmatched = /* @__PURE__ */ new Set();
453
- for (const scope of scopes) {
454
- for (const name of scope.references) {
455
- let defined = false;
456
- let parent = scope;
457
- while (parent) {
458
- if (parent.declarations.has(name)) {
459
- defined = true;
460
- break;
461
- }
462
- parent = parent?.parent;
463
- }
464
- if (!defined)
465
- unmatched.add(name);
466
- }
467
- }
468
- return {
469
- unmatched,
470
- scopes
471
- };
472
- }
473
- function createVirtualImportsAcronWalker(importMap, virtualImports = []) {
474
- const imports = [];
475
- const ranges = [];
476
- return {
477
- imports,
478
- ranges,
479
- walk: {
480
- enter(node) {
481
- if (node.type === "ImportDeclaration") {
482
- if (virtualImports.includes(node.source.value)) {
483
- ranges.push([node.start, node.end]);
484
- node.specifiers.forEach((i) => {
485
- if (i.type === "ImportSpecifier" && i.imported.type === "Identifier") {
486
- const original = importMap.get(i.imported.name);
487
- if (!original)
488
- throw new Error(`[unimport] failed to find "${i.imported.name}" imported from "${node.source.value}"`);
489
- imports.push({
490
- from: original.from,
491
- name: original.name,
492
- as: i.local.name
493
- });
494
- }
495
- });
496
- }
497
- }
498
- }
499
- }
500
- };
501
- }
502
-
503
- export { createVirtualImportsAcronWalker, detectImportsAcorn, traveseScopes };