nitro 3.0.0 → 3.0.1-alpha.1

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 (293) hide show
  1. package/dist/_build/common.mjs +68 -0
  2. package/dist/_build/common2.mjs +772 -0
  3. package/dist/_build/rolldown.mjs +206 -0
  4. package/dist/_build/rollup.mjs +289 -0
  5. package/dist/_build/vite.build.mjs +56 -0
  6. package/dist/_build/vite.plugin.mjs +768 -0
  7. package/dist/_chunks/ANM1K1bE.mjs +304 -0
  8. package/dist/_chunks/B-D1JOIz.mjs +1355 -0
  9. package/dist/_chunks/BX9-zVkM.mjs +59 -0
  10. package/dist/_chunks/Bqks5huO.mjs +31 -0
  11. package/dist/_chunks/C7CbzoI1.mjs +39 -0
  12. package/dist/_dev.d.mts +12 -0
  13. package/dist/_dev.mjs +705 -0
  14. package/dist/_libs/acorn.mjs +5034 -0
  15. package/dist/_libs/c12.mjs +2858 -0
  16. package/dist/_libs/chokidar.mjs +1561 -0
  17. package/dist/_libs/citty.mjs +333 -0
  18. package/dist/_libs/commondir.mjs +22 -0
  19. package/dist/_libs/compatx.mjs +46 -0
  20. package/dist/_libs/confbox.mjs +2920 -0
  21. package/dist/_libs/deepmerge.mjs +86 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/escape-string-regexp.mjs +8 -0
  25. package/dist/_libs/estree-walker.mjs +330 -0
  26. package/dist/_libs/etag.mjs +80 -0
  27. package/dist/_libs/fdir.mjs +514 -0
  28. package/dist/_libs/function-bind.mjs +63 -0
  29. package/dist/_libs/gen-mapping.mjs +612 -0
  30. package/dist/_libs/giget.mjs +19289 -0
  31. package/dist/_libs/gzip-size.mjs +21 -0
  32. package/dist/_libs/hasown.mjs +14 -0
  33. package/dist/_libs/httpxy.mjs +410 -0
  34. package/dist/_libs/is-core-module.mjs +220 -0
  35. package/dist/_libs/is-module.mjs +13 -0
  36. package/dist/_libs/is-reference.mjs +32 -0
  37. package/dist/_libs/js-tokens.mjs +382 -0
  38. package/dist/_libs/klona.mjs +38 -0
  39. package/dist/_libs/knitwork.mjs +124 -0
  40. package/dist/_libs/local-pkg.mjs +1686 -0
  41. package/dist/_libs/magic-string.mjs +939 -0
  42. package/dist/_libs/mime.mjs +1391 -0
  43. package/dist/_libs/node-fetch-native.mjs +173 -0
  44. package/dist/_libs/path-parse.mjs +47 -0
  45. package/dist/_libs/pathe.mjs +41 -0
  46. package/dist/_libs/picomatch.mjs +1673 -0
  47. package/dist/_libs/plugin-alias.mjs +64 -0
  48. package/dist/_libs/plugin-commonjs.mjs +1491 -0
  49. package/dist/_libs/plugin-inject.mjs +135 -0
  50. package/dist/_libs/plugin-json.mjs +36 -0
  51. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  52. package/dist/_libs/plugin-replace.mjs +104 -0
  53. package/dist/_libs/pretty-bytes.mjs +116 -0
  54. package/dist/_libs/remapping.mjs +117 -0
  55. package/dist/_libs/rou3.mjs +319 -0
  56. package/dist/_libs/std-env.mjs +158 -0
  57. package/dist/_libs/strip-literal.mjs +51 -0
  58. package/dist/_libs/tinyglobby.mjs +292 -0
  59. package/dist/_libs/tsconfck.mjs +832 -0
  60. package/dist/_libs/ultrahtml.mjs +138 -0
  61. package/dist/_libs/unimport.mjs +3520 -0
  62. package/dist/_libs/untyped.mjs +271 -0
  63. package/dist/_libs/unwasm.mjs +5836 -0
  64. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  65. package/dist/_presets.mjs +1752 -0
  66. package/dist/builder.d.mts +63 -0
  67. package/dist/builder.mjs +33 -0
  68. package/dist/cli/_chunks/build.mjs +48 -0
  69. package/dist/cli/_chunks/common.mjs +15 -0
  70. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  71. package/dist/cli/_chunks/dev.mjs +68 -0
  72. package/dist/cli/_chunks/dist.mjs +3 -0
  73. package/dist/cli/_chunks/dist2.mjs +3 -0
  74. package/dist/cli/_chunks/dist3.mjs +3 -0
  75. package/dist/cli/_chunks/dist4.mjs +4 -0
  76. package/dist/cli/_chunks/dist5.mjs +4 -0
  77. package/dist/cli/_chunks/esm.mjs +3 -0
  78. package/dist/cli/_chunks/json5.mjs +4 -0
  79. package/dist/cli/_chunks/jsonc.mjs +4 -0
  80. package/dist/cli/_chunks/list.mjs +27 -0
  81. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  82. package/dist/cli/_chunks/prepare.mjs +19 -0
  83. package/dist/cli/_chunks/run.mjs +55 -0
  84. package/dist/cli/_chunks/task.mjs +16 -0
  85. package/dist/cli/_chunks/toml.mjs +4 -0
  86. package/dist/cli/_chunks/yaml.mjs +4 -0
  87. package/dist/cli/index.d.mts +1 -1
  88. package/dist/cli/index.mjs +20 -476
  89. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  90. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  91. package/dist/node_modules/@sindresorhus/is/distribution/index.js +1 -1
  92. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  93. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  94. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  95. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  96. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  97. package/dist/node_modules/cookie-es/package.json +37 -0
  98. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  99. package/dist/node_modules/hookable/package.json +29 -26
  100. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  101. package/dist/node_modules/rendu/package.json +47 -0
  102. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-F4I6KX4R.js} +2 -1
  103. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-YYEJ3AGB.js} +4 -1
  104. package/dist/node_modules/youch/build/index.js +16 -8
  105. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  106. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  107. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  108. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  109. package/dist/node_modules/youch/package.json +16 -17
  110. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/nitro-dev.mjs +48 -42
  112. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  113. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +10 -14
  114. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  115. package/dist/presets/_nitro/runtime/service-worker.mjs +15 -12
  116. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  117. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +7 -6
  118. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  119. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  120. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  121. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +26 -28
  122. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +8 -8
  123. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  124. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  125. package/dist/presets/azure/runtime/azure-swa.mjs +24 -22
  126. package/dist/presets/bun/runtime/bun.d.mts +2 -0
  127. package/dist/presets/bun/runtime/bun.mjs +34 -21
  128. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  129. package/dist/presets/cloudflare/runtime/_module-handler.mjs +80 -88
  130. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  131. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +60 -63
  132. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  133. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +14 -16
  134. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  135. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +40 -42
  136. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  137. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  138. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  139. package/dist/presets/deno/runtime/deno-deploy.d.mts +4 -0
  140. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -12
  141. package/dist/presets/deno/runtime/deno-server.d.mts +0 -3
  142. package/dist/presets/deno/runtime/deno-server.mjs +32 -52
  143. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  144. package/dist/presets/netlify/runtime/netlify-edge.mjs +15 -12
  145. package/dist/presets/netlify/runtime/netlify.mjs +12 -18
  146. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  147. package/dist/presets/node/runtime/node-cluster.mjs +50 -54
  148. package/dist/presets/node/runtime/node-middleware.d.mts +2 -3
  149. package/dist/presets/node/runtime/node-middleware.mjs +9 -8
  150. package/dist/presets/node/runtime/node-server.mjs +37 -34
  151. package/dist/presets/standard/runtime/server.d.mts +1 -3
  152. package/dist/presets/standard/runtime/server.mjs +2 -4
  153. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  154. package/dist/presets/stormkit/runtime/stormkit.mjs +21 -21
  155. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  156. package/dist/presets/vercel/runtime/vercel.node.mjs +15 -0
  157. package/dist/presets/vercel/runtime/{vercel.d.mts → vercel.web.d.mts} +3 -3
  158. package/dist/presets/vercel/runtime/vercel.web.mjs +20 -0
  159. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  160. package/dist/presets/winterjs/runtime/winterjs.mjs +73 -69
  161. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  162. package/dist/presets/zeabur/runtime/zeabur.mjs +1 -1
  163. package/dist/runtime/app.d.mts +1 -0
  164. package/dist/runtime/app.mjs +1 -0
  165. package/dist/runtime/cache.d.mts +1 -0
  166. package/dist/runtime/cache.mjs +1 -0
  167. package/dist/runtime/config.d.mts +3 -0
  168. package/dist/runtime/config.mjs +4 -0
  169. package/dist/runtime/context.d.mts +1 -0
  170. package/dist/runtime/context.mjs +1 -0
  171. package/dist/runtime/database.d.mts +1 -0
  172. package/dist/runtime/database.mjs +1 -0
  173. package/dist/runtime/internal/app.d.mts +11 -1
  174. package/dist/runtime/internal/app.mjs +188 -140
  175. package/dist/runtime/internal/cache.d.mts +9 -5
  176. package/dist/runtime/internal/cache.mjs +248 -219
  177. package/dist/runtime/internal/context.d.mts +9 -9
  178. package/dist/runtime/internal/context.mjs +17 -10
  179. package/dist/runtime/internal/database.mjs +8 -10
  180. package/dist/runtime/internal/error/dev.d.mts +5 -4
  181. package/dist/runtime/internal/error/dev.mjs +106 -105
  182. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  183. package/dist/runtime/internal/error/hooks.mjs +9 -0
  184. package/dist/runtime/internal/error/prod.d.mts +5 -4
  185. package/dist/runtime/internal/error/prod.mjs +51 -59
  186. package/dist/runtime/internal/error/utils.d.mts +4 -4
  187. package/dist/runtime/internal/error/utils.mjs +1 -1
  188. package/dist/runtime/internal/meta.d.mts +1 -1
  189. package/dist/runtime/internal/meta.mjs +1 -1
  190. package/dist/runtime/internal/plugin.d.mts +2 -2
  191. package/dist/runtime/internal/plugin.mjs +1 -1
  192. package/dist/runtime/internal/route-rules.d.mts +8 -8
  193. package/dist/runtime/internal/route-rules.mjs +54 -52
  194. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  195. package/dist/runtime/internal/routes/dev-tasks.mjs +16 -18
  196. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  197. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  198. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  199. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  200. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  201. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  202. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  203. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  204. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  205. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  206. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  207. package/dist/runtime/internal/runtime-config.mjs +40 -35
  208. package/dist/runtime/internal/static.mjs +63 -74
  209. package/dist/runtime/internal/storage.mjs +2 -2
  210. package/dist/runtime/internal/task.d.mts +6 -6
  211. package/dist/runtime/internal/task.mjs +56 -60
  212. package/dist/runtime/internal/vite/dev-entry.mjs +11 -1
  213. package/dist/runtime/internal/vite/dev-worker.mjs +9 -57
  214. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  215. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +1 -1
  216. package/dist/runtime/meta.mjs +26 -0
  217. package/dist/runtime/nitro.d.mts +12 -0
  218. package/dist/runtime/nitro.mjs +32 -0
  219. package/dist/runtime/runtime-config.d.mts +1 -0
  220. package/dist/runtime/runtime-config.mjs +1 -0
  221. package/dist/runtime/storage.d.mts +1 -0
  222. package/dist/runtime/storage.mjs +1 -0
  223. package/dist/runtime/task.d.mts +1 -0
  224. package/dist/runtime/task.mjs +1 -0
  225. package/dist/runtime/vite-runtime.d.mts +8 -0
  226. package/dist/runtime/vite-runtime.mjs +9 -0
  227. package/dist/types/index.d.mts +2625 -2297
  228. package/dist/types/index.mjs +1 -1
  229. package/dist/vite.d.mts +49 -51
  230. package/dist/vite.mjs +44 -68
  231. package/lib/tsconfig.json +27 -0
  232. package/package.json +86 -76
  233. package/dist/_chunks/app.mjs +0 -19797
  234. package/dist/_chunks/build.mjs +0 -84
  235. package/dist/_chunks/build2.mjs +0 -318
  236. package/dist/_chunks/build3.mjs +0 -6452
  237. package/dist/_chunks/detect-acorn.mjs +0 -503
  238. package/dist/_chunks/index.mjs +0 -22242
  239. package/dist/_chunks/index2.mjs +0 -297
  240. package/dist/_chunks/index3.mjs +0 -1058
  241. package/dist/_chunks/index4.mjs +0 -1206
  242. package/dist/_chunks/info.mjs +0 -11157
  243. package/dist/_chunks/json5.mjs +0 -68
  244. package/dist/_chunks/jsonc.mjs +0 -51
  245. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  246. package/dist/_chunks/plugin.mjs +0 -960
  247. package/dist/_chunks/server.mjs +0 -254
  248. package/dist/_chunks/snapshot.mjs +0 -284
  249. package/dist/_chunks/toml.mjs +0 -259
  250. package/dist/_chunks/yaml.mjs +0 -86
  251. package/dist/cli/build.mjs +0 -54
  252. package/dist/cli/common.mjs +0 -13
  253. package/dist/cli/dev.mjs +0 -95
  254. package/dist/cli/index2.mjs +0 -17
  255. package/dist/cli/list.mjs +0 -34
  256. package/dist/cli/prepare.mjs +0 -24
  257. package/dist/cli/run.mjs +0 -60
  258. package/dist/index.d.mts +0 -52
  259. package/dist/index.mjs +0 -55
  260. package/dist/node_modules/cookie/dist/index.js +0 -239
  261. package/dist/node_modules/cookie/package.json +0 -42
  262. package/dist/node_modules/klona/dist/index.mjs +0 -81
  263. package/dist/node_modules/klona/full/index.mjs +0 -53
  264. package/dist/node_modules/klona/package.json +0 -74
  265. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  266. package/dist/node_modules/std-env/package.json +0 -46
  267. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  268. package/dist/presets.mjs +0 -2460
  269. package/dist/runtime/index.d.mts +0 -11
  270. package/dist/runtime/index.mjs +0 -17
  271. package/dist/runtime/internal/debug.d.mts +0 -2
  272. package/dist/runtime/internal/debug.mjs +0 -5
  273. package/dist/runtime/internal/empty.d.mts +0 -0
  274. package/dist/runtime/internal/index.d.mts +0 -3
  275. package/dist/runtime/internal/index.mjs +0 -3
  276. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  277. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  278. package/dist/runtime/internal/renderer.d.mts +0 -3
  279. package/dist/runtime/internal/renderer.mjs +0 -36
  280. package/dist/runtime/internal/shutdown.d.mts +0 -9
  281. package/dist/runtime/internal/shutdown.mjs +0 -34
  282. package/dist/runtime/internal/utils.d.mts +0 -1
  283. package/dist/runtime/internal/utils.mjs +0 -15
  284. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  285. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  286. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  287. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  288. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  289. package/lib/config.d.mts +0 -9
  290. package/lib/config.mjs +0 -5
  291. package/lib/meta.d.mts +0 -5
  292. package/lib/meta.mjs +0 -21
  293. package/lib/runtime-meta.mjs +0 -38
@@ -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 };