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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/dist/{_chunks/build2.mjs → _build/build.mjs} +108 -58
  2. package/dist/_build/build2.mjs +556 -0
  3. package/dist/_build/info.mjs +1002 -0
  4. package/dist/_build/prepare.mjs +1511 -0
  5. package/dist/_build/snapshot.mjs +185 -0
  6. package/dist/{_chunks/plugin.mjs → _build/vite.mjs} +295 -296
  7. package/dist/_build/vite2.mjs +149 -0
  8. package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +189 -0
  9. package/dist/_chunks/_deps/@jridgewell/remapping.mjs +137 -0
  10. package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +231 -0
  11. package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +173 -0
  12. package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +170 -0
  13. package/dist/_chunks/_deps/@pi0/vite-plugin-fullstack.mjs +575 -0
  14. package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +89 -0
  15. package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +2376 -0
  16. package/dist/_chunks/{index2.mjs → _deps/@rollup/plugin-inject.mjs} +5 -90
  17. package/dist/_chunks/_deps/@rollup/plugin-json.mjs +37 -0
  18. package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +1386 -0
  19. package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +133 -0
  20. package/dist/_chunks/_deps/@rollup/pluginutils.mjs +346 -0
  21. package/dist/_chunks/_deps/acorn.mjs +6225 -0
  22. package/dist/_chunks/_deps/c12.mjs +510 -0
  23. package/dist/_chunks/_deps/chokidar.mjs +1428 -0
  24. package/dist/_chunks/_deps/citty.mjs +460 -0
  25. package/dist/_chunks/_deps/commondir.mjs +77 -0
  26. package/dist/_chunks/_deps/compatx.mjs +76 -0
  27. package/dist/_chunks/_deps/confbox.mjs +300 -0
  28. package/dist/_chunks/_deps/debug.mjs +885 -0
  29. package/dist/_chunks/_deps/deepmerge.mjs +147 -0
  30. package/dist/_chunks/_deps/depd.mjs +550 -0
  31. package/dist/_chunks/_deps/dot-prop.mjs +282 -0
  32. package/dist/_chunks/_deps/dotenv.mjs +555 -0
  33. package/dist/_chunks/_deps/duplexer.mjs +1 -0
  34. package/dist/_chunks/_deps/ee-first.mjs +104 -0
  35. package/dist/_chunks/_deps/encodeurl.mjs +69 -0
  36. package/dist/_chunks/_deps/escape-html.mjs +87 -0
  37. package/dist/_chunks/_deps/escape-string-regexp.mjs +13 -0
  38. package/dist/_chunks/_deps/estree-walker.mjs +433 -0
  39. package/dist/_chunks/_deps/etag.mjs +147 -0
  40. package/dist/_chunks/_deps/exsolve.mjs +1416 -0
  41. package/dist/_chunks/_deps/fdir.mjs +569 -0
  42. package/dist/_chunks/_deps/fresh.mjs +145 -0
  43. package/dist/_chunks/_deps/function-bind.mjs +106 -0
  44. package/dist/_chunks/{index4.mjs → _deps/giget.mjs} +21 -776
  45. package/dist/_chunks/_deps/gzip-size.mjs +19 -0
  46. package/dist/_chunks/_deps/hasown.mjs +19 -0
  47. package/dist/_chunks/_deps/http-errors.mjs +307 -0
  48. package/dist/_chunks/_deps/httpxy.mjs +580 -0
  49. package/dist/_chunks/_deps/inherits.mjs +57 -0
  50. package/dist/_chunks/_deps/is-core-module.mjs +596 -0
  51. package/dist/_chunks/_deps/is-module.mjs +25 -0
  52. package/dist/_chunks/_deps/is-reference.mjs +31 -0
  53. package/dist/_chunks/_deps/js-tokens.mjs +411 -0
  54. package/dist/_chunks/_deps/klona.mjs +137 -0
  55. package/dist/_chunks/_deps/knitwork.mjs +172 -0
  56. package/dist/_chunks/_deps/local-pkg.mjs +163 -0
  57. package/dist/_chunks/_deps/magic-string.mjs +1296 -0
  58. package/dist/_chunks/_deps/mime-db.mjs +11685 -0
  59. package/dist/_chunks/_deps/mime-types.mjs +287 -0
  60. package/dist/_chunks/_deps/mime.mjs +1172 -0
  61. package/dist/_chunks/_deps/mlly.mjs +2413 -0
  62. package/dist/_chunks/_deps/ms.mjs +172 -0
  63. package/dist/_chunks/_deps/node-fetch-native.mjs +3 -0
  64. package/dist/_chunks/_deps/nypm.mjs +219 -0
  65. package/dist/_chunks/_deps/on-finished.mjs +246 -0
  66. package/dist/_chunks/_deps/parseurl.mjs +168 -0
  67. package/dist/_chunks/_deps/path-parse.mjs +85 -0
  68. package/dist/_chunks/{pathe.M-eThtNZ.mjs → _deps/pathe.mjs} +48 -1
  69. package/dist/_chunks/_deps/perfect-debounce.mjs +88 -0
  70. package/dist/_chunks/_deps/picomatch.mjs +2144 -0
  71. package/dist/_chunks/_deps/pkg-types.mjs +247 -0
  72. package/dist/_chunks/{snapshot.mjs → _deps/pretty-bytes.mjs} +1 -105
  73. package/dist/_chunks/_deps/quansync.mjs +99 -0
  74. package/dist/_chunks/_deps/range-parser.mjs +171 -0
  75. package/dist/_chunks/_deps/rc9.mjs +219 -0
  76. package/dist/_chunks/_deps/readdirp.mjs +245 -0
  77. package/dist/_chunks/_deps/resolve.mjs +1260 -0
  78. package/dist/_chunks/_deps/rou3.mjs +326 -0
  79. package/dist/_chunks/_deps/send.mjs +1022 -0
  80. package/dist/_chunks/_deps/serve-static.mjs +228 -0
  81. package/dist/_chunks/_deps/setprototypeof.mjs +26 -0
  82. package/dist/_chunks/_deps/statuses.mjs +457 -0
  83. package/dist/_chunks/_deps/std-env.mjs +3 -0
  84. package/dist/_chunks/_deps/strip-literal.mjs +67 -0
  85. package/dist/_chunks/_deps/supports-color.mjs +44 -0
  86. package/dist/_chunks/_deps/tinyexec.mjs +552 -0
  87. package/dist/_chunks/_deps/tinyglobby.mjs +293 -0
  88. package/dist/_chunks/_deps/toidentifier.mjs +41 -0
  89. package/dist/_chunks/_deps/ultrahtml.mjs +3 -0
  90. package/dist/_chunks/_deps/unimport.mjs +2267 -0
  91. package/dist/_chunks/_deps/unplugin-utils.mjs +65 -0
  92. package/dist/_chunks/_deps/unplugin.mjs +1294 -0
  93. package/dist/_chunks/_deps/untyped.mjs +375 -0
  94. package/dist/_chunks/{info.mjs → _deps/unwasm.mjs} +8 -4206
  95. package/dist/_chunks/_deps/webpack-virtual-modules.mjs +360 -0
  96. package/dist/_chunks/_presets/_all.mjs +59 -0
  97. package/dist/_chunks/_presets/_nitro.mjs +74 -0
  98. package/dist/_chunks/_presets/_resolve.mjs +64 -0
  99. package/dist/_chunks/_presets/_static.mjs +69 -0
  100. package/dist/_chunks/_presets/_types.mjs +3 -0
  101. package/dist/_chunks/_presets/_utils.mjs +31 -0
  102. package/dist/_chunks/_presets/alwaysdata.mjs +17 -0
  103. package/dist/_chunks/_presets/aws-amplify.mjs +111 -0
  104. package/dist/_chunks/_presets/aws-lambda.mjs +23 -0
  105. package/dist/_chunks/_presets/azure.mjs +162 -0
  106. package/dist/_chunks/_presets/bun.mjs +19 -0
  107. package/dist/_chunks/_presets/cleavr.mjs +15 -0
  108. package/dist/_chunks/_presets/cloudflare.mjs +608 -0
  109. package/dist/_chunks/_presets/deno.mjs +196 -0
  110. package/dist/_chunks/_presets/digitalocean.mjs +14 -0
  111. package/dist/_chunks/_presets/firebase.mjs +47 -0
  112. package/dist/_chunks/_presets/flightcontrol.mjs +14 -0
  113. package/dist/_chunks/_presets/genezio.mjs +13 -0
  114. package/dist/_chunks/_presets/heroku.mjs +14 -0
  115. package/dist/_chunks/_presets/iis.mjs +194 -0
  116. package/dist/_chunks/_presets/index.mjs +62 -0
  117. package/dist/_chunks/_presets/koyeb.mjs +14 -0
  118. package/dist/_chunks/_presets/netlify.mjs +241 -0
  119. package/dist/_chunks/_presets/node.mjs +54 -0
  120. package/dist/_chunks/_presets/platform.mjs +14 -0
  121. package/dist/_chunks/_presets/render.mjs +14 -0
  122. package/dist/_chunks/_presets/standard.mjs +23 -0
  123. package/dist/_chunks/_presets/stormkit.mjs +18 -0
  124. package/dist/_chunks/_presets/vercel.mjs +375 -0
  125. package/dist/_chunks/_presets/winterjs.mjs +22 -0
  126. package/dist/_chunks/_presets/zeabur.mjs +69 -0
  127. package/dist/_chunks/_presets/zerops.mjs +27 -0
  128. package/dist/_chunks/app.mjs +9 -19206
  129. package/dist/_chunks/{index3.mjs → builder.mjs} +560 -970
  130. package/dist/_chunks/server.mjs +6 -4
  131. package/dist/{cli → _cli}/build.mjs +3 -8
  132. package/dist/{cli → _cli}/dev.mjs +38 -12
  133. package/dist/{cli/index2.mjs → _cli/index.mjs} +1 -2
  134. package/dist/{cli → _cli}/list.mjs +3 -4
  135. package/dist/{cli → _cli}/prepare.mjs +3 -4
  136. package/dist/{cli → _cli}/run.mjs +3 -4
  137. package/dist/{index.d.mts → builder.d.mts} +11 -11
  138. package/dist/builder.mjs +117 -0
  139. package/dist/cli/index.mjs +7 -464
  140. package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
  141. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
  142. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  143. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  144. package/dist/node_modules/cookie-es/package.json +37 -0
  145. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  146. package/dist/node_modules/hookable/package.json +29 -26
  147. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  148. package/dist/node_modules/rendu/package.json +47 -0
  149. package/dist/presets/_nitro/runtime/nitro-dev.mjs +4 -7
  150. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +5 -4
  151. package/dist/presets/azure/runtime/azure-swa.mjs +1 -1
  152. package/dist/presets/cloudflare/runtime/_module-handler.mjs +7 -6
  153. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +4 -5
  154. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +7 -10
  155. package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +21 -0
  156. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  157. package/dist/presets/node/runtime/node-server.mjs +1 -1
  158. package/dist/runtime/index.d.mts +1 -1
  159. package/dist/runtime/index.mjs +1 -1
  160. package/dist/runtime/internal/app.d.mts +3 -1
  161. package/dist/runtime/internal/app.mjs +90 -64
  162. package/dist/runtime/internal/error/prod.d.mts +3 -2
  163. package/dist/runtime/internal/error/prod.mjs +9 -13
  164. package/dist/runtime/internal/renderer.mjs +4 -4
  165. package/dist/runtime/internal/routes/dev-tasks.d.mts +30 -2
  166. package/dist/runtime/internal/shutdown.d.mts +1 -2
  167. package/dist/runtime/internal/shutdown.mjs +3 -2
  168. package/dist/runtime/internal/task.mjs +1 -2
  169. package/dist/types/index.d.mts +1603 -10
  170. package/dist/vite.d.mts +5 -0
  171. package/dist/vite.mjs +94 -30
  172. package/lib/index.mjs +1 -0
  173. package/lib/indexd.mts +1 -0
  174. package/lib/runtime/meta.mjs +35 -0
  175. package/package.json +40 -41
  176. package/dist/_chunks/build.mjs +0 -84
  177. package/dist/_chunks/build3.mjs +0 -6452
  178. package/dist/_chunks/detect-acorn.mjs +0 -503
  179. package/dist/_chunks/index.mjs +0 -22242
  180. package/dist/_chunks/json5.mjs +0 -68
  181. package/dist/_chunks/jsonc.mjs +0 -51
  182. package/dist/_chunks/toml.mjs +0 -259
  183. package/dist/_chunks/yaml.mjs +0 -86
  184. package/dist/index.mjs +0 -55
  185. package/dist/node_modules/klona/dist/index.mjs +0 -81
  186. package/dist/node_modules/klona/full/index.mjs +0 -53
  187. package/dist/node_modules/klona/package.json +0 -74
  188. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  189. package/dist/node_modules/std-env/package.json +0 -46
  190. package/dist/presets.mjs +0 -2460
  191. package/dist/runtime/internal/debug.d.mts +0 -2
  192. package/dist/runtime/internal/debug.mjs +0 -5
  193. package/lib/runtime-meta.mjs +0 -38
  194. /package/dist/{cli → _cli}/common.mjs +0 -0
  195. /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
