nitro-nightly 4.0.0-20251010-091516-7cafddba → 4.0.0-20251030-091344-d4418b98

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 (195) hide show
  1. package/dist/{_chunks/build2.mjs → _build/build.mjs} +108 -58
  2. package/dist/_build/build2.mjs +556 -0
  3. package/dist/_build/info.mjs +1002 -0
  4. package/dist/_build/prepare.mjs +1511 -0
  5. package/dist/_build/snapshot.mjs +185 -0
  6. package/dist/{_chunks/plugin.mjs → _build/vite.mjs} +295 -296
  7. package/dist/_build/vite2.mjs +149 -0
  8. package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +189 -0
  9. package/dist/_chunks/_deps/@jridgewell/remapping.mjs +137 -0
  10. package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +231 -0
  11. package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +173 -0
  12. package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +170 -0
  13. package/dist/_chunks/_deps/@pi0/vite-plugin-fullstack.mjs +575 -0
  14. package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +89 -0
  15. package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +2376 -0
  16. package/dist/_chunks/{index2.mjs → _deps/@rollup/plugin-inject.mjs} +5 -90
  17. package/dist/_chunks/_deps/@rollup/plugin-json.mjs +37 -0
  18. package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +1386 -0
  19. package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +133 -0
  20. package/dist/_chunks/_deps/@rollup/pluginutils.mjs +346 -0
  21. package/dist/_chunks/_deps/acorn.mjs +6225 -0
  22. package/dist/_chunks/_deps/c12.mjs +510 -0
  23. package/dist/_chunks/_deps/chokidar.mjs +1428 -0
  24. package/dist/_chunks/_deps/citty.mjs +460 -0
  25. package/dist/_chunks/_deps/commondir.mjs +77 -0
  26. package/dist/_chunks/_deps/compatx.mjs +76 -0
  27. package/dist/_chunks/_deps/confbox.mjs +300 -0
  28. package/dist/_chunks/_deps/debug.mjs +885 -0
  29. package/dist/_chunks/_deps/deepmerge.mjs +147 -0
  30. package/dist/_chunks/_deps/depd.mjs +550 -0
  31. package/dist/_chunks/_deps/dot-prop.mjs +282 -0
  32. package/dist/_chunks/_deps/dotenv.mjs +555 -0
  33. package/dist/_chunks/_deps/duplexer.mjs +1 -0
  34. package/dist/_chunks/_deps/ee-first.mjs +104 -0
  35. package/dist/_chunks/_deps/encodeurl.mjs +69 -0
  36. package/dist/_chunks/_deps/escape-html.mjs +87 -0
  37. package/dist/_chunks/_deps/escape-string-regexp.mjs +13 -0
  38. package/dist/_chunks/_deps/estree-walker.mjs +433 -0
  39. package/dist/_chunks/_deps/etag.mjs +147 -0
  40. package/dist/_chunks/_deps/exsolve.mjs +1416 -0
  41. package/dist/_chunks/_deps/fdir.mjs +569 -0
  42. package/dist/_chunks/_deps/fresh.mjs +145 -0
  43. package/dist/_chunks/_deps/function-bind.mjs +106 -0
  44. package/dist/_chunks/{index4.mjs → _deps/giget.mjs} +21 -776
  45. package/dist/_chunks/_deps/gzip-size.mjs +19 -0
  46. package/dist/_chunks/_deps/hasown.mjs +19 -0
  47. package/dist/_chunks/_deps/http-errors.mjs +307 -0
  48. package/dist/_chunks/_deps/httpxy.mjs +580 -0
  49. package/dist/_chunks/_deps/inherits.mjs +57 -0
  50. package/dist/_chunks/_deps/is-core-module.mjs +596 -0
  51. package/dist/_chunks/_deps/is-module.mjs +25 -0
  52. package/dist/_chunks/_deps/is-reference.mjs +31 -0
  53. package/dist/_chunks/_deps/js-tokens.mjs +411 -0
  54. package/dist/_chunks/_deps/klona.mjs +137 -0
  55. package/dist/_chunks/_deps/knitwork.mjs +172 -0
  56. package/dist/_chunks/_deps/local-pkg.mjs +163 -0
  57. package/dist/_chunks/_deps/magic-string.mjs +1296 -0
  58. package/dist/_chunks/_deps/mime-db.mjs +11685 -0
  59. package/dist/_chunks/_deps/mime-types.mjs +287 -0
  60. package/dist/_chunks/_deps/mime.mjs +1172 -0
  61. package/dist/_chunks/_deps/mlly.mjs +2413 -0
  62. package/dist/_chunks/_deps/ms.mjs +172 -0
  63. package/dist/_chunks/_deps/node-fetch-native.mjs +3 -0
  64. package/dist/_chunks/_deps/nypm.mjs +219 -0
  65. package/dist/_chunks/_deps/on-finished.mjs +246 -0
  66. package/dist/_chunks/_deps/parseurl.mjs +168 -0
  67. package/dist/_chunks/_deps/path-parse.mjs +85 -0
  68. package/dist/_chunks/{pathe.M-eThtNZ.mjs → _deps/pathe.mjs} +48 -1
  69. package/dist/_chunks/_deps/perfect-debounce.mjs +88 -0
  70. package/dist/_chunks/_deps/picomatch.mjs +2144 -0
  71. package/dist/_chunks/_deps/pkg-types.mjs +247 -0
  72. package/dist/_chunks/{snapshot.mjs → _deps/pretty-bytes.mjs} +1 -105
  73. package/dist/_chunks/_deps/quansync.mjs +99 -0
  74. package/dist/_chunks/_deps/range-parser.mjs +171 -0
  75. package/dist/_chunks/_deps/rc9.mjs +219 -0
  76. package/dist/_chunks/_deps/readdirp.mjs +245 -0
  77. package/dist/_chunks/_deps/resolve.mjs +1260 -0
  78. package/dist/_chunks/_deps/rou3.mjs +326 -0
  79. package/dist/_chunks/_deps/send.mjs +1022 -0
  80. package/dist/_chunks/_deps/serve-static.mjs +228 -0
  81. package/dist/_chunks/_deps/setprototypeof.mjs +26 -0
  82. package/dist/_chunks/_deps/statuses.mjs +457 -0
  83. package/dist/_chunks/_deps/std-env.mjs +3 -0
  84. package/dist/_chunks/_deps/strip-literal.mjs +67 -0
  85. package/dist/_chunks/_deps/supports-color.mjs +44 -0
  86. package/dist/_chunks/_deps/tinyexec.mjs +552 -0
  87. package/dist/_chunks/_deps/tinyglobby.mjs +293 -0
  88. package/dist/_chunks/_deps/toidentifier.mjs +41 -0
  89. package/dist/_chunks/_deps/ultrahtml.mjs +3 -0
  90. package/dist/_chunks/_deps/unimport.mjs +2267 -0
  91. package/dist/_chunks/_deps/unplugin-utils.mjs +65 -0
  92. package/dist/_chunks/_deps/unplugin.mjs +1294 -0
  93. package/dist/_chunks/_deps/untyped.mjs +375 -0
  94. package/dist/_chunks/{info.mjs → _deps/unwasm.mjs} +8 -4206
  95. package/dist/_chunks/_deps/webpack-virtual-modules.mjs +360 -0
  96. package/dist/_chunks/_presets/_all.mjs +59 -0
  97. package/dist/_chunks/_presets/_nitro.mjs +74 -0
  98. package/dist/_chunks/_presets/_resolve.mjs +64 -0
  99. package/dist/_chunks/_presets/_static.mjs +69 -0
  100. package/dist/_chunks/_presets/_types.mjs +3 -0
  101. package/dist/_chunks/_presets/_utils.mjs +31 -0
  102. package/dist/_chunks/_presets/alwaysdata.mjs +17 -0
  103. package/dist/_chunks/_presets/aws-amplify.mjs +111 -0
  104. package/dist/_chunks/_presets/aws-lambda.mjs +23 -0
  105. package/dist/_chunks/_presets/azure.mjs +162 -0
  106. package/dist/_chunks/_presets/bun.mjs +19 -0
  107. package/dist/_chunks/_presets/cleavr.mjs +15 -0
  108. package/dist/_chunks/_presets/cloudflare.mjs +608 -0
  109. package/dist/_chunks/_presets/deno.mjs +196 -0
  110. package/dist/_chunks/_presets/digitalocean.mjs +14 -0
  111. package/dist/_chunks/_presets/firebase.mjs +47 -0
  112. package/dist/_chunks/_presets/flightcontrol.mjs +14 -0
  113. package/dist/_chunks/_presets/genezio.mjs +13 -0
  114. package/dist/_chunks/_presets/heroku.mjs +14 -0
  115. package/dist/_chunks/_presets/iis.mjs +194 -0
  116. package/dist/_chunks/_presets/index.mjs +62 -0
  117. package/dist/_chunks/_presets/koyeb.mjs +14 -0
  118. package/dist/_chunks/_presets/netlify.mjs +241 -0
  119. package/dist/_chunks/_presets/node.mjs +54 -0
  120. package/dist/_chunks/_presets/platform.mjs +14 -0
  121. package/dist/_chunks/_presets/render.mjs +14 -0
  122. package/dist/_chunks/_presets/standard.mjs +23 -0
  123. package/dist/_chunks/_presets/stormkit.mjs +18 -0
  124. package/dist/_chunks/_presets/vercel.mjs +375 -0
  125. package/dist/_chunks/_presets/winterjs.mjs +22 -0
  126. package/dist/_chunks/_presets/zeabur.mjs +69 -0
  127. package/dist/_chunks/_presets/zerops.mjs +27 -0
  128. package/dist/_chunks/app.mjs +9 -19206
  129. package/dist/_chunks/{index3.mjs → builder.mjs} +560 -970
  130. package/dist/_chunks/server.mjs +6 -4
  131. package/dist/{cli → _cli}/build.mjs +3 -8
  132. package/dist/{cli → _cli}/dev.mjs +38 -12
  133. package/dist/{cli/index2.mjs → _cli/index.mjs} +1 -2
  134. package/dist/{cli → _cli}/list.mjs +3 -4
  135. package/dist/{cli → _cli}/prepare.mjs +3 -4
  136. package/dist/{cli → _cli}/run.mjs +3 -4
  137. package/dist/{index.d.mts → builder.d.mts} +11 -11
  138. package/dist/builder.mjs +117 -0
  139. package/dist/cli/index.mjs +7 -464
  140. package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
  141. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
  142. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  143. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  144. package/dist/node_modules/cookie-es/package.json +37 -0
  145. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  146. package/dist/node_modules/hookable/package.json +29 -26
  147. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  148. package/dist/node_modules/rendu/package.json +47 -0
  149. package/dist/presets/_nitro/runtime/nitro-dev.mjs +4 -7
  150. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +5 -4
  151. package/dist/presets/azure/runtime/azure-swa.mjs +1 -1
  152. package/dist/presets/cloudflare/runtime/_module-handler.mjs +7 -6
  153. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +4 -5
  154. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +7 -10
  155. package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +21 -0
  156. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  157. package/dist/presets/node/runtime/node-server.mjs +1 -1
  158. package/dist/runtime/index.d.mts +1 -1
  159. package/dist/runtime/index.mjs +1 -1
  160. package/dist/runtime/internal/app.d.mts +3 -1
  161. package/dist/runtime/internal/app.mjs +90 -64
  162. package/dist/runtime/internal/error/prod.d.mts +3 -2
  163. package/dist/runtime/internal/error/prod.mjs +9 -13
  164. package/dist/runtime/internal/renderer.mjs +4 -4
  165. package/dist/runtime/internal/routes/dev-tasks.d.mts +30 -2
  166. package/dist/runtime/internal/shutdown.d.mts +1 -2
  167. package/dist/runtime/internal/shutdown.mjs +3 -2
  168. package/dist/runtime/internal/task.mjs +1 -2
  169. package/dist/types/index.d.mts +1603 -10
  170. package/dist/vite.d.mts +5 -0
  171. package/dist/vite.mjs +94 -30
  172. package/lib/index.mjs +1 -0
  173. package/lib/indexd.mts +1 -0
  174. package/lib/runtime/meta.mjs +35 -0
  175. package/package.json +40 -41
  176. package/dist/_chunks/build.mjs +0 -84
  177. package/dist/_chunks/build3.mjs +0 -6452
  178. package/dist/_chunks/detect-acorn.mjs +0 -503
  179. package/dist/_chunks/index.mjs +0 -22242
  180. package/dist/_chunks/json5.mjs +0 -68
  181. package/dist/_chunks/jsonc.mjs +0 -51
  182. package/dist/_chunks/toml.mjs +0 -259
  183. package/dist/_chunks/yaml.mjs +0 -86
  184. package/dist/index.mjs +0 -55
  185. package/dist/node_modules/klona/dist/index.mjs +0 -81
  186. package/dist/node_modules/klona/full/index.mjs +0 -53
  187. package/dist/node_modules/klona/package.json +0 -74
  188. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  189. package/dist/node_modules/std-env/package.json +0 -46
  190. package/dist/presets.mjs +0 -2460
  191. package/dist/runtime/internal/debug.d.mts +0 -2
  192. package/dist/runtime/internal/debug.mjs +0 -5
  193. package/lib/runtime-meta.mjs +0 -38
  194. /package/dist/{cli → _cli}/common.mjs +0 -0
  195. /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +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 };