nitro-nightly 3.1.0-20251026-124439-6ad28278 → 3.1.0-20251026-232057-ce388de2
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/build.mjs +1 -1
- package/dist/_chunks/detect-acorn.mjs +1 -1
- package/dist/_chunks/index.mjs +6 -4
- package/dist/_chunks/info.mjs +4 -0
- package/dist/_chunks/json5.mjs +1 -1
- package/dist/_chunks/jsonc.mjs +1 -1
- package/dist/_chunks/toml.mjs +1 -1
- package/dist/_chunks/yaml.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/node_modules/hookable/dist/index.mjs +243 -266
- package/dist/node_modules/hookable/package.json +29 -26
- package/dist/runtime/internal/app.mjs +54 -36
- package/dist/runtime/internal/shutdown.mjs +1 -1
- package/dist/types/index.d.mts +3 -2
- package/dist/vite.mjs +1 -1
- package/package.json +2 -2
- package/dist/runtime/internal/debug.d.mts +0 -2
- package/dist/runtime/internal/debug.mjs +0 -5
package/dist/_chunks/build.mjs
CHANGED
|
@@ -3,7 +3,6 @@ import { isTest } from 'std-env';
|
|
|
3
3
|
import './index.mjs';
|
|
4
4
|
import 'consola';
|
|
5
5
|
import 'hookable';
|
|
6
|
-
import 'nitro/runtime/meta';
|
|
7
6
|
import 'node:fs';
|
|
8
7
|
import 'node:fs/promises';
|
|
9
8
|
import 'node:url';
|
|
@@ -41,6 +40,7 @@ import 'youch';
|
|
|
41
40
|
import 'source-map';
|
|
42
41
|
import 'srvx';
|
|
43
42
|
import 'klona/full';
|
|
43
|
+
import 'nitro/runtime/meta';
|
|
44
44
|
import 'node:module';
|
|
45
45
|
import 'ofetch';
|
|
46
46
|
import 'klona';
|
|
@@ -4,7 +4,6 @@ import 'node:process';
|
|
|
4
4
|
import 'scule';
|
|
5
5
|
import 'consola';
|
|
6
6
|
import 'hookable';
|
|
7
|
-
import 'nitro/runtime/meta';
|
|
8
7
|
import 'node:fs';
|
|
9
8
|
import 'node:fs/promises';
|
|
10
9
|
import 'node:url';
|
|
@@ -41,6 +40,7 @@ import 'youch';
|
|
|
41
40
|
import 'source-map';
|
|
42
41
|
import 'srvx';
|
|
43
42
|
import 'klona/full';
|
|
43
|
+
import 'nitro/runtime/meta';
|
|
44
44
|
import 'node:module';
|
|
45
45
|
import 'ofetch';
|
|
46
46
|
import 'klona';
|
package/dist/_chunks/index.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import consola, { consola as consola$1 } from 'consola';
|
|
2
|
-
import {
|
|
3
|
-
import { runtimeDir, pkgDir } from 'nitro/runtime/meta';
|
|
2
|
+
import { Hookable, createDebugger } from 'hookable';
|
|
4
3
|
import fs, { promises, statSync, realpathSync, lstatSync, readFileSync, existsSync, accessSync, constants as constants$1 } from 'node:fs';
|
|
5
4
|
import fsp, { readFile as readFile$1, rm, stat, mkdir, writeFile as writeFile$1 } from 'node:fs/promises';
|
|
6
5
|
import { fileURLToPath as fileURLToPath$1, pathToFileURL as pathToFileURL$1, URL as URL$1 } from 'node:url';
|
|
@@ -21,6 +20,7 @@ import require$$2 from 'os';
|
|
|
21
20
|
import require$$3 from 'crypto';
|
|
22
21
|
import { g as getDefaultExportFromCjs, b as getAugmentedNamespace, d as debounce } from './app.mjs';
|
|
23
22
|
import { klona } from 'klona/full';
|
|
23
|
+
import { runtimeDir, pkgDir } from 'nitro/runtime/meta';
|
|
24
24
|
import { isDebug, isTest } from 'std-env';
|
|
25
25
|
import { joinURL, withLeadingSlash, withoutTrailingSlash, withTrailingSlash, withBase } from 'ufo';
|
|
26
26
|
import { builtinModules, createRequire as createRequire$1 } from 'node:module';
|
|
@@ -20679,6 +20679,9 @@ class Router {
|
|
|
20679
20679
|
addRoute(this.#router, route.method, route.route, route.data);
|
|
20680
20680
|
}
|
|
20681
20681
|
}
|
|
20682
|
+
hasRoutes() {
|
|
20683
|
+
return this.#routes.length > 0;
|
|
20684
|
+
}
|
|
20682
20685
|
compileToString(opts) {
|
|
20683
20686
|
return this.#compiled || (this.#compiled = compileRouterToString(this.#router, void 0, opts));
|
|
20684
20687
|
}
|
|
@@ -20696,7 +20699,7 @@ async function createNitro(config = {}, opts = {}) {
|
|
|
20696
20699
|
const options = await loadOptions(config, opts);
|
|
20697
20700
|
const nitro = {
|
|
20698
20701
|
options,
|
|
20699
|
-
hooks:
|
|
20702
|
+
hooks: new Hookable(),
|
|
20700
20703
|
vfs: {},
|
|
20701
20704
|
routing: {},
|
|
20702
20705
|
logger: consola$1.withTag("nitro"),
|
|
@@ -20715,7 +20718,6 @@ async function createNitro(config = {}, opts = {}) {
|
|
|
20715
20718
|
});
|
|
20716
20719
|
if (nitro.options.debug) {
|
|
20717
20720
|
createDebugger(nitro.hooks, { tag: "nitro" });
|
|
20718
|
-
nitro.options.plugins.push(join(runtimeDir, "internal/debug"));
|
|
20719
20721
|
}
|
|
20720
20722
|
if (nitro.options.logLevel !== void 0) {
|
|
20721
20723
|
nitro.logger.level = nitro.options.logLevel;
|
package/dist/_chunks/info.mjs
CHANGED
|
@@ -10360,6 +10360,7 @@ import * as __routeRules__ from "nitro/runtime/internal/route-rules";
|
|
|
10360
10360
|
${nitro.options.serverEntry ? `import __serverEntry__ from ${JSON.stringify(nitro.options.serverEntry)};` : ""}
|
|
10361
10361
|
import {${h3Imports.join(", ")}} from "nitro/deps/h3";
|
|
10362
10362
|
|
|
10363
|
+
export const hasRouteRules = ${nitro.routing.routeRules.hasRoutes() ? "true" : "false"};
|
|
10363
10364
|
export const findRouteRules = ${nitro.routing.routeRules.compileToString({ serialize: serializeRouteRule, matchAll: true })}
|
|
10364
10365
|
|
|
10365
10366
|
${allHandlers.filter((h) => !h.lazy).map((h) => (
|
|
@@ -10374,10 +10375,13 @@ ${allHandlers.filter((h) => h.lazy).map(
|
|
|
10374
10375
|
)
|
|
10375
10376
|
).join("\n")}
|
|
10376
10377
|
|
|
10378
|
+
export const hasRoutes = ${nitro.routing.routes.hasRoutes() ? "true" : "false"};
|
|
10377
10379
|
export const findRoute = ${nitro.routing.routes.compileToString({ serialize: serializeHandler })}
|
|
10378
10380
|
|
|
10381
|
+
export const hasRoutedMiddleware = ${nitro.routing.routedMiddleware.hasRoutes() ? "true" : "false"};
|
|
10379
10382
|
export const findRoutedMiddleware = ${nitro.routing.routedMiddleware.compileToString({ serialize: serializeHandler, matchAll: true })};
|
|
10380
10383
|
|
|
10384
|
+
export const hasGlobalMiddleware = ${nitro.routing.globalMiddleware.length > 0 || nitro.options.serverEntry ? "true" : "false"};
|
|
10381
10385
|
export const globalMiddleware = [${nitro.routing.globalMiddleware.map((h) => h.lazy ? h._importHash : `toEventHandler(${h._importHash})`).join(",")}];
|
|
10382
10386
|
|
|
10383
10387
|
${nitro.options.serverEntry && /* js */
|
package/dist/_chunks/json5.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { N } from './index.mjs';
|
|
2
2
|
import 'consola';
|
|
3
3
|
import 'hookable';
|
|
4
|
-
import 'nitro/runtime/meta';
|
|
5
4
|
import 'node:fs';
|
|
6
5
|
import 'node:fs/promises';
|
|
7
6
|
import 'node:url';
|
|
@@ -40,6 +39,7 @@ import 'youch';
|
|
|
40
39
|
import 'source-map';
|
|
41
40
|
import 'srvx';
|
|
42
41
|
import 'klona/full';
|
|
42
|
+
import 'nitro/runtime/meta';
|
|
43
43
|
import 'node:module';
|
|
44
44
|
import 'ofetch';
|
|
45
45
|
import 'klona';
|
package/dist/_chunks/jsonc.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { h as parseJSONC } from './index.mjs';
|
|
2
2
|
import 'consola';
|
|
3
3
|
import 'hookable';
|
|
4
|
-
import 'nitro/runtime/meta';
|
|
5
4
|
import 'node:fs';
|
|
6
5
|
import 'node:fs/promises';
|
|
7
6
|
import 'node:url';
|
|
@@ -40,6 +39,7 @@ import 'youch';
|
|
|
40
39
|
import 'source-map';
|
|
41
40
|
import 'srvx';
|
|
42
41
|
import 'klona/full';
|
|
42
|
+
import 'nitro/runtime/meta';
|
|
43
43
|
import 'node:module';
|
|
44
44
|
import 'ofetch';
|
|
45
45
|
import 'klona';
|
package/dist/_chunks/toml.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { N } from './index.mjs';
|
|
2
2
|
import 'consola';
|
|
3
3
|
import 'hookable';
|
|
4
|
-
import 'nitro/runtime/meta';
|
|
5
4
|
import 'node:fs';
|
|
6
5
|
import 'node:fs/promises';
|
|
7
6
|
import 'node:url';
|
|
@@ -40,6 +39,7 @@ import 'youch';
|
|
|
40
39
|
import 'source-map';
|
|
41
40
|
import 'srvx';
|
|
42
41
|
import 'klona/full';
|
|
42
|
+
import 'nitro/runtime/meta';
|
|
43
43
|
import 'node:module';
|
|
44
44
|
import 'ofetch';
|
|
45
45
|
import 'klona';
|
package/dist/_chunks/yaml.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { C as C$1, N as N$1 } from './index.mjs';
|
|
2
2
|
import 'consola';
|
|
3
3
|
import 'hookable';
|
|
4
|
-
import 'nitro/runtime/meta';
|
|
5
4
|
import 'node:fs';
|
|
6
5
|
import 'node:fs/promises';
|
|
7
6
|
import 'node:url';
|
|
@@ -40,6 +39,7 @@ import 'youch';
|
|
|
40
39
|
import 'source-map';
|
|
41
40
|
import 'srvx';
|
|
42
41
|
import 'klona/full';
|
|
42
|
+
import 'nitro/runtime/meta';
|
|
43
43
|
import 'node:module';
|
|
44
44
|
import 'ofetch';
|
|
45
45
|
import 'klona';
|
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,6 @@ export { b as build, p as prerender, w as writeTypes } from './_chunks/index3.mj
|
|
|
3
3
|
export { c as createDevServer } from './_chunks/server.mjs';
|
|
4
4
|
import 'consola';
|
|
5
5
|
import 'hookable';
|
|
6
|
-
import 'nitro/runtime/meta';
|
|
7
6
|
import 'node:fs';
|
|
8
7
|
import 'node:fs/promises';
|
|
9
8
|
import 'node:url';
|
|
@@ -42,6 +41,7 @@ import 'youch';
|
|
|
42
41
|
import 'source-map';
|
|
43
42
|
import 'srvx';
|
|
44
43
|
import 'klona/full';
|
|
44
|
+
import 'nitro/runtime/meta';
|
|
45
45
|
import 'node:module';
|
|
46
46
|
import 'ofetch';
|
|
47
47
|
import 'klona';
|
|
@@ -1,290 +1,267 @@
|
|
|
1
|
+
//#region src/utils.ts
|
|
1
2
|
function flatHooks(configHooks, hooks = {}, parentName) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return hooks;
|
|
3
|
+
for (const key in configHooks) {
|
|
4
|
+
const subHook = configHooks[key];
|
|
5
|
+
const name = parentName ? `${parentName}:${key}` : key;
|
|
6
|
+
if (typeof subHook === "object" && subHook !== null) flatHooks(subHook, hooks, name);
|
|
7
|
+
else if (typeof subHook === "function") hooks[name] = subHook;
|
|
8
|
+
}
|
|
9
|
+
return hooks;
|
|
12
10
|
}
|
|
13
11
|
function mergeHooks(...hooks) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
for (const key in finalHooks) {
|
|
26
|
-
if (finalHooks[key].length > 1) {
|
|
27
|
-
const array = finalHooks[key];
|
|
28
|
-
finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));
|
|
29
|
-
} else {
|
|
30
|
-
finalHooks[key] = finalHooks[key][0];
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return finalHooks;
|
|
12
|
+
const finalHooks = {};
|
|
13
|
+
for (const hook of hooks) {
|
|
14
|
+
const flatenHook = flatHooks(hook);
|
|
15
|
+
for (const key in flatenHook) if (finalHooks[key]) finalHooks[key].push(flatenHook[key]);
|
|
16
|
+
else finalHooks[key] = [flatenHook[key]];
|
|
17
|
+
}
|
|
18
|
+
for (const key in finalHooks) if (finalHooks[key].length > 1) {
|
|
19
|
+
const array = finalHooks[key];
|
|
20
|
+
finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));
|
|
21
|
+
} else finalHooks[key] = finalHooks[key][0];
|
|
22
|
+
return finalHooks;
|
|
34
23
|
}
|
|
35
24
|
function serial(tasks, function_) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
return tasks.reduce((promise, task) => promise.then(() => function_(task)), Promise.resolve());
|
|
26
|
+
}
|
|
27
|
+
const createTask = /* @__PURE__ */ (() => {
|
|
28
|
+
if (console.createTask) return console.createTask;
|
|
29
|
+
const defaultTask = { run: (fn) => fn() };
|
|
30
|
+
return () => defaultTask;
|
|
31
|
+
})();
|
|
32
|
+
function callHooks(hooks, args, startIndex, task) {
|
|
33
|
+
for (let i = startIndex; i < hooks.length; i += 1) try {
|
|
34
|
+
const result = task ? task.run(() => hooks[i](...args)) : hooks[i](...args);
|
|
35
|
+
if (result instanceof Promise) return result.then(() => callHooks(hooks, args, i + 1, task));
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return Promise.reject(error);
|
|
38
|
+
}
|
|
40
39
|
}
|
|
41
|
-
const defaultTask = { run: (function_) => function_() };
|
|
42
|
-
const _createTask = () => defaultTask;
|
|
43
|
-
const createTask = typeof console.createTask !== "undefined" ? console.createTask : _createTask;
|
|
44
40
|
function serialTaskCaller(hooks, args) {
|
|
45
|
-
|
|
46
|
-
const task = createTask(name);
|
|
47
|
-
return hooks.reduce(
|
|
48
|
-
(promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),
|
|
49
|
-
Promise.resolve()
|
|
50
|
-
);
|
|
41
|
+
if (hooks.length > 0) return callHooks(hooks, args, 0, createTask(args.shift()));
|
|
51
42
|
}
|
|
52
43
|
function parallelTaskCaller(hooks, args) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
44
|
+
if (hooks.length > 0) {
|
|
45
|
+
const task = createTask(args.shift());
|
|
46
|
+
return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));
|
|
47
|
+
}
|
|
56
48
|
}
|
|
49
|
+
/** @deprecated */
|
|
57
50
|
function serialCaller(hooks, arguments_) {
|
|
58
|
-
|
|
59
|
-
(promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),
|
|
60
|
-
Promise.resolve()
|
|
61
|
-
);
|
|
51
|
+
return hooks.reduce((promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])), Promise.resolve());
|
|
62
52
|
}
|
|
53
|
+
/** @deprecated */
|
|
63
54
|
function parallelCaller(hooks, args) {
|
|
64
|
-
|
|
55
|
+
return Promise.all(hooks.map((hook) => hook(...args || [])));
|
|
65
56
|
}
|
|
66
57
|
function callEachWith(callbacks, arg0) {
|
|
67
|
-
|
|
68
|
-
callback(arg0);
|
|
69
|
-
}
|
|
58
|
+
for (const callback of [...callbacks]) callback(arg0);
|
|
70
59
|
}
|
|
71
60
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
if (this._after && event) {
|
|
210
|
-
callEachWith(this._after, event);
|
|
211
|
-
}
|
|
212
|
-
return result;
|
|
213
|
-
}
|
|
214
|
-
beforeEach(function_) {
|
|
215
|
-
this._before = this._before || [];
|
|
216
|
-
this._before.push(function_);
|
|
217
|
-
return () => {
|
|
218
|
-
if (this._before !== void 0) {
|
|
219
|
-
const index = this._before.indexOf(function_);
|
|
220
|
-
if (index !== -1) {
|
|
221
|
-
this._before.splice(index, 1);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
afterEach(function_) {
|
|
227
|
-
this._after = this._after || [];
|
|
228
|
-
this._after.push(function_);
|
|
229
|
-
return () => {
|
|
230
|
-
if (this._after !== void 0) {
|
|
231
|
-
const index = this._after.indexOf(function_);
|
|
232
|
-
if (index !== -1) {
|
|
233
|
-
this._after.splice(index, 1);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
}
|
|
61
|
+
//#endregion
|
|
62
|
+
//#region src/hookable.ts
|
|
63
|
+
var Hookable = class {
|
|
64
|
+
_hooks;
|
|
65
|
+
_before;
|
|
66
|
+
_after;
|
|
67
|
+
_deprecatedHooks;
|
|
68
|
+
_deprecatedMessages;
|
|
69
|
+
constructor() {
|
|
70
|
+
this._hooks = {};
|
|
71
|
+
this._before = void 0;
|
|
72
|
+
this._after = void 0;
|
|
73
|
+
this._deprecatedMessages = void 0;
|
|
74
|
+
this._deprecatedHooks = {};
|
|
75
|
+
this.hook = this.hook.bind(this);
|
|
76
|
+
this.callHook = this.callHook.bind(this);
|
|
77
|
+
this.callHookWith = this.callHookWith.bind(this);
|
|
78
|
+
}
|
|
79
|
+
hook(name, function_, options = {}) {
|
|
80
|
+
if (!name || typeof function_ !== "function") return () => {};
|
|
81
|
+
const originalName = name;
|
|
82
|
+
let dep;
|
|
83
|
+
while (this._deprecatedHooks[name]) {
|
|
84
|
+
dep = this._deprecatedHooks[name];
|
|
85
|
+
name = dep.to;
|
|
86
|
+
}
|
|
87
|
+
if (dep && !options.allowDeprecated) {
|
|
88
|
+
let message = dep.message;
|
|
89
|
+
if (!message) message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : "");
|
|
90
|
+
if (!this._deprecatedMessages) this._deprecatedMessages = /* @__PURE__ */ new Set();
|
|
91
|
+
if (!this._deprecatedMessages.has(message)) {
|
|
92
|
+
console.warn(message);
|
|
93
|
+
this._deprecatedMessages.add(message);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!function_.name) try {
|
|
97
|
+
Object.defineProperty(function_, "name", {
|
|
98
|
+
get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb",
|
|
99
|
+
configurable: true
|
|
100
|
+
});
|
|
101
|
+
} catch {}
|
|
102
|
+
this._hooks[name] = this._hooks[name] || [];
|
|
103
|
+
this._hooks[name].push(function_);
|
|
104
|
+
return () => {
|
|
105
|
+
if (function_) {
|
|
106
|
+
this.removeHook(name, function_);
|
|
107
|
+
function_ = void 0;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
hookOnce(name, function_) {
|
|
112
|
+
let _unreg;
|
|
113
|
+
let _function = (...arguments_) => {
|
|
114
|
+
if (typeof _unreg === "function") _unreg();
|
|
115
|
+
_unreg = void 0;
|
|
116
|
+
_function = void 0;
|
|
117
|
+
return function_(...arguments_);
|
|
118
|
+
};
|
|
119
|
+
_unreg = this.hook(name, _function);
|
|
120
|
+
return _unreg;
|
|
121
|
+
}
|
|
122
|
+
removeHook(name, function_) {
|
|
123
|
+
const hooks = this._hooks[name];
|
|
124
|
+
if (hooks) {
|
|
125
|
+
const index = hooks.indexOf(function_);
|
|
126
|
+
if (index !== -1) hooks.splice(index, 1);
|
|
127
|
+
if (hooks.length === 0) this._hooks[name] = void 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
deprecateHook(name, deprecated) {
|
|
131
|
+
this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated;
|
|
132
|
+
const _hooks = this._hooks[name] || [];
|
|
133
|
+
this._hooks[name] = void 0;
|
|
134
|
+
for (const hook of _hooks) this.hook(name, hook);
|
|
135
|
+
}
|
|
136
|
+
deprecateHooks(deprecatedHooks) {
|
|
137
|
+
for (const name in deprecatedHooks) this.deprecateHook(name, deprecatedHooks[name]);
|
|
138
|
+
}
|
|
139
|
+
addHooks(configHooks) {
|
|
140
|
+
const hooks = flatHooks(configHooks);
|
|
141
|
+
const removeFns = Object.keys(hooks).map((key) => this.hook(key, hooks[key]));
|
|
142
|
+
return () => {
|
|
143
|
+
for (const unreg of removeFns) unreg();
|
|
144
|
+
removeFns.length = 0;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
removeHooks(configHooks) {
|
|
148
|
+
const hooks = flatHooks(configHooks);
|
|
149
|
+
for (const key in hooks) this.removeHook(key, hooks[key]);
|
|
150
|
+
}
|
|
151
|
+
removeAllHooks() {
|
|
152
|
+
this._hooks = {};
|
|
153
|
+
}
|
|
154
|
+
callHook(name, ...args) {
|
|
155
|
+
return this.callHookWith(serialTaskCaller, name, args);
|
|
156
|
+
}
|
|
157
|
+
callHookParallel(name, ...args) {
|
|
158
|
+
return this.callHookWith(parallelTaskCaller, name, args);
|
|
159
|
+
}
|
|
160
|
+
callHookWith(caller, name, args) {
|
|
161
|
+
const event = this._before || this._after ? {
|
|
162
|
+
name,
|
|
163
|
+
args,
|
|
164
|
+
context: {}
|
|
165
|
+
} : void 0;
|
|
166
|
+
if (this._before) callEachWith(this._before, event);
|
|
167
|
+
const _args = args?.length ? [name, ...args] : [name];
|
|
168
|
+
const result = caller(this._hooks[name] ? [...this._hooks[name]] : [], _args);
|
|
169
|
+
if (result instanceof Promise) return result.finally(() => {
|
|
170
|
+
if (this._after && event) callEachWith(this._after, event);
|
|
171
|
+
});
|
|
172
|
+
if (this._after && event) callEachWith(this._after, event);
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
beforeEach(function_) {
|
|
176
|
+
this._before = this._before || [];
|
|
177
|
+
this._before.push(function_);
|
|
178
|
+
return () => {
|
|
179
|
+
if (this._before !== void 0) {
|
|
180
|
+
const index = this._before.indexOf(function_);
|
|
181
|
+
if (index !== -1) this._before.splice(index, 1);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
afterEach(function_) {
|
|
186
|
+
this._after = this._after || [];
|
|
187
|
+
this._after.push(function_);
|
|
188
|
+
return () => {
|
|
189
|
+
if (this._after !== void 0) {
|
|
190
|
+
const index = this._after.indexOf(function_);
|
|
191
|
+
if (index !== -1) this._after.splice(index, 1);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
};
|
|
239
196
|
function createHooks() {
|
|
240
|
-
|
|
197
|
+
return new Hookable();
|
|
241
198
|
}
|
|
199
|
+
var HookableCore = class {
|
|
200
|
+
_hooks;
|
|
201
|
+
constructor() {
|
|
202
|
+
this._hooks = {};
|
|
203
|
+
}
|
|
204
|
+
hook(name, fn) {
|
|
205
|
+
if (!name || typeof fn !== "function") return () => {};
|
|
206
|
+
this._hooks[name] = this._hooks[name] || [];
|
|
207
|
+
this._hooks[name].push(fn);
|
|
208
|
+
return () => {
|
|
209
|
+
if (fn) {
|
|
210
|
+
this.removeHook(name, fn);
|
|
211
|
+
fn = void 0;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
removeHook(name, function_) {
|
|
216
|
+
const hooks = this._hooks[name];
|
|
217
|
+
if (hooks) {
|
|
218
|
+
const index = hooks.indexOf(function_);
|
|
219
|
+
if (index !== -1) hooks.splice(index, 1);
|
|
220
|
+
if (hooks.length === 0) this._hooks[name] = void 0;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
callHook(name, ...args) {
|
|
224
|
+
const hooks = this._hooks[name];
|
|
225
|
+
if (!hooks || hooks.length === 0) return;
|
|
226
|
+
return callHooks(hooks, args, 0);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
242
229
|
|
|
230
|
+
//#endregion
|
|
231
|
+
//#region src/debugger.ts
|
|
243
232
|
const isBrowser = typeof window !== "undefined";
|
|
233
|
+
/** Start debugging hook names and timing in console */
|
|
244
234
|
function createDebugger(hooks, _options = {}) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
console.timeEnd(logPrefix(event));
|
|
275
|
-
}
|
|
276
|
-
if (options.group) {
|
|
277
|
-
console.groupEnd();
|
|
278
|
-
}
|
|
279
|
-
_idCtr[event.name]--;
|
|
280
|
-
});
|
|
281
|
-
return {
|
|
282
|
-
/** Stop debugging and remove listeners */
|
|
283
|
-
close: () => {
|
|
284
|
-
unsubscribeBefore();
|
|
285
|
-
unsubscribeAfter();
|
|
286
|
-
}
|
|
287
|
-
};
|
|
235
|
+
const options = {
|
|
236
|
+
inspect: isBrowser,
|
|
237
|
+
group: isBrowser,
|
|
238
|
+
filter: () => true,
|
|
239
|
+
..._options
|
|
240
|
+
};
|
|
241
|
+
const _filter = options.filter;
|
|
242
|
+
const filter = typeof _filter === "string" ? (name) => name.startsWith(_filter) : _filter;
|
|
243
|
+
const _tag = options.tag ? `[${options.tag}] ` : "";
|
|
244
|
+
const logPrefix = (event) => _tag + event.name + "".padEnd(event._id, "\0");
|
|
245
|
+
const _idCtr = {};
|
|
246
|
+
const unsubscribeBefore = hooks.beforeEach((event) => {
|
|
247
|
+
if (filter !== void 0 && !filter(event.name)) return;
|
|
248
|
+
_idCtr[event.name] = _idCtr[event.name] || 0;
|
|
249
|
+
event._id = _idCtr[event.name]++;
|
|
250
|
+
console.time(logPrefix(event));
|
|
251
|
+
});
|
|
252
|
+
const unsubscribeAfter = hooks.afterEach((event) => {
|
|
253
|
+
if (filter !== void 0 && !filter(event.name)) return;
|
|
254
|
+
if (options.group) console.groupCollapsed(event.name);
|
|
255
|
+
if (options.inspect) console.timeLog(logPrefix(event), event.args);
|
|
256
|
+
else console.timeEnd(logPrefix(event));
|
|
257
|
+
if (options.group) console.groupEnd();
|
|
258
|
+
_idCtr[event.name]--;
|
|
259
|
+
});
|
|
260
|
+
return { close: () => {
|
|
261
|
+
unsubscribeBefore();
|
|
262
|
+
unsubscribeAfter();
|
|
263
|
+
} };
|
|
288
264
|
}
|
|
289
265
|
|
|
290
|
-
|
|
266
|
+
//#endregion
|
|
267
|
+
export { Hookable, HookableCore, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hookable",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-rc.1",
|
|
4
4
|
"description": "Awaitable hook system",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hook",
|
|
@@ -11,39 +11,42 @@
|
|
|
11
11
|
],
|
|
12
12
|
"repository": "unjs/hookable",
|
|
13
13
|
"license": "MIT",
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"type": "module",
|
|
14
16
|
"exports": {
|
|
15
|
-
"
|
|
16
|
-
"types": "./dist/index.d.ts",
|
|
17
|
-
"require": "./dist/index.cjs"
|
|
17
|
+
".": "./dist/index.mjs"
|
|
18
18
|
},
|
|
19
|
-
"main": "./dist/index.
|
|
20
|
-
"
|
|
21
|
-
"types": "./dist/index.d.ts",
|
|
19
|
+
"main": "./dist/index.mjs",
|
|
20
|
+
"types": "./dist/index.d.mts",
|
|
22
21
|
"files": [
|
|
23
22
|
"dist"
|
|
24
23
|
],
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"@types/node": "^18.15.11",
|
|
27
|
-
"@vitest/coverage-c8": "^0.29.8",
|
|
28
|
-
"changelogen": "^0.5.2",
|
|
29
|
-
"eslint": "^8.37.0",
|
|
30
|
-
"eslint-config-unjs": "^0.1.0",
|
|
31
|
-
"expect-type": "^0.15.0",
|
|
32
|
-
"prettier": "^2.8.7",
|
|
33
|
-
"typescript": "^5.0.2",
|
|
34
|
-
"unbuild": "^1.1.2",
|
|
35
|
-
"vite": "^4.2.1",
|
|
36
|
-
"vitest": "^0.29.8"
|
|
37
|
-
},
|
|
38
|
-
"packageManager": "pnpm@8.0.0",
|
|
39
24
|
"scripts": {
|
|
40
|
-
"
|
|
25
|
+
"bench": "node --expose-gc --allow-natives-syntax test/bench.ts",
|
|
26
|
+
"build": "obuild src/index.ts",
|
|
41
27
|
"dev": "vitest",
|
|
42
|
-
"lint": "eslint --cache
|
|
43
|
-
"lint:fix": "eslint --cache
|
|
28
|
+
"lint": "eslint --cache . && prettier -c src test",
|
|
29
|
+
"lint:fix": "eslint --cache . --fix && prettier -c src test -w",
|
|
44
30
|
"prepublish": "pnpm build",
|
|
45
|
-
"release": "pnpm test && pnpm build && changelogen --release --
|
|
31
|
+
"release": "pnpm test && pnpm build && changelogen --release --prerelease --publish --publishTag rc --push",
|
|
46
32
|
"test": "pnpm lint && vitest run --coverage",
|
|
47
33
|
"test:types": "tsc --noEmit"
|
|
48
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/node": "^24.9.1",
|
|
37
|
+
"@vitest/coverage-v8": "^4.0.3",
|
|
38
|
+
"changelogen": "^0.6.2",
|
|
39
|
+
"esbuild": "^0.25.11",
|
|
40
|
+
"eslint": "^9.38.0",
|
|
41
|
+
"eslint-config-unjs": "^0.5.0",
|
|
42
|
+
"expect-type": "^1.2.2",
|
|
43
|
+
"hookable-prev": "npm:hookable@^5.0.0",
|
|
44
|
+
"mitata": "^1.0.34",
|
|
45
|
+
"obuild": "^0.3.0",
|
|
46
|
+
"prettier": "^3.6.2",
|
|
47
|
+
"typescript": "^5.9.3",
|
|
48
|
+
"vite": "^7.1.12",
|
|
49
|
+
"vitest": "^4.0.3"
|
|
50
|
+
},
|
|
51
|
+
"packageManager": "pnpm@10.19.0"
|
|
49
52
|
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { H3Core, toRequest } from "h3";
|
|
2
|
-
import {
|
|
2
|
+
import { HookableCore } from "hookable";
|
|
3
3
|
import { nitroAsyncContext } from "./context.mjs";
|
|
4
4
|
import errorHandler from "#nitro-internal-virtual/error-handler";
|
|
5
5
|
import { plugins } from "#nitro-internal-virtual/plugins";
|
|
6
6
|
import {
|
|
7
|
+
hasRouteRules,
|
|
7
8
|
findRoute,
|
|
8
9
|
findRouteRules,
|
|
9
10
|
globalMiddleware,
|
|
10
|
-
findRoutedMiddleware
|
|
11
|
+
findRoutedMiddleware,
|
|
12
|
+
hasRoutedMiddleware,
|
|
13
|
+
hasGlobalMiddleware,
|
|
14
|
+
hasRoutes
|
|
11
15
|
} from "#nitro-internal-virtual/routing";
|
|
12
16
|
export function useNitroApp() {
|
|
13
17
|
return useNitroApp.__instance__ ??= initNitroApp();
|
|
@@ -25,9 +29,9 @@ function initNitroApp() {
|
|
|
25
29
|
return nitroApp;
|
|
26
30
|
}
|
|
27
31
|
function createNitroApp() {
|
|
28
|
-
const hooks =
|
|
32
|
+
const hooks = new HookableCore();
|
|
29
33
|
const captureError = (error, errorCtx) => {
|
|
30
|
-
const promise = hooks.
|
|
34
|
+
const promise = hooks.callHook("error", error, errorCtx)?.catch?.((hookError) => {
|
|
31
35
|
console.error("Error while capturing another error", hookError);
|
|
32
36
|
});
|
|
33
37
|
if (errorCtx?.event) {
|
|
@@ -40,20 +44,26 @@ function createNitroApp() {
|
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
46
|
};
|
|
43
|
-
const h3App = createH3App(
|
|
44
|
-
|
|
47
|
+
const h3App = createH3App({
|
|
48
|
+
onError(error, event) {
|
|
49
|
+
captureError(error, { event });
|
|
50
|
+
return errorHandler(error, event);
|
|
51
|
+
},
|
|
52
|
+
onRequest(event) {
|
|
53
|
+
return hooks.callHook("request", event)?.catch?.((error) => {
|
|
54
|
+
captureError(error, { event, tags: ["request"] });
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
onResponse(res, event) {
|
|
58
|
+
return hooks.callHook("response", res, event)?.catch?.((error) => {
|
|
59
|
+
captureError(error, { event, tags: ["response"] });
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
let fetchHandler = (req) => {
|
|
45
64
|
req.context ??= {};
|
|
46
65
|
req.context.nitro = req.context.nitro || { errors: [] };
|
|
47
|
-
|
|
48
|
-
const nitroApp = useNitroApp();
|
|
49
|
-
await nitroApp.hooks.callHook("request", event).catch((error) => {
|
|
50
|
-
captureError(error, { event, tags: ["request"] });
|
|
51
|
-
});
|
|
52
|
-
const response = await h3App.request(req, void 0, req.context);
|
|
53
|
-
await nitroApp.hooks.callHook("response", response, event).catch((error) => {
|
|
54
|
-
captureError(error, { event, tags: ["request", "response"] });
|
|
55
|
-
});
|
|
56
|
-
return response;
|
|
66
|
+
return h3App.request(req, void 0, req.context);
|
|
57
67
|
};
|
|
58
68
|
if (import.meta._asyncContext) {
|
|
59
69
|
const originalFetchHandler = fetchHandler;
|
|
@@ -89,27 +99,35 @@ function createNitroApp() {
|
|
|
89
99
|
};
|
|
90
100
|
return app;
|
|
91
101
|
}
|
|
92
|
-
function createH3App(
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
captureError(error, { event, tags: ["request"] });
|
|
98
|
-
return errorHandler(error, event);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
h3App._findRoute = (event) => findRoute(event.req.method, event.url.pathname);
|
|
102
|
+
function createH3App(config) {
|
|
103
|
+
const h3App = new H3Core(config);
|
|
104
|
+
if (hasRoutes) {
|
|
105
|
+
h3App._findRoute = (event) => findRoute(event.req.method, event.url.pathname);
|
|
106
|
+
}
|
|
102
107
|
h3App._getMiddleware = (event, route) => {
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
const needsRouting = hasRouteRules || hasRoutedMiddleware;
|
|
109
|
+
const pathname = needsRouting ? event.url.pathname : void 0;
|
|
110
|
+
const method = needsRouting ? event.req.method : void 0;
|
|
111
|
+
const middleware = [];
|
|
112
|
+
if (hasRouteRules) {
|
|
113
|
+
const routeRules = getRouteRules(method, pathname);
|
|
114
|
+
event.context.routeRules = routeRules?.routeRules;
|
|
115
|
+
if (routeRules?.routeRuleMiddleware.length) {
|
|
116
|
+
middleware.push(...routeRules.routeRuleMiddleware);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (hasGlobalMiddleware) {
|
|
120
|
+
middleware.push(...globalMiddleware);
|
|
121
|
+
}
|
|
122
|
+
if (hasRoutedMiddleware) {
|
|
123
|
+
middleware.push(
|
|
124
|
+
...findRoutedMiddleware(method, pathname).map((r) => r.data)
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
if (route?.data?.middleware?.length) {
|
|
128
|
+
middleware.push(...route.data.middleware);
|
|
129
|
+
}
|
|
130
|
+
return middleware;
|
|
113
131
|
};
|
|
114
132
|
return h3App;
|
|
115
133
|
}
|
|
@@ -22,7 +22,7 @@ export function setupGracefulShutdown(listener, nitroApp) {
|
|
|
22
22
|
console.warn("Graceful shutdown timeout, force exiting...");
|
|
23
23
|
resolve();
|
|
24
24
|
}, shutdownConfig.timeout);
|
|
25
|
-
nitroApp.hooks.callHook("close").catch((error) => {
|
|
25
|
+
Promise.resolve(nitroApp.hooks.callHook("close")).catch((error) => {
|
|
26
26
|
console.error(error);
|
|
27
27
|
}).finally(() => {
|
|
28
28
|
clearTimeout(timeout);
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HTTPMethod, HTTPEvent, H3Core, H3EventContext, HTTPHandler, HTTPError, ProxyOptions, Middleware } from 'h3';
|
|
2
2
|
import { FetchRequest, FetchOptions, FetchResponse } from 'ofetch';
|
|
3
|
-
import { Hookable, NestedHooks } from 'hookable';
|
|
3
|
+
import { HookableCore, Hookable, NestedHooks } from 'hookable';
|
|
4
4
|
import { ServerRequestContext, ServerRequest } from 'srvx';
|
|
5
5
|
import { Jiti, JitiOptions } from 'jiti';
|
|
6
6
|
import { Stats } from 'fs';
|
|
@@ -147,7 +147,7 @@ interface CachedEventHandlerOptions extends Omit<CacheOptions<ResponseCacheEntry
|
|
|
147
147
|
|
|
148
148
|
interface NitroApp {
|
|
149
149
|
_h3?: H3Core;
|
|
150
|
-
hooks:
|
|
150
|
+
hooks: HookableCore<NitroRuntimeHooks>;
|
|
151
151
|
fetch: (req: string | URL | Request, init?: RequestInit, context?: ServerRequestContext | H3EventContext) => Promise<Response>;
|
|
152
152
|
captureError: CaptureError;
|
|
153
153
|
}
|
|
@@ -3817,6 +3817,7 @@ declare class Router<T> {
|
|
|
3817
3817
|
constructor(matchAll?: boolean);
|
|
3818
3818
|
get routes(): Route<T>[];
|
|
3819
3819
|
_update(routes: Route<T>[]): void;
|
|
3820
|
+
hasRoutes(): boolean;
|
|
3820
3821
|
compileToString(opts?: RouterCompilerOptions): string;
|
|
3821
3822
|
match(method: string, path: string): undefined | T;
|
|
3822
3823
|
matchAll(method: string, path: string): T[];
|
package/dist/vite.mjs
CHANGED
|
@@ -2,7 +2,6 @@ export { n as nitro } from './_chunks/plugin.mjs';
|
|
|
2
2
|
import './_chunks/index.mjs';
|
|
3
3
|
import 'consola';
|
|
4
4
|
import 'hookable';
|
|
5
|
-
import 'nitro/runtime/meta';
|
|
6
5
|
import 'node:fs';
|
|
7
6
|
import 'node:fs/promises';
|
|
8
7
|
import 'node:url';
|
|
@@ -41,6 +40,7 @@ import 'youch';
|
|
|
41
40
|
import 'source-map';
|
|
42
41
|
import 'srvx';
|
|
43
42
|
import 'klona/full';
|
|
43
|
+
import 'nitro/runtime/meta';
|
|
44
44
|
import 'node:module';
|
|
45
45
|
import 'ofetch';
|
|
46
46
|
import 'klona';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nitro-nightly",
|
|
3
|
-
"version": "3.1.0-20251026-
|
|
3
|
+
"version": "3.1.0-20251026-232057-ce388de2",
|
|
4
4
|
"description": "Build and Deploy Universal JavaScript Servers",
|
|
5
5
|
"homepage": "https://nitro.build",
|
|
6
6
|
"repository": "nitrojs/nitro",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"fs-extra": "^11.3.2",
|
|
121
121
|
"get-port-please": "^3.2.0",
|
|
122
122
|
"gzip-size": "^7.0.0",
|
|
123
|
-
"hookable": "^
|
|
123
|
+
"hookable": "^6.0.0-rc.1",
|
|
124
124
|
"httpxy": "^0.1.7",
|
|
125
125
|
"klona": "^2.0.6",
|
|
126
126
|
"knitwork": "^1.2.0",
|