@@ -0,0 +1,168 @@
1
+ import require$$0 from 'url';
2
+
3
+ var parseurl = {exports: {}};
4
+
5
+ /*!
6
+ * parseurl
7
+ * Copyright(c) 2014 Jonathan Ong
8
+ * Copyright(c) 2014-2017 Douglas Christopher Wilson
9
+ * MIT Licensed
10
+ */
11
+
12
+ var hasRequiredParseurl;
13
+
14
+ function requireParseurl () {
15
+ if (hasRequiredParseurl) return parseurl.exports;
16
+ hasRequiredParseurl = 1;
17
+
18
+ /**
19
+ * Module dependencies.
20
+ * @private
21
+ */
22
+
23
+ var url = require$$0;
24
+ var parse = url.parse;
25
+ var Url = url.Url;
26
+
27
+ /**
28
+ * Module exports.
29
+ * @public
30
+ */
31
+
32
+ parseurl.exports = parseurl$1;
33
+ parseurl.exports.original = originalurl;
34
+
35
+ /**
36
+ * Parse the `req` url with memoization.
37
+ *
38
+ * @param {ServerRequest} req
39
+ * @return {Object}
40
+ * @public
41
+ */
42
+
43
+ function parseurl$1 (req) {
44
+ var url = req.url;
45
+
46
+ if (url === undefined) {
47
+ // URL is undefined
48
+ return undefined
49
+ }
50
+
51
+ var parsed = req._parsedUrl;
52
+
53
+ if (fresh(url, parsed)) {
54
+ // Return cached URL parse
55
+ return parsed
56
+ }
57
+
58
+ // Parse the URL
59
+ parsed = fastparse(url);
60
+ parsed._raw = url;
61
+
62
+ return (req._parsedUrl = parsed)
63
+ }
64
+ /**
65
+ * Parse the `req` original url with fallback and memoization.
66
+ *
67
+ * @param {ServerRequest} req
68
+ * @return {Object}
69
+ * @public
70
+ */
71
+
72
+ function originalurl (req) {
73
+ var url = req.originalUrl;
74
+
75
+ if (typeof url !== 'string') {
76
+ // Fallback
77
+ return parseurl$1(req)
78
+ }
79
+
80
+ var parsed = req._parsedOriginalUrl;
81
+
82
+ if (fresh(url, parsed)) {
83
+ // Return cached URL parse
84
+ return parsed
85
+ }
86
+
87
+ // Parse the URL
88
+ parsed = fastparse(url);
89
+ parsed._raw = url;
90
+
91
+ return (req._parsedOriginalUrl = parsed)
92
+ }
93
+ /**
94
+ * Parse the `str` url with fast-path short-cut.
95
+ *
96
+ * @param {string} str
97
+ * @return {Object}
98
+ * @private
99
+ */
100
+
101
+ function fastparse (str) {
102
+ if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {
103
+ return parse(str)
104
+ }
105
+
106
+ var pathname = str;
107
+ var query = null;
108
+ var search = null;
109
+
110
+ // This takes the regexp from https://github.com/joyent/node/pull/7878
111
+ // Which is /^(\/[^?#\s]*)(\?[^#\s]*)?$/
112
+ // And unrolls it into a for loop
113
+ for (var i = 1; i < str.length; i++) {
114
+ switch (str.charCodeAt(i)) {
115
+ case 0x3f: /* ? */
116
+ if (search === null) {
117
+ pathname = str.substring(0, i);
118
+ query = str.substring(i + 1);
119
+ search = str.substring(i);
120
+ }
121
+ break
122
+ case 0x09: /* \t */
123
+ case 0x0a: /* \n */
124
+ case 0x0c: /* \f */
125
+ case 0x0d: /* \r */
126
+ case 0x20: /* */
127
+ case 0x23: /* # */
128
+ case 0xa0:
129
+ case 0xfeff:
130
+ return parse(str)
131
+ }
132
+ }
133
+
134
+ var url = Url !== undefined
135
+ ? new Url()
136
+ : {};
137
+
138
+ url.path = str;
139
+ url.href = str;
140
+ url.pathname = pathname;
141
+
142
+ if (search !== null) {
143
+ url.query = query;
144
+ url.search = search;
145
+ }
146
+
147
+ return url
148
+ }
149
+
150
+ /**
151
+ * Determine if parsed is still fresh for url.
152
+ *
153
+ * @param {string} url
154
+ * @param {object} parsedUrl
155
+ * @return {boolean}
156
+ * @private
157
+ */
158
+
159
+ function fresh (url, parsedUrl) {
160
+ return typeof parsedUrl === 'object' &&
161
+ parsedUrl !== null &&
162
+ (Url === undefined || parsedUrl instanceof Url) &&
163
+ parsedUrl._raw === url
164
+ }
165
+ return parseurl.exports;
166
+ }
167
+
168
+ export { requireParseurl as r };
@@ -0,0 +1,85 @@
1
+ var pathParse = {exports: {}};
2
+
3
+ var hasRequiredPathParse;
4
+
5
+ function requirePathParse () {
6
+ if (hasRequiredPathParse) return pathParse.exports;
7
+ hasRequiredPathParse = 1;
8
+
9
+ var isWindows = process.platform === 'win32';
10
+
11
+ // Regex to split a windows path into into [dir, root, basename, name, ext]
12
+ var splitWindowsRe =
13
+ /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/;
14
+
15
+ var win32 = {};
16
+
17
+ function win32SplitPath(filename) {
18
+ return splitWindowsRe.exec(filename).slice(1);
19
+ }
20
+
21
+ win32.parse = function(pathString) {
22
+ if (typeof pathString !== 'string') {
23
+ throw new TypeError(
24
+ "Parameter 'pathString' must be a string, not " + typeof pathString
25
+ );
26
+ }
27
+ var allParts = win32SplitPath(pathString);
28
+ if (!allParts || allParts.length !== 5) {
29
+ throw new TypeError("Invalid path '" + pathString + "'");
30
+ }
31
+ return {
32
+ root: allParts[1],
33
+ dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),
34
+ base: allParts[2],
35
+ ext: allParts[4],
36
+ name: allParts[3]
37
+ };
38
+ };
39
+
40
+
41
+
42
+ // Split a filename into [dir, root, basename, name, ext], unix version
43
+ // 'root' is just a slash, or nothing.
44
+ var splitPathRe =
45
+ /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/;
46
+ var posix = {};
47
+
48
+
49
+ function posixSplitPath(filename) {
50
+ return splitPathRe.exec(filename).slice(1);
51
+ }
52
+
53
+
54
+ posix.parse = function(pathString) {
55
+ if (typeof pathString !== 'string') {
56
+ throw new TypeError(
57
+ "Parameter 'pathString' must be a string, not " + typeof pathString
58
+ );
59
+ }
60
+ var allParts = posixSplitPath(pathString);
61
+ if (!allParts || allParts.length !== 5) {
62
+ throw new TypeError("Invalid path '" + pathString + "'");
63
+ }
64
+
65
+ return {
66
+ root: allParts[1],
67
+ dir: allParts[0].slice(0, -1),
68
+ base: allParts[2],
69
+ ext: allParts[4],
70
+ name: allParts[3],
71
+ };
72
+ };
73
+
74
+
75
+ if (isWindows)
76
+ pathParse.exports = win32.parse;
77
+ else /* posix */
78
+ pathParse.exports = posix.parse;
79
+
80
+ pathParse.exports.posix = posix.parse;
81
+ pathParse.exports.win32 = win32.parse;
82
+ return pathParse.exports;
83
+ }
84
+
85
+ export { requirePathParse as r };
@@ -201,4 +201,51 @@ const parse = function(p) {
201
201
  };
202
202
  };
203
203
 
204
- export { relative as a, basename as b, normalizeWindowsPath as c, dirname as d, extname as e, isAbsolute as i, join as j, normalize as n, parse as p, resolve as r };
204
+ const pathSeparators = /* @__PURE__ */ new Set(["/", "\\", void 0]);
205
+ const normalizedAliasSymbol = Symbol.for("pathe:normalizedAlias");
206
+ function normalizeAliases(_aliases) {
207
+ if (_aliases[normalizedAliasSymbol]) {
208
+ return _aliases;
209
+ }
210
+ const aliases = Object.fromEntries(
211
+ Object.entries(_aliases).sort(([a], [b]) => _compareAliases(a, b))
212
+ );
213
+ for (const key in aliases) {
214
+ for (const alias in aliases) {
215
+ if (alias === key || key.startsWith(alias)) {
216
+ continue;
217
+ }
218
+ if (aliases[key]?.startsWith(alias) && pathSeparators.has(aliases[key][alias.length])) {
219
+ aliases[key] = aliases[alias] + aliases[key].slice(alias.length);
220
+ }
221
+ }
222
+ }
223
+ Object.defineProperty(aliases, normalizedAliasSymbol, {
224
+ value: true,
225
+ enumerable: false
226
+ });
227
+ return aliases;
228
+ }
229
+ function resolveAlias(path, aliases) {
230
+ const _path = normalizeWindowsPath(path);
231
+ aliases = normalizeAliases(aliases);
232
+ for (const [alias, to] of Object.entries(aliases)) {
233
+ if (!_path.startsWith(alias)) {
234
+ continue;
235
+ }
236
+ const _alias = hasTrailingSlash(alias) ? alias.slice(0, -1) : alias;
237
+ if (hasTrailingSlash(_path[_alias.length])) {
238
+ return join(to, _path.slice(alias.length));
239
+ }
240
+ }
241
+ return _path;
242
+ }
243
+ function _compareAliases(a, b) {
244
+ return b.split("/").length - a.split("/").length;
245
+ }
246
+ function hasTrailingSlash(path = "/") {
247
+ const lastChar = path[path.length - 1];
248
+ return lastChar === "/" || lastChar === "\\";
249
+ }
250
+
251
+ export { relative as a, basename as b, resolveAlias as c, dirname as d, extname as e, isAbsolute as i, join as j, normalize as n, parse as p, resolve as r };
@@ -0,0 +1,88 @@
1
+ //#region src/index.ts
2
+ const DEBOUNCE_DEFAULTS = { trailing: true };
3
+ /**
4
+ Debounce functions
5
+ @param fn - Promise-returning/async function to debounce.
6
+ @param wait - Milliseconds to wait before calling `fn`. Default value is 25ms
7
+ @returns A function that delays calling `fn` until after `wait` milliseconds have elapsed since the last time it was called.
8
+ @example
9
+ ```
10
+ import { debounce } from 'perfect-debounce';
11
+ const expensiveCall = async input => input;
12
+ const debouncedFn = debounce(expensiveCall, 200);
13
+ for (const number of [1, 2, 3]) {
14
+ console.log(await debouncedFn(number));
15
+ }
16
+ //=> 1
17
+ //=> 2
18
+ //=> 3
19
+ ```
20
+ */
21
+ function debounce(fn, wait = 25, options = {}) {
22
+ options = {
23
+ ...DEBOUNCE_DEFAULTS,
24
+ ...options
25
+ };
26
+ if (!Number.isFinite(wait)) throw new TypeError("Expected `wait` to be a finite number");
27
+ let leadingValue;
28
+ let timeout;
29
+ let resolveList = [];
30
+ let currentPromise;
31
+ let trailingArgs;
32
+ const applyFn = (_this, args) => {
33
+ currentPromise = _applyPromised(fn, _this, args);
34
+ currentPromise.finally(() => {
35
+ currentPromise = null;
36
+ if (options.trailing && trailingArgs && !timeout) {
37
+ const promise = applyFn(_this, trailingArgs);
38
+ trailingArgs = null;
39
+ return promise;
40
+ }
41
+ });
42
+ return currentPromise;
43
+ };
44
+ const debounced = function(...args) {
45
+ if (options.trailing) trailingArgs = args;
46
+ if (currentPromise) return currentPromise;
47
+ return new Promise((resolve) => {
48
+ const shouldCallNow = !timeout && options.leading;
49
+ clearTimeout(timeout);
50
+ timeout = setTimeout(() => {
51
+ timeout = null;
52
+ const promise = options.leading ? leadingValue : applyFn(this, args);
53
+ trailingArgs = null;
54
+ for (const _resolve of resolveList) _resolve(promise);
55
+ resolveList = [];
56
+ }, wait);
57
+ if (shouldCallNow) {
58
+ leadingValue = applyFn(this, args);
59
+ resolve(leadingValue);
60
+ } else resolveList.push(resolve);
61
+ });
62
+ };
63
+ const _clearTimeout = (timer) => {
64
+ if (timer) {
65
+ clearTimeout(timer);
66
+ timeout = null;
67
+ }
68
+ };
69
+ debounced.isPending = () => !!timeout;
70
+ debounced.cancel = () => {
71
+ _clearTimeout(timeout);
72
+ resolveList = [];
73
+ trailingArgs = null;
74
+ };
75
+ debounced.flush = () => {
76
+ _clearTimeout(timeout);
77
+ if (!trailingArgs || currentPromise) return;
78
+ const args = trailingArgs;
79
+ trailingArgs = null;
80
+ return applyFn(this, args);
81
+ };
82
+ return debounced;
83
+ }
84
+ async function _applyPromised(fn, _this, args) {
85
+ return await fn.apply(_this, args);
86
+ }
87
+
88
+ export { debounce as d };