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,290 +1,267 @@
1
+ //#region src/utils.ts
1
2
  function flatHooks(configHooks, hooks = {}, parentName) {
2
- for (const key in configHooks) {
3
- const subHook = configHooks[key];
4
- const name = parentName ? `${parentName}:${key}` : key;
5
- if (typeof subHook === "object" && subHook !== null) {
6
- flatHooks(subHook, hooks, name);
7
- } else if (typeof subHook === "function") {
8
- hooks[name] = subHook;
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
- const finalHooks = {};
15
- for (const hook of hooks) {
16
- const flatenHook = flatHooks(hook);
17
- for (const key in flatenHook) {
18
- if (finalHooks[key]) {
19
- finalHooks[key].push(flatenHook[key]);
20
- } else {
21
- finalHooks[key] = [flatenHook[key]];
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
- return tasks.reduce(
37
- (promise, task) => promise.then(() => function_(task)),
38
- Promise.resolve()
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
- const name = args.shift();
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
- const name = args.shift();
54
- const task = createTask(name);
55
- return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));
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
- return hooks.reduce(
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
- return Promise.all(hooks.map((hook) => hook(...args || [])));
55
+ return Promise.all(hooks.map((hook) => hook(...args || [])));
65
56
  }
66
57
  function callEachWith(callbacks, arg0) {
67
- for (const callback of [...callbacks]) {
68
- callback(arg0);
69
- }
58
+ for (const callback of [...callbacks]) callback(arg0);
70
59
  }
71
60
 
72
- class Hookable {
73
- constructor() {
74
- this._hooks = {};
75
- this._before = void 0;
76
- this._after = void 0;
77
- this._deprecatedMessages = void 0;
78
- this._deprecatedHooks = {};
79
- this.hook = this.hook.bind(this);
80
- this.callHook = this.callHook.bind(this);
81
- this.callHookWith = this.callHookWith.bind(this);
82
- }
83
- hook(name, function_, options = {}) {
84
- if (!name || typeof function_ !== "function") {
85
- return () => {
86
- };
87
- }
88
- const originalName = name;
89
- let dep;
90
- while (this._deprecatedHooks[name]) {
91
- dep = this._deprecatedHooks[name];
92
- name = dep.to;
93
- }
94
- if (dep && !options.allowDeprecated) {
95
- let message = dep.message;
96
- if (!message) {
97
- message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : "");
98
- }
99
- if (!this._deprecatedMessages) {
100
- this._deprecatedMessages = /* @__PURE__ */ new Set();
101
- }
102
- if (!this._deprecatedMessages.has(message)) {
103
- console.warn(message);
104
- this._deprecatedMessages.add(message);
105
- }
106
- }
107
- if (!function_.name) {
108
- try {
109
- Object.defineProperty(function_, "name", {
110
- get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb",
111
- configurable: true
112
- });
113
- } catch {
114
- }
115
- }
116
- this._hooks[name] = this._hooks[name] || [];
117
- this._hooks[name].push(function_);
118
- return () => {
119
- if (function_) {
120
- this.removeHook(name, function_);
121
- function_ = void 0;
122
- }
123
- };
124
- }
125
- hookOnce(name, function_) {
126
- let _unreg;
127
- let _function = (...arguments_) => {
128
- if (typeof _unreg === "function") {
129
- _unreg();
130
- }
131
- _unreg = void 0;
132
- _function = void 0;
133
- return function_(...arguments_);
134
- };
135
- _unreg = this.hook(name, _function);
136
- return _unreg;
137
- }
138
- removeHook(name, function_) {
139
- if (this._hooks[name]) {
140
- const index = this._hooks[name].indexOf(function_);
141
- if (index !== -1) {
142
- this._hooks[name].splice(index, 1);
143
- }
144
- if (this._hooks[name].length === 0) {
145
- delete this._hooks[name];
146
- }
147
- }
148
- }
149
- deprecateHook(name, deprecated) {
150
- this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated;
151
- const _hooks = this._hooks[name] || [];
152
- delete this._hooks[name];
153
- for (const hook of _hooks) {
154
- this.hook(name, hook);
155
- }
156
- }
157
- deprecateHooks(deprecatedHooks) {
158
- Object.assign(this._deprecatedHooks, deprecatedHooks);
159
- for (const name in deprecatedHooks) {
160
- this.deprecateHook(name, deprecatedHooks[name]);
161
- }
162
- }
163
- addHooks(configHooks) {
164
- const hooks = flatHooks(configHooks);
165
- const removeFns = Object.keys(hooks).map(
166
- (key) => this.hook(key, hooks[key])
167
- );
168
- return () => {
169
- for (const unreg of removeFns.splice(0, removeFns.length)) {
170
- unreg();
171
- }
172
- };
173
- }
174
- removeHooks(configHooks) {
175
- const hooks = flatHooks(configHooks);
176
- for (const key in hooks) {
177
- this.removeHook(key, hooks[key]);
178
- }
179
- }
180
- removeAllHooks() {
181
- for (const key in this._hooks) {
182
- delete this._hooks[key];
183
- }
184
- }
185
- callHook(name, ...arguments_) {
186
- arguments_.unshift(name);
187
- return this.callHookWith(serialTaskCaller, name, ...arguments_);
188
- }
189
- callHookParallel(name, ...arguments_) {
190
- arguments_.unshift(name);
191
- return this.callHookWith(parallelTaskCaller, name, ...arguments_);
192
- }
193
- callHookWith(caller, name, ...arguments_) {
194
- const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;
195
- if (this._before) {
196
- callEachWith(this._before, event);
197
- }
198
- const result = caller(
199
- name in this._hooks ? [...this._hooks[name]] : [],
200
- arguments_
201
- );
202
- if (result instanceof Promise) {
203
- return result.finally(() => {
204
- if (this._after && event) {
205
- callEachWith(this._after, event);
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
- return new Hookable();
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
- const options = {
246
- inspect: isBrowser,
247
- group: isBrowser,
248
- filter: () => true,
249
- ..._options
250
- };
251
- const _filter = options.filter;
252
- const filter = typeof _filter === "string" ? (name) => name.startsWith(_filter) : _filter;
253
- const _tag = options.tag ? `[${options.tag}] ` : "";
254
- const logPrefix = (event) => _tag + event.name + "".padEnd(event._id, "\0");
255
- const _idCtr = {};
256
- const unsubscribeBefore = hooks.beforeEach((event) => {
257
- if (filter !== void 0 && !filter(event.name)) {
258
- return;
259
- }
260
- _idCtr[event.name] = _idCtr[event.name] || 0;
261
- event._id = _idCtr[event.name]++;
262
- console.time(logPrefix(event));
263
- });
264
- const unsubscribeAfter = hooks.afterEach((event) => {
265
- if (filter !== void 0 && !filter(event.name)) {
266
- return;
267
- }
268
- if (options.group) {
269
- console.groupCollapsed(event.name);
270
- }
271
- if (options.inspect) {
272
- console.timeLog(logPrefix(event), event.args);
273
- } else {
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
- export { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };
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": "5.5.3",
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
- "import": "./dist/index.mjs",
16
- "types": "./dist/index.d.ts",
17
- "require": "./dist/index.cjs"
17
+ ".": "./dist/index.mjs"
18
18
  },
19
- "main": "./dist/index.cjs",
20
- "module": "./dist/index.mjs",
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
- "build": "unbuild",
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 --ext .ts,.js,.mjs,.cjs . && prettier -c src test",
43
- "lint:fix": "eslint --cache --ext .ts,.js,.mjs,.cjs . --fix && prettier -c src test -w",
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 --push && pnpm publish",
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
  }