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.
- package/dist/{_chunks/build2.mjs → _build/build.mjs} +108 -58
- package/dist/_build/build2.mjs +556 -0
- package/dist/_build/info.mjs +1002 -0
- package/dist/_build/prepare.mjs +1511 -0
- package/dist/_build/snapshot.mjs +185 -0
- package/dist/{_chunks/plugin.mjs → _build/vite.mjs} +295 -296
- package/dist/_build/vite2.mjs +149 -0
- package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +189 -0
- package/dist/_chunks/_deps/@jridgewell/remapping.mjs +137 -0
- package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +231 -0
- package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +173 -0
- package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +170 -0
- package/dist/_chunks/_deps/@pi0/vite-plugin-fullstack.mjs +575 -0
- package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +89 -0
- package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +2376 -0
- package/dist/_chunks/{index2.mjs → _deps/@rollup/plugin-inject.mjs} +5 -90
- package/dist/_chunks/_deps/@rollup/plugin-json.mjs +37 -0
- package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +1386 -0
- package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +133 -0
- package/dist/_chunks/_deps/@rollup/pluginutils.mjs +346 -0
- package/dist/_chunks/_deps/acorn.mjs +6225 -0
- package/dist/_chunks/_deps/c12.mjs +510 -0
- package/dist/_chunks/_deps/chokidar.mjs +1428 -0
- package/dist/_chunks/_deps/citty.mjs +460 -0
- package/dist/_chunks/_deps/commondir.mjs +77 -0
- package/dist/_chunks/_deps/compatx.mjs +76 -0
- package/dist/_chunks/_deps/confbox.mjs +300 -0
- package/dist/_chunks/_deps/debug.mjs +885 -0
- package/dist/_chunks/_deps/deepmerge.mjs +147 -0
- package/dist/_chunks/_deps/depd.mjs +550 -0
- package/dist/_chunks/_deps/dot-prop.mjs +282 -0
- package/dist/_chunks/_deps/dotenv.mjs +555 -0
- package/dist/_chunks/_deps/duplexer.mjs +1 -0
- package/dist/_chunks/_deps/ee-first.mjs +104 -0
- package/dist/_chunks/_deps/encodeurl.mjs +69 -0
- package/dist/_chunks/_deps/escape-html.mjs +87 -0
- package/dist/_chunks/_deps/escape-string-regexp.mjs +13 -0
- package/dist/_chunks/_deps/estree-walker.mjs +433 -0
- package/dist/_chunks/_deps/etag.mjs +147 -0
- package/dist/_chunks/_deps/exsolve.mjs +1416 -0
- package/dist/_chunks/_deps/fdir.mjs +569 -0
- package/dist/_chunks/_deps/fresh.mjs +145 -0
- package/dist/_chunks/_deps/function-bind.mjs +106 -0
- package/dist/_chunks/{index4.mjs → _deps/giget.mjs} +21 -776
- package/dist/_chunks/_deps/gzip-size.mjs +19 -0
- package/dist/_chunks/_deps/hasown.mjs +19 -0
- package/dist/_chunks/_deps/http-errors.mjs +307 -0
- package/dist/_chunks/_deps/httpxy.mjs +580 -0
- package/dist/_chunks/_deps/inherits.mjs +57 -0
- package/dist/_chunks/_deps/is-core-module.mjs +596 -0
- package/dist/_chunks/_deps/is-module.mjs +25 -0
- package/dist/_chunks/_deps/is-reference.mjs +31 -0
- package/dist/_chunks/_deps/js-tokens.mjs +411 -0
- package/dist/_chunks/_deps/klona.mjs +137 -0
- package/dist/_chunks/_deps/knitwork.mjs +172 -0
- package/dist/_chunks/_deps/local-pkg.mjs +163 -0
- package/dist/_chunks/_deps/magic-string.mjs +1296 -0
- package/dist/_chunks/_deps/mime-db.mjs +11685 -0
- package/dist/_chunks/_deps/mime-types.mjs +287 -0
- package/dist/_chunks/_deps/mime.mjs +1172 -0
- package/dist/_chunks/_deps/mlly.mjs +2413 -0
- package/dist/_chunks/_deps/ms.mjs +172 -0
- package/dist/_chunks/_deps/node-fetch-native.mjs +3 -0
- package/dist/_chunks/_deps/nypm.mjs +219 -0
- package/dist/_chunks/_deps/on-finished.mjs +246 -0
- package/dist/_chunks/_deps/parseurl.mjs +168 -0
- package/dist/_chunks/_deps/path-parse.mjs +85 -0
- package/dist/_chunks/{pathe.M-eThtNZ.mjs → _deps/pathe.mjs} +48 -1
- package/dist/_chunks/_deps/perfect-debounce.mjs +88 -0
- package/dist/_chunks/_deps/picomatch.mjs +2144 -0
- package/dist/_chunks/_deps/pkg-types.mjs +247 -0
- package/dist/_chunks/{snapshot.mjs → _deps/pretty-bytes.mjs} +1 -105
- package/dist/_chunks/_deps/quansync.mjs +99 -0
- package/dist/_chunks/_deps/range-parser.mjs +171 -0
- package/dist/_chunks/_deps/rc9.mjs +219 -0
- package/dist/_chunks/_deps/readdirp.mjs +245 -0
- package/dist/_chunks/_deps/resolve.mjs +1260 -0
- package/dist/_chunks/_deps/rou3.mjs +326 -0
- package/dist/_chunks/_deps/send.mjs +1022 -0
- package/dist/_chunks/_deps/serve-static.mjs +228 -0
- package/dist/_chunks/_deps/setprototypeof.mjs +26 -0
- package/dist/_chunks/_deps/statuses.mjs +457 -0
- package/dist/_chunks/_deps/std-env.mjs +3 -0
- package/dist/_chunks/_deps/strip-literal.mjs +67 -0
- package/dist/_chunks/_deps/supports-color.mjs +44 -0
- package/dist/_chunks/_deps/tinyexec.mjs +552 -0
- package/dist/_chunks/_deps/tinyglobby.mjs +293 -0
- package/dist/_chunks/_deps/toidentifier.mjs +41 -0
- package/dist/_chunks/_deps/ultrahtml.mjs +3 -0
- package/dist/_chunks/_deps/unimport.mjs +2267 -0
- package/dist/_chunks/_deps/unplugin-utils.mjs +65 -0
- package/dist/_chunks/_deps/unplugin.mjs +1294 -0
- package/dist/_chunks/_deps/untyped.mjs +375 -0
- package/dist/_chunks/{info.mjs → _deps/unwasm.mjs} +8 -4206
- package/dist/_chunks/_deps/webpack-virtual-modules.mjs +360 -0
- package/dist/_chunks/_presets/_all.mjs +59 -0
- package/dist/_chunks/_presets/_nitro.mjs +74 -0
- package/dist/_chunks/_presets/_resolve.mjs +64 -0
- package/dist/_chunks/_presets/_static.mjs +69 -0
- package/dist/_chunks/_presets/_types.mjs +3 -0
- package/dist/_chunks/_presets/_utils.mjs +31 -0
- package/dist/_chunks/_presets/alwaysdata.mjs +17 -0
- package/dist/_chunks/_presets/aws-amplify.mjs +111 -0
- package/dist/_chunks/_presets/aws-lambda.mjs +23 -0
- package/dist/_chunks/_presets/azure.mjs +162 -0
- package/dist/_chunks/_presets/bun.mjs +19 -0
- package/dist/_chunks/_presets/cleavr.mjs +15 -0
- package/dist/_chunks/_presets/cloudflare.mjs +608 -0
- package/dist/_chunks/_presets/deno.mjs +196 -0
- package/dist/_chunks/_presets/digitalocean.mjs +14 -0
- package/dist/_chunks/_presets/firebase.mjs +47 -0
- package/dist/_chunks/_presets/flightcontrol.mjs +14 -0
- package/dist/_chunks/_presets/genezio.mjs +13 -0
- package/dist/_chunks/_presets/heroku.mjs +14 -0
- package/dist/_chunks/_presets/iis.mjs +194 -0
- package/dist/_chunks/_presets/index.mjs +62 -0
- package/dist/_chunks/_presets/koyeb.mjs +14 -0
- package/dist/_chunks/_presets/netlify.mjs +241 -0
- package/dist/_chunks/_presets/node.mjs +54 -0
- package/dist/_chunks/_presets/platform.mjs +14 -0
- package/dist/_chunks/_presets/render.mjs +14 -0
- package/dist/_chunks/_presets/standard.mjs +23 -0
- package/dist/_chunks/_presets/stormkit.mjs +18 -0
- package/dist/_chunks/_presets/vercel.mjs +375 -0
- package/dist/_chunks/_presets/winterjs.mjs +22 -0
- package/dist/_chunks/_presets/zeabur.mjs +69 -0
- package/dist/_chunks/_presets/zerops.mjs +27 -0
- package/dist/_chunks/app.mjs +9 -19206
- package/dist/_chunks/{index3.mjs → builder.mjs} +560 -970
- package/dist/_chunks/server.mjs +6 -4
- package/dist/{cli → _cli}/build.mjs +3 -8
- package/dist/{cli → _cli}/dev.mjs +38 -12
- package/dist/{cli/index2.mjs → _cli/index.mjs} +1 -2
- package/dist/{cli → _cli}/list.mjs +3 -4
- package/dist/{cli → _cli}/prepare.mjs +3 -4
- package/dist/{cli → _cli}/run.mjs +3 -4
- package/dist/{index.d.mts → builder.d.mts} +11 -11
- package/dist/builder.mjs +117 -0
- package/dist/cli/index.mjs +7 -464
- package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
- package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
- package/dist/node_modules/@speed-highlight/core/package.json +7 -3
- package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
- package/dist/node_modules/cookie-es/package.json +37 -0
- package/dist/node_modules/hookable/dist/index.mjs +243 -266
- package/dist/node_modules/hookable/package.json +29 -26
- package/dist/node_modules/rendu/dist/index.mjs +380 -0
- package/dist/node_modules/rendu/package.json +47 -0
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +4 -7
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +5 -4
- package/dist/presets/azure/runtime/azure-swa.mjs +1 -1
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +7 -6
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +4 -5
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +7 -10
- package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +21 -0
- package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
- package/dist/presets/node/runtime/node-server.mjs +1 -1
- package/dist/runtime/index.d.mts +1 -1
- package/dist/runtime/index.mjs +1 -1
- package/dist/runtime/internal/app.d.mts +3 -1
- package/dist/runtime/internal/app.mjs +90 -64
- package/dist/runtime/internal/error/prod.d.mts +3 -2
- package/dist/runtime/internal/error/prod.mjs +9 -13
- package/dist/runtime/internal/renderer.mjs +4 -4
- package/dist/runtime/internal/routes/dev-tasks.d.mts +30 -2
- package/dist/runtime/internal/shutdown.d.mts +1 -2
- package/dist/runtime/internal/shutdown.mjs +3 -2
- package/dist/runtime/internal/task.mjs +1 -2
- package/dist/types/index.d.mts +1603 -10
- package/dist/vite.d.mts +5 -0
- package/dist/vite.mjs +94 -30
- package/lib/index.mjs +1 -0
- package/lib/indexd.mts +1 -0
- package/lib/runtime/meta.mjs +35 -0
- package/package.json +40 -41
- package/dist/_chunks/build.mjs +0 -84
- package/dist/_chunks/build3.mjs +0 -6452
- package/dist/_chunks/detect-acorn.mjs +0 -503
- package/dist/_chunks/index.mjs +0 -22242
- package/dist/_chunks/json5.mjs +0 -68
- package/dist/_chunks/jsonc.mjs +0 -51
- package/dist/_chunks/toml.mjs +0 -259
- package/dist/_chunks/yaml.mjs +0 -86
- package/dist/index.mjs +0 -55
- package/dist/node_modules/klona/dist/index.mjs +0 -81
- package/dist/node_modules/klona/full/index.mjs +0 -53
- package/dist/node_modules/klona/package.json +0 -74
- package/dist/node_modules/std-env/dist/index.mjs +0 -1
- package/dist/node_modules/std-env/package.json +0 -46
- package/dist/presets.mjs +0 -2460
- package/dist/runtime/internal/debug.d.mts +0 -2
- package/dist/runtime/internal/debug.mjs +0 -5
- package/lib/runtime-meta.mjs +0 -38
- /package/dist/{cli → _cli}/common.mjs +0 -0
- /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* encodeurl
|
|
3
|
+
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
4
|
+
* MIT Licensed
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var encodeurl;
|
|
8
|
+
var hasRequiredEncodeurl;
|
|
9
|
+
|
|
10
|
+
function requireEncodeurl () {
|
|
11
|
+
if (hasRequiredEncodeurl) return encodeurl;
|
|
12
|
+
hasRequiredEncodeurl = 1;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Module exports.
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
encodeurl = encodeUrl;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* RegExp to match non-URL code points, *after* encoding (i.e. not including "%")
|
|
23
|
+
* and including invalid escape sequences.
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* RegExp to match unmatched surrogate pair.
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* String to replace unmatched surrogate pair with.
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2';
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Encode a URL to a percent-encoded form, excluding already-encoded sequences.
|
|
45
|
+
*
|
|
46
|
+
* This function will take an already-encoded URL and encode all the non-URL
|
|
47
|
+
* code points. This function will not encode the "%" character unless it is
|
|
48
|
+
* not part of a valid sequence (`%20` will be left as-is, but `%foo` will
|
|
49
|
+
* be encoded as `%25foo`).
|
|
50
|
+
*
|
|
51
|
+
* This encode is meant to be "safe" and does not throw errors. It will try as
|
|
52
|
+
* hard as it can to properly encode the given URL, including replacing any raw,
|
|
53
|
+
* unpaired surrogate pairs with the Unicode replacement character prior to
|
|
54
|
+
* encoding.
|
|
55
|
+
*
|
|
56
|
+
* @param {string} url
|
|
57
|
+
* @return {string}
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
function encodeUrl (url) {
|
|
62
|
+
return String(url)
|
|
63
|
+
.replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)
|
|
64
|
+
.replace(ENCODE_CHARS_REGEXP, encodeURI)
|
|
65
|
+
}
|
|
66
|
+
return encodeurl;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { requireEncodeurl as r };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* escape-html
|
|
3
|
+
* Copyright(c) 2012-2013 TJ Holowaychuk
|
|
4
|
+
* Copyright(c) 2015 Andreas Lubbe
|
|
5
|
+
* Copyright(c) 2015 Tiancheng "Timothy" Gu
|
|
6
|
+
* MIT Licensed
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
var escapeHtml_1;
|
|
10
|
+
var hasRequiredEscapeHtml;
|
|
11
|
+
|
|
12
|
+
function requireEscapeHtml () {
|
|
13
|
+
if (hasRequiredEscapeHtml) return escapeHtml_1;
|
|
14
|
+
hasRequiredEscapeHtml = 1;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Module variables.
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
var matchHtmlRegExp = /["'&<>]/;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Module exports.
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
escapeHtml_1 = escapeHtml;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Escape special characters in the given string of html.
|
|
32
|
+
*
|
|
33
|
+
* @param {string} string The string to escape for inserting into HTML
|
|
34
|
+
* @return {string}
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
function escapeHtml(string) {
|
|
39
|
+
var str = '' + string;
|
|
40
|
+
var match = matchHtmlRegExp.exec(str);
|
|
41
|
+
|
|
42
|
+
if (!match) {
|
|
43
|
+
return str;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
var escape;
|
|
47
|
+
var html = '';
|
|
48
|
+
var index = 0;
|
|
49
|
+
var lastIndex = 0;
|
|
50
|
+
|
|
51
|
+
for (index = match.index; index < str.length; index++) {
|
|
52
|
+
switch (str.charCodeAt(index)) {
|
|
53
|
+
case 34: // "
|
|
54
|
+
escape = '"';
|
|
55
|
+
break;
|
|
56
|
+
case 38: // &
|
|
57
|
+
escape = '&';
|
|
58
|
+
break;
|
|
59
|
+
case 39: // '
|
|
60
|
+
escape = ''';
|
|
61
|
+
break;
|
|
62
|
+
case 60: // <
|
|
63
|
+
escape = '<';
|
|
64
|
+
break;
|
|
65
|
+
case 62: // >
|
|
66
|
+
escape = '>';
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (lastIndex !== index) {
|
|
73
|
+
html += str.substring(lastIndex, index);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
lastIndex = index + 1;
|
|
77
|
+
html += escape;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return lastIndex !== index
|
|
81
|
+
? html + str.substring(lastIndex, index)
|
|
82
|
+
: html;
|
|
83
|
+
}
|
|
84
|
+
return escapeHtml_1;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { requireEscapeHtml as r };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function escapeStringRegexp(string) {
|
|
2
|
+
if (typeof string !== 'string') {
|
|
3
|
+
throw new TypeError('Expected a string');
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
// Escape characters with special meaning either inside or outside character sets.
|
|
7
|
+
// Use a simple backslash escape when it’s always valid, and a `\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.
|
|
8
|
+
return string
|
|
9
|
+
.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
|
|
10
|
+
.replace(/-/g, '\\x2d');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { escapeStringRegexp as e };
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** @typedef { import('estree').BaseNode} BaseNode */
|
|
3
|
+
|
|
4
|
+
/** @typedef {{
|
|
5
|
+
skip: () => void;
|
|
6
|
+
remove: () => void;
|
|
7
|
+
replace: (node: BaseNode) => void;
|
|
8
|
+
}} WalkerContext */
|
|
9
|
+
|
|
10
|
+
let WalkerBase$1 = class WalkerBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
/** @type {boolean} */
|
|
13
|
+
this.should_skip = false;
|
|
14
|
+
|
|
15
|
+
/** @type {boolean} */
|
|
16
|
+
this.should_remove = false;
|
|
17
|
+
|
|
18
|
+
/** @type {BaseNode | null} */
|
|
19
|
+
this.replacement = null;
|
|
20
|
+
|
|
21
|
+
/** @type {WalkerContext} */
|
|
22
|
+
this.context = {
|
|
23
|
+
skip: () => (this.should_skip = true),
|
|
24
|
+
remove: () => (this.should_remove = true),
|
|
25
|
+
replace: (node) => (this.replacement = node)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param {any} parent
|
|
32
|
+
* @param {string} prop
|
|
33
|
+
* @param {number} index
|
|
34
|
+
* @param {BaseNode} node
|
|
35
|
+
*/
|
|
36
|
+
replace(parent, prop, index, node) {
|
|
37
|
+
if (parent) {
|
|
38
|
+
if (index !== null) {
|
|
39
|
+
parent[prop][index] = node;
|
|
40
|
+
} else {
|
|
41
|
+
parent[prop] = node;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* @param {any} parent
|
|
49
|
+
* @param {string} prop
|
|
50
|
+
* @param {number} index
|
|
51
|
+
*/
|
|
52
|
+
remove(parent, prop, index) {
|
|
53
|
+
if (parent) {
|
|
54
|
+
if (index !== null) {
|
|
55
|
+
parent[prop].splice(index, 1);
|
|
56
|
+
} else {
|
|
57
|
+
delete parent[prop];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// @ts-check
|
|
64
|
+
|
|
65
|
+
/** @typedef { import('estree').BaseNode} BaseNode */
|
|
66
|
+
/** @typedef { import('./walker.js').WalkerContext} WalkerContext */
|
|
67
|
+
|
|
68
|
+
/** @typedef {(
|
|
69
|
+
* this: WalkerContext,
|
|
70
|
+
* node: BaseNode,
|
|
71
|
+
* parent: BaseNode,
|
|
72
|
+
* key: string,
|
|
73
|
+
* index: number
|
|
74
|
+
* ) => void} SyncHandler */
|
|
75
|
+
|
|
76
|
+
let SyncWalker$1 = class SyncWalker extends WalkerBase$1 {
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
* @param {SyncHandler} enter
|
|
80
|
+
* @param {SyncHandler} leave
|
|
81
|
+
*/
|
|
82
|
+
constructor(enter, leave) {
|
|
83
|
+
super();
|
|
84
|
+
|
|
85
|
+
/** @type {SyncHandler} */
|
|
86
|
+
this.enter = enter;
|
|
87
|
+
|
|
88
|
+
/** @type {SyncHandler} */
|
|
89
|
+
this.leave = leave;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* @param {BaseNode} node
|
|
95
|
+
* @param {BaseNode} parent
|
|
96
|
+
* @param {string} [prop]
|
|
97
|
+
* @param {number} [index]
|
|
98
|
+
* @returns {BaseNode}
|
|
99
|
+
*/
|
|
100
|
+
visit(node, parent, prop, index) {
|
|
101
|
+
if (node) {
|
|
102
|
+
if (this.enter) {
|
|
103
|
+
const _should_skip = this.should_skip;
|
|
104
|
+
const _should_remove = this.should_remove;
|
|
105
|
+
const _replacement = this.replacement;
|
|
106
|
+
this.should_skip = false;
|
|
107
|
+
this.should_remove = false;
|
|
108
|
+
this.replacement = null;
|
|
109
|
+
|
|
110
|
+
this.enter.call(this.context, node, parent, prop, index);
|
|
111
|
+
|
|
112
|
+
if (this.replacement) {
|
|
113
|
+
node = this.replacement;
|
|
114
|
+
this.replace(parent, prop, index, node);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (this.should_remove) {
|
|
118
|
+
this.remove(parent, prop, index);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const skipped = this.should_skip;
|
|
122
|
+
const removed = this.should_remove;
|
|
123
|
+
|
|
124
|
+
this.should_skip = _should_skip;
|
|
125
|
+
this.should_remove = _should_remove;
|
|
126
|
+
this.replacement = _replacement;
|
|
127
|
+
|
|
128
|
+
if (skipped) return node;
|
|
129
|
+
if (removed) return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
for (const key in node) {
|
|
133
|
+
const value = node[key];
|
|
134
|
+
|
|
135
|
+
if (typeof value !== "object") {
|
|
136
|
+
continue;
|
|
137
|
+
} else if (Array.isArray(value)) {
|
|
138
|
+
for (let i = 0; i < value.length; i += 1) {
|
|
139
|
+
if (value[i] !== null && typeof value[i].type === 'string') {
|
|
140
|
+
if (!this.visit(value[i], node, key, i)) {
|
|
141
|
+
// removed
|
|
142
|
+
i--;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
} else if (value !== null && typeof value.type === "string") {
|
|
147
|
+
this.visit(value, node, key, null);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (this.leave) {
|
|
152
|
+
const _replacement = this.replacement;
|
|
153
|
+
const _should_remove = this.should_remove;
|
|
154
|
+
this.replacement = null;
|
|
155
|
+
this.should_remove = false;
|
|
156
|
+
|
|
157
|
+
this.leave.call(this.context, node, parent, prop, index);
|
|
158
|
+
|
|
159
|
+
if (this.replacement) {
|
|
160
|
+
node = this.replacement;
|
|
161
|
+
this.replace(parent, prop, index, node);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (this.should_remove) {
|
|
165
|
+
this.remove(parent, prop, index);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const removed = this.should_remove;
|
|
169
|
+
|
|
170
|
+
this.replacement = _replacement;
|
|
171
|
+
this.should_remove = _should_remove;
|
|
172
|
+
|
|
173
|
+
if (removed) return null;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return node;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
// @ts-check
|
|
182
|
+
|
|
183
|
+
/** @typedef { import('estree').BaseNode} BaseNode */
|
|
184
|
+
/** @typedef { import('./sync.js').SyncHandler} SyncHandler */
|
|
185
|
+
/** @typedef { import('./async.js').AsyncHandler} AsyncHandler */
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
*
|
|
189
|
+
* @param {BaseNode} ast
|
|
190
|
+
* @param {{
|
|
191
|
+
* enter?: SyncHandler
|
|
192
|
+
* leave?: SyncHandler
|
|
193
|
+
* }} walker
|
|
194
|
+
* @returns {BaseNode}
|
|
195
|
+
*/
|
|
196
|
+
function walk$1(ast, { enter, leave }) {
|
|
197
|
+
const instance = new SyncWalker$1(enter, leave);
|
|
198
|
+
return instance.visit(ast, null);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @typedef { import('estree').Node} Node
|
|
203
|
+
* @typedef {{
|
|
204
|
+
* skip: () => void;
|
|
205
|
+
* remove: () => void;
|
|
206
|
+
* replace: (node: Node) => void;
|
|
207
|
+
* }} WalkerContext
|
|
208
|
+
*/
|
|
209
|
+
|
|
210
|
+
class WalkerBase {
|
|
211
|
+
constructor() {
|
|
212
|
+
/** @type {boolean} */
|
|
213
|
+
this.should_skip = false;
|
|
214
|
+
|
|
215
|
+
/** @type {boolean} */
|
|
216
|
+
this.should_remove = false;
|
|
217
|
+
|
|
218
|
+
/** @type {Node | null} */
|
|
219
|
+
this.replacement = null;
|
|
220
|
+
|
|
221
|
+
/** @type {WalkerContext} */
|
|
222
|
+
this.context = {
|
|
223
|
+
skip: () => (this.should_skip = true),
|
|
224
|
+
remove: () => (this.should_remove = true),
|
|
225
|
+
replace: (node) => (this.replacement = node)
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* @template {Node} Parent
|
|
231
|
+
* @param {Parent | null | undefined} parent
|
|
232
|
+
* @param {keyof Parent | null | undefined} prop
|
|
233
|
+
* @param {number | null | undefined} index
|
|
234
|
+
* @param {Node} node
|
|
235
|
+
*/
|
|
236
|
+
replace(parent, prop, index, node) {
|
|
237
|
+
if (parent && prop) {
|
|
238
|
+
if (index != null) {
|
|
239
|
+
/** @type {Array<Node>} */ (parent[prop])[index] = node;
|
|
240
|
+
} else {
|
|
241
|
+
/** @type {Node} */ (parent[prop]) = node;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* @template {Node} Parent
|
|
248
|
+
* @param {Parent | null | undefined} parent
|
|
249
|
+
* @param {keyof Parent | null | undefined} prop
|
|
250
|
+
* @param {number | null | undefined} index
|
|
251
|
+
*/
|
|
252
|
+
remove(parent, prop, index) {
|
|
253
|
+
if (parent && prop) {
|
|
254
|
+
if (index !== null && index !== undefined) {
|
|
255
|
+
/** @type {Array<Node>} */ (parent[prop]).splice(index, 1);
|
|
256
|
+
} else {
|
|
257
|
+
delete parent[prop];
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* @typedef { import('estree').Node} Node
|
|
265
|
+
* @typedef { import('./walker.js').WalkerContext} WalkerContext
|
|
266
|
+
* @typedef {(
|
|
267
|
+
* this: WalkerContext,
|
|
268
|
+
* node: Node,
|
|
269
|
+
* parent: Node | null,
|
|
270
|
+
* key: string | number | symbol | null | undefined,
|
|
271
|
+
* index: number | null | undefined
|
|
272
|
+
* ) => void} SyncHandler
|
|
273
|
+
*/
|
|
274
|
+
|
|
275
|
+
class SyncWalker extends WalkerBase {
|
|
276
|
+
/**
|
|
277
|
+
*
|
|
278
|
+
* @param {SyncHandler} [enter]
|
|
279
|
+
* @param {SyncHandler} [leave]
|
|
280
|
+
*/
|
|
281
|
+
constructor(enter, leave) {
|
|
282
|
+
super();
|
|
283
|
+
|
|
284
|
+
/** @type {boolean} */
|
|
285
|
+
this.should_skip = false;
|
|
286
|
+
|
|
287
|
+
/** @type {boolean} */
|
|
288
|
+
this.should_remove = false;
|
|
289
|
+
|
|
290
|
+
/** @type {Node | null} */
|
|
291
|
+
this.replacement = null;
|
|
292
|
+
|
|
293
|
+
/** @type {WalkerContext} */
|
|
294
|
+
this.context = {
|
|
295
|
+
skip: () => (this.should_skip = true),
|
|
296
|
+
remove: () => (this.should_remove = true),
|
|
297
|
+
replace: (node) => (this.replacement = node)
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
/** @type {SyncHandler | undefined} */
|
|
301
|
+
this.enter = enter;
|
|
302
|
+
|
|
303
|
+
/** @type {SyncHandler | undefined} */
|
|
304
|
+
this.leave = leave;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* @template {Node} Parent
|
|
309
|
+
* @param {Node} node
|
|
310
|
+
* @param {Parent | null} parent
|
|
311
|
+
* @param {keyof Parent} [prop]
|
|
312
|
+
* @param {number | null} [index]
|
|
313
|
+
* @returns {Node | null}
|
|
314
|
+
*/
|
|
315
|
+
visit(node, parent, prop, index) {
|
|
316
|
+
if (node) {
|
|
317
|
+
if (this.enter) {
|
|
318
|
+
const _should_skip = this.should_skip;
|
|
319
|
+
const _should_remove = this.should_remove;
|
|
320
|
+
const _replacement = this.replacement;
|
|
321
|
+
this.should_skip = false;
|
|
322
|
+
this.should_remove = false;
|
|
323
|
+
this.replacement = null;
|
|
324
|
+
|
|
325
|
+
this.enter.call(this.context, node, parent, prop, index);
|
|
326
|
+
|
|
327
|
+
if (this.replacement) {
|
|
328
|
+
node = this.replacement;
|
|
329
|
+
this.replace(parent, prop, index, node);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (this.should_remove) {
|
|
333
|
+
this.remove(parent, prop, index);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const skipped = this.should_skip;
|
|
337
|
+
const removed = this.should_remove;
|
|
338
|
+
|
|
339
|
+
this.should_skip = _should_skip;
|
|
340
|
+
this.should_remove = _should_remove;
|
|
341
|
+
this.replacement = _replacement;
|
|
342
|
+
|
|
343
|
+
if (skipped) return node;
|
|
344
|
+
if (removed) return null;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/** @type {keyof Node} */
|
|
348
|
+
let key;
|
|
349
|
+
|
|
350
|
+
for (key in node) {
|
|
351
|
+
/** @type {unknown} */
|
|
352
|
+
const value = node[key];
|
|
353
|
+
|
|
354
|
+
if (value && typeof value === 'object') {
|
|
355
|
+
if (Array.isArray(value)) {
|
|
356
|
+
const nodes = /** @type {Array<unknown>} */ (value);
|
|
357
|
+
for (let i = 0; i < nodes.length; i += 1) {
|
|
358
|
+
const item = nodes[i];
|
|
359
|
+
if (isNode(item)) {
|
|
360
|
+
if (!this.visit(item, node, key, i)) {
|
|
361
|
+
// removed
|
|
362
|
+
i--;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else if (isNode(value)) {
|
|
367
|
+
this.visit(value, node, key, null);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
if (this.leave) {
|
|
373
|
+
const _replacement = this.replacement;
|
|
374
|
+
const _should_remove = this.should_remove;
|
|
375
|
+
this.replacement = null;
|
|
376
|
+
this.should_remove = false;
|
|
377
|
+
|
|
378
|
+
this.leave.call(this.context, node, parent, prop, index);
|
|
379
|
+
|
|
380
|
+
if (this.replacement) {
|
|
381
|
+
node = this.replacement;
|
|
382
|
+
this.replace(parent, prop, index, node);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (this.should_remove) {
|
|
386
|
+
this.remove(parent, prop, index);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const removed = this.should_remove;
|
|
390
|
+
|
|
391
|
+
this.replacement = _replacement;
|
|
392
|
+
this.should_remove = _should_remove;
|
|
393
|
+
|
|
394
|
+
if (removed) return null;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
return node;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Ducktype a node.
|
|
404
|
+
*
|
|
405
|
+
* @param {unknown} value
|
|
406
|
+
* @returns {value is Node}
|
|
407
|
+
*/
|
|
408
|
+
function isNode(value) {
|
|
409
|
+
return (
|
|
410
|
+
value !== null && typeof value === 'object' && 'type' in value && typeof value.type === 'string'
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* @typedef {import('estree').Node} Node
|
|
416
|
+
* @typedef {import('./sync.js').SyncHandler} SyncHandler
|
|
417
|
+
* @typedef {import('./async.js').AsyncHandler} AsyncHandler
|
|
418
|
+
*/
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* @param {Node} ast
|
|
422
|
+
* @param {{
|
|
423
|
+
* enter?: SyncHandler
|
|
424
|
+
* leave?: SyncHandler
|
|
425
|
+
* }} walker
|
|
426
|
+
* @returns {Node | null}
|
|
427
|
+
*/
|
|
428
|
+
function walk(ast, { enter, leave }) {
|
|
429
|
+
const instance = new SyncWalker(enter, leave);
|
|
430
|
+
return instance.visit(ast, null);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export { walk as a, walk$1 as w };
|