reroute-js 1.0.0-alpha.4 → 1.0.0-alpha.6

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 (206) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +755 -683
  3. package/cli/bin.js.map +12 -12
  4. package/cli/index.d.ts +1 -1
  5. package/cli/index.js +37 -25
  6. package/cli/index.js.map +3 -3
  7. package/cli/src/cli.d.ts +1 -1
  8. package/cli/src/commands/analyze.d.ts +1 -1
  9. package/cli/src/commands/build.d.ts +1 -1
  10. package/cli/src/commands/dev.d.ts +5 -6
  11. package/cli/src/commands/dev.d.ts.map +1 -1
  12. package/cli/src/commands/gen.d.ts +4 -1
  13. package/cli/src/commands/gen.d.ts.map +1 -1
  14. package/cli/src/commands/index.d.ts +1 -1
  15. package/cli/src/commands/init.d.ts +1 -1
  16. package/cli/src/commands/lib/assets.d.ts +1 -1
  17. package/cli/src/commands/lib/bundler.d.ts +1 -1
  18. package/cli/src/commands/lib/command.d.ts +1 -1
  19. package/cli/src/commands/lib/env.d.ts +1 -1
  20. package/cli/src/commands/lib/index.d.ts +1 -1
  21. package/cli/src/commands/lib/log.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  23. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  24. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  25. package/cli/src/commands/lib/production.d.ts +1 -1
  26. package/cli/src/commands/lib/server.d.ts +2 -1
  27. package/cli/src/commands/lib/server.d.ts.map +1 -1
  28. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  29. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  30. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  31. package/cli/src/commands/lib/theme.d.ts +1 -1
  32. package/cli/src/commands/lib/version.d.ts +1 -1
  33. package/cli/src/commands/og.d.ts +1 -1
  34. package/cli/src/commands/start.d.ts +1 -1
  35. package/cli/src/index.d.ts +1 -1
  36. package/core/index.d.ts +1 -1
  37. package/core/index.js +223 -172
  38. package/core/index.js.map +7 -7
  39. package/core/src/bundler/hash.d.ts +1 -1
  40. package/core/src/bundler/index.d.ts +1 -1
  41. package/core/src/config.d.ts +1 -1
  42. package/core/src/content/discovery.d.ts +1 -1
  43. package/core/src/content/index.d.ts +1 -1
  44. package/core/src/content/metadata.d.ts +1 -1
  45. package/core/src/i18n/catalog.d.ts +1 -1
  46. package/core/src/i18n/discover.d.ts +1 -1
  47. package/core/src/i18n/index.d.ts +1 -1
  48. package/core/src/i18n/messages.d.ts +1 -1
  49. package/core/src/i18n/negotiate.d.ts +1 -1
  50. package/core/src/i18n/pathname.d.ts +1 -1
  51. package/core/src/i18n/resolve.d.ts +1 -1
  52. package/core/src/i18n/types.d.ts +1 -1
  53. package/core/src/index.d.ts +1 -1
  54. package/core/src/llms/extractor.d.ts +1 -1
  55. package/core/src/llms/formatter.d.ts +1 -1
  56. package/core/src/llms/full-generator.d.ts +3 -1
  57. package/core/src/llms/full-generator.d.ts.map +1 -1
  58. package/core/src/llms/index-generator.d.ts +3 -1
  59. package/core/src/llms/index-generator.d.ts.map +1 -1
  60. package/core/src/llms/index.d.ts +1 -1
  61. package/core/src/og/discovery.d.ts +1 -1
  62. package/core/src/og/index.d.ts +1 -1
  63. package/core/src/og/meta.d.ts +1 -1
  64. package/core/src/og/render.d.ts +1 -1
  65. package/core/src/og/types.d.ts +1 -1
  66. package/core/src/robots/discovery.d.ts +1 -1
  67. package/core/src/robots/generator.d.ts +1 -1
  68. package/core/src/robots/index.d.ts +1 -1
  69. package/core/src/robots/policies.d.ts +1 -1
  70. package/core/src/rss/discovery.d.ts +1 -1
  71. package/core/src/rss/generator.d.ts +1 -1
  72. package/core/src/rss/index.d.ts +1 -1
  73. package/core/src/sitemap/discovery.d.ts +1 -1
  74. package/core/src/sitemap/generator.d.ts +1 -1
  75. package/core/src/sitemap/index.d.ts +1 -1
  76. package/core/src/ssr/index.d.ts +1 -1
  77. package/core/src/ssr/lib/cache.d.ts +1 -1
  78. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  79. package/core/src/ssr/lib/collections.d.ts +1 -1
  80. package/core/src/ssr/lib/compression.d.ts +1 -1
  81. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  82. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  83. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  84. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  85. package/core/src/ssr/lib/content-path.d.ts +1 -1
  86. package/core/src/ssr/lib/data.d.ts +1 -1
  87. package/core/src/ssr/lib/html.d.ts +1 -1
  88. package/core/src/ssr/lib/imports.d.ts +8 -3
  89. package/core/src/ssr/lib/imports.d.ts.map +1 -1
  90. package/core/src/ssr/lib/index.d.ts +1 -1
  91. package/core/src/ssr/lib/layouts.d.ts +1 -1
  92. package/core/src/ssr/lib/metadata.d.ts +1 -1
  93. package/core/src/ssr/lib/mime.d.ts +1 -1
  94. package/core/src/ssr/lib/modules.d.ts +1 -1
  95. package/core/src/ssr/lib/path.d.ts +1 -1
  96. package/core/src/ssr/lib/preload.d.ts +1 -1
  97. package/core/src/ssr/lib/route-match.d.ts +1 -1
  98. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  99. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  100. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  101. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  102. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  103. package/core/src/ssr/lib/seed.d.ts +6 -1
  104. package/core/src/ssr/lib/seed.d.ts.map +1 -1
  105. package/core/src/ssr/lib/serialize.d.ts +1 -1
  106. package/core/src/ssr/lib/setup.d.ts +1 -1
  107. package/core/src/ssr/lib/styles.d.ts +1 -1
  108. package/core/src/ssr/lib/template.d.ts +1 -1
  109. package/core/src/ssr/lib/types.d.ts +1 -1
  110. package/core/src/ssr/render.d.ts +1 -1
  111. package/core/src/ssr/stream.d.ts +1 -1
  112. package/elysia/index.d.ts +1 -1
  113. package/elysia/index.js +302 -223
  114. package/elysia/index.js.map +14 -13
  115. package/elysia/src/index.d.ts +1 -1
  116. package/elysia/src/libs/assets.d.ts +1 -1
  117. package/elysia/src/libs/cache.d.ts +1 -1
  118. package/elysia/src/libs/caching.d.ts +1 -1
  119. package/elysia/src/libs/http.d.ts +1 -1
  120. package/elysia/src/libs/i18n.d.ts +1 -1
  121. package/elysia/src/libs/image.d.ts +1 -1
  122. package/elysia/src/libs/index.d.ts +1 -1
  123. package/elysia/src/libs/llms.d.ts +1 -1
  124. package/elysia/src/libs/response.d.ts +1 -1
  125. package/elysia/src/libs/serving.d.ts +1 -1
  126. package/elysia/src/plugin.d.ts +1 -1
  127. package/elysia/src/plugin.d.ts.map +1 -1
  128. package/elysia/src/routes/artifacts.d.ts +1 -1
  129. package/elysia/src/routes/content.d.ts +2 -2
  130. package/elysia/src/routes/content.d.ts.map +1 -1
  131. package/elysia/src/routes/image.d.ts +1 -1
  132. package/elysia/src/routes/index.d.ts +1 -1
  133. package/elysia/src/routes/internal.d.ts +1 -1
  134. package/elysia/src/routes/internal.d.ts.map +1 -1
  135. package/elysia/src/routes/llms.d.ts +1 -1
  136. package/elysia/src/routes/llms.d.ts.map +1 -1
  137. package/elysia/src/routes/og.d.ts +1 -1
  138. package/elysia/src/routes/redirects.d.ts +1 -1
  139. package/elysia/src/routes/robots.d.ts +1 -1
  140. package/elysia/src/routes/rss.d.ts +1 -1
  141. package/elysia/src/routes/search.d.ts +1 -1
  142. package/elysia/src/routes/sitemap.d.ts +1 -1
  143. package/elysia/src/routes/ssr.d.ts +1 -1
  144. package/elysia/src/routes/static.d.ts +1 -1
  145. package/elysia/src/routes/themeCssRefresh.d.ts +17 -0
  146. package/elysia/src/routes/themeCssRefresh.d.ts.map +1 -0
  147. package/elysia/src/types.d.ts +1 -1
  148. package/package.json +1 -1
  149. package/react/index.d.ts +1 -1
  150. package/react/index.js +71 -71
  151. package/react/index.js.map +1 -1
  152. package/react/src/components/ClientOnly.d.ts +1 -1
  153. package/react/src/components/ContentRoute.d.ts +1 -1
  154. package/react/src/components/Image.d.ts +1 -1
  155. package/react/src/components/LazyRoute.d.ts +1 -1
  156. package/react/src/components/Link.d.ts +1 -1
  157. package/react/src/components/Markdown.d.ts +1 -1
  158. package/react/src/components/Outlet.d.ts +1 -1
  159. package/react/src/components/index.d.ts +1 -1
  160. package/react/src/hooks/index.d.ts +1 -1
  161. package/react/src/hooks/useContent.d.ts +1 -1
  162. package/react/src/hooks/useData.d.ts +1 -1
  163. package/react/src/hooks/useFeed.d.ts +1 -1
  164. package/react/src/hooks/useLayoutData.d.ts +1 -1
  165. package/react/src/hooks/useLlms.d.ts +1 -1
  166. package/react/src/hooks/useNavigate.d.ts +1 -1
  167. package/react/src/hooks/useParams.d.ts +1 -1
  168. package/react/src/hooks/useRouter.d.ts +1 -1
  169. package/react/src/hooks/useSearch.d.ts +1 -1
  170. package/react/src/hooks/useSearchParams.d.ts +1 -1
  171. package/react/src/hooks/useToc.d.ts +1 -1
  172. package/react/src/i18n/LocaleProvider.d.ts +1 -1
  173. package/react/src/i18n/helpers.d.ts +1 -1
  174. package/react/src/i18n/index.d.ts +1 -1
  175. package/react/src/index.d.ts +1 -1
  176. package/react/src/lib/collection.d.ts +1 -1
  177. package/react/src/lib/content.d.ts +1 -1
  178. package/react/src/lib/head.d.ts +1 -1
  179. package/react/src/lib/index.d.ts +1 -1
  180. package/react/src/lib/lazy-route.d.ts +1 -1
  181. package/react/src/lib/route-loader.d.ts +1 -1
  182. package/react/src/providers/ContentProvider.d.ts +1 -1
  183. package/react/src/providers/RerouteProvider.d.ts +1 -1
  184. package/react/src/providers/RouterProvider.d.ts +1 -1
  185. package/react/src/providers/index.d.ts +1 -1
  186. package/react/src/types/any.d.ts +1 -1
  187. package/react/src/types/index.d.ts +1 -1
  188. package/react/src/types/router.d.ts +1 -1
  189. package/telemetry/react.d.ts +1 -1
  190. package/telemetry/react.js +16 -16
  191. package/telemetry/react.js.map +2 -2
  192. package/telemetry/server.d.ts +1 -1
  193. package/telemetry/server.js +28 -220
  194. package/telemetry/server.js.map +7 -6
  195. package/telemetry/src/react/api.d.ts +1 -1
  196. package/telemetry/src/react/context.d.ts +1 -1
  197. package/telemetry/src/react/index.d.ts +1 -1
  198. package/telemetry/src/react/telemetry.d.ts +1 -1
  199. package/telemetry/src/server/context.d.ts +1 -1
  200. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  201. package/telemetry/src/server/headers/index.d.ts +1 -1
  202. package/telemetry/src/server/headers/presets.d.ts +1 -1
  203. package/telemetry/src/server/index.d.ts +1 -1
  204. package/telemetry/src/server/instrumentation.d.ts +1 -1
  205. package/telemetry/src/server/plugin.d.ts +1 -1
  206. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/cli/bin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
3
  /**
4
- * reroute-js v1.0.0-alpha.4
4
+ * reroute-js v1.0.0-alpha.6
5
5
  *
6
6
  * @license MIT
7
7
  * @copyright 2026 stewones <hi@stewan.io>
@@ -30,12 +30,14 @@ var __toESM = (mod, isNodeMode, target) => {
30
30
  }
31
31
  target = mod != null ? __create(__getProtoOf(mod)) : {};
32
32
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
33
- for (let key of __getOwnPropNames(mod))
34
- if (!__hasOwnProp.call(to, key))
35
- __defProp(to, key, {
36
- get: __accessProp.bind(mod, key),
37
- enumerable: true
38
- });
33
+ if (mod && typeof mod === "object" || typeof mod === "function") {
34
+ for (let key of __getOwnPropNames(mod))
35
+ if (!__hasOwnProp.call(to, key))
36
+ __defProp(to, key, {
37
+ get: __accessProp.bind(mod, key),
38
+ enumerable: true
39
+ });
40
+ }
39
41
  if (canCache)
40
42
  cache.set(mod, to);
41
43
  return to;
@@ -66,7 +68,7 @@ async function getVersionString() {
66
68
  }
67
69
  async function getVersion() {
68
70
  if (true) {
69
- return "1.0.0-alpha.4";
71
+ return "1.0.0-alpha.6";
70
72
  }
71
73
  const possiblePaths = [
72
74
  path.join(import.meta.dir, "../../../../package.json"),
@@ -84,7 +86,7 @@ async function getVersion() {
84
86
  }
85
87
  async function getCommit() {
86
88
  if (true) {
87
- return "f832946";
89
+ return "1f58c52";
88
90
  }
89
91
  return "dev";
90
92
  }
@@ -726,14 +728,14 @@ var init_negotiate = () => {};
726
728
  // packages/core/src/i18n/pathname.ts
727
729
  var exports_pathname = {};
728
730
  __export(exports_pathname, {
729
- toOgLocale: () => toOgLocale,
730
- parseContentPath: () => parseContentPath,
731
- normalizePathname: () => normalizePathname,
732
- looksLikeLocale: () => looksLikeLocale,
733
- localizeHref: () => localizeHref,
734
- localizeContentHref: () => localizeContentHref,
731
+ contentKey: () => contentKey,
735
732
  hreflangTags: () => hreflangTags,
736
- contentKey: () => contentKey
733
+ localizeContentHref: () => localizeContentHref,
734
+ localizeHref: () => localizeHref,
735
+ looksLikeLocale: () => looksLikeLocale,
736
+ normalizePathname: () => normalizePathname,
737
+ parseContentPath: () => parseContentPath,
738
+ toOgLocale: () => toOgLocale
737
739
  });
738
740
  function looksLikeLocale(segment) {
739
741
  return /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/i.test(segment);
@@ -1385,11 +1387,39 @@ function cleanupPathScopedSSRData(pathname) {
1385
1387
  }
1386
1388
 
1387
1389
  // packages/core/src/ssr/lib/imports.ts
1390
+ import { copyFile, realpath, stat as stat3, unlink } from "node:fs/promises";
1391
+ import { basename as basename2, dirname, extname as extname2, join as join4 } from "node:path";
1388
1392
  import { pathToFileURL as pathToFileURL3 } from "node:url";
1393
+ function clearWatchImportCache() {
1394
+ watchImportCache.clear();
1395
+ }
1396
+ function bustCopyPath(absolutePath) {
1397
+ const dir = dirname(absolutePath);
1398
+ const ext = extname2(absolutePath);
1399
+ const base = basename2(absolutePath, ext);
1400
+ const token = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
1401
+ return join4(dir, `${base}.bust-${token}${ext}`);
1402
+ }
1389
1403
  async function dynamicImport(absolutePath, isWatchMode) {
1390
1404
  const href = pathToFileURL3(absolutePath).href;
1391
- const url = isWatchMode ? `${href}?t=${Date.now()}` : href;
1392
- return await import(url);
1405
+ if (!isWatchMode) {
1406
+ return await import(href);
1407
+ }
1408
+ const resolved = await realpath(absolutePath);
1409
+ const mtimeMs = (await stat3(resolved)).mtimeMs;
1410
+ const cached = watchImportCache.get(resolved);
1411
+ if (cached && cached.mtimeMs === mtimeMs) {
1412
+ return cached.mod;
1413
+ }
1414
+ const tmp = bustCopyPath(resolved);
1415
+ await copyFile(resolved, tmp);
1416
+ try {
1417
+ const mod = await import(pathToFileURL3(tmp).href);
1418
+ watchImportCache.set(resolved, { mtimeMs, mod });
1419
+ return mod;
1420
+ } finally {
1421
+ await unlink(tmp).catch(() => {});
1422
+ }
1393
1423
  }
1394
1424
  function isThenable(value) {
1395
1425
  return typeof value === "object" && value !== null && typeof value.then === "function";
@@ -1397,7 +1427,10 @@ function isThenable(value) {
1397
1427
  function toPromise(input) {
1398
1428
  return input instanceof Promise ? input : Promise.resolve(input);
1399
1429
  }
1400
- var init_imports = () => {};
1430
+ var watchImportCache;
1431
+ var init_imports = __esm(() => {
1432
+ watchImportCache = new Map;
1433
+ });
1401
1434
 
1402
1435
  // packages/core/src/ssr/lib/collections.ts
1403
1436
  async function loadCollections(cwd, isWatchMode) {
@@ -2187,7 +2220,7 @@ var init_compute = __esm(() => {
2187
2220
  });
2188
2221
 
2189
2222
  // packages/core/src/ssr/lib/modules.ts
2190
- import { readdir as readdir4, stat as stat3 } from "node:fs/promises";
2223
+ import { readdir as readdir4, stat as stat4 } from "node:fs/promises";
2191
2224
  async function importContentModuleForPath(pathname, clientDir, cwd, isWatchMode) {
2192
2225
  try {
2193
2226
  const resolved = resolveContentPathParts(pathname);
@@ -2245,7 +2278,7 @@ async function tryChunkImport(collection, name, cwd, isWatchMode) {
2245
2278
  let latestM = 0;
2246
2279
  for (const f of matches) {
2247
2280
  try {
2248
- const s = await stat3(join2(chunkDir, f));
2281
+ const s = await stat4(join2(chunkDir, f));
2249
2282
  if (s.mtimeMs >= latestM) {
2250
2283
  latestM = s.mtimeMs;
2251
2284
  latest = f;
@@ -2302,6 +2335,16 @@ function touchModule(key) {
2302
2335
  evictLRUModule();
2303
2336
  }
2304
2337
  }
2338
+ function clearSSRModuleStores() {
2339
+ const g = globalThis;
2340
+ if (g.__REROUTE_SSR_MODULES__) {
2341
+ g.__REROUTE_SSR_MODULES__ = {};
2342
+ }
2343
+ if (g.__REROUTE_SSR_EXPORTS__) {
2344
+ g.__REROUTE_SSR_EXPORTS__ = {};
2345
+ }
2346
+ moduleAccessOrder.length = 0;
2347
+ }
2305
2348
  async function seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode) {
2306
2349
  try {
2307
2350
  const resolved = resolveContentPathParts(pathname);
@@ -3286,7 +3329,7 @@ var init_metadata2 = __esm(() => {
3286
3329
  });
3287
3330
 
3288
3331
  // packages/core/src/ssr/lib/preload.ts
3289
- import { readdir as readdir6, stat as stat4 } from "node:fs/promises";
3332
+ import { readdir as readdir6, stat as stat5 } from "node:fs/promises";
3290
3333
  async function preloadContentModule(pathname, clientDir, cwd, isWatchMode) {
3291
3334
  let extraHead = "";
3292
3335
  let hydrationScript = "";
@@ -3320,14 +3363,14 @@ async function isContentCollection(clientDir, collection) {
3320
3363
  if (isProduction) {
3321
3364
  const collectionFile = join2(clientDir, "collections", `${collection}.js`);
3322
3365
  try {
3323
- const s2 = await stat4(collectionFile);
3366
+ const s2 = await stat5(collectionFile);
3324
3367
  return s2?.isFile() ?? false;
3325
3368
  } catch {
3326
3369
  return false;
3327
3370
  }
3328
3371
  }
3329
3372
  const maybeDir = join2(clientDir, "routes", collection, "content");
3330
- const s = await stat4(maybeDir);
3373
+ const s = await stat5(maybeDir);
3331
3374
  return typeof s?.isDirectory === "function" ? s.isDirectory() : true;
3332
3375
  } catch {
3333
3376
  return false;
@@ -3338,7 +3381,7 @@ async function findLatestCandidate(chunkDir, candidates) {
3338
3381
  let latestM = 0;
3339
3382
  for (const candidateName of candidates) {
3340
3383
  try {
3341
- const s = await stat4(join2(chunkDir, candidateName));
3384
+ const s = await stat5(join2(chunkDir, candidateName));
3342
3385
  if (s.mtimeMs >= latestM) {
3343
3386
  latestM = s.mtimeMs;
3344
3387
  latest = candidateName;
@@ -3726,15 +3769,15 @@ var init_scripts = __esm(() => {
3726
3769
  // packages/core/src/ssr/lib/styles.ts
3727
3770
  async function inlineThemeCSS(clientDir, minify = false, isWatchMode = false) {
3728
3771
  try {
3772
+ if (isWatchMode) {
3773
+ const timestamp = Date.now();
3774
+ return `<link rel="stylesheet" href="/.reroute/index.css?t=${timestamp}" data-reroute="theme">`;
3775
+ }
3729
3776
  const bundledCss = globalThis.__REROUTE_THEME_CSS__;
3730
3777
  if (bundledCss) {
3731
3778
  const css2 = minify ? minifyCSS(bundledCss) : bundledCss;
3732
3779
  return `<style data-reroute="theme">${css2}</style>`;
3733
3780
  }
3734
- if (isWatchMode) {
3735
- const timestamp = Date.now();
3736
- return `<link rel="stylesheet" href="/.reroute/index.css?t=${timestamp}" data-reroute="theme">`;
3737
- }
3738
3781
  const candidates = [
3739
3782
  join2(clientDir, "..", ".reroute", "index.css"),
3740
3783
  join2(clientDir, "..", "..", ".reroute", "index.css"),
@@ -4453,10 +4496,10 @@ var init_extractor = __esm(() => {
4453
4496
  // packages/core/src/llms/index-generator.ts
4454
4497
  var exports_index_generator = {};
4455
4498
  __export(exports_index_generator, {
4456
- generateLLMsIndex: () => generateLLMsIndex,
4457
- discoverStaticRoutes: () => discoverStaticRoutes,
4499
+ discoverCollectionRoutes: () => discoverCollectionRoutes,
4458
4500
  discoverSSRDataRoutes: () => discoverSSRDataRoutes,
4459
- discoverCollectionRoutes: () => discoverCollectionRoutes
4501
+ discoverStaticRoutes: () => discoverStaticRoutes,
4502
+ generateLLMsIndex: () => generateLLMsIndex
4460
4503
  });
4461
4504
  import { pathToFileURL as pathToFileURL6 } from "node:url";
4462
4505
  async function discoverStaticRoutes(cwd, isWatchMode) {
@@ -4677,8 +4720,8 @@ function formatRouteUrl(routePath, baseUrl) {
4677
4720
  function getRouteTitle(route) {
4678
4721
  return route.title || (route.path === "/" ? "Home" : route.path.split("/").pop() || "Page");
4679
4722
  }
4680
- function addRootRoutes(parts, rootRoutes, baseUrl, isSingleCollection) {
4681
- if (isSingleCollection || rootRoutes.length === 0)
4723
+ function addRootRoutes(parts, rootRoutes, baseUrl, isScoped) {
4724
+ if (isScoped || rootRoutes.length === 0)
4682
4725
  return;
4683
4726
  for (const route of rootRoutes) {
4684
4727
  const title = getRouteTitle(route);
@@ -4701,12 +4744,12 @@ function addCollectionSection(parts, collection, routes, baseUrl, llmsConfig) {
4701
4744
  }
4702
4745
  parts.push("");
4703
4746
  }
4704
- function shouldIncludeSection(section, isSingleCollection, targetCollection) {
4705
- return !isSingleCollection || section === targetCollection;
4747
+ function shouldIncludeSection(section, isScoped, targetCollection) {
4748
+ return !isScoped || section === targetCollection;
4706
4749
  }
4707
- function addSSRDataSection(parts, routePattern, routes, baseUrl, isSingleCollection, targetCollection, llmsConfig) {
4750
+ function addSSRDataSection(parts, routePattern, routes, baseUrl, isScoped, targetCollection, llmsConfig) {
4708
4751
  const routeSection = routePattern.split("/").filter(Boolean)[0];
4709
- if (!shouldIncludeSection(routeSection, isSingleCollection, targetCollection)) {
4752
+ if (!shouldIncludeSection(routeSection, isScoped, targetCollection)) {
4710
4753
  return;
4711
4754
  }
4712
4755
  const filteredRoutes = routes.filter((r) => !shouldExcludeRoute(r.path, llmsConfig?.excludeRoutes));
@@ -4722,8 +4765,8 @@ function addSSRDataSection(parts, routePattern, routes, baseUrl, isSingleCollect
4722
4765
  }
4723
4766
  parts.push("");
4724
4767
  }
4725
- function addStaticSection(parts, section, routes, baseUrl, isSingleCollection, targetCollection, collectionsMap, llmsConfig) {
4726
- if (!shouldIncludeSection(section, isSingleCollection, targetCollection)) {
4768
+ function addStaticSection(parts, section, routes, baseUrl, isScoped, targetCollection, collectionsMap, llmsConfig) {
4769
+ if (!shouldIncludeSection(section, isScoped, targetCollection)) {
4727
4770
  return;
4728
4771
  }
4729
4772
  const filteredRoutes = routes.filter((r) => !shouldExcludeRoute(r.path, llmsConfig?.excludeRoutes));
@@ -4741,15 +4784,15 @@ function addStaticSection(parts, section, routes, baseUrl, isSingleCollection, t
4741
4784
  }
4742
4785
  async function generateLLMsIndex(options) {
4743
4786
  const { cwd, collections: collections2, baseUrl, isWatchMode, llmsConfig } = options;
4787
+ const targetCollection = options.targetCollection ?? null;
4788
+ const isScoped = targetCollection !== null;
4744
4789
  const parts = [];
4745
4790
  addIndexHeader(parts, llmsConfig);
4746
4791
  const staticRoutes = await discoverStaticRoutes(cwd, isWatchMode);
4747
4792
  const collectionsMap = await discoverCollectionRoutes(cwd, collections2, isWatchMode, llmsConfig);
4748
4793
  const ssrDataRoutes = await discoverSSRDataRoutes(cwd, staticRoutes, isWatchMode);
4749
- const isSingleCollection = collections2.length === 1;
4750
- const targetCollection = isSingleCollection ? collections2[0] : null;
4751
4794
  const { sections, rootRoutes } = groupStaticRoutes(staticRoutes, llmsConfig);
4752
- addRootRoutes(parts, rootRoutes, baseUrl, isSingleCollection);
4795
+ addRootRoutes(parts, rootRoutes, baseUrl, isScoped);
4753
4796
  for (const [collection, routes] of collectionsMap.entries()) {
4754
4797
  if (routes.length > 0) {
4755
4798
  addCollectionSection(parts, collection, routes, baseUrl, llmsConfig);
@@ -4757,17 +4800,20 @@ async function generateLLMsIndex(options) {
4757
4800
  }
4758
4801
  for (const [routePattern, routes] of ssrDataRoutes.entries()) {
4759
4802
  if (routes.length > 0) {
4760
- addSSRDataSection(parts, routePattern, routes, baseUrl, isSingleCollection, targetCollection, llmsConfig);
4803
+ addSSRDataSection(parts, routePattern, routes, baseUrl, isScoped, targetCollection, llmsConfig);
4761
4804
  }
4762
4805
  }
4763
4806
  for (const [section, routes] of sections.entries()) {
4764
4807
  if (routes.length > 0) {
4765
- addStaticSection(parts, section, routes, baseUrl, isSingleCollection, targetCollection, collectionsMap, llmsConfig);
4808
+ addStaticSection(parts, section, routes, baseUrl, isScoped, targetCollection, collectionsMap, llmsConfig);
4766
4809
  }
4767
4810
  }
4768
4811
  parts.push("---");
4769
4812
  parts.push("");
4770
4813
  parts.push("Formats: .txt | .md | Accept: text/plain | Accept: text/markdown");
4814
+ if (!isScoped && baseUrl) {
4815
+ parts.push(`Full dump: ${baseUrl}/llms-full.txt`);
4816
+ }
4771
4817
  return parts.join(`
4772
4818
  `);
4773
4819
  }
@@ -4825,6 +4871,9 @@ async function discoverAllRoutes(cwd, collections2, isWatchMode, llmsConfig) {
4825
4871
  }
4826
4872
  return allRoutes;
4827
4873
  }
4874
+ function routeBelongsToCollection(path3, collection) {
4875
+ return path3 === `/${collection}` || path3.startsWith(`/${collection}/`);
4876
+ }
4828
4877
  function formatContentBlock(content, routePath, baseUrl) {
4829
4878
  const parts = [];
4830
4879
  const lines = content.split(`
@@ -4894,7 +4943,9 @@ function buildFooter(parts) {
4894
4943
  async function generateLLMsFullContent(options) {
4895
4944
  const { cwd, collections: collections2, baseUrl, isWatchMode, llmsConfig } = options;
4896
4945
  const parts = buildHeader(baseUrl, llmsConfig);
4897
- const allRoutes = await discoverAllRoutes(cwd, collections2, isWatchMode, llmsConfig);
4946
+ const discovered = await discoverAllRoutes(cwd, collections2, isWatchMode, llmsConfig);
4947
+ const targetCollection = options.targetCollection;
4948
+ const allRoutes = targetCollection ? discovered.filter((route) => routeBelongsToCollection(route.path, targetCollection)) : discovered;
4898
4949
  const maxItems = llmsConfig?.maxItems || 1e4;
4899
4950
  const routesToProcess = allRoutes.slice(0, maxItems);
4900
4951
  const extracted = await extractRouteContents(routesToProcess, options);
@@ -5239,10 +5290,10 @@ var init_robots = __esm(() => {
5239
5290
  // packages/core/src/sitemap/discovery.ts
5240
5291
  var exports_discovery = {};
5241
5292
  __export(exports_discovery, {
5242
- discoverSitemapData: () => discoverSitemapData,
5243
- discoverSSRDataRoutes: () => discoverSSRDataRoutes2,
5293
+ discoverCollectionContent: () => discoverCollectionContent,
5244
5294
  discoverRoutes: () => discoverRoutes,
5245
- discoverCollectionContent: () => discoverCollectionContent
5295
+ discoverSSRDataRoutes: () => discoverSSRDataRoutes2,
5296
+ discoverSitemapData: () => discoverSitemapData
5246
5297
  });
5247
5298
  async function loadRoutesModule2(cwd, isWatchMode) {
5248
5299
  let routes = globalThis.__REROUTE_ROUTES__;
@@ -6526,137 +6577,139 @@ var init_src = __esm(() => {
6526
6577
  // packages/core/index.ts
6527
6578
  var exports_core = {};
6528
6579
  __export(exports_core, {
6529
- toPromise: () => toPromise,
6530
- toOgLocale: () => toOgLocale,
6531
- toBytes: () => toBytes,
6532
- stripStart: () => stripStart,
6533
- stripHtmlTags: () => stripHtmlTags,
6534
- stripEnd: () => stripEnd,
6535
- statusCache: () => statusCache,
6536
- ssrCache: () => ssrCache,
6537
- splitTemplate: () => splitTemplate,
6538
- shouldExcludeRoute: () => shouldExcludeRoute,
6539
- setGlobalSSRData: () => setGlobalSSRData,
6540
- setGlobalCollections: () => setGlobalCollections,
6541
- seedSSRModuleForPath: () => seedSSRModuleForPath,
6542
- resolveLocale: () => resolveLocale,
6543
- resetSSRAccessTracking: () => resetSSRAccessTracking,
6544
- renderSSRDocumentStream: () => renderSSRDocumentStream,
6545
- renderSSRDocument: () => renderSSRDocument,
6546
- renderOGImageToPNG: () => renderOGImageToPNG,
6547
- removeOverriddenMetaTags: () => removeOverriddenMetaTags,
6548
- processCollections: () => processCollections,
6549
- preloadContentModule: () => preloadContentModule,
6550
- performSSRSetup: () => performSSRSetup,
6551
- parseCookieValue: () => parseCookieValue,
6552
- parseContentPath: () => parseContentPath,
6553
- normalizePathname: () => normalizePathname,
6554
- negotiateLocale: () => negotiateLocale,
6555
- mergeLayoutData: () => mergeLayoutData,
6556
- matchRoutes: () => matchRoutes,
6557
- matchRoutePattern: () => matchRoutePattern,
6558
- lookupMessage: () => lookupMessage,
6559
- looksLikeLocale: () => looksLikeLocale,
6560
- localizeHref: () => localizeHref,
6561
- localizeContentHref: () => localizeContentHref,
6562
- loadRoutesModule: () => loadRoutesModule,
6563
- loadOGImageComponent: () => loadOGImageComponent,
6564
- loadIndexHtml: () => loadIndexHtml,
6565
- loadConfig: () => loadConfig,
6566
- loadCollections: () => loadCollections,
6567
- listContentFiles: () => listContentFiles,
6568
- join: () => join2,
6569
- isThenable: () => isThenable,
6570
- isCompressible: () => isCompressible,
6571
- inlineThemeCSS: () => inlineThemeCSS,
6572
- importContentModuleForPath: () => importContentModuleForPath,
6573
- htmlToMarkdown: () => htmlToMarkdown,
6574
- hreflangTags: () => hreflangTags,
6575
- gzipIfAccepted: () => gzipIfAccepted,
6576
- getSitemapExcludedRoutes: () => getSitemapExcludedRoutes,
6577
- getRedirectSourcePaths: () => getRedirectSourcePaths,
6578
- getPatternDepth: () => getPatternDepth,
6579
- getMimeType: () => getMimeType,
6580
- getMessage: () => getMessage,
6581
- getMatchingLayouts: () => getMatchingLayouts,
6582
- getContentMeta: () => getContentMeta,
6583
- generateSitemapXML: () => generateSitemapXML,
6584
- generateSitemapIndexXML: () => generateSitemapIndexXML,
6585
- generateSitemap: () => generateSitemap,
6586
- generateRobots: () => generateRobots,
6587
- generateRSSXML: () => generateRSSXML,
6588
- generateOGImageMetaTags: () => generateOGImageMetaTags,
6589
- generateLLMsIndex: () => generateLLMsIndex,
6590
- generateLLMsFullContent: () => generateLLMsFullContent,
6591
- generateLLMsFooter: () => generateLLMsFooter,
6592
- generateHydrationScripts: () => generateHydrationScripts,
6593
- generateFeed: () => generateFeed,
6594
- generateContentHash: () => generateContentHash,
6595
- generateCollectionScripts: () => generateCollectionScripts,
6596
- generateAtomXML: () => generateAtomXML,
6597
- formatMessage: () => formatMessage,
6598
- formatAsText: () => formatAsText,
6599
- formatAsMarkdown: () => formatAsMarkdown,
6600
- findOGImageForPath: () => findOGImageForPath,
6601
- extractTitle: () => extractTitle,
6602
- extractParamsFromPath: () => extractParamsFromPath,
6603
- extractPageMetadata: () => extractPageMetadata,
6604
- extractContentForLLMs: () => extractContentForLLMs,
6605
- extname: () => extname,
6606
- escapeXml: () => escapeXml2,
6607
- escapeJsonForScript: () => escapeJsonForScript,
6608
- dynamicImport: () => dynamicImport,
6609
- duplicateQueryParamData: () => duplicateQueryParamData,
6610
- discoverSitemapData: () => discoverSitemapData,
6611
- discoverSSRDataRoutes: () => discoverSSRDataRoutes2,
6612
- discoverSSRDataFeedItems: () => discoverSSRDataFeedItems,
6613
- discoverRoutesForRobots: () => discoverRoutesForRobots,
6614
- discoverRoutes: () => discoverRoutes,
6615
- discoverRobotsData: () => discoverRobotsData,
6616
- discoverRSSData: () => discoverRSSData,
6617
- discoverI18n: () => discoverI18n,
6618
- discoverCollections: () => discoverCollections,
6619
- discoverCollectionContent: () => discoverCollectionContent,
6620
- defineConfig: () => defineConfig,
6621
- deduplicateMetaTags: () => deduplicateMetaTags,
6622
- createTranslator: () => createTranslator,
6623
- createLlmsScript: () => createLlmsScript,
6624
- createLayoutDataKey: () => createLayoutDataKey,
6625
- createLayoutCacheKey: () => createLayoutCacheKey,
6626
- createFeedsScript: () => createFeedsScript,
6627
- createDataScript: () => createDataScript,
6628
- createCollectionScript: () => createCollectionScript,
6629
- createBundlePreload: () => createBundlePreload,
6630
- contentNegotiateRedirect: () => contentNegotiateRedirect,
6631
- contentKey: () => contentKey,
6632
- computeSSRDataForPath: () => computeSSRDataForPath,
6633
- computeSSRData: () => computeSSRData,
6634
- computeRouteData: () => computeRouteData,
6635
- computeLayoutData: () => computeLayoutData,
6636
- computeContentData: () => computeContentData,
6637
- compressStreamIfAccepted: () => compressStreamIfAccepted,
6638
- compareRouteSpecificity: () => compareRouteSpecificity,
6639
- cleanupPathScopedSSRData: () => cleanupPathScopedSSRData,
6640
- buildLocaleCookie: () => buildLocaleCookie,
6641
- buildHeadFromMeta: () => buildHeadFromMeta,
6642
- blockSearchCrawlers: () => blockSearchCrawlers,
6643
- blockAITrainingCrawlers: () => blockAITrainingCrawlers,
6644
- blockAICrawlers: () => blockAICrawlers,
6645
- basename: () => basename,
6646
- applyIndexTemplate: () => applyIndexTemplate,
6647
- allowSearchCrawlers: () => allowSearchCrawlers,
6648
- allowAICrawlers: () => allowAICrawlers,
6649
- acceptsGzip: () => acceptsGzip,
6650
- acceptsBrotli: () => acceptsBrotli,
6651
- TTLCache: () => TTLCache,
6652
- SSRDataCache: () => SSRDataCache,
6653
- SEARCH_CRAWLERS: () => SEARCH_CRAWLERS,
6654
- LRUCache: () => LRUCache,
6655
- DefaultOGTemplate: () => DefaultOGTemplate,
6656
- DEFAULT_LOCALES_DIR: () => DEFAULT_LOCALES_DIR,
6657
- DEFAULT_LOCALE: () => DEFAULT_LOCALE,
6580
+ AI_CRAWLERS: () => AI_CRAWLERS,
6658
6581
  DEFAULT_COOKIE: () => DEFAULT_COOKIE,
6659
- AI_CRAWLERS: () => AI_CRAWLERS
6582
+ DEFAULT_LOCALE: () => DEFAULT_LOCALE,
6583
+ DEFAULT_LOCALES_DIR: () => DEFAULT_LOCALES_DIR,
6584
+ DefaultOGTemplate: () => DefaultOGTemplate,
6585
+ LRUCache: () => LRUCache,
6586
+ SEARCH_CRAWLERS: () => SEARCH_CRAWLERS,
6587
+ SSRDataCache: () => SSRDataCache,
6588
+ TTLCache: () => TTLCache,
6589
+ acceptsBrotli: () => acceptsBrotli,
6590
+ acceptsGzip: () => acceptsGzip,
6591
+ allowAICrawlers: () => allowAICrawlers,
6592
+ allowSearchCrawlers: () => allowSearchCrawlers,
6593
+ applyIndexTemplate: () => applyIndexTemplate,
6594
+ basename: () => basename,
6595
+ blockAICrawlers: () => blockAICrawlers,
6596
+ blockAITrainingCrawlers: () => blockAITrainingCrawlers,
6597
+ blockSearchCrawlers: () => blockSearchCrawlers,
6598
+ buildHeadFromMeta: () => buildHeadFromMeta,
6599
+ buildLocaleCookie: () => buildLocaleCookie,
6600
+ cleanupPathScopedSSRData: () => cleanupPathScopedSSRData,
6601
+ clearSSRModuleStores: () => clearSSRModuleStores,
6602
+ clearWatchImportCache: () => clearWatchImportCache,
6603
+ compareRouteSpecificity: () => compareRouteSpecificity,
6604
+ compressStreamIfAccepted: () => compressStreamIfAccepted,
6605
+ computeContentData: () => computeContentData,
6606
+ computeLayoutData: () => computeLayoutData,
6607
+ computeRouteData: () => computeRouteData,
6608
+ computeSSRData: () => computeSSRData,
6609
+ computeSSRDataForPath: () => computeSSRDataForPath,
6610
+ contentKey: () => contentKey,
6611
+ contentNegotiateRedirect: () => contentNegotiateRedirect,
6612
+ createBundlePreload: () => createBundlePreload,
6613
+ createCollectionScript: () => createCollectionScript,
6614
+ createDataScript: () => createDataScript,
6615
+ createFeedsScript: () => createFeedsScript,
6616
+ createLayoutCacheKey: () => createLayoutCacheKey,
6617
+ createLayoutDataKey: () => createLayoutDataKey,
6618
+ createLlmsScript: () => createLlmsScript,
6619
+ createTranslator: () => createTranslator,
6620
+ deduplicateMetaTags: () => deduplicateMetaTags,
6621
+ defineConfig: () => defineConfig,
6622
+ discoverCollectionContent: () => discoverCollectionContent,
6623
+ discoverCollections: () => discoverCollections,
6624
+ discoverI18n: () => discoverI18n,
6625
+ discoverRSSData: () => discoverRSSData,
6626
+ discoverRobotsData: () => discoverRobotsData,
6627
+ discoverRoutes: () => discoverRoutes,
6628
+ discoverRoutesForRobots: () => discoverRoutesForRobots,
6629
+ discoverSSRDataFeedItems: () => discoverSSRDataFeedItems,
6630
+ discoverSSRDataRoutes: () => discoverSSRDataRoutes2,
6631
+ discoverSitemapData: () => discoverSitemapData,
6632
+ duplicateQueryParamData: () => duplicateQueryParamData,
6633
+ dynamicImport: () => dynamicImport,
6634
+ escapeJsonForScript: () => escapeJsonForScript,
6635
+ escapeXml: () => escapeXml2,
6636
+ extname: () => extname,
6637
+ extractContentForLLMs: () => extractContentForLLMs,
6638
+ extractPageMetadata: () => extractPageMetadata,
6639
+ extractParamsFromPath: () => extractParamsFromPath,
6640
+ extractTitle: () => extractTitle,
6641
+ findOGImageForPath: () => findOGImageForPath,
6642
+ formatAsMarkdown: () => formatAsMarkdown,
6643
+ formatAsText: () => formatAsText,
6644
+ formatMessage: () => formatMessage,
6645
+ generateAtomXML: () => generateAtomXML,
6646
+ generateCollectionScripts: () => generateCollectionScripts,
6647
+ generateContentHash: () => generateContentHash,
6648
+ generateFeed: () => generateFeed,
6649
+ generateHydrationScripts: () => generateHydrationScripts,
6650
+ generateLLMsFooter: () => generateLLMsFooter,
6651
+ generateLLMsFullContent: () => generateLLMsFullContent,
6652
+ generateLLMsIndex: () => generateLLMsIndex,
6653
+ generateOGImageMetaTags: () => generateOGImageMetaTags,
6654
+ generateRSSXML: () => generateRSSXML,
6655
+ generateRobots: () => generateRobots,
6656
+ generateSitemap: () => generateSitemap,
6657
+ generateSitemapIndexXML: () => generateSitemapIndexXML,
6658
+ generateSitemapXML: () => generateSitemapXML,
6659
+ getContentMeta: () => getContentMeta,
6660
+ getMatchingLayouts: () => getMatchingLayouts,
6661
+ getMessage: () => getMessage,
6662
+ getMimeType: () => getMimeType,
6663
+ getPatternDepth: () => getPatternDepth,
6664
+ getRedirectSourcePaths: () => getRedirectSourcePaths,
6665
+ getSitemapExcludedRoutes: () => getSitemapExcludedRoutes,
6666
+ gzipIfAccepted: () => gzipIfAccepted,
6667
+ hreflangTags: () => hreflangTags,
6668
+ htmlToMarkdown: () => htmlToMarkdown,
6669
+ importContentModuleForPath: () => importContentModuleForPath,
6670
+ inlineThemeCSS: () => inlineThemeCSS,
6671
+ isCompressible: () => isCompressible,
6672
+ isThenable: () => isThenable,
6673
+ join: () => join2,
6674
+ listContentFiles: () => listContentFiles,
6675
+ loadCollections: () => loadCollections,
6676
+ loadConfig: () => loadConfig,
6677
+ loadIndexHtml: () => loadIndexHtml,
6678
+ loadOGImageComponent: () => loadOGImageComponent,
6679
+ loadRoutesModule: () => loadRoutesModule,
6680
+ localizeContentHref: () => localizeContentHref,
6681
+ localizeHref: () => localizeHref,
6682
+ looksLikeLocale: () => looksLikeLocale,
6683
+ lookupMessage: () => lookupMessage,
6684
+ matchRoutePattern: () => matchRoutePattern,
6685
+ matchRoutes: () => matchRoutes,
6686
+ mergeLayoutData: () => mergeLayoutData,
6687
+ negotiateLocale: () => negotiateLocale,
6688
+ normalizePathname: () => normalizePathname,
6689
+ parseContentPath: () => parseContentPath,
6690
+ parseCookieValue: () => parseCookieValue,
6691
+ performSSRSetup: () => performSSRSetup,
6692
+ preloadContentModule: () => preloadContentModule,
6693
+ processCollections: () => processCollections,
6694
+ removeOverriddenMetaTags: () => removeOverriddenMetaTags,
6695
+ renderOGImageToPNG: () => renderOGImageToPNG,
6696
+ renderSSRDocument: () => renderSSRDocument,
6697
+ renderSSRDocumentStream: () => renderSSRDocumentStream,
6698
+ resetSSRAccessTracking: () => resetSSRAccessTracking,
6699
+ resolveLocale: () => resolveLocale,
6700
+ seedSSRModuleForPath: () => seedSSRModuleForPath,
6701
+ setGlobalCollections: () => setGlobalCollections,
6702
+ setGlobalSSRData: () => setGlobalSSRData,
6703
+ shouldExcludeRoute: () => shouldExcludeRoute,
6704
+ splitTemplate: () => splitTemplate,
6705
+ ssrCache: () => ssrCache,
6706
+ statusCache: () => statusCache,
6707
+ stripEnd: () => stripEnd,
6708
+ stripHtmlTags: () => stripHtmlTags,
6709
+ stripStart: () => stripStart,
6710
+ toBytes: () => toBytes,
6711
+ toOgLocale: () => toOgLocale,
6712
+ toPromise: () => toPromise
6660
6713
  });
6661
6714
  var init_core = __esm(() => {
6662
6715
  init_src();
@@ -6685,7 +6738,7 @@ function shouldRebuildClientBundle(filename) {
6685
6738
 
6686
6739
  // packages/cli/src/commands/lib/env.ts
6687
6740
  import { existsSync as existsSync2, readFileSync } from "node:fs";
6688
- import { join as join4 } from "node:path";
6741
+ import { join as join5 } from "node:path";
6689
6742
  function parseEnvFile(content2) {
6690
6743
  const env = {};
6691
6744
  const lines = content2.split(`
@@ -6711,7 +6764,7 @@ function loadEnvFiles(cwd, mode = "development") {
6711
6764
  const env = {};
6712
6765
  const loadedFiles = [];
6713
6766
  for (const file of envFiles) {
6714
- const filePath = join4(cwd, file);
6767
+ const filePath = join5(cwd, file);
6715
6768
  if (existsSync2(filePath)) {
6716
6769
  try {
6717
6770
  const content2 = readFileSync(filePath, "utf-8");
@@ -6755,11 +6808,11 @@ var init_env = () => {};
6755
6808
 
6756
6809
  // packages/cli/src/commands/lib/markdown/availability.ts
6757
6810
  import { existsSync as existsSync3, readFileSync as readFileSync2 } from "node:fs";
6758
- import { dirname, join as join5 } from "node:path";
6811
+ import { dirname as dirname2, join as join6 } from "node:path";
6759
6812
  function isPackageAvailable(cwd, packageName) {
6760
6813
  let currentDir = cwd;
6761
6814
  for (let i = 0;i < 5; i++) {
6762
- const packageJsonPath = join5(currentDir, "package.json");
6815
+ const packageJsonPath = join6(currentDir, "package.json");
6763
6816
  if (existsSync3(packageJsonPath)) {
6764
6817
  try {
6765
6818
  const packageJson = JSON.parse(readFileSync2(packageJsonPath, "utf-8"));
@@ -6773,7 +6826,7 @@ function isPackageAvailable(cwd, packageName) {
6773
6826
  }
6774
6827
  } catch {}
6775
6828
  }
6776
- const parentDir = dirname(currentDir);
6829
+ const parentDir = dirname2(currentDir);
6777
6830
  if (parentDir === currentDir) {
6778
6831
  break;
6779
6832
  }
@@ -6831,7 +6884,7 @@ var init_availability = () => {};
6831
6884
 
6832
6885
  // packages/cli/src/commands/lib/markdown/processor.ts
6833
6886
  import { existsSync as existsSync4, readFileSync as readFileSync3 } from "node:fs";
6834
- import { basename as basename2, dirname as dirname2, extname as extname2, join as join6, relative, resolve } from "node:path";
6887
+ import { basename as basename3, dirname as dirname3, extname as extname3, join as join7, relative, resolve } from "node:path";
6835
6888
  import matter from "gray-matter";
6836
6889
  function convertPropertiesToJsx(properties) {
6837
6890
  const newProperties = {};
@@ -6890,7 +6943,7 @@ function processMarkdownFile(filePath) {
6890
6943
  function isMdxAvailable2(cwd) {
6891
6944
  let currentDir = cwd;
6892
6945
  for (let i = 0;i < 5; i++) {
6893
- const packageJsonPath = join6(currentDir, "package.json");
6946
+ const packageJsonPath = join7(currentDir, "package.json");
6894
6947
  if (existsSync4(packageJsonPath)) {
6895
6948
  try {
6896
6949
  const packageJson = JSON.parse(readFileSync3(packageJsonPath, "utf-8"));
@@ -6904,7 +6957,7 @@ function isMdxAvailable2(cwd) {
6904
6957
  }
6905
6958
  } catch {}
6906
6959
  }
6907
- const parentDir = dirname2(currentDir);
6960
+ const parentDir = dirname3(currentDir);
6908
6961
  if (parentDir === currentDir) {
6909
6962
  break;
6910
6963
  }
@@ -6914,10 +6967,10 @@ function isMdxAvailable2(cwd) {
6914
6967
  }
6915
6968
  function tryLoadModule(cwd, moduleName) {
6916
6969
  const pathsToTry = [
6917
- join6(cwd, `node_modules/${moduleName}`),
6918
- join6(cwd, `../node_modules/${moduleName}`),
6919
- join6(cwd, `../../node_modules/${moduleName}`),
6920
- join6(cwd, `../../../node_modules/${moduleName}`)
6970
+ join7(cwd, `node_modules/${moduleName}`),
6971
+ join7(cwd, `../node_modules/${moduleName}`),
6972
+ join7(cwd, `../../node_modules/${moduleName}`),
6973
+ join7(cwd, `../../../node_modules/${moduleName}`)
6921
6974
  ];
6922
6975
  for (const modulePath of pathsToTry) {
6923
6976
  try {
@@ -7006,9 +7059,9 @@ async function compileMdx(content2, cwd, options = {}) {
7006
7059
  function rewriteImportPaths(code, sourcePath, targetPath) {
7007
7060
  const importRegex = /import\s+(?:{[^}]+}|[\w\s,]+)\s+from\s+['"](\.[^'"]+)['"]/g;
7008
7061
  return code.replace(importRegex, (match, importPath) => {
7009
- const sourceDir = dirname2(sourcePath);
7062
+ const sourceDir = dirname3(sourcePath);
7010
7063
  const absoluteImportPath = resolve(sourceDir, importPath);
7011
- const targetDir = dirname2(targetPath);
7064
+ const targetDir = dirname3(targetPath);
7012
7065
  let newRelativePath = relative(targetDir, absoluteImportPath);
7013
7066
  if (!newRelativePath.startsWith(".")) {
7014
7067
  newRelativePath = `./${newRelativePath}`;
@@ -7166,7 +7219,7 @@ export default function MarkdownFallback() {
7166
7219
  `;
7167
7220
  }
7168
7221
  function isMarkdownFile(filePath) {
7169
- const ext = extname2(filePath).toLowerCase();
7222
+ const ext = extname3(filePath).toLowerCase();
7170
7223
  return ext === ".md" || ext === ".mdx";
7171
7224
  }
7172
7225
  function extractHeadings(content2, options = {}) {
@@ -7247,7 +7300,7 @@ function isProductionMode(args = []) {
7247
7300
  }
7248
7301
 
7249
7302
  // packages/cli/src/commands/lib/streaming/analyzer.ts
7250
- import { dirname as dirname3, join as join7 } from "node:path";
7303
+ import { dirname as dirname4, join as join8 } from "node:path";
7251
7304
  function hasSSRDataExport(source) {
7252
7305
  if (SSR_DATA_INLINE_EXPORT_REGEX.test(source)) {
7253
7306
  return true;
@@ -7274,11 +7327,11 @@ async function analyzeRouteForStreaming(options) {
7274
7327
  };
7275
7328
  }
7276
7329
  async function findSkeletonForTarget(routesDir, relativePath, type) {
7277
- const dirName = normalizeRelativePath(dirname3(relativePath));
7278
- const baseDir = dirName === "." ? routesDir : join7(routesDir, dirName).replace(/\\/g, "/");
7330
+ const dirName = normalizeRelativePath(dirname4(relativePath));
7331
+ const baseDir = dirName === "." ? routesDir : join8(routesDir, dirName).replace(/\\/g, "/");
7279
7332
  const candidates = type === "layout" ? ["[layout+skeleton].tsx", "[layout+skeleton].ts"] : ["[skeleton].tsx", "[skeleton].ts"];
7280
7333
  for (const candidate of candidates) {
7281
- const candidatePath = join7(baseDir, candidate);
7334
+ const candidatePath = join8(baseDir, candidate);
7282
7335
  try {
7283
7336
  const file = Bun.file(candidatePath);
7284
7337
  if (await file.exists()) {
@@ -7299,12 +7352,12 @@ var init_analyzer = __esm(() => {
7299
7352
  });
7300
7353
 
7301
7354
  // packages/cli/src/commands/lib/streaming/suspense.ts
7302
- import { dirname as dirname4, join as join8, relative as relative2 } from "node:path";
7355
+ import { dirname as dirname5, join as join9, relative as relative2 } from "node:path";
7303
7356
  async function generateStreamingWrapper(options) {
7304
7357
  const { cwd, relativeFilePath, analysis, config: config2 } = options;
7305
- const streamingModulePath = join8(cwd, ".reroute", "streaming", relativeFilePath).replace(/\.(tsx|ts)$/, ".tsx");
7306
- const wrapperDir = dirname4(streamingModulePath);
7307
- const originalModuleWithoutExt = removeExtension(join8(cwd, "src", "client", "routes", relativeFilePath));
7358
+ const streamingModulePath = join9(cwd, ".reroute", "streaming", relativeFilePath).replace(/\.(tsx|ts)$/, ".tsx");
7359
+ const wrapperDir = dirname5(streamingModulePath);
7360
+ const originalModuleWithoutExt = removeExtension(join9(cwd, "src", "client", "routes", relativeFilePath));
7308
7361
  const originalImportPath = toImportPath(wrapperDir, originalModuleWithoutExt);
7309
7362
  const skeletonImportBlock = await resolveSkeletonBlock({
7310
7363
  analysis,
@@ -7346,7 +7399,7 @@ async function resolveSkeletonBlock(args) {
7346
7399
  }
7347
7400
  function resolveConfiguredSkeletonPath(value, cwd) {
7348
7401
  if (typeof value === "string" && value.trim().length > 0) {
7349
- return value.startsWith("/") ? value : join8(cwd, value);
7402
+ return value.startsWith("/") ? value : join9(cwd, value);
7350
7403
  }
7351
7404
  if (value && !warnedSkeletonType) {
7352
7405
  console.warn("[reroute/streaming] default skeletons must be provided as string module paths in reroute.config.ts");
@@ -7383,10 +7436,10 @@ var init_suspense = () => {};
7383
7436
  // packages/cli/src/commands/lib/theme.ts
7384
7437
  import { existsSync as existsSync5, readFileSync as readFileSync4 } from "node:fs";
7385
7438
  import { mkdir as mkdir2, writeFile } from "node:fs/promises";
7386
- import { dirname as dirname5, isAbsolute, join as join9, resolve as resolve2 } from "node:path";
7439
+ import { dirname as dirname6, isAbsolute, join as join10, resolve as resolve2 } from "node:path";
7387
7440
  function getCssPaths(cwd) {
7388
- const input = join9(cwd, "src/client/index.css");
7389
- const output = join9(cwd, ".reroute/index.css");
7441
+ const input = join10(cwd, "src/client/index.css");
7442
+ const output = join10(cwd, ".reroute/index.css");
7390
7443
  return { input, output };
7391
7444
  }
7392
7445
  function isFileImport(specifier) {
@@ -7412,7 +7465,7 @@ function bundleCssEntrypoint(entryPath) {
7412
7465
  }
7413
7466
  stack.add(absPath);
7414
7467
  const source = readFileSync4(absPath, "utf-8");
7415
- const baseDir = dirname5(absPath);
7468
+ const baseDir = dirname6(absPath);
7416
7469
  const bundled = source.replace(IMPORT_RE, (full, single, double, bare, rest) => {
7417
7470
  const specifier = single || double || bare;
7418
7471
  const condition = (rest ?? "").trim();
@@ -7435,7 +7488,7 @@ async function syncThemeCss(cwd) {
7435
7488
  if (!existsSync5(input)) {
7436
7489
  return false;
7437
7490
  }
7438
- await mkdir2(dirname5(output), { recursive: true });
7491
+ await mkdir2(dirname6(output), { recursive: true });
7439
7492
  try {
7440
7493
  const css = bundleCssEntrypoint(input);
7441
7494
  await writeFile(output, css, "utf-8");
@@ -7458,15 +7511,19 @@ var init_theme = __esm(() => {
7458
7511
  // packages/cli/src/commands/gen.ts
7459
7512
  var exports_gen = {};
7460
7513
  __export(exports_gen, {
7461
- default: () => gen
7514
+ default: () => gen,
7515
+ startGenWatch: () => startGenWatch
7462
7516
  });
7463
7517
  import { watch } from "node:fs";
7464
- import { copyFile, mkdir as mkdir3, readdir as readdir7, rm, unlink } from "node:fs/promises";
7465
- import { dirname as dirname6, extname as extname3, join as join10 } from "node:path";
7518
+ import { copyFile as copyFile2, mkdir as mkdir3, readdir as readdir7, rm, unlink as unlink2 } from "node:fs/promises";
7519
+ import { dirname as dirname7, extname as extname4, join as join11 } from "node:path";
7466
7520
  import { pathToFileURL as pathToFileURL8 } from "node:url";
7521
+ function isWatchNoise(name) {
7522
+ return name.split(/[/\\]/).some((part) => part.startsWith(".")) || /\.bust-[^/\\]+$/.test(name);
7523
+ }
7467
7524
  async function bundleThemeCssIntoArtifacts(cwd) {
7468
- const cssPath = join10(cwd, ".reroute", "index.css");
7469
- const artifactsPath = join10(cwd, OUTPUT_ARTIFACTS);
7525
+ const cssPath = join11(cwd, ".reroute", "index.css");
7526
+ const artifactsPath = join11(cwd, OUTPUT_ARTIFACTS);
7470
7527
  try {
7471
7528
  const cssContent = await Bun.file(cssPath).text();
7472
7529
  if (!cssContent)
@@ -7492,7 +7549,7 @@ async function bundleThemeCssIntoArtifacts(cwd) {
7492
7549
  async function ensureOutputDir(cwd, options = {}) {
7493
7550
  const { clean = true } = options;
7494
7551
  try {
7495
- const outputPath = join10(cwd, OUTPUT_DIR);
7552
+ const outputPath = join11(cwd, OUTPUT_DIR);
7496
7553
  if (clean) {
7497
7554
  let needsCleanup = false;
7498
7555
  try {
@@ -7505,9 +7562,9 @@ async function ensureOutputDir(cwd, options = {}) {
7505
7562
  }
7506
7563
  }
7507
7564
  await mkdir3(outputPath, { recursive: true });
7508
- await mkdir3(join10(cwd, OUTPUT_COLLECTIONS_DIR), { recursive: true });
7509
- await mkdir3(join10(cwd, ".reroute/bundles"), { recursive: true });
7510
- await mkdir3(join10(cwd, ".reroute/streaming"), { recursive: true });
7565
+ await mkdir3(join11(cwd, OUTPUT_COLLECTIONS_DIR), { recursive: true });
7566
+ await mkdir3(join11(cwd, ".reroute/bundles"), { recursive: true });
7567
+ await mkdir3(join11(cwd, ".reroute/streaming"), { recursive: true });
7511
7568
  } catch {}
7512
7569
  }
7513
7570
  async function writeStubFiles(cwd) {
@@ -7565,11 +7622,11 @@ import './artifacts';
7565
7622
  import './routes'; // Import routes (bundles all route components)
7566
7623
  import '../src/index';
7567
7624
  `;
7568
- await Bun.write(join10(cwd, OUTPUT_ROUTES), STUB_ROUTES);
7569
- await Bun.write(join10(cwd, OUTPUT_CONTENT_TS), STUB_CONTENT);
7570
- await Bun.write(join10(cwd, OUTPUT_ARTIFACTS), STUB_ARTIFACTS);
7571
- await Bun.write(join10(cwd, OUTPUT_INDEX), STUB_INDEX);
7572
- await Bun.write(join10(cwd, ".reroute/entry.ts"), STUB_ENTRY);
7625
+ await Bun.write(join11(cwd, OUTPUT_ROUTES), STUB_ROUTES);
7626
+ await Bun.write(join11(cwd, OUTPUT_CONTENT_TS), STUB_CONTENT);
7627
+ await Bun.write(join11(cwd, OUTPUT_ARTIFACTS), STUB_ARTIFACTS);
7628
+ await Bun.write(join11(cwd, OUTPUT_INDEX), STUB_INDEX);
7629
+ await Bun.write(join11(cwd, ".reroute/entry.ts"), STUB_ENTRY);
7573
7630
  console.log("[reroute/gen] Initialized stub files");
7574
7631
  }
7575
7632
  function shouldSkipFile(relativePath, entryName) {
@@ -7591,8 +7648,8 @@ async function scanDirectory(dir, base = "") {
7591
7648
  const files = [];
7592
7649
  const entries = await readdir7(dir, { withFileTypes: true });
7593
7650
  for (const entry of entries) {
7594
- const fullPath = join10(dir, entry.name);
7595
- const relativePath = join10(base, entry.name);
7651
+ const fullPath = join11(dir, entry.name);
7652
+ const relativePath = join11(base, entry.name);
7596
7653
  if (entry.isDirectory()) {
7597
7654
  if (entry.name === "content")
7598
7655
  continue;
@@ -7610,8 +7667,8 @@ async function scan404Files(dir, base = "") {
7610
7667
  const files = [];
7611
7668
  const entries = await readdir7(dir, { withFileTypes: true });
7612
7669
  for (const entry of entries) {
7613
- const fullPath = join10(dir, entry.name);
7614
- const relativePath = join10(base, entry.name);
7670
+ const fullPath = join11(dir, entry.name);
7671
+ const relativePath = join11(base, entry.name);
7615
7672
  if (entry.isDirectory()) {
7616
7673
  const nested = await scan404Files(fullPath, relativePath);
7617
7674
  files.push(...nested);
@@ -7626,8 +7683,8 @@ async function scanOgFiles(dir, base = "") {
7626
7683
  const files = [];
7627
7684
  const entries = await readdir7(dir, { withFileTypes: true });
7628
7685
  for (const entry of entries) {
7629
- const fullPath = join10(dir, entry.name);
7630
- const relativePath = join10(base, entry.name);
7686
+ const fullPath = join11(dir, entry.name);
7687
+ const relativePath = join11(base, entry.name);
7631
7688
  if (entry.isDirectory()) {
7632
7689
  if (entry.name === "content")
7633
7690
  continue;
@@ -7881,7 +7938,7 @@ function matchPattern(route: Route, pathname: string): Record<string, string> |
7881
7938
  `;
7882
7939
  }
7883
7940
  async function buildStreamingWrappersForTree(cwd, routesPath, tree, config2) {
7884
- const streamingDir = join10(cwd, ".reroute", "streaming");
7941
+ const streamingDir = join11(cwd, ".reroute", "streaming");
7885
7942
  const analyses = new Map;
7886
7943
  const candidates = [
7887
7944
  ...tree.routes.map((route) => ({
@@ -7900,7 +7957,7 @@ async function buildStreamingWrappersForTree(cwd, routesPath, tree, config2) {
7900
7957
  for (const candidate of candidates) {
7901
7958
  if (!/\.(tsx|ts)$/.test(candidate.filePath))
7902
7959
  continue;
7903
- const absolutePath = join10(routesPath, candidate.filePath);
7960
+ const absolutePath = join11(routesPath, candidate.filePath);
7904
7961
  const analysis = await analyzeRouteForStreaming({
7905
7962
  absolutePath,
7906
7963
  relativePath: candidate.filePath,
@@ -7909,8 +7966,8 @@ async function buildStreamingWrappersForTree(cwd, routesPath, tree, config2) {
7909
7966
  });
7910
7967
  if (!analysis.needsStreaming)
7911
7968
  continue;
7912
- const wrapperPath = join10(streamingDir, candidate.filePath).replace(/\.(tsx|ts)$/, ".tsx");
7913
- await mkdir3(dirname6(wrapperPath), { recursive: true });
7969
+ const wrapperPath = join11(streamingDir, candidate.filePath).replace(/\.(tsx|ts)$/, ".tsx");
7970
+ await mkdir3(dirname7(wrapperPath), { recursive: true });
7914
7971
  const code = await generateStreamingWrapper({
7915
7972
  cwd,
7916
7973
  relativeFilePath: candidate.filePath,
@@ -7934,13 +7991,13 @@ function isContentFileName(name) {
7934
7991
  }
7935
7992
  async function listLocaleContentFiles(collectionDir, locale) {
7936
7993
  try {
7937
- const nested = await readdir7(join10(collectionDir, locale), {
7994
+ const nested = await readdir7(join11(collectionDir, locale), {
7938
7995
  withFileTypes: true
7939
7996
  });
7940
7997
  const files = [];
7941
7998
  for (const n of nested) {
7942
7999
  if (n.isFile() && isContentFileName(n.name)) {
7943
- files.push({ relativePath: join10(locale, n.name), locale });
8000
+ files.push({ relativePath: join11(locale, n.name), locale });
7944
8001
  }
7945
8002
  }
7946
8003
  return files;
@@ -7978,13 +8035,13 @@ async function loadContentMeta(absSrc, buildSrc, isMarkdown) {
7978
8035
  if (isMarkdown) {
7979
8036
  return processMarkdownFile(absSrc).frontmatter || {};
7980
8037
  }
7981
- const tmp = join10(dirname6(buildSrc), `.meta-${Date.now()}-${Math.random().toString(36).slice(2)}${extname3(buildSrc)}`);
8038
+ const tmp = join11(dirname7(buildSrc), `.meta-${Date.now()}-${Math.random().toString(36).slice(2)}${extname4(buildSrc)}`);
7982
8039
  try {
7983
- await copyFile(buildSrc, tmp);
8040
+ await copyFile2(buildSrc, tmp);
7984
8041
  const m = await import(pathToFileURL8(tmp).href);
7985
8042
  return m.meta || {};
7986
8043
  } finally {
7987
- await unlink(tmp).catch(() => {});
8044
+ await unlink2(tmp).catch(() => {});
7988
8045
  }
7989
8046
  }
7990
8047
  function serializeConfig(config2) {
@@ -8036,9 +8093,9 @@ async function buildSingleContentChunk(cwd, collection, fileRef, contentDir, arg
8036
8093
  const locale = fileRef.locale || defaultLocale;
8037
8094
  const baseName = file.split("/").pop() || file;
8038
8095
  const name = baseName.replace(/\.(tsx|ts|md|mdx)$/, "");
8039
- const absSrc = join10(contentDir, file);
8096
+ const absSrc = join11(contentDir, file);
8040
8097
  const isMarkdown = /\.(md|mdx)$/.test(file);
8041
- const buildSrc = isMarkdown ? join10(cwd, ".reroute", "markdown", collection, "content", file.replace(/\.(md|mdx)$/, ".tsx")) : absSrc;
8098
+ const buildSrc = isMarkdown ? join11(cwd, ".reroute", "markdown", collection, "content", file.replace(/\.(md|mdx)$/, ".tsx")) : absSrc;
8042
8099
  if (isMarkdown) {
8043
8100
  try {
8044
8101
  const exists = await Bun.file(buildSrc).exists();
@@ -8084,11 +8141,11 @@ async function buildSingleContentChunk(cwd, collection, fileRef, contentDir, arg
8084
8141
  return null;
8085
8142
  }
8086
8143
  const hash2 = await sha8(code);
8087
- const chunkRelDir = join10(".reroute", "bundles");
8088
- const chunkAbsDir = join10(cwd, chunkRelDir);
8144
+ const chunkRelDir = join11(".reroute", "bundles");
8145
+ const chunkAbsDir = join11(cwd, chunkRelDir);
8089
8146
  const localeSuffix = locale !== defaultLocale ? `${locale}-` : "";
8090
8147
  const outFile = `${collection}-${localeSuffix}${name}.${hash2}.js`;
8091
- const absOut = join10(chunkAbsDir, outFile);
8148
+ const absOut = join11(chunkAbsDir, outFile);
8092
8149
  if (sourcemapContent) {
8093
8150
  code = code.replace(/\/\/# sourceMappingURL=.*\.js\.map/, `//# sourceMappingURL=${outFile}.map`);
8094
8151
  }
@@ -8121,7 +8178,7 @@ async function buildSingleContentChunk(cwd, collection, fileRef, contentDir, arg
8121
8178
  };
8122
8179
  }
8123
8180
  async function buildContentChunks(cwd, args = [], defaultLocale = "en-US") {
8124
- const routesRoot = join10(cwd, ROUTES_DIR);
8181
+ const routesRoot = join11(cwd, ROUTES_DIR);
8125
8182
  console.log(`[reroute/content] scan ${routesRoot}`);
8126
8183
  const collections2 = await readdir7(routesRoot, { withFileTypes: true });
8127
8184
  const results = [];
@@ -8129,7 +8186,7 @@ async function buildContentChunks(cwd, args = [], defaultLocale = "en-US") {
8129
8186
  if (!c.isDirectory())
8130
8187
  continue;
8131
8188
  const collection = c.name;
8132
- const contentDir = join10(routesRoot, collection, "content");
8189
+ const contentDir = join11(routesRoot, collection, "content");
8133
8190
  console.log(`[reroute/content] collection ${collection} dir ${contentDir}`);
8134
8191
  const files = await listContentFiles2(contentDir);
8135
8192
  console.log(`[reroute/content] files ${files.length}`);
@@ -8181,7 +8238,7 @@ async function buildContentChunks(cwd, args = [], defaultLocale = "en-US") {
8181
8238
  lines.push("");
8182
8239
  const writes = [];
8183
8240
  writes.push({
8184
- path: join10(cwd, OUTPUT_CONTENT_TS),
8241
+ path: join11(cwd, OUTPUT_CONTENT_TS),
8185
8242
  content: lines.join(`
8186
8243
  `)
8187
8244
  });
@@ -8215,7 +8272,7 @@ async function buildContentChunks(cwd, args = [], defaultLocale = "en-US") {
8215
8272
  js.push("}");
8216
8273
  js.push("");
8217
8274
  writes.push({
8218
- path: join10(cwd, OUTPUT_COLLECTIONS_DIR, `${collection}.js`),
8275
+ path: join11(cwd, OUTPUT_COLLECTIONS_DIR, `${collection}.js`),
8219
8276
  content: js.join(`
8220
8277
  `)
8221
8278
  });
@@ -8239,7 +8296,7 @@ async function buildSearchIndex(cwd, config2, args = []) {
8239
8296
  minHeadingLevel = 1,
8240
8297
  maxHeadingLevel = 6
8241
8298
  } = searchConfig;
8242
- const routesRoot = join10(cwd, ROUTES_DIR);
8299
+ const routesRoot = join11(cwd, ROUTES_DIR);
8243
8300
  const collections2 = await readdir7(routesRoot, { withFileTypes: true });
8244
8301
  const i18n2 = await discoverI18n(cwd, config2.i18n);
8245
8302
  const defaultLocale = i18n2.defaultLocale;
@@ -8251,7 +8308,7 @@ async function buildSearchIndex(cwd, config2, args = []) {
8251
8308
  if (targetCollections.length > 0 && !targetCollections.includes(collection)) {
8252
8309
  continue;
8253
8310
  }
8254
- const contentDir = join10(routesRoot, collection, "content");
8311
+ const contentDir = join11(routesRoot, collection, "content");
8255
8312
  try {
8256
8313
  const files = await listContentFiles2(contentDir);
8257
8314
  for (const fileRef of files) {
@@ -8261,7 +8318,7 @@ async function buildSearchIndex(cwd, config2, args = []) {
8261
8318
  const baseName = file.split("/").pop() || file;
8262
8319
  const name = baseName.replace(/\.(md|mdx)$/, "");
8263
8320
  const locale = fileRef.locale || defaultLocale;
8264
- const filePath = join10(contentDir, file);
8321
+ const filePath = join11(contentDir, file);
8265
8322
  try {
8266
8323
  const processed = processMarkdownFile(filePath);
8267
8324
  const { frontmatter, content: content2 } = processed;
@@ -8309,13 +8366,13 @@ async function buildSearchIndex(cwd, config2, args = []) {
8309
8366
  generated: new Date().toISOString(),
8310
8367
  entries: searchIndex
8311
8368
  };
8312
- await Bun.write(join10(cwd, OUTPUT_SEARCH_INDEX), JSON.stringify(indexData, null, 2));
8313
- console.log(`[reroute/search] Generated search index with ${searchIndex.length} entries: ${join10(cwd, OUTPUT_SEARCH_INDEX)}`);
8369
+ await Bun.write(join11(cwd, OUTPUT_SEARCH_INDEX), JSON.stringify(indexData, null, 2));
8370
+ console.log(`[reroute/search] Generated search index with ${searchIndex.length} entries: ${join11(cwd, OUTPUT_SEARCH_INDEX)}`);
8314
8371
  }
8315
8372
  async function preprocessMarkdownFiles(cwd, config2) {
8316
8373
  console.log("[reroute/markdown] Starting markdown preprocessing...");
8317
- const routesPath = join10(cwd, ROUTES_DIR);
8318
- const markdownDir = join10(cwd, ".reroute", "markdown");
8374
+ const routesPath = join11(cwd, ROUTES_DIR);
8375
+ const markdownDir = join11(cwd, ".reroute", "markdown");
8319
8376
  try {
8320
8377
  await rm(markdownDir, { force: true, recursive: true });
8321
8378
  } catch {}
@@ -8325,8 +8382,8 @@ async function preprocessMarkdownFiles(cwd, config2) {
8325
8382
  try {
8326
8383
  const entries = await readdir7(dir, { withFileTypes: true });
8327
8384
  for (const entry of entries) {
8328
- const fullPath = join10(dir, entry.name);
8329
- const relativePath = join10(base, entry.name);
8385
+ const fullPath = join11(dir, entry.name);
8386
+ const relativePath = join11(base, entry.name);
8330
8387
  if (entry.isDirectory()) {
8331
8388
  const nested = await scanMarkdown(fullPath, relativePath);
8332
8389
  files.push(...nested);
@@ -8348,8 +8405,8 @@ async function preprocessMarkdownFiles(cwd, config2) {
8348
8405
  }
8349
8406
  console.log(`[reroute/markdown] Found ${markdownFiles.length} markdown file(s)`);
8350
8407
  for (const file of markdownFiles) {
8351
- const sourcePath = join10(routesPath, file);
8352
- const targetPath = join10(markdownDir, file.replace(/\.mdx?$/, ".tsx"));
8408
+ const sourcePath = join11(routesPath, file);
8409
+ const targetPath = join11(markdownDir, file.replace(/\.mdx?$/, ".tsx"));
8353
8410
  try {
8354
8411
  const processed = processMarkdownFile(sourcePath);
8355
8412
  const isMdx = file.endsWith(".mdx");
@@ -8375,8 +8432,8 @@ async function preprocessMarkdownFiles(cwd, config2) {
8375
8432
  }
8376
8433
  async function buildEntrypointBundle(cwd, args = []) {
8377
8434
  const buildStartTime = performance.now();
8378
- const clientDir = join10(cwd, "src", "client");
8379
- const entrypoint = join10(clientDir, "index.tsx");
8435
+ const clientDir = join11(cwd, "src", "client");
8436
+ const entrypoint = join11(clientDir, "index.tsx");
8380
8437
  const exists = await Bun.file(entrypoint).exists();
8381
8438
  if (!exists) {
8382
8439
  console.log("[reroute/gen] No index.tsx found, skipping bundle build");
@@ -8384,7 +8441,7 @@ async function buildEntrypointBundle(cwd, args = []) {
8384
8441
  }
8385
8442
  console.log("[reroute/gen] Building entrypoint bundle...");
8386
8443
  const isProd = args.includes("--prod");
8387
- const bundlesDir = join10(cwd, ".reroute", "bundles");
8444
+ const bundlesDir = join11(cwd, ".reroute", "bundles");
8388
8445
  await mkdir3(bundlesDir, { recursive: true });
8389
8446
  const mode = isProd ? "production" : "development";
8390
8447
  const publicEnv = getPublicEnvVars(cwd, mode);
@@ -8486,7 +8543,7 @@ async function buildEntrypointBundle(cwd, args = []) {
8486
8543
  const existingFiles = await readdir7(bundlesDir);
8487
8544
  for (const file of existingFiles) {
8488
8545
  if (/^(index|chunk|asset)\.[a-z0-9]+\.(js|css|js\.map|css\.map)(\.gz|\.br)?$/i.test(file) && !newFiles.has(file.replace(/\.(gz|br)$/, ""))) {
8489
- await rm(join10(bundlesDir, file), { force: true });
8546
+ await rm(join11(bundlesDir, file), { force: true });
8490
8547
  }
8491
8548
  }
8492
8549
  } catch (_error) {}
@@ -8502,7 +8559,7 @@ async function buildEntrypointBundle(cwd, args = []) {
8502
8559
  }
8503
8560
  }
8504
8561
  await Promise.all(outputs.map(async (output) => {
8505
- const destPath = join10(bundlesDir, output.fileName);
8562
+ const destPath = join11(bundlesDir, output.fileName);
8506
8563
  await Bun.write(destPath, output.content);
8507
8564
  if (shouldPreCompress) {
8508
8565
  const shouldCompress = /\.(js|css)$/i.test(output.fileName) && !output.fileName.endsWith(".map");
@@ -8571,7 +8628,7 @@ async function generate(cwd, args = [], options = {}) {
8571
8628
  await writeStubFiles(cwd);
8572
8629
  }
8573
8630
  await perfTrack("Markdown preprocessing", () => preprocessMarkdownFiles(cwd, config2));
8574
- const routesPath = join10(cwd, ROUTES_DIR);
8631
+ const routesPath = join11(cwd, ROUTES_DIR);
8575
8632
  try {
8576
8633
  await perfTrack("Routes generation", async () => {
8577
8634
  const files = await scanDirectory(routesPath);
@@ -8580,10 +8637,10 @@ async function generate(cwd, args = [], options = {}) {
8580
8637
  const tree = generateRouteTree(all.map((f) => f.replace(/\\/g, "/")));
8581
8638
  const streamingAnalyses = streamingEnabled ? await buildStreamingWrappersForTree(cwd, routesPath, tree, config2) : new Map;
8582
8639
  const ts = generateTypeScript(tree, streamingAnalyses);
8583
- await Bun.write(join10(cwd, OUTPUT_ROUTES), ts);
8640
+ await Bun.write(join11(cwd, OUTPUT_ROUTES), ts);
8584
8641
  });
8585
8642
  if (!showPerformance) {
8586
- console.log(`[reroute/gen] Generated routes: ${join10(cwd, OUTPUT_ROUTES)}`);
8643
+ console.log(`[reroute/gen] Generated routes: ${join11(cwd, OUTPUT_ROUTES)}`);
8587
8644
  }
8588
8645
  } catch (error) {
8589
8646
  console.error("[reroute/gen] Failed to generate routes:", error);
@@ -8592,7 +8649,7 @@ async function generate(cwd, args = [], options = {}) {
8592
8649
  const i18n2 = await discoverI18n(cwd, config2.i18n);
8593
8650
  const defaultLocale = i18n2.defaultLocale;
8594
8651
  try {
8595
- await Bun.write(join10(cwd, ".reroute", "i18n.json"), JSON.stringify({
8652
+ await Bun.write(join11(cwd, ".reroute", "i18n.json"), JSON.stringify({
8596
8653
  enabled: i18n2.enabled,
8597
8654
  defaultLocale: i18n2.defaultLocale,
8598
8655
  locales: i18n2.locales,
@@ -8609,7 +8666,7 @@ async function generate(cwd, args = [], options = {}) {
8609
8666
  try {
8610
8667
  await perfTrack("Content building", () => buildContentChunks(cwd, args, defaultLocale));
8611
8668
  if (!showPerformance) {
8612
- console.log(`[reroute/gen] Generated content: ${join10(cwd, OUTPUT_CONTENT_TS)} + collections/*.js`);
8669
+ console.log(`[reroute/gen] Generated content: ${join11(cwd, OUTPUT_CONTENT_TS)} + collections/*.js`);
8613
8670
  }
8614
8671
  } catch (error) {
8615
8672
  console.error("[reroute/gen] Failed to generate content:", error);
@@ -8617,17 +8674,17 @@ async function generate(cwd, args = [], options = {}) {
8617
8674
  }
8618
8675
  try {
8619
8676
  await perfTrack("Manifest generation", async () => {
8620
- const routesPath2 = join10(cwd, OUTPUT_ROUTES);
8677
+ const routesPath2 = join11(cwd, OUTPUT_ROUTES);
8621
8678
  const routesModule = await import(`file://${routesPath2}?t=${Date.now()}`);
8622
8679
  const routes = routesModule.routes || [];
8623
8680
  const staticRoutes = routes.filter((r) => !r.params || r.params.length === 0).map((r) => r.pattern);
8624
8681
  const contentRoutes = [];
8625
- const collectionsDir = join10(cwd, ".reroute", "collections");
8682
+ const collectionsDir = join11(cwd, ".reroute", "collections");
8626
8683
  try {
8627
8684
  const collectionFiles = await readdir7(collectionsDir);
8628
8685
  for (const file of collectionFiles) {
8629
8686
  if (file.endsWith(".js")) {
8630
- const collectionPath = join10(collectionsDir, file);
8687
+ const collectionPath = join11(collectionsDir, file);
8631
8688
  const collectionModule = await import(`file://${collectionPath}?t=${Date.now()}`);
8632
8689
  const items = collectionModule.items || [];
8633
8690
  for (const item of items) {
@@ -8652,7 +8709,7 @@ async function generate(cwd, args = [], options = {}) {
8652
8709
  dynamicRoutes,
8653
8710
  version: 1
8654
8711
  };
8655
- await Bun.write(join10(cwd, ".reroute", "manifest.json"), JSON.stringify(manifest, null, 2));
8712
+ await Bun.write(join11(cwd, ".reroute", "manifest.json"), JSON.stringify(manifest, null, 2));
8656
8713
  });
8657
8714
  } catch (error) {
8658
8715
  console.error("[reroute/gen] Failed to generate manifest:", error);
@@ -8673,7 +8730,7 @@ async function generate(cwd, args = [], options = {}) {
8673
8730
  mdComponentsLines.push("");
8674
8731
  mdComponentsLines.push(`import markdownComponents from '${componentsPath}';`);
8675
8732
  mdComponentsLines.push("export { markdownComponents };");
8676
- await Bun.write(join10(cwd, ".reroute/markdown-components.ts"), mdComponentsLines.join(`
8733
+ await Bun.write(join11(cwd, ".reroute/markdown-components.ts"), mdComponentsLines.join(`
8677
8734
  `));
8678
8735
  }
8679
8736
  const indexLines = [];
@@ -8693,7 +8750,7 @@ async function generate(cwd, args = [], options = {}) {
8693
8750
  const ogTemplatePath = config2.ogImage.defaultTemplate.startsWith(".") ? `../${config2.ogImage.defaultTemplate}` : config2.ogImage.defaultTemplate;
8694
8751
  indexLines.push(`import OGTemplate from '${ogTemplatePath}';`);
8695
8752
  }
8696
- const ogFiles = await scanOgFiles(join10(cwd, ROUTES_DIR));
8753
+ const ogFiles = await scanOgFiles(join11(cwd, ROUTES_DIR));
8697
8754
  const ogImports = [];
8698
8755
  for (let i = 0;i < ogFiles.length; i++) {
8699
8756
  const ogFile = ogFiles[i];
@@ -8739,7 +8796,7 @@ async function generate(cwd, args = [], options = {}) {
8739
8796
  }
8740
8797
  indexLines.push("};");
8741
8798
  }
8742
- const templatePath = join10(cwd, "src", "client", "index.html");
8799
+ const templatePath = join11(cwd, "src", "client", "index.html");
8743
8800
  try {
8744
8801
  const templateContent = await Bun.file(templatePath).text();
8745
8802
  indexLines.push("");
@@ -8751,7 +8808,7 @@ async function generate(cwd, args = [], options = {}) {
8751
8808
  indexLines.push(`(globalThis as any).__REROUTE_CONFIG__ = ${serializeConfig(config2)};`);
8752
8809
  indexLines.push("");
8753
8810
  indexLines.push("export type RerouteBundle = typeof bundle;");
8754
- await Bun.write(join10(cwd, OUTPUT_ARTIFACTS), indexLines.join(`
8811
+ await Bun.write(join11(cwd, OUTPUT_ARTIFACTS), indexLines.join(`
8755
8812
  `));
8756
8813
  const barrelLines = [
8757
8814
  "// \uD83D\uDEA8 Auto-generated by Reroute - DO NOT EDIT \uD83D\uDEA8",
@@ -8761,7 +8818,7 @@ async function generate(cwd, args = [], options = {}) {
8761
8818
  "",
8762
8819
  "export * from './artifacts';"
8763
8820
  ];
8764
- await Bun.write(join10(cwd, OUTPUT_INDEX), barrelLines.join(`
8821
+ await Bun.write(join11(cwd, OUTPUT_INDEX), barrelLines.join(`
8765
8822
  `));
8766
8823
  const entryLines = [
8767
8824
  "// \uD83D\uDEA8 Auto-generated by Reroute - DO NOT EDIT \uD83D\uDEA8",
@@ -8777,10 +8834,10 @@ async function generate(cwd, args = [], options = {}) {
8777
8834
  "import './routes'; // Import routes (bundles all route components)",
8778
8835
  "import '../src/index'; // Import user's server entry"
8779
8836
  ];
8780
- await Bun.write(join10(cwd, ".reroute/entry.ts"), entryLines.join(`
8837
+ await Bun.write(join11(cwd, ".reroute/entry.ts"), entryLines.join(`
8781
8838
  `));
8782
8839
  if (!showPerformance) {
8783
- console.log(`[reroute/gen] Generated artifacts: ${join10(cwd, OUTPUT_ARTIFACTS)}`);
8840
+ console.log(`[reroute/gen] Generated artifacts: ${join11(cwd, OUTPUT_ARTIFACTS)}`);
8784
8841
  }
8785
8842
  await perfTrack("Bundle building", () => buildEntrypointBundle(cwd, args));
8786
8843
  const endTime = performance.now();
@@ -8791,22 +8848,8 @@ async function generate(cwd, args = [], options = {}) {
8791
8848
  console.log(`[reroute/gen] Generation complete in ${duration}s`);
8792
8849
  }
8793
8850
  }
8794
- async function gen(args) {
8851
+ async function startGenWatch(cwd, args) {
8795
8852
  const genStartTime = performance.now();
8796
- const cwd = process.cwd();
8797
- const watchMode = args.includes("--watch") || args.includes("-w");
8798
- if (!watchMode) {
8799
- await generate(cwd, args);
8800
- await syncThemeCss(cwd);
8801
- await bundleThemeCssIntoArtifacts(cwd);
8802
- checkMarkdownIfConfigured(cwd);
8803
- const genEndTime2 = performance.now();
8804
- const totalDuration2 = ((genEndTime2 - genStartTime) / 1000).toFixed(2);
8805
- console.log(`
8806
- [reroute/gen] ✓ Build complete in ${totalDuration2}s
8807
- `);
8808
- process.exit(0);
8809
- }
8810
8853
  console.log("[reroute/gen] Watch mode enabled");
8811
8854
  console.log("[reroute/gen] Initial generation...");
8812
8855
  await generate(cwd, args);
@@ -8915,7 +8958,7 @@ async function gen(args) {
8915
8958
  const mediumDebounce = createDebouncer(150);
8916
8959
  const slowDebounce = createDebouncer(300);
8917
8960
  const loadedConfig = await loadConfig(cwd);
8918
- const configPath = join10(cwd, "reroute.config.ts");
8961
+ const configPath = join11(cwd, "reroute.config.ts");
8919
8962
  let configWatcher = null;
8920
8963
  try {
8921
8964
  configWatcher = watch(configPath, () => {
@@ -8937,7 +8980,7 @@ async function gen(args) {
8937
8980
  ];
8938
8981
  const envWatchers = [];
8939
8982
  for (const envFile of envFiles) {
8940
- const envPath = join10(cwd, envFile);
8983
+ const envPath = join11(cwd, envFile);
8941
8984
  try {
8942
8985
  const envWatcher = watch(envPath, () => {
8943
8986
  mediumDebounce(() => {
@@ -8956,21 +8999,23 @@ async function gen(args) {
8956
8999
  let packagesWatcher = null;
8957
9000
  const isRerouteWorkspace = async () => {
8958
9001
  try {
8959
- const packagesPath = join10(cwd, "..", "..", "packages");
8960
- const exists = await Bun.file(join10(packagesPath, "core", "index.ts")).exists();
9002
+ const packagesPath = join11(cwd, "..", "..", "packages");
9003
+ const exists = await Bun.file(join11(packagesPath, "core", "index.ts")).exists();
8961
9004
  return exists;
8962
9005
  } catch {
8963
9006
  return false;
8964
9007
  }
8965
9008
  };
8966
9009
  if (await isRerouteWorkspace()) {
8967
- const packagesPath = join10(cwd, "..", "..", "packages");
9010
+ const packagesPath = join11(cwd, "..", "..", "packages");
8968
9011
  console.log("[reroute/watch] \uD83D\uDD27 Workspace development mode enabled");
8969
9012
  console.log(`[reroute/watch] \uD83D\uDD27 Watching ${packagesPath}...`);
8970
9013
  packagesWatcher = watch(packagesPath, { recursive: true }, (_ev, filename) => {
8971
9014
  if (!filename)
8972
9015
  return;
8973
9016
  const name = String(filename);
9017
+ if (isWatchNoise(name))
9018
+ return;
8974
9019
  if (name.includes("dist/") || name.includes("node_modules/"))
8975
9020
  return;
8976
9021
  if (!/\.(tsx|ts|jsx|js)$/.test(name))
@@ -8987,12 +9032,14 @@ async function gen(args) {
8987
9032
  });
8988
9033
  });
8989
9034
  }
8990
- const routesPath = join10(cwd, ROUTES_DIR);
9035
+ const routesPath = join11(cwd, ROUTES_DIR);
8991
9036
  console.log(`[reroute/watch] \uD83D\uDCC1 Watching ${routesPath}...`);
8992
9037
  const routesWatcher = watch(routesPath, { recursive: true }, (_ev, filename) => {
8993
9038
  if (!filename)
8994
9039
  return;
8995
9040
  const name = String(filename);
9041
+ if (isWatchNoise(name))
9042
+ return;
8996
9043
  quickDebounce(() => {
8997
9044
  scheduleBuild(async () => {
8998
9045
  const isContentFile = name.includes("/content/") || name.includes("\\content\\");
@@ -9010,7 +9057,7 @@ async function gen(args) {
9010
9057
  console.log("[reroute/watch] ├─ Building content chunks...");
9011
9058
  const contentStart = performance.now();
9012
9059
  const watchI18n = await discoverI18n(cwd, loadedConfig.i18n);
9013
- await Bun.write(join10(cwd, ".reroute", "i18n.json"), JSON.stringify({
9060
+ await Bun.write(join11(cwd, ".reroute", "i18n.json"), JSON.stringify({
9014
9061
  enabled: watchI18n.enabled,
9015
9062
  defaultLocale: watchI18n.defaultLocale,
9016
9063
  locales: watchI18n.locales,
@@ -9047,13 +9094,15 @@ async function gen(args) {
9047
9094
  }, "routes change");
9048
9095
  });
9049
9096
  });
9050
- const clientPath = join10(cwd, "src", "client");
9097
+ const clientPath = join11(cwd, "src", "client");
9051
9098
  console.log(`[reroute/watch] \uD83D\uDCE6 Watching ${clientPath}...`);
9052
9099
  let pendingClientFiles = new Set;
9053
9100
  const clientWatcher = watch(clientPath, { recursive: true }, (_ev, filename) => {
9054
9101
  if (!filename)
9055
9102
  return;
9056
9103
  const name = String(filename);
9104
+ if (isWatchNoise(name))
9105
+ return;
9057
9106
  if (name.includes(".reroute") || name.includes("node_modules"))
9058
9107
  return;
9059
9108
  if (name.includes("routes/") || name.includes("routes\\"))
@@ -9096,16 +9145,42 @@ async function gen(args) {
9096
9145
  configWatcher,
9097
9146
  ...envWatchers
9098
9147
  ].filter(Boolean);
9099
- process.on("SIGINT", () => {
9100
- console.log(`
9148
+ return {
9149
+ close() {
9150
+ console.log(`
9101
9151
  [reroute/watch] \uD83D\uDED1 Stopping watch mode...`);
9102
- for (const watcher of watchers) {
9103
- try {
9104
- watcher?.close();
9105
- } catch {}
9152
+ for (const watcher of watchers) {
9153
+ try {
9154
+ watcher?.close();
9155
+ } catch {}
9156
+ }
9106
9157
  }
9158
+ };
9159
+ }
9160
+ async function gen(args) {
9161
+ const cwd = process.cwd();
9162
+ const watchMode = args.includes("--watch") || args.includes("-w");
9163
+ if (!watchMode) {
9164
+ const genStartTime = performance.now();
9165
+ await generate(cwd, args);
9166
+ await syncThemeCss(cwd);
9167
+ await bundleThemeCssIntoArtifacts(cwd);
9168
+ checkMarkdownIfConfigured(cwd);
9169
+ const genEndTime = performance.now();
9170
+ const totalDuration = ((genEndTime - genStartTime) / 1000).toFixed(2);
9171
+ console.log(`
9172
+ [reroute/gen] ✓ Build complete in ${totalDuration}s
9173
+ `);
9107
9174
  process.exit(0);
9175
+ }
9176
+ const session = await startGenWatch(cwd, args);
9177
+ await new Promise((resolve3) => {
9178
+ process.on("SIGINT", () => {
9179
+ session.close();
9180
+ resolve3();
9181
+ });
9108
9182
  });
9183
+ process.exit(0);
9109
9184
  }
9110
9185
  var ROUTES_DIR = "src/client/routes", OUTPUT_DIR = ".reroute", OUTPUT_ROUTES = ".reroute/routes.ts", OUTPUT_CONTENT_TS = ".reroute/content.ts", OUTPUT_COLLECTIONS_DIR = ".reroute/collections", OUTPUT_SEARCH_INDEX = ".reroute/search.json", OUTPUT_ARTIFACTS = ".reroute/artifacts.ts", OUTPUT_INDEX = ".reroute/index.ts";
9111
9186
  var init_gen = __esm(() => {
@@ -9117,6 +9192,35 @@ var init_gen = __esm(() => {
9117
9192
  init_theme();
9118
9193
  });
9119
9194
 
9195
+ // packages/cli/src/commands/lib/command.ts
9196
+ var exports_command = {};
9197
+ __export(exports_command, {
9198
+ getRerouteCommand: () => getRerouteCommand
9199
+ });
9200
+ import { existsSync as existsSync6 } from "node:fs";
9201
+ import { join as join12 } from "node:path";
9202
+ function getRerouteCommand() {
9203
+ const binPath = join12(import.meta.dir, "..", "..", "bin.ts");
9204
+ const isBunDev = existsSync6(binPath);
9205
+ if (isBunDev) {
9206
+ return `bun ${binPath}`;
9207
+ }
9208
+ const cwd = process.cwd();
9209
+ const nodeModulesPaths = [
9210
+ join12(cwd, "node_modules", ".bin", "reroute"),
9211
+ join12(cwd, "..", "node_modules", ".bin", "reroute"),
9212
+ join12(cwd, "..", "..", "node_modules", ".bin", "reroute"),
9213
+ join12(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
9214
+ ];
9215
+ for (const binPath2 of nodeModulesPaths) {
9216
+ if (existsSync6(binPath2)) {
9217
+ return binPath2;
9218
+ }
9219
+ }
9220
+ return "reroute";
9221
+ }
9222
+ var init_command = () => {};
9223
+
9120
9224
  // packages/cli/src/commands/lib/log.ts
9121
9225
  function colorizeLogPrefix(text) {
9122
9226
  let colored = text;
@@ -9167,6 +9271,17 @@ var init_log = __esm(() => {
9167
9271
  });
9168
9272
 
9169
9273
  // packages/cli/src/commands/lib/server.ts
9274
+ async function isServerRunning(port, timeout = 1000) {
9275
+ try {
9276
+ const response = await fetch(`http://localhost:${port}/`, {
9277
+ method: "GET",
9278
+ signal: AbortSignal.timeout(timeout)
9279
+ });
9280
+ return response.status < 500;
9281
+ } catch {
9282
+ return false;
9283
+ }
9284
+ }
9170
9285
  async function waitForServerReady(port = 3000, timeout = 30000) {
9171
9286
  const startTime = Date.now();
9172
9287
  let checkInterval = 50;
@@ -9188,7 +9303,7 @@ async function waitForServerReady(port = 3000, timeout = 30000) {
9188
9303
  }
9189
9304
 
9190
9305
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/alias.js
9191
- var require_alias = __commonJS((exports) => {
9306
+ var require_alias = __commonJS(function(exports) {
9192
9307
  var alias = exports;
9193
9308
  alias.bools = {
9194
9309
  auto_left_margin: ["bw", "bw"],
@@ -9663,7 +9778,7 @@ var require_alias = __commonJS((exports) => {
9663
9778
  });
9664
9779
 
9665
9780
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/tput.js
9666
- var require_tput = __commonJS((exports, module) => {
9781
+ var require_tput = __commonJS(function(exports, module) {
9667
9782
  var __dirname = "/Users/stewan/dev/reroute/node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib";
9668
9783
  var assert = __require("assert");
9669
9784
  var path3 = __require("path");
@@ -11761,7 +11876,7 @@ var require_tput = __commonJS((exports, module) => {
11761
11876
  });
11762
11877
 
11763
11878
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/colors.js
11764
- var require_colors = __commonJS((exports) => {
11879
+ var require_colors = __commonJS(function(exports) {
11765
11880
  exports.match = function(r1, g1, b1) {
11766
11881
  if (typeof r1 === "string") {
11767
11882
  var hex = r1;
@@ -12181,7 +12296,7 @@ var require_colors = __commonJS((exports) => {
12181
12296
  });
12182
12297
 
12183
12298
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/keys.js
12184
- var require_keys = __commonJS((exports) => {
12299
+ var require_keys = __commonJS(function(exports) {
12185
12300
  var EventEmitter = __require("events").EventEmitter;
12186
12301
  function listenerCount(stream2, event) {
12187
12302
  return EventEmitter.listenerCount ? EventEmitter.listenerCount(stream2, event) : stream2.listeners(event).length;
@@ -12538,7 +12653,7 @@ var require_keys = __commonJS((exports) => {
12538
12653
  });
12539
12654
 
12540
12655
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/gpmclient.js
12541
- var require_gpmclient = __commonJS((exports, module) => {
12656
+ var require_gpmclient = __commonJS(function(exports, module) {
12542
12657
  var net = __require("net");
12543
12658
  var fs = __require("fs");
12544
12659
  var EventEmitter = __require("events").EventEmitter;
@@ -12613,8 +12728,8 @@ var require_gpmclient = __commonJS((exports, module) => {
12613
12728
  }
12614
12729
  var self2 = this;
12615
12730
  if (tty) {
12616
- fs.stat(GPM_SOCKET, function(err, stat5) {
12617
- if (err || !stat5.isSocket()) {
12731
+ fs.stat(GPM_SOCKET, function(err, stat6) {
12732
+ if (err || !stat6.isSocket()) {
12618
12733
  return;
12619
12734
  }
12620
12735
  var conf = {
@@ -12701,7 +12816,7 @@ var require_gpmclient = __commonJS((exports, module) => {
12701
12816
  });
12702
12817
 
12703
12818
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/program.js
12704
- var require_program = __commonJS((exports, module) => {
12819
+ var require_program = __commonJS(function(exports, module) {
12705
12820
  var EventEmitter = __require("events").EventEmitter;
12706
12821
  var StringDecoder = __require("string_decoder").StringDecoder;
12707
12822
  var cp = __require("child_process");
@@ -15242,7 +15357,7 @@ var require_program = __commonJS((exports, module) => {
15242
15357
  });
15243
15358
 
15244
15359
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widget.js
15245
- var require_widget = __commonJS((exports) => {
15360
+ var require_widget = __commonJS(function(exports) {
15246
15361
  var widget = exports;
15247
15362
  widget.classes = [
15248
15363
  "Node",
@@ -15296,7 +15411,7 @@ var require_widget = __commonJS((exports) => {
15296
15411
  });
15297
15412
 
15298
15413
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/unicode.js
15299
- var require_unicode = __commonJS((exports) => {
15414
+ var require_unicode = __commonJS(function(exports) {
15300
15415
  var stringFromCharCode = String.fromCharCode;
15301
15416
  var floor = Math.floor;
15302
15417
  exports.charWidth = function(str, i) {
@@ -15596,7 +15711,7 @@ var require_unicode = __commonJS((exports) => {
15596
15711
  });
15597
15712
 
15598
15713
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/events.js
15599
- var require_events = __commonJS((exports, module) => {
15714
+ var require_events = __commonJS(function(exports, module) {
15600
15715
  var slice = Array.prototype.slice;
15601
15716
  function EventEmitter() {
15602
15717
  if (!this._events)
@@ -15696,7 +15811,7 @@ var require_events = __commonJS((exports, module) => {
15696
15811
  });
15697
15812
 
15698
15813
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/node.js
15699
- var require_node = __commonJS((exports, module) => {
15814
+ var require_node = __commonJS(function(exports, module) {
15700
15815
  var EventEmitter = require_events().EventEmitter;
15701
15816
  function Node(options) {
15702
15817
  var self2 = this;
@@ -15918,7 +16033,7 @@ var require_node = __commonJS((exports, module) => {
15918
16033
  });
15919
16034
 
15920
16035
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/element.js
15921
- var require_element = __commonJS((exports, module) => {
16036
+ var require_element = __commonJS(function(exports, module) {
15922
16037
  var assert = __require("assert");
15923
16038
  var colors = require_colors();
15924
16039
  var unicode = require_unicode();
@@ -17831,7 +17946,7 @@ var require_element = __commonJS((exports, module) => {
17831
17946
  });
17832
17947
 
17833
17948
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/box.js
17834
- var require_box = __commonJS((exports, module) => {
17949
+ var require_box = __commonJS(function(exports, module) {
17835
17950
  var Node = require_node();
17836
17951
  var Element = require_element();
17837
17952
  function Box(options) {
@@ -17847,7 +17962,7 @@ var require_box = __commonJS((exports, module) => {
17847
17962
  });
17848
17963
 
17849
17964
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/scrollablebox.js
17850
- var require_scrollablebox = __commonJS((exports, module) => {
17965
+ var require_scrollablebox = __commonJS(function(exports, module) {
17851
17966
  var Node = require_node();
17852
17967
  var Box = require_box();
17853
17968
  function ScrollableBox(options) {
@@ -18127,7 +18242,7 @@ var require_scrollablebox = __commonJS((exports, module) => {
18127
18242
  });
18128
18243
 
18129
18244
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/scrollabletext.js
18130
- var require_scrollabletext = __commonJS((exports, module) => {
18245
+ var require_scrollabletext = __commonJS(function(exports, module) {
18131
18246
  var Node = require_node();
18132
18247
  var ScrollableBox = require_scrollablebox();
18133
18248
  function ScrollableText(options) {
@@ -18144,7 +18259,7 @@ var require_scrollabletext = __commonJS((exports, module) => {
18144
18259
  });
18145
18260
 
18146
18261
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/log.js
18147
- var require_log = __commonJS((exports, module) => {
18262
+ var require_log = __commonJS(function(exports, module) {
18148
18263
  var util = __require("util");
18149
18264
  var nextTick = global.setImmediate || process.nextTick.bind(process);
18150
18265
  var Node = require_node();
@@ -18198,7 +18313,7 @@ var require_log = __commonJS((exports, module) => {
18198
18313
  });
18199
18314
 
18200
18315
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/widgets/screen.js
18201
- var require_screen = __commonJS((exports, module) => {
18316
+ var require_screen = __commonJS(function(exports, module) {
18202
18317
  var path3 = __require("path");
18203
18318
  var fs = __require("fs");
18204
18319
  var cp = __require("child_process");
@@ -19907,7 +20022,7 @@ var require_screen = __commonJS((exports, module) => {
19907
20022
  });
19908
20023
 
19909
20024
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/helpers.js
19910
- var require_helpers = __commonJS((exports) => {
20025
+ var require_helpers = __commonJS(function(exports) {
19911
20026
  var fs = __require("fs");
19912
20027
  var unicode = require_unicode();
19913
20028
  var helpers = exports;
@@ -19938,7 +20053,7 @@ var require_helpers = __commonJS((exports) => {
19938
20053
  };
19939
20054
  helpers.findFile = function(start, target) {
19940
20055
  return function read(dir) {
19941
- var files, file, stat5, out;
20056
+ var files, file, stat6, out;
19942
20057
  if (dir === "/dev" || dir === "/sys" || dir === "/proc" || dir === "/net") {
19943
20058
  return null;
19944
20059
  }
@@ -19953,11 +20068,11 @@ var require_helpers = __commonJS((exports) => {
19953
20068
  return (dir === "/" ? "" : dir) + "/" + file;
19954
20069
  }
19955
20070
  try {
19956
- stat5 = fs.lstatSync((dir === "/" ? "" : dir) + "/" + file);
20071
+ stat6 = fs.lstatSync((dir === "/" ? "" : dir) + "/" + file);
19957
20072
  } catch (e) {
19958
- stat5 = null;
20073
+ stat6 = null;
19959
20074
  }
19960
- if (stat5 && stat5.isDirectory() && !stat5.isSymbolicLink()) {
20075
+ if (stat6 && stat6.isDirectory() && !stat6.isSymbolicLink()) {
19961
20076
  out = read((dir === "/" ? "" : dir) + "/" + file);
19962
20077
  if (out)
19963
20078
  return out;
@@ -20029,7 +20144,7 @@ var require_helpers = __commonJS((exports) => {
20029
20144
  });
20030
20145
 
20031
20146
  // node_modules/.bun/blessed@0.1.81/node_modules/blessed/lib/blessed.js
20032
- var require_blessed = __commonJS((exports, module) => {
20147
+ var require_blessed = __commonJS(function(exports, module) {
20033
20148
  function blessed() {
20034
20149
  return blessed.program.apply(null, arguments);
20035
20150
  }
@@ -20047,7 +20162,7 @@ var require_blessed = __commonJS((exports, module) => {
20047
20162
  });
20048
20163
 
20049
20164
  // node_modules/.bun/x256@0.0.2/node_modules/x256/colors.json
20050
- var require_colors2 = __commonJS((exports, module) => {
20165
+ var require_colors2 = __commonJS(function(exports, module) {
20051
20166
  module.exports = [
20052
20167
  "000000",
20053
20168
  "800000",
@@ -20309,7 +20424,7 @@ var require_colors2 = __commonJS((exports, module) => {
20309
20424
  });
20310
20425
 
20311
20426
  // node_modules/.bun/x256@0.0.2/node_modules/x256/index.js
20312
- var require_x256 = __commonJS((exports, module) => {
20427
+ var require_x256 = __commonJS(function(exports, module) {
20313
20428
  var colors = require_colors2().map(function(hex) {
20314
20429
  var r = parseInt(hex.slice(0, 2), 16);
20315
20430
  var g = parseInt(hex.slice(2, 4), 16);
@@ -20334,7 +20449,7 @@ var require_x256 = __commonJS((exports, module) => {
20334
20449
  });
20335
20450
 
20336
20451
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/utils.js
20337
- var require_utils = __commonJS((exports) => {
20452
+ var require_utils = __commonJS(function(exports) {
20338
20453
  var x256 = require_x256();
20339
20454
  function MergeRecursive(obj1, obj2) {
20340
20455
  if (obj1 == null) {
@@ -20392,7 +20507,7 @@ var require_utils = __commonJS((exports) => {
20392
20507
  });
20393
20508
 
20394
20509
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/layout/grid.js
20395
- var require_grid = __commonJS((exports, module) => {
20510
+ var require_grid = __commonJS(function(exports, module) {
20396
20511
  var utils = require_utils();
20397
20512
  var widgetSpacing = 0;
20398
20513
  function Grid(options) {
@@ -20427,7 +20542,7 @@ var require_grid = __commonJS((exports, module) => {
20427
20542
  });
20428
20543
 
20429
20544
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/layout/carousel.js
20430
- var require_carousel = __commonJS((exports, module) => {
20545
+ var require_carousel = __commonJS(function(exports, module) {
20431
20546
  function Carousel(pages, options) {
20432
20547
  this.currPage = 0;
20433
20548
  this.pages = pages;
@@ -20496,7 +20611,7 @@ var require_carousel = __commonJS((exports, module) => {
20496
20611
  });
20497
20612
 
20498
20613
  // node_modules/.bun/drawille-blessed-contrib@1.0.0/node_modules/drawille-blessed-contrib/index.js
20499
- var require_drawille_blessed_contrib = __commonJS((exports, module) => {
20614
+ var require_drawille_blessed_contrib = __commonJS(function(exports, module) {
20500
20615
  var map = [
20501
20616
  [1, 8],
20502
20617
  [2, 16],
@@ -20606,7 +20721,7 @@ var require_drawille_blessed_contrib = __commonJS((exports, module) => {
20606
20721
  });
20607
20722
 
20608
20723
  // node_modules/.bun/bresenham@0.0.3/node_modules/bresenham/index.js
20609
- var require_bresenham = __commonJS((exports, module) => {
20724
+ var require_bresenham = __commonJS(function(exports, module) {
20610
20725
  module.exports = function(x0, y0, x1, y1, fn) {
20611
20726
  if (!fn) {
20612
20727
  var arr = [];
@@ -20645,7 +20760,7 @@ var require_bresenham = __commonJS((exports, module) => {
20645
20760
  });
20646
20761
 
20647
20762
  // node_modules/.bun/gl-matrix@2.8.1/node_modules/gl-matrix/dist/gl-matrix.js
20648
- var require_gl_matrix = __commonJS((exports, module) => {
20763
+ var require_gl_matrix = __commonJS(function(exports, module) {
20649
20764
  /*!
20650
20765
  @fileoverview gl-matrix - High performance matrix and vector operations
20651
20766
  @author Brandon Jones
@@ -21746,7 +21861,7 @@ var require_gl_matrix = __commonJS((exports, module) => {
21746
21861
  });
21747
21862
 
21748
21863
  // node_modules/.bun/drawille-canvas-blessed-contrib@0.1.3/node_modules/drawille-canvas-blessed-contrib/index.js
21749
- var require_drawille_canvas_blessed_contrib = __commonJS((exports, module) => {
21864
+ var require_drawille_canvas_blessed_contrib = __commonJS(function(exports, module) {
21750
21865
  var Canvas = require_drawille_blessed_contrib();
21751
21866
  var bresenham = require_bresenham();
21752
21867
  var glMatrix = require_gl_matrix();
@@ -21953,7 +22068,7 @@ var require_drawille_canvas_blessed_contrib = __commonJS((exports, module) => {
21953
22068
  });
21954
22069
 
21955
22070
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/canvas.js
21956
- var require_canvas = __commonJS((exports, module) => {
22071
+ var require_canvas = __commonJS(function(exports, module) {
21957
22072
  var blessed = require_blessed();
21958
22073
  var Node = blessed.Node;
21959
22074
  var Box = blessed.Box;
@@ -21993,7 +22108,7 @@ var require_canvas = __commonJS((exports, module) => {
21993
22108
  });
21994
22109
 
21995
22110
  // node_modules/.bun/map-canvas@0.1.5/node_modules/map-canvas/map.js
21996
- var require_map = __commonJS((exports, module) => {
22111
+ var require_map = __commonJS(function(exports, module) {
21997
22112
  (function() {})();
21998
22113
  Map2.prototype.drawBackground = function() {
21999
22114
  this.ctx.fillStyle = "rgb(0,0,0)";
@@ -81989,7 +82104,7 @@ var require_map = __commonJS((exports, module) => {
81989
82104
  });
81990
82105
 
81991
82106
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/map.js
81992
- var require_map2 = __commonJS((exports, module) => {
82107
+ var require_map2 = __commonJS(function(exports, module) {
81993
82108
  var blessed = require_blessed();
81994
82109
  var Node = blessed.Node;
81995
82110
  var Canvas = require_canvas();
@@ -82060,7 +82175,7 @@ var require_map2 = __commonJS((exports, module) => {
82060
82175
  });
82061
82176
 
82062
82177
  // node_modules/.bun/ansi-term@0.0.2/node_modules/ansi-term/index.js
82063
- var require_ansi_term = __commonJS((exports, module) => {
82178
+ var require_ansi_term = __commonJS(function(exports, module) {
82064
82179
  var x256 = require_x256();
82065
82180
  function AnsiTerminal(width, height) {
82066
82181
  this.width = width;
@@ -82166,7 +82281,7 @@ var require_ansi_term = __commonJS((exports, module) => {
82166
82281
  });
82167
82282
 
82168
82283
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/gauge.js
82169
- var require_gauge = __commonJS((exports, module) => {
82284
+ var require_gauge = __commonJS(function(exports, module) {
82170
82285
  var blessed = require_blessed();
82171
82286
  var Node = blessed.Node;
82172
82287
  var Canvas = require_canvas();
@@ -82198,7 +82313,7 @@ var require_gauge = __commonJS((exports, module) => {
82198
82313
  };
82199
82314
  Gauge.prototype.type = "gauge";
82200
82315
  Gauge.prototype.setData = function(data) {
82201
- if (typeof data == "object" && data.length > 0) {
82316
+ if (typeof data == typeof [] && data.length > 0) {
82202
82317
  this.setStack(data);
82203
82318
  } else if (typeof data == "number") {
82204
82319
  this.setPercent(data);
@@ -82236,7 +82351,7 @@ var require_gauge = __commonJS((exports, module) => {
82236
82351
  for (var i = 0;i < stack.length; i++) {
82237
82352
  var currentStack = stack[i];
82238
82353
  let percent;
82239
- if (typeof currentStack == "object")
82354
+ if (typeof currentStack == typeof {})
82240
82355
  percent = currentStack.percent;
82241
82356
  else
82242
82357
  percent = currentStack;
@@ -82265,7 +82380,7 @@ var require_gauge = __commonJS((exports, module) => {
82265
82380
  });
82266
82381
 
82267
82382
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/gauge-list.js
82268
- var require_gauge_list = __commonJS((exports, module) => {
82383
+ var require_gauge_list = __commonJS(function(exports, module) {
82269
82384
  var blessed = require_blessed();
82270
82385
  var Node = blessed.Node;
82271
82386
  var Canvas = require_canvas();
@@ -82316,7 +82431,7 @@ var require_gauge_list = __commonJS((exports, module) => {
82316
82431
  for (var i = 0;i < stack.length; i++) {
82317
82432
  var currentStack = stack[i];
82318
82433
  var percent;
82319
- if (typeof currentStack == "object") {
82434
+ if (typeof currentStack == typeof {}) {
82320
82435
  percent = currentStack.percent;
82321
82436
  } else {
82322
82437
  percent = currentStack;
@@ -82343,7 +82458,7 @@ var require_gauge_list = __commonJS((exports, module) => {
82343
82458
  });
82344
82459
 
82345
82460
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/lcd.js
82346
- var require_lcd = __commonJS((exports, module) => {
82461
+ var require_lcd = __commonJS(function(exports, module) {
82347
82462
  var blessed = require_blessed();
82348
82463
  var Node = blessed.Node;
82349
82464
  var Canvas = require_canvas();
@@ -82700,7 +82815,7 @@ var require_lcd = __commonJS((exports, module) => {
82700
82815
  });
82701
82816
 
82702
82817
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/donut.js
82703
- var require_donut = __commonJS((exports, module) => {
82818
+ var require_donut = __commonJS(function(exports, module) {
82704
82819
  var blessed = require_blessed();
82705
82820
  var Node = blessed.Node;
82706
82821
  var Canvas = require_canvas();
@@ -82788,15 +82903,15 @@ var require_donut = __commonJS((exports, module) => {
82788
82903
  c.fillText(ptext, cxx - Math.round(parseFloat(c.measureText(ptext).width / 2)) + 3, middle2);
82789
82904
  c.fillText(label, cxx - Math.round(parseFloat(c.measureText(label).width / 2)) + 3, middle2 + radius2 + 5);
82790
82905
  }
82791
- function makeDonut(stat5, which) {
82906
+ function makeDonut(stat6, which) {
82792
82907
  var left = radius + spacing * which + radius * 2 * (which - 1);
82793
- var percent = stat5.percent;
82908
+ var percent = stat6.percent;
82794
82909
  if (percent > 1.001) {
82795
82910
  percent = parseFloat(percent / 100).toFixed(2);
82796
82911
  }
82797
- var label = stat5.label;
82798
- var percentAltNumber = stat5.percentAltNumber;
82799
- var color = stat5.color || "green";
82912
+ var label = stat6.label;
82913
+ var percentAltNumber = stat6.percentAltNumber;
82914
+ var color = stat6.color || "green";
82800
82915
  var cxx = left;
82801
82916
  drawDonut(label, percent, radius, width, cxx, middle, color, percentAltNumber);
82802
82917
  }
@@ -82830,7 +82945,7 @@ var require_donut = __commonJS((exports, module) => {
82830
82945
  });
82831
82946
 
82832
82947
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/log.js
82833
- var require_log2 = __commonJS((exports, module) => {
82948
+ var require_log2 = __commonJS(function(exports, module) {
82834
82949
  var blessed = require_blessed();
82835
82950
  var Node = blessed.Node;
82836
82951
  var List = blessed.List;
@@ -82859,7 +82974,7 @@ var require_log2 = __commonJS((exports, module) => {
82859
82974
  });
82860
82975
 
82861
82976
  // node_modules/.bun/png-js@0.1.1/node_modules/png-js/png-node.js
82862
- var require_png_node = __commonJS((exports, module) => {
82977
+ var require_png_node = __commonJS(function(exports, module) {
82863
82978
  (function() {
82864
82979
  var PNG, fs, zlib;
82865
82980
  fs = __require("fs");
@@ -83140,7 +83255,7 @@ var require_png_node = __commonJS((exports, module) => {
83140
83255
  });
83141
83256
 
83142
83257
  // node_modules/.bun/charm@0.1.2/node_modules/charm/lib/encode.js
83143
- var require_encode = __commonJS((exports, module) => {
83258
+ var require_encode = __commonJS(function(exports, module) {
83144
83259
  var encode = module.exports = function(xs) {
83145
83260
  function bytes(s) {
83146
83261
  if (typeof s === "string") {
@@ -83159,7 +83274,7 @@ var require_encode = __commonJS((exports, module) => {
83159
83274
  });
83160
83275
 
83161
83276
  // node_modules/.bun/charm@0.1.2/node_modules/charm/index.js
83162
- var require_charm = __commonJS((exports, module) => {
83277
+ var require_charm = __commonJS(function(exports, module) {
83163
83278
  var tty = __require("tty");
83164
83279
  var encode = require_encode();
83165
83280
  var Stream = __require("stream").Stream;
@@ -83428,7 +83543,7 @@ var require_charm = __commonJS((exports, module) => {
83428
83543
  });
83429
83544
 
83430
83545
  // node_modules/.bun/buffers@0.1.1/node_modules/buffers/index.js
83431
- var require_buffers = __commonJS((exports, module) => {
83546
+ var require_buffers = __commonJS(function(exports, module) {
83432
83547
  module.exports = Buffers;
83433
83548
  function Buffers(bufs) {
83434
83549
  if (!(this instanceof Buffers))
@@ -83638,7 +83753,7 @@ var require_buffers = __commonJS((exports, module) => {
83638
83753
  });
83639
83754
 
83640
83755
  // node_modules/.bun/wordwrap@0.0.3/node_modules/wordwrap/index.js
83641
- var require_wordwrap = __commonJS((exports, module) => {
83756
+ var require_wordwrap = __commonJS(function(exports, module) {
83642
83757
  var wordwrap = module.exports = function(start, stop, params) {
83643
83758
  if (typeof start === "object") {
83644
83759
  params = start;
@@ -83699,7 +83814,7 @@ var require_wordwrap = __commonJS((exports, module) => {
83699
83814
  });
83700
83815
 
83701
83816
  // node_modules/.bun/optimist@0.2.8/node_modules/optimist/index.js
83702
- var require_optimist = __commonJS((exports, module) => {
83817
+ var require_optimist = __commonJS(function(exports, module) {
83703
83818
  var path3 = __require("path");
83704
83819
  var wordwrap = require_wordwrap();
83705
83820
  var inst = Argv(process.argv.slice(2));
@@ -84041,7 +84156,7 @@ var require_optimist = __commonJS((exports, module) => {
84041
84156
  });
84042
84157
 
84043
84158
  // node_modules/.bun/event-stream@0.9.8/node_modules/event-stream/index.js
84044
- var require_event_stream = __commonJS((exports) => {
84159
+ var require_event_stream = __commonJS(function(exports) {
84045
84160
  var Stream = __require("stream").Stream;
84046
84161
  var es = exports;
84047
84162
  es.Stream = Stream;
@@ -84466,7 +84581,7 @@ var require_event_stream = __commonJS((exports) => {
84466
84581
  });
84467
84582
 
84468
84583
  // node_modules/.bun/picture-tuber@1.0.2/node_modules/picture-tuber/index.js
84469
- var require_picture_tuber = __commonJS((exports, module) => {
84584
+ var require_picture_tuber = __commonJS(function(exports, module) {
84470
84585
  var PNG = require_png_node();
84471
84586
  var charm = require_charm();
84472
84587
  var x256 = require_x256();
@@ -84507,14 +84622,14 @@ var require_picture_tuber = __commonJS((exports, module) => {
84507
84622
  });
84508
84623
 
84509
84624
  // node_modules/.bun/isarray@0.0.1/node_modules/isarray/index.js
84510
- var require_isarray = __commonJS((exports, module) => {
84625
+ var require_isarray = __commonJS(function(exports, module) {
84511
84626
  module.exports = Array.isArray || function(arr) {
84512
84627
  return Object.prototype.toString.call(arr) == "[object Array]";
84513
84628
  };
84514
84629
  });
84515
84630
 
84516
84631
  // node_modules/.bun/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js
84517
- var require_util = __commonJS((exports) => {
84632
+ var require_util = __commonJS(function(exports) {
84518
84633
  function isArray(arg) {
84519
84634
  if (Array.isArray) {
84520
84635
  return Array.isArray(arg);
@@ -84581,7 +84696,7 @@ var require_util = __commonJS((exports) => {
84581
84696
  });
84582
84697
 
84583
84698
  // node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits_browser.js
84584
- var require_inherits_browser = __commonJS((exports, module) => {
84699
+ var require_inherits_browser = __commonJS(function(exports, module) {
84585
84700
  if (typeof Object.create === "function") {
84586
84701
  module.exports = function inherits(ctor, superCtor) {
84587
84702
  if (superCtor) {
@@ -84610,7 +84725,7 @@ var require_inherits_browser = __commonJS((exports, module) => {
84610
84725
  });
84611
84726
 
84612
84727
  // node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits.js
84613
- var require_inherits = __commonJS((exports, module) => {
84728
+ var require_inherits = __commonJS(function(exports, module) {
84614
84729
  try {
84615
84730
  util = __require("util");
84616
84731
  if (typeof util.inherits !== "function")
@@ -84623,7 +84738,7 @@ var require_inherits = __commonJS((exports, module) => {
84623
84738
  });
84624
84739
 
84625
84740
  // node_modules/.bun/string_decoder@0.10.31/node_modules/string_decoder/index.js
84626
- var require_string_decoder = __commonJS((exports) => {
84741
+ var require_string_decoder = __commonJS(function(exports) {
84627
84742
  var Buffer2 = __require("buffer").Buffer;
84628
84743
  var isBufferEncoding = Buffer2.isEncoding || function(encoding) {
84629
84744
  switch (encoding && encoding.toLowerCase()) {
@@ -84759,7 +84874,7 @@ var require_string_decoder = __commonJS((exports) => {
84759
84874
  });
84760
84875
 
84761
84876
  // node_modules/.bun/readable-stream@1.0.34/node_modules/readable-stream/lib/_stream_readable.js
84762
- var require__stream_readable = __commonJS((exports, module) => {
84877
+ var require__stream_readable = __commonJS(function(exports, module) {
84763
84878
  module.exports = Readable;
84764
84879
  var isArray = require_isarray();
84765
84880
  var Buffer2 = __require("buffer").Buffer;
@@ -85366,7 +85481,7 @@ var require__stream_readable = __commonJS((exports, module) => {
85366
85481
  });
85367
85482
 
85368
85483
  // node_modules/.bun/readable-stream@1.0.34/node_modules/readable-stream/lib/_stream_duplex.js
85369
- var require__stream_duplex = __commonJS((exports, module) => {
85484
+ var require__stream_duplex = __commonJS(function(exports, module) {
85370
85485
  module.exports = Duplex;
85371
85486
  var objectKeys = Object.keys || function(obj) {
85372
85487
  var keys = [];
@@ -85410,7 +85525,7 @@ var require__stream_duplex = __commonJS((exports, module) => {
85410
85525
  });
85411
85526
 
85412
85527
  // node_modules/.bun/readable-stream@1.0.34/node_modules/readable-stream/lib/_stream_writable.js
85413
- var require__stream_writable = __commonJS((exports, module) => {
85528
+ var require__stream_writable = __commonJS(function(exports, module) {
85414
85529
  module.exports = Writable;
85415
85530
  var Buffer2 = __require("buffer").Buffer;
85416
85531
  Writable.WritableState = WritableState;
@@ -85638,7 +85753,7 @@ var require__stream_writable = __commonJS((exports, module) => {
85638
85753
  });
85639
85754
 
85640
85755
  // node_modules/.bun/readable-stream@1.0.34/node_modules/readable-stream/lib/_stream_transform.js
85641
- var require__stream_transform = __commonJS((exports, module) => {
85756
+ var require__stream_transform = __commonJS(function(exports, module) {
85642
85757
  module.exports = Transform;
85643
85758
  var Duplex = require__stream_duplex();
85644
85759
  var util = require_util();
@@ -85730,7 +85845,7 @@ var require__stream_transform = __commonJS((exports, module) => {
85730
85845
  });
85731
85846
 
85732
85847
  // node_modules/.bun/readable-stream@1.0.34/node_modules/readable-stream/lib/_stream_passthrough.js
85733
- var require__stream_passthrough = __commonJS((exports, module) => {
85848
+ var require__stream_passthrough = __commonJS(function(exports, module) {
85734
85849
  module.exports = PassThrough;
85735
85850
  var Transform = require__stream_transform();
85736
85851
  var util = require_util();
@@ -85747,7 +85862,7 @@ var require__stream_passthrough = __commonJS((exports, module) => {
85747
85862
  });
85748
85863
 
85749
85864
  // node_modules/.bun/readable-stream@1.0.34/node_modules/readable-stream/readable.js
85750
- var require_readable = __commonJS((exports, module) => {
85865
+ var require_readable = __commonJS(function(exports, module) {
85751
85866
  var Stream = __require("stream");
85752
85867
  exports = module.exports = require__stream_readable();
85753
85868
  exports.Stream = Stream;
@@ -85762,7 +85877,7 @@ var require_readable = __commonJS((exports, module) => {
85762
85877
  });
85763
85878
 
85764
85879
  // node_modules/.bun/memory-streams@0.1.3/node_modules/memory-streams/lib/ReadableStream.js
85765
- var require_ReadableStream = __commonJS((exports, module) => {
85880
+ var require_ReadableStream = __commonJS(function(exports, module) {
85766
85881
  var Stream = require_readable();
85767
85882
  var util = __require("util");
85768
85883
  module.exports = ReadableStream;
@@ -85781,7 +85896,7 @@ var require_ReadableStream = __commonJS((exports, module) => {
85781
85896
  });
85782
85897
 
85783
85898
  // node_modules/.bun/memory-streams@0.1.3/node_modules/memory-streams/lib/WritableStream.js
85784
- var require_WritableStream = __commonJS((exports, module) => {
85899
+ var require_WritableStream = __commonJS(function(exports, module) {
85785
85900
  var Stream = require_readable();
85786
85901
  var util = __require("util");
85787
85902
  module.exports = WritableStream;
@@ -85816,13 +85931,13 @@ var require_WritableStream = __commonJS((exports, module) => {
85816
85931
  });
85817
85932
 
85818
85933
  // node_modules/.bun/memory-streams@0.1.3/node_modules/memory-streams/index.js
85819
- var require_memory_streams = __commonJS((exports, module) => {
85934
+ var require_memory_streams = __commonJS(function(exports, module) {
85820
85935
  exports.ReadableStream = require_ReadableStream();
85821
85936
  exports.WritableStream = require_WritableStream();
85822
85937
  });
85823
85938
 
85824
85939
  // node_modules/.bun/memorystream@0.3.1/node_modules/memorystream/index.js
85825
- var require_memorystream = __commonJS((exports, module) => {
85940
+ var require_memorystream = __commonJS(function(exports, module) {
85826
85941
  var STREAM = __require("stream");
85827
85942
  var UTIL = __require("util");
85828
85943
  var StringDecoder = __require("string_decoder").StringDecoder;
@@ -85970,7 +86085,7 @@ var require_memorystream = __commonJS((exports, module) => {
85970
86085
  });
85971
86086
 
85972
86087
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/picture.js
85973
- var require_picture = __commonJS((exports, module) => {
86088
+ var require_picture = __commonJS(function(exports, module) {
85974
86089
  var blessed = require_blessed();
85975
86090
  var Node = blessed.Node;
85976
86091
  var Box = blessed.Box;
@@ -86025,7 +86140,7 @@ var require_picture = __commonJS((exports, module) => {
86025
86140
  });
86026
86141
 
86027
86142
  // node_modules/.bun/sparkline@0.1.2/node_modules/sparkline/lib/sparkline.js
86028
- var require_sparkline = __commonJS((exports, module) => {
86143
+ var require_sparkline = __commonJS(function(exports, module) {
86029
86144
  (function(window2) {
86030
86145
  var sparkline, ticks = ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"];
86031
86146
  sparkline = function(numbers, options) {
@@ -86054,7 +86169,7 @@ var require_sparkline = __commonJS((exports, module) => {
86054
86169
  });
86055
86170
 
86056
86171
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/sparkline.js
86057
- var require_sparkline2 = __commonJS((exports, module) => {
86172
+ var require_sparkline2 = __commonJS(function(exports, module) {
86058
86173
  var blessed = require_blessed();
86059
86174
  var Node = blessed.Node;
86060
86175
  var Box = blessed.Box;
@@ -86111,14 +86226,14 @@ var require_sparkline2 = __commonJS((exports, module) => {
86111
86226
  });
86112
86227
 
86113
86228
  // node_modules/.bun/ansi-regex@2.1.1/node_modules/ansi-regex/index.js
86114
- var require_ansi_regex = __commonJS((exports, module) => {
86229
+ var require_ansi_regex = __commonJS(function(exports, module) {
86115
86230
  module.exports = function() {
86116
86231
  return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
86117
86232
  };
86118
86233
  });
86119
86234
 
86120
86235
  // node_modules/.bun/strip-ansi@3.0.1/node_modules/strip-ansi/index.js
86121
- var require_strip_ansi = __commonJS((exports, module) => {
86236
+ var require_strip_ansi = __commonJS(function(exports, module) {
86122
86237
  var ansiRegex = require_ansi_regex()();
86123
86238
  module.exports = function(str) {
86124
86239
  return typeof str === "string" ? str.replace(ansiRegex, "") : str;
@@ -86126,7 +86241,7 @@ var require_strip_ansi = __commonJS((exports, module) => {
86126
86241
  });
86127
86242
 
86128
86243
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/table.js
86129
- var require_table = __commonJS((exports, module) => {
86244
+ var require_table = __commonJS(function(exports, module) {
86130
86245
  var blessed = require_blessed();
86131
86246
  var Node = blessed.Node;
86132
86247
  var Box = blessed.Box;
@@ -86242,7 +86357,7 @@ var require_table = __commonJS((exports, module) => {
86242
86357
  });
86243
86358
 
86244
86359
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/tree.js
86245
- var require_tree = __commonJS((exports, module) => {
86360
+ var require_tree = __commonJS(function(exports, module) {
86246
86361
  var blessed = require_blessed();
86247
86362
  var Node = blessed.Node;
86248
86363
  var Box = blessed.Box;
@@ -86375,7 +86490,7 @@ var require_tree = __commonJS((exports, module) => {
86375
86490
  });
86376
86491
 
86377
86492
  // node_modules/.bun/marked@4.3.0/node_modules/marked/lib/marked.cjs
86378
- var require_marked = __commonJS((exports) => {
86493
+ var require_marked = __commonJS(function(exports) {
86379
86494
  function _defineProperties(target, props) {
86380
86495
  for (var i = 0;i < props.length; i++) {
86381
86496
  var descriptor = props[i];
@@ -88689,7 +88804,7 @@ Please report this to https://github.com/markedjs/marked.`;
88689
88804
  });
88690
88805
 
88691
88806
  // node_modules/.bun/esprima@4.0.1/node_modules/esprima/dist/esprima.js
88692
- var require_esprima = __commonJS((exports, module) => {
88807
+ var require_esprima = __commonJS(function(exports, module) {
88693
88808
  (function webpackUniversalModuleDefinition(root, factory) {
88694
88809
  if (typeof exports === "object" && typeof module === "object")
88695
88810
  module.exports = factory();
@@ -94829,7 +94944,7 @@ var require_esprima = __commonJS((exports, module) => {
94829
94944
  });
94830
94945
 
94831
94946
  // node_modules/.bun/redeyed@2.1.1/node_modules/redeyed/redeyed.js
94832
- var require_redeyed = __commonJS((exports, module) => {
94947
+ var require_redeyed = __commonJS(function(exports, module) {
94833
94948
  (function() {
94834
94949
  var esprima;
94835
94950
  var exportFn;
@@ -95069,7 +95184,7 @@ Should be of format "before:after"`);
95069
95184
  });
95070
95185
 
95071
95186
  // node_modules/.bun/ansicolors@0.3.2/node_modules/ansicolors/ansicolors.js
95072
- var require_ansicolors = __commonJS((exports, module) => {
95187
+ var require_ansicolors = __commonJS(function(exports, module) {
95073
95188
  var colorNums = {
95074
95189
  white: 37,
95075
95190
  black: 30,
@@ -95129,7 +95244,7 @@ var require_ansicolors = __commonJS((exports, module) => {
95129
95244
  });
95130
95245
 
95131
95246
  // node_modules/.bun/cardinal@2.1.1/node_modules/cardinal/themes/default.js
95132
- var require_default = __commonJS((exports, module) => {
95247
+ var require_default = __commonJS(function(exports, module) {
95133
95248
  var colors = require_ansicolors();
95134
95249
  module.exports = {
95135
95250
  Boolean: {
@@ -95301,7 +95416,7 @@ var require_default = __commonJS((exports, module) => {
95301
95416
  });
95302
95417
 
95303
95418
  // node_modules/.bun/cardinal@2.1.1/node_modules/cardinal/lib/highlight.js
95304
- var require_highlight = __commonJS((exports, module) => {
95419
+ var require_highlight = __commonJS(function(exports, module) {
95305
95420
  var redeyed = require_redeyed();
95306
95421
  var theme = require_default();
95307
95422
  var colors = require_ansicolors();
@@ -95373,7 +95488,7 @@ var require_highlight = __commonJS((exports, module) => {
95373
95488
  });
95374
95489
 
95375
95490
  // node_modules/.bun/cardinal@2.1.1/node_modules/cardinal/lib/highlightFile.js
95376
- var require_highlightFile = __commonJS((exports, module) => {
95491
+ var require_highlightFile = __commonJS(function(exports, module) {
95377
95492
  var fs = __require("fs");
95378
95493
  var highlight = require_highlight();
95379
95494
  function isFunction(obj) {
@@ -95398,7 +95513,7 @@ var require_highlightFile = __commonJS((exports, module) => {
95398
95513
  });
95399
95514
 
95400
95515
  // node_modules/.bun/cardinal@2.1.1/node_modules/cardinal/lib/highlightFileSync.js
95401
- var require_highlightFileSync = __commonJS((exports, module) => {
95516
+ var require_highlightFileSync = __commonJS(function(exports, module) {
95402
95517
  var fs = __require("fs");
95403
95518
  var highlight = require_highlight();
95404
95519
  module.exports = function highlightFileSync(fullPath, opts) {
@@ -95409,7 +95524,7 @@ var require_highlightFileSync = __commonJS((exports, module) => {
95409
95524
  });
95410
95525
 
95411
95526
  // node_modules/.bun/cardinal@2.1.1/node_modules/cardinal/cardinal.js
95412
- var require_cardinal = __commonJS((exports, module) => {
95527
+ var require_cardinal = __commonJS(function(exports, module) {
95413
95528
  module.exports = {
95414
95529
  highlight: require_highlight(),
95415
95530
  highlightFile: require_highlightFile(),
@@ -95418,13 +95533,13 @@ var require_cardinal = __commonJS((exports, module) => {
95418
95533
  });
95419
95534
 
95420
95535
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_freeGlobal.js
95421
- var require__freeGlobal = __commonJS((exports, module) => {
95536
+ var require__freeGlobal = __commonJS(function(exports, module) {
95422
95537
  var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
95423
95538
  module.exports = freeGlobal;
95424
95539
  });
95425
95540
 
95426
95541
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_root.js
95427
- var require__root = __commonJS((exports, module) => {
95542
+ var require__root = __commonJS(function(exports, module) {
95428
95543
  var freeGlobal = require__freeGlobal();
95429
95544
  var freeSelf = typeof self == "object" && self && self.Object === Object && self;
95430
95545
  var root = freeGlobal || freeSelf || Function("return this")();
@@ -95432,14 +95547,14 @@ var require__root = __commonJS((exports, module) => {
95432
95547
  });
95433
95548
 
95434
95549
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_Symbol.js
95435
- var require__Symbol = __commonJS((exports, module) => {
95550
+ var require__Symbol = __commonJS(function(exports, module) {
95436
95551
  var root = require__root();
95437
95552
  var Symbol2 = root.Symbol;
95438
95553
  module.exports = Symbol2;
95439
95554
  });
95440
95555
 
95441
95556
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_copyArray.js
95442
- var require__copyArray = __commonJS((exports, module) => {
95557
+ var require__copyArray = __commonJS(function(exports, module) {
95443
95558
  function copyArray(source, array) {
95444
95559
  var index = -1, length = source.length;
95445
95560
  array || (array = Array(length));
@@ -95452,7 +95567,7 @@ var require__copyArray = __commonJS((exports, module) => {
95452
95567
  });
95453
95568
 
95454
95569
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_getRawTag.js
95455
- var require__getRawTag = __commonJS((exports, module) => {
95570
+ var require__getRawTag = __commonJS(function(exports, module) {
95456
95571
  var Symbol2 = require__Symbol();
95457
95572
  var objectProto = Object.prototype;
95458
95573
  var hasOwnProperty = objectProto.hasOwnProperty;
@@ -95478,7 +95593,7 @@ var require__getRawTag = __commonJS((exports, module) => {
95478
95593
  });
95479
95594
 
95480
95595
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_objectToString.js
95481
- var require__objectToString = __commonJS((exports, module) => {
95596
+ var require__objectToString = __commonJS(function(exports, module) {
95482
95597
  var objectProto = Object.prototype;
95483
95598
  var nativeObjectToString = objectProto.toString;
95484
95599
  function objectToString(value) {
@@ -95488,7 +95603,7 @@ var require__objectToString = __commonJS((exports, module) => {
95488
95603
  });
95489
95604
 
95490
95605
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseGetTag.js
95491
- var require__baseGetTag = __commonJS((exports, module) => {
95606
+ var require__baseGetTag = __commonJS(function(exports, module) {
95492
95607
  var Symbol2 = require__Symbol();
95493
95608
  var getRawTag = require__getRawTag();
95494
95609
  var objectToString = require__objectToString();
@@ -95505,7 +95620,7 @@ var require__baseGetTag = __commonJS((exports, module) => {
95505
95620
  });
95506
95621
 
95507
95622
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isObject.js
95508
- var require_isObject = __commonJS((exports, module) => {
95623
+ var require_isObject = __commonJS(function(exports, module) {
95509
95624
  function isObject(value) {
95510
95625
  var type = typeof value;
95511
95626
  return value != null && (type == "object" || type == "function");
@@ -95514,7 +95629,7 @@ var require_isObject = __commonJS((exports, module) => {
95514
95629
  });
95515
95630
 
95516
95631
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isFunction.js
95517
- var require_isFunction = __commonJS((exports, module) => {
95632
+ var require_isFunction = __commonJS(function(exports, module) {
95518
95633
  var baseGetTag = require__baseGetTag();
95519
95634
  var isObject = require_isObject();
95520
95635
  var asyncTag = "[object AsyncFunction]";
@@ -95532,14 +95647,14 @@ var require_isFunction = __commonJS((exports, module) => {
95532
95647
  });
95533
95648
 
95534
95649
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_coreJsData.js
95535
- var require__coreJsData = __commonJS((exports, module) => {
95650
+ var require__coreJsData = __commonJS(function(exports, module) {
95536
95651
  var root = require__root();
95537
95652
  var coreJsData = root["__core-js_shared__"];
95538
95653
  module.exports = coreJsData;
95539
95654
  });
95540
95655
 
95541
95656
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_isMasked.js
95542
- var require__isMasked = __commonJS((exports, module) => {
95657
+ var require__isMasked = __commonJS(function(exports, module) {
95543
95658
  var coreJsData = require__coreJsData();
95544
95659
  var maskSrcKey = function() {
95545
95660
  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
@@ -95552,7 +95667,7 @@ var require__isMasked = __commonJS((exports, module) => {
95552
95667
  });
95553
95668
 
95554
95669
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_toSource.js
95555
- var require__toSource = __commonJS((exports, module) => {
95670
+ var require__toSource = __commonJS(function(exports, module) {
95556
95671
  var funcProto = Function.prototype;
95557
95672
  var funcToString = funcProto.toString;
95558
95673
  function toSource(func) {
@@ -95570,7 +95685,7 @@ var require__toSource = __commonJS((exports, module) => {
95570
95685
  });
95571
95686
 
95572
95687
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseIsNative.js
95573
- var require__baseIsNative = __commonJS((exports, module) => {
95688
+ var require__baseIsNative = __commonJS(function(exports, module) {
95574
95689
  var isFunction = require_isFunction();
95575
95690
  var isMasked = require__isMasked();
95576
95691
  var isObject = require_isObject();
@@ -95593,7 +95708,7 @@ var require__baseIsNative = __commonJS((exports, module) => {
95593
95708
  });
95594
95709
 
95595
95710
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_getValue.js
95596
- var require__getValue = __commonJS((exports, module) => {
95711
+ var require__getValue = __commonJS(function(exports, module) {
95597
95712
  function getValue(object, key) {
95598
95713
  return object == null ? undefined : object[key];
95599
95714
  }
@@ -95601,7 +95716,7 @@ var require__getValue = __commonJS((exports, module) => {
95601
95716
  });
95602
95717
 
95603
95718
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_getNative.js
95604
- var require__getNative = __commonJS((exports, module) => {
95719
+ var require__getNative = __commonJS(function(exports, module) {
95605
95720
  var baseIsNative = require__baseIsNative();
95606
95721
  var getValue = require__getValue();
95607
95722
  function getNative(object, key) {
@@ -95612,7 +95727,7 @@ var require__getNative = __commonJS((exports, module) => {
95612
95727
  });
95613
95728
 
95614
95729
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_DataView.js
95615
- var require__DataView = __commonJS((exports, module) => {
95730
+ var require__DataView = __commonJS(function(exports, module) {
95616
95731
  var getNative = require__getNative();
95617
95732
  var root = require__root();
95618
95733
  var DataView = getNative(root, "DataView");
@@ -95620,7 +95735,7 @@ var require__DataView = __commonJS((exports, module) => {
95620
95735
  });
95621
95736
 
95622
95737
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_Map.js
95623
- var require__Map = __commonJS((exports, module) => {
95738
+ var require__Map = __commonJS(function(exports, module) {
95624
95739
  var getNative = require__getNative();
95625
95740
  var root = require__root();
95626
95741
  var Map2 = getNative(root, "Map");
@@ -95628,7 +95743,7 @@ var require__Map = __commonJS((exports, module) => {
95628
95743
  });
95629
95744
 
95630
95745
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_Promise.js
95631
- var require__Promise = __commonJS((exports, module) => {
95746
+ var require__Promise = __commonJS(function(exports, module) {
95632
95747
  var getNative = require__getNative();
95633
95748
  var root = require__root();
95634
95749
  var Promise2 = getNative(root, "Promise");
@@ -95636,7 +95751,7 @@ var require__Promise = __commonJS((exports, module) => {
95636
95751
  });
95637
95752
 
95638
95753
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_Set.js
95639
- var require__Set = __commonJS((exports, module) => {
95754
+ var require__Set = __commonJS(function(exports, module) {
95640
95755
  var getNative = require__getNative();
95641
95756
  var root = require__root();
95642
95757
  var Set2 = getNative(root, "Set");
@@ -95644,7 +95759,7 @@ var require__Set = __commonJS((exports, module) => {
95644
95759
  });
95645
95760
 
95646
95761
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_WeakMap.js
95647
- var require__WeakMap = __commonJS((exports, module) => {
95762
+ var require__WeakMap = __commonJS(function(exports, module) {
95648
95763
  var getNative = require__getNative();
95649
95764
  var root = require__root();
95650
95765
  var WeakMap2 = getNative(root, "WeakMap");
@@ -95652,7 +95767,7 @@ var require__WeakMap = __commonJS((exports, module) => {
95652
95767
  });
95653
95768
 
95654
95769
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_getTag.js
95655
- var require__getTag = __commonJS((exports, module) => {
95770
+ var require__getTag = __commonJS(function(exports, module) {
95656
95771
  var DataView = require__DataView();
95657
95772
  var Map2 = require__Map();
95658
95773
  var Promise2 = require__Promise();
@@ -95696,7 +95811,7 @@ var require__getTag = __commonJS((exports, module) => {
95696
95811
  });
95697
95812
 
95698
95813
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isLength.js
95699
- var require_isLength = __commonJS((exports, module) => {
95814
+ var require_isLength = __commonJS(function(exports, module) {
95700
95815
  var MAX_SAFE_INTEGER = 9007199254740991;
95701
95816
  function isLength(value) {
95702
95817
  return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
@@ -95705,7 +95820,7 @@ var require_isLength = __commonJS((exports, module) => {
95705
95820
  });
95706
95821
 
95707
95822
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isArrayLike.js
95708
- var require_isArrayLike = __commonJS((exports, module) => {
95823
+ var require_isArrayLike = __commonJS(function(exports, module) {
95709
95824
  var isFunction = require_isFunction();
95710
95825
  var isLength = require_isLength();
95711
95826
  function isArrayLike(value) {
@@ -95715,13 +95830,13 @@ var require_isArrayLike = __commonJS((exports, module) => {
95715
95830
  });
95716
95831
 
95717
95832
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isArray.js
95718
- var require_isArray = __commonJS((exports, module) => {
95833
+ var require_isArray = __commonJS(function(exports, module) {
95719
95834
  var isArray = Array.isArray;
95720
95835
  module.exports = isArray;
95721
95836
  });
95722
95837
 
95723
95838
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isObjectLike.js
95724
- var require_isObjectLike = __commonJS((exports, module) => {
95839
+ var require_isObjectLike = __commonJS(function(exports, module) {
95725
95840
  function isObjectLike(value) {
95726
95841
  return value != null && typeof value == "object";
95727
95842
  }
@@ -95729,7 +95844,7 @@ var require_isObjectLike = __commonJS((exports, module) => {
95729
95844
  });
95730
95845
 
95731
95846
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isString.js
95732
- var require_isString = __commonJS((exports, module) => {
95847
+ var require_isString = __commonJS(function(exports, module) {
95733
95848
  var baseGetTag = require__baseGetTag();
95734
95849
  var isArray = require_isArray();
95735
95850
  var isObjectLike = require_isObjectLike();
@@ -95741,7 +95856,7 @@ var require_isString = __commonJS((exports, module) => {
95741
95856
  });
95742
95857
 
95743
95858
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_iteratorToArray.js
95744
- var require__iteratorToArray = __commonJS((exports, module) => {
95859
+ var require__iteratorToArray = __commonJS(function(exports, module) {
95745
95860
  function iteratorToArray(iterator) {
95746
95861
  var data, result = [];
95747
95862
  while (!(data = iterator.next()).done) {
@@ -95753,7 +95868,7 @@ var require__iteratorToArray = __commonJS((exports, module) => {
95753
95868
  });
95754
95869
 
95755
95870
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_mapToArray.js
95756
- var require__mapToArray = __commonJS((exports, module) => {
95871
+ var require__mapToArray = __commonJS(function(exports, module) {
95757
95872
  function mapToArray(map) {
95758
95873
  var index = -1, result = Array(map.size);
95759
95874
  map.forEach(function(value, key) {
@@ -95765,7 +95880,7 @@ var require__mapToArray = __commonJS((exports, module) => {
95765
95880
  });
95766
95881
 
95767
95882
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_setToArray.js
95768
- var require__setToArray = __commonJS((exports, module) => {
95883
+ var require__setToArray = __commonJS(function(exports, module) {
95769
95884
  function setToArray(set) {
95770
95885
  var index = -1, result = Array(set.size);
95771
95886
  set.forEach(function(value) {
@@ -95777,7 +95892,7 @@ var require__setToArray = __commonJS((exports, module) => {
95777
95892
  });
95778
95893
 
95779
95894
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_asciiToArray.js
95780
- var require__asciiToArray = __commonJS((exports, module) => {
95895
+ var require__asciiToArray = __commonJS(function(exports, module) {
95781
95896
  function asciiToArray(string) {
95782
95897
  return string.split("");
95783
95898
  }
@@ -95785,7 +95900,7 @@ var require__asciiToArray = __commonJS((exports, module) => {
95785
95900
  });
95786
95901
 
95787
95902
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_hasUnicode.js
95788
- var require__hasUnicode = __commonJS((exports, module) => {
95903
+ var require__hasUnicode = __commonJS(function(exports, module) {
95789
95904
  var rsAstralRange = "\\ud800-\\udfff";
95790
95905
  var rsComboMarksRange = "\\u0300-\\u036f";
95791
95906
  var reComboHalfMarksRange = "\\ufe20-\\ufe2f";
@@ -95801,7 +95916,7 @@ var require__hasUnicode = __commonJS((exports, module) => {
95801
95916
  });
95802
95917
 
95803
95918
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_unicodeToArray.js
95804
- var require__unicodeToArray = __commonJS((exports, module) => {
95919
+ var require__unicodeToArray = __commonJS(function(exports, module) {
95805
95920
  var rsAstralRange = "\\ud800-\\udfff";
95806
95921
  var rsComboMarksRange = "\\u0300-\\u036f";
95807
95922
  var reComboHalfMarksRange = "\\ufe20-\\ufe2f";
@@ -95829,7 +95944,7 @@ var require__unicodeToArray = __commonJS((exports, module) => {
95829
95944
  });
95830
95945
 
95831
95946
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_stringToArray.js
95832
- var require__stringToArray = __commonJS((exports, module) => {
95947
+ var require__stringToArray = __commonJS(function(exports, module) {
95833
95948
  var asciiToArray = require__asciiToArray();
95834
95949
  var hasUnicode = require__hasUnicode();
95835
95950
  var unicodeToArray = require__unicodeToArray();
@@ -95840,7 +95955,7 @@ var require__stringToArray = __commonJS((exports, module) => {
95840
95955
  });
95841
95956
 
95842
95957
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_arrayMap.js
95843
- var require__arrayMap = __commonJS((exports, module) => {
95958
+ var require__arrayMap = __commonJS(function(exports, module) {
95844
95959
  function arrayMap(array, iteratee) {
95845
95960
  var index = -1, length = array == null ? 0 : array.length, result = Array(length);
95846
95961
  while (++index < length) {
@@ -95852,7 +95967,7 @@ var require__arrayMap = __commonJS((exports, module) => {
95852
95967
  });
95853
95968
 
95854
95969
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseValues.js
95855
- var require__baseValues = __commonJS((exports, module) => {
95970
+ var require__baseValues = __commonJS(function(exports, module) {
95856
95971
  var arrayMap = require__arrayMap();
95857
95972
  function baseValues(object, props) {
95858
95973
  return arrayMap(props, function(key) {
@@ -95863,7 +95978,7 @@ var require__baseValues = __commonJS((exports, module) => {
95863
95978
  });
95864
95979
 
95865
95980
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseTimes.js
95866
- var require__baseTimes = __commonJS((exports, module) => {
95981
+ var require__baseTimes = __commonJS(function(exports, module) {
95867
95982
  function baseTimes(n, iteratee) {
95868
95983
  var index = -1, result = Array(n);
95869
95984
  while (++index < n) {
@@ -95875,7 +95990,7 @@ var require__baseTimes = __commonJS((exports, module) => {
95875
95990
  });
95876
95991
 
95877
95992
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseIsArguments.js
95878
- var require__baseIsArguments = __commonJS((exports, module) => {
95993
+ var require__baseIsArguments = __commonJS(function(exports, module) {
95879
95994
  var baseGetTag = require__baseGetTag();
95880
95995
  var isObjectLike = require_isObjectLike();
95881
95996
  var argsTag = "[object Arguments]";
@@ -95886,7 +96001,7 @@ var require__baseIsArguments = __commonJS((exports, module) => {
95886
96001
  });
95887
96002
 
95888
96003
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isArguments.js
95889
- var require_isArguments = __commonJS((exports, module) => {
96004
+ var require_isArguments = __commonJS(function(exports, module) {
95890
96005
  var baseIsArguments = require__baseIsArguments();
95891
96006
  var isObjectLike = require_isObjectLike();
95892
96007
  var objectProto = Object.prototype;
@@ -95901,7 +96016,7 @@ var require_isArguments = __commonJS((exports, module) => {
95901
96016
  });
95902
96017
 
95903
96018
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/stubFalse.js
95904
- var require_stubFalse = __commonJS((exports, module) => {
96019
+ var require_stubFalse = __commonJS(function(exports, module) {
95905
96020
  function stubFalse() {
95906
96021
  return false;
95907
96022
  }
@@ -95909,7 +96024,7 @@ var require_stubFalse = __commonJS((exports, module) => {
95909
96024
  });
95910
96025
 
95911
96026
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isBuffer.js
95912
- var require_isBuffer = __commonJS((exports, module) => {
96027
+ var require_isBuffer = __commonJS(function(exports, module) {
95913
96028
  var root = require__root();
95914
96029
  var stubFalse = require_stubFalse();
95915
96030
  var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
@@ -95922,7 +96037,7 @@ var require_isBuffer = __commonJS((exports, module) => {
95922
96037
  });
95923
96038
 
95924
96039
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_isIndex.js
95925
- var require__isIndex = __commonJS((exports, module) => {
96040
+ var require__isIndex = __commonJS(function(exports, module) {
95926
96041
  var MAX_SAFE_INTEGER = 9007199254740991;
95927
96042
  var reIsUint = /^(?:0|[1-9]\d*)$/;
95928
96043
  function isIndex(value, length) {
@@ -95934,7 +96049,7 @@ var require__isIndex = __commonJS((exports, module) => {
95934
96049
  });
95935
96050
 
95936
96051
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseIsTypedArray.js
95937
- var require__baseIsTypedArray = __commonJS((exports, module) => {
96052
+ var require__baseIsTypedArray = __commonJS(function(exports, module) {
95938
96053
  var baseGetTag = require__baseGetTag();
95939
96054
  var isLength = require_isLength();
95940
96055
  var isObjectLike = require_isObjectLike();
@@ -95972,7 +96087,7 @@ var require__baseIsTypedArray = __commonJS((exports, module) => {
95972
96087
  });
95973
96088
 
95974
96089
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseUnary.js
95975
- var require__baseUnary = __commonJS((exports, module) => {
96090
+ var require__baseUnary = __commonJS(function(exports, module) {
95976
96091
  function baseUnary(func) {
95977
96092
  return function(value) {
95978
96093
  return func(value);
@@ -95982,7 +96097,7 @@ var require__baseUnary = __commonJS((exports, module) => {
95982
96097
  });
95983
96098
 
95984
96099
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_nodeUtil.js
95985
- var require__nodeUtil = __commonJS((exports, module) => {
96100
+ var require__nodeUtil = __commonJS(function(exports, module) {
95986
96101
  var freeGlobal = require__freeGlobal();
95987
96102
  var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
95988
96103
  var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
@@ -96001,7 +96116,7 @@ var require__nodeUtil = __commonJS((exports, module) => {
96001
96116
  });
96002
96117
 
96003
96118
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/isTypedArray.js
96004
- var require_isTypedArray = __commonJS((exports, module) => {
96119
+ var require_isTypedArray = __commonJS(function(exports, module) {
96005
96120
  var baseIsTypedArray = require__baseIsTypedArray();
96006
96121
  var baseUnary = require__baseUnary();
96007
96122
  var nodeUtil = require__nodeUtil();
@@ -96011,7 +96126,7 @@ var require_isTypedArray = __commonJS((exports, module) => {
96011
96126
  });
96012
96127
 
96013
96128
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_arrayLikeKeys.js
96014
- var require__arrayLikeKeys = __commonJS((exports, module) => {
96129
+ var require__arrayLikeKeys = __commonJS(function(exports, module) {
96015
96130
  var baseTimes = require__baseTimes();
96016
96131
  var isArguments = require_isArguments();
96017
96132
  var isArray = require_isArray();
@@ -96033,7 +96148,7 @@ var require__arrayLikeKeys = __commonJS((exports, module) => {
96033
96148
  });
96034
96149
 
96035
96150
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_isPrototype.js
96036
- var require__isPrototype = __commonJS((exports, module) => {
96151
+ var require__isPrototype = __commonJS(function(exports, module) {
96037
96152
  var objectProto = Object.prototype;
96038
96153
  function isPrototype(value) {
96039
96154
  var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
@@ -96043,7 +96158,7 @@ var require__isPrototype = __commonJS((exports, module) => {
96043
96158
  });
96044
96159
 
96045
96160
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_overArg.js
96046
- var require__overArg = __commonJS((exports, module) => {
96161
+ var require__overArg = __commonJS(function(exports, module) {
96047
96162
  function overArg(func, transform) {
96048
96163
  return function(arg) {
96049
96164
  return func(transform(arg));
@@ -96053,14 +96168,14 @@ var require__overArg = __commonJS((exports, module) => {
96053
96168
  });
96054
96169
 
96055
96170
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_nativeKeys.js
96056
- var require__nativeKeys = __commonJS((exports, module) => {
96171
+ var require__nativeKeys = __commonJS(function(exports, module) {
96057
96172
  var overArg = require__overArg();
96058
96173
  var nativeKeys = overArg(Object.keys, Object);
96059
96174
  module.exports = nativeKeys;
96060
96175
  });
96061
96176
 
96062
96177
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/_baseKeys.js
96063
- var require__baseKeys = __commonJS((exports, module) => {
96178
+ var require__baseKeys = __commonJS(function(exports, module) {
96064
96179
  var isPrototype = require__isPrototype();
96065
96180
  var nativeKeys = require__nativeKeys();
96066
96181
  var objectProto = Object.prototype;
@@ -96081,7 +96196,7 @@ var require__baseKeys = __commonJS((exports, module) => {
96081
96196
  });
96082
96197
 
96083
96198
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/keys.js
96084
- var require_keys2 = __commonJS((exports, module) => {
96199
+ var require_keys2 = __commonJS(function(exports, module) {
96085
96200
  var arrayLikeKeys = require__arrayLikeKeys();
96086
96201
  var baseKeys = require__baseKeys();
96087
96202
  var isArrayLike = require_isArrayLike();
@@ -96092,7 +96207,7 @@ var require_keys2 = __commonJS((exports, module) => {
96092
96207
  });
96093
96208
 
96094
96209
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/values.js
96095
- var require_values = __commonJS((exports, module) => {
96210
+ var require_values = __commonJS(function(exports, module) {
96096
96211
  var baseValues = require__baseValues();
96097
96212
  var keys = require_keys2();
96098
96213
  function values(object) {
@@ -96102,7 +96217,7 @@ var require_values = __commonJS((exports, module) => {
96102
96217
  });
96103
96218
 
96104
96219
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/toArray.js
96105
- var require_toArray = __commonJS((exports, module) => {
96220
+ var require_toArray = __commonJS(function(exports, module) {
96106
96221
  var Symbol2 = require__Symbol();
96107
96222
  var copyArray = require__copyArray();
96108
96223
  var getTag = require__getTag();
@@ -96133,12 +96248,12 @@ var require_toArray = __commonJS((exports, module) => {
96133
96248
  });
96134
96249
 
96135
96250
  // node_modules/.bun/node-emoji@1.11.0/node_modules/node-emoji/lib/emoji.json
96136
- var require_emoji = __commonJS((exports, module) => {
96251
+ var require_emoji = __commonJS(function(exports, module) {
96137
96252
  module.exports = { "100": "💯", "1234": "🔢", umbrella_with_rain_drops: "☔", coffee: "☕", aries: "♈", taurus: "♉", sagittarius: "♐", capricorn: "♑", aquarius: "♒", pisces: "♓", anchor: "⚓", white_check_mark: "✅", sparkles: "✨", question: "❓", grey_question: "❔", grey_exclamation: "❕", exclamation: "❗", heavy_exclamation_mark: "❗", heavy_plus_sign: "➕", heavy_minus_sign: "➖", heavy_division_sign: "➗", hash: "#️⃣", keycap_star: "*️⃣", zero: "0️⃣", one: "1️⃣", two: "2️⃣", three: "3️⃣", four: "4️⃣", five: "5️⃣", six: "6️⃣", seven: "7️⃣", eight: "8️⃣", nine: "9️⃣", copyright: "©️", registered: "®️", mahjong: "🀄", black_joker: "🃏", a: "🅰️", b: "🅱️", o2: "🅾️", parking: "🅿️", ab: "🆎", cl: "🆑", cool: "🆒", free: "🆓", id: "🆔", new: "🆕", ng: "🆖", ok: "🆗", sos: "🆘", up: "🆙", vs: "🆚", "flag-ac": "🇦🇨", "flag-ad": "🇦🇩", "flag-ae": "🇦🇪", "flag-af": "🇦🇫", "flag-ag": "🇦🇬", "flag-ai": "🇦🇮", "flag-al": "🇦🇱", "flag-am": "🇦🇲", "flag-ao": "🇦🇴", "flag-aq": "🇦🇶", "flag-ar": "🇦🇷", "flag-as": "🇦🇸", "flag-at": "🇦🇹", "flag-au": "🇦🇺", "flag-aw": "🇦🇼", "flag-ax": "🇦🇽", "flag-az": "🇦🇿", "flag-ba": "🇧🇦", "flag-bb": "🇧🇧", "flag-bd": "🇧🇩", "flag-be": "🇧🇪", "flag-bf": "🇧🇫", "flag-bg": "🇧🇬", "flag-bh": "🇧🇭", "flag-bi": "🇧🇮", "flag-bj": "🇧🇯", "flag-bl": "🇧🇱", "flag-bm": "🇧🇲", "flag-bn": "🇧🇳", "flag-bo": "🇧🇴", "flag-bq": "🇧🇶", "flag-br": "🇧🇷", "flag-bs": "🇧🇸", "flag-bt": "🇧🇹", "flag-bv": "🇧🇻", "flag-bw": "🇧🇼", "flag-by": "🇧🇾", "flag-bz": "🇧🇿", "flag-ca": "🇨🇦", "flag-cc": "🇨🇨", "flag-cd": "🇨🇩", "flag-cf": "🇨🇫", "flag-cg": "🇨🇬", "flag-ch": "🇨🇭", "flag-ci": "🇨🇮", "flag-ck": "🇨🇰", "flag-cl": "🇨🇱", "flag-cm": "🇨🇲", cn: "🇨🇳", "flag-cn": "🇨🇳", "flag-co": "🇨🇴", "flag-cp": "🇨🇵", "flag-cr": "🇨🇷", "flag-cu": "🇨🇺", "flag-cv": "🇨🇻", "flag-cw": "🇨🇼", "flag-cx": "🇨🇽", "flag-cy": "🇨🇾", "flag-cz": "🇨🇿", de: "🇩🇪", "flag-de": "🇩🇪", "flag-dg": "🇩🇬", "flag-dj": "🇩🇯", "flag-dk": "🇩🇰", "flag-dm": "🇩🇲", "flag-do": "🇩🇴", "flag-dz": "🇩🇿", "flag-ea": "🇪🇦", "flag-ec": "🇪🇨", "flag-ee": "🇪🇪", "flag-eg": "🇪🇬", "flag-eh": "🇪🇭", "flag-er": "🇪🇷", es: "🇪🇸", "flag-es": "🇪🇸", "flag-et": "🇪🇹", "flag-eu": "🇪🇺", "flag-fi": "🇫🇮", "flag-fj": "🇫🇯", "flag-fk": "🇫🇰", "flag-fm": "🇫🇲", "flag-fo": "🇫🇴", fr: "🇫🇷", "flag-fr": "🇫🇷", "flag-ga": "🇬🇦", gb: "🇬🇧", uk: "🇬🇧", "flag-gb": "🇬🇧", "flag-gd": "🇬🇩", "flag-ge": "🇬🇪", "flag-gf": "🇬🇫", "flag-gg": "🇬🇬", "flag-gh": "🇬🇭", "flag-gi": "🇬🇮", "flag-gl": "🇬🇱", "flag-gm": "🇬🇲", "flag-gn": "🇬🇳", "flag-gp": "🇬🇵", "flag-gq": "🇬🇶", "flag-gr": "🇬🇷", "flag-gs": "🇬🇸", "flag-gt": "🇬🇹", "flag-gu": "🇬🇺", "flag-gw": "🇬🇼", "flag-gy": "🇬🇾", "flag-hk": "🇭🇰", "flag-hm": "🇭🇲", "flag-hn": "🇭🇳", "flag-hr": "🇭🇷", "flag-ht": "🇭🇹", "flag-hu": "🇭🇺", "flag-ic": "🇮🇨", "flag-id": "🇮🇩", "flag-ie": "🇮🇪", "flag-il": "🇮🇱", "flag-im": "🇮🇲", "flag-in": "🇮🇳", "flag-io": "🇮🇴", "flag-iq": "🇮🇶", "flag-ir": "🇮🇷", "flag-is": "🇮🇸", it: "🇮🇹", "flag-it": "🇮🇹", "flag-je": "🇯🇪", "flag-jm": "🇯🇲", "flag-jo": "🇯🇴", jp: "🇯🇵", "flag-jp": "🇯🇵", "flag-ke": "🇰🇪", "flag-kg": "🇰🇬", "flag-kh": "🇰🇭", "flag-ki": "🇰🇮", "flag-km": "🇰🇲", "flag-kn": "🇰🇳", "flag-kp": "🇰🇵", kr: "🇰🇷", "flag-kr": "🇰🇷", "flag-kw": "🇰🇼", "flag-ky": "🇰🇾", "flag-kz": "🇰🇿", "flag-la": "🇱🇦", "flag-lb": "🇱🇧", "flag-lc": "🇱🇨", "flag-li": "🇱🇮", "flag-lk": "🇱🇰", "flag-lr": "🇱🇷", "flag-ls": "🇱🇸", "flag-lt": "🇱🇹", "flag-lu": "🇱🇺", "flag-lv": "🇱🇻", "flag-ly": "🇱🇾", "flag-ma": "🇲🇦", "flag-mc": "🇲🇨", "flag-md": "🇲🇩", "flag-me": "🇲🇪", "flag-mf": "🇲🇫", "flag-mg": "🇲🇬", "flag-mh": "🇲🇭", "flag-mk": "🇲🇰", "flag-ml": "🇲🇱", "flag-mm": "🇲🇲", "flag-mn": "🇲🇳", "flag-mo": "🇲🇴", "flag-mp": "🇲🇵", "flag-mq": "🇲🇶", "flag-mr": "🇲🇷", "flag-ms": "🇲🇸", "flag-mt": "🇲🇹", "flag-mu": "🇲🇺", "flag-mv": "🇲🇻", "flag-mw": "🇲🇼", "flag-mx": "🇲🇽", "flag-my": "🇲🇾", "flag-mz": "🇲🇿", "flag-na": "🇳🇦", "flag-nc": "🇳🇨", "flag-ne": "🇳🇪", "flag-nf": "🇳🇫", "flag-ng": "🇳🇬", "flag-ni": "🇳🇮", "flag-nl": "🇳🇱", "flag-no": "🇳🇴", "flag-np": "🇳🇵", "flag-nr": "🇳🇷", "flag-nu": "🇳🇺", "flag-nz": "🇳🇿", "flag-om": "🇴🇲", "flag-pa": "🇵🇦", "flag-pe": "🇵🇪", "flag-pf": "🇵🇫", "flag-pg": "🇵🇬", "flag-ph": "🇵🇭", "flag-pk": "🇵🇰", "flag-pl": "🇵🇱", "flag-pm": "🇵🇲", "flag-pn": "🇵🇳", "flag-pr": "🇵🇷", "flag-ps": "🇵🇸", "flag-pt": "🇵🇹", "flag-pw": "🇵🇼", "flag-py": "🇵🇾", "flag-qa": "🇶🇦", "flag-re": "🇷🇪", "flag-ro": "🇷🇴", "flag-rs": "🇷🇸", ru: "🇷🇺", "flag-ru": "🇷🇺", "flag-rw": "🇷🇼", "flag-sa": "🇸🇦", "flag-sb": "🇸🇧", "flag-sc": "🇸🇨", "flag-sd": "🇸🇩", "flag-se": "🇸🇪", "flag-sg": "🇸🇬", "flag-sh": "🇸🇭", "flag-si": "🇸🇮", "flag-sj": "🇸🇯", "flag-sk": "🇸🇰", "flag-sl": "🇸🇱", "flag-sm": "🇸🇲", "flag-sn": "🇸🇳", "flag-so": "🇸🇴", "flag-sr": "🇸🇷", "flag-ss": "🇸🇸", "flag-st": "🇸🇹", "flag-sv": "🇸🇻", "flag-sx": "🇸🇽", "flag-sy": "🇸🇾", "flag-sz": "🇸🇿", "flag-ta": "🇹🇦", "flag-tc": "🇹🇨", "flag-td": "🇹🇩", "flag-tf": "🇹🇫", "flag-tg": "🇹🇬", "flag-th": "🇹🇭", "flag-tj": "🇹🇯", "flag-tk": "🇹🇰", "flag-tl": "🇹🇱", "flag-tm": "🇹🇲", "flag-tn": "🇹🇳", "flag-to": "🇹🇴", "flag-tr": "🇹🇷", "flag-tt": "🇹🇹", "flag-tv": "🇹🇻", "flag-tw": "🇹🇼", "flag-tz": "🇹🇿", "flag-ua": "🇺🇦", "flag-ug": "🇺🇬", "flag-um": "🇺🇲", "flag-un": "🇺🇳", us: "🇺🇸", "flag-us": "🇺🇸", "flag-uy": "🇺🇾", "flag-uz": "🇺🇿", "flag-va": "🇻🇦", "flag-vc": "🇻🇨", "flag-ve": "🇻🇪", "flag-vg": "🇻🇬", "flag-vi": "🇻🇮", "flag-vn": "🇻🇳", "flag-vu": "🇻🇺", "flag-wf": "🇼🇫", "flag-ws": "🇼🇸", "flag-xk": "🇽🇰", "flag-ye": "🇾🇪", "flag-yt": "🇾🇹", "flag-za": "🇿🇦", "flag-zm": "🇿🇲", "flag-zw": "🇿🇼", koko: "🈁", sa: "🈂️", u7121: "🈚", u6307: "🈯", u7981: "🈲", u7a7a: "🈳", u5408: "🈴", u6e80: "🈵", u6709: "🈶", u6708: "🈷️", u7533: "🈸", u5272: "🈹", u55b6: "🈺", ideograph_advantage: "🉐", accept: "🉑", cyclone: "🌀", foggy: "🌁", closed_umbrella: "🌂", night_with_stars: "🌃", sunrise_over_mountains: "🌄", sunrise: "🌅", city_sunset: "🌆", city_sunrise: "🌇", rainbow: "🌈", bridge_at_night: "🌉", ocean: "🌊", volcano: "🌋", milky_way: "🌌", earth_africa: "🌍", earth_americas: "🌎", earth_asia: "🌏", globe_with_meridians: "🌐", new_moon: "🌑", waxing_crescent_moon: "🌒", first_quarter_moon: "🌓", moon: "🌔", waxing_gibbous_moon: "🌔", full_moon: "🌕", waning_gibbous_moon: "🌖", last_quarter_moon: "🌗", waning_crescent_moon: "🌘", crescent_moon: "🌙", new_moon_with_face: "🌚", first_quarter_moon_with_face: "🌛", last_quarter_moon_with_face: "🌜", full_moon_with_face: "🌝", sun_with_face: "🌞", star2: "🌟", stars: "🌠", thermometer: "🌡️", mostly_sunny: "🌤️", sun_small_cloud: "🌤️", barely_sunny: "🌥️", sun_behind_cloud: "🌥️", partly_sunny_rain: "🌦️", sun_behind_rain_cloud: "🌦️", rain_cloud: "🌧️", snow_cloud: "🌨️", lightning: "🌩️", lightning_cloud: "🌩️", tornado: "🌪️", tornado_cloud: "🌪️", fog: "🌫️", wind_blowing_face: "🌬️", hotdog: "🌭", taco: "🌮", burrito: "🌯", chestnut: "🌰", seedling: "🌱", evergreen_tree: "🌲", deciduous_tree: "🌳", palm_tree: "🌴", cactus: "🌵", hot_pepper: "🌶️", tulip: "🌷", cherry_blossom: "🌸", rose: "🌹", hibiscus: "🌺", sunflower: "🌻", blossom: "🌼", corn: "🌽", ear_of_rice: "🌾", herb: "🌿", four_leaf_clover: "🍀", maple_leaf: "🍁", fallen_leaf: "🍂", leaves: "🍃", mushroom: "🍄", tomato: "🍅", eggplant: "🍆", grapes: "🍇", melon: "🍈", watermelon: "🍉", tangerine: "🍊", lemon: "🍋", banana: "🍌", pineapple: "🍍", apple: "🍎", green_apple: "🍏", pear: "🍐", peach: "🍑", cherries: "🍒", strawberry: "🍓", hamburger: "🍔", pizza: "🍕", meat_on_bone: "🍖", poultry_leg: "🍗", rice_cracker: "🍘", rice_ball: "🍙", rice: "🍚", curry: "🍛", ramen: "🍜", spaghetti: "🍝", bread: "🍞", fries: "🍟", sweet_potato: "🍠", dango: "🍡", oden: "🍢", sushi: "🍣", fried_shrimp: "🍤", fish_cake: "🍥", icecream: "🍦", shaved_ice: "🍧", ice_cream: "🍨", doughnut: "🍩", cookie: "🍪", chocolate_bar: "🍫", candy: "🍬", lollipop: "🍭", custard: "🍮", honey_pot: "🍯", cake: "🍰", bento: "🍱", stew: "🍲", fried_egg: "🍳", cooking: "🍳", fork_and_knife: "🍴", tea: "🍵", sake: "🍶", wine_glass: "🍷", cocktail: "🍸", tropical_drink: "🍹", beer: "🍺", beers: "🍻", baby_bottle: "🍼", knife_fork_plate: "🍽️", champagne: "🍾", popcorn: "🍿", ribbon: "🎀", gift: "🎁", birthday: "🎂", jack_o_lantern: "🎃", christmas_tree: "🎄", santa: "🎅", fireworks: "🎆", sparkler: "🎇", balloon: "🎈", tada: "🎉", confetti_ball: "🎊", tanabata_tree: "🎋", crossed_flags: "🎌", bamboo: "🎍", dolls: "🎎", flags: "🎏", wind_chime: "🎐", rice_scene: "🎑", school_satchel: "🎒", mortar_board: "🎓", medal: "🎖️", reminder_ribbon: "🎗️", studio_microphone: "🎙️", level_slider: "🎚️", control_knobs: "🎛️", film_frames: "🎞️", admission_tickets: "🎟️", carousel_horse: "🎠", ferris_wheel: "🎡", roller_coaster: "🎢", fishing_pole_and_fish: "🎣", microphone: "🎤", movie_camera: "🎥", cinema: "🎦", headphones: "🎧", art: "🎨", tophat: "🎩", circus_tent: "🎪", ticket: "🎫", clapper: "🎬", performing_arts: "🎭", video_game: "🎮", dart: "🎯", slot_machine: "🎰", "8ball": "🎱", game_die: "🎲", bowling: "🎳", flower_playing_cards: "🎴", musical_note: "🎵", notes: "🎶", saxophone: "🎷", guitar: "🎸", musical_keyboard: "🎹", trumpet: "🎺", violin: "🎻", musical_score: "🎼", running_shirt_with_sash: "🎽", tennis: "🎾", ski: "🎿", basketball: "🏀", checkered_flag: "🏁", snowboarder: "🏂", "woman-running": "🏃‍♀️", "man-running": "🏃‍♂️", runner: "🏃‍♂️", running: "🏃‍♂️", "woman-surfing": "🏄‍♀️", "man-surfing": "🏄‍♂️", surfer: "🏄‍♂️", sports_medal: "🏅", trophy: "🏆", horse_racing: "🏇", football: "🏈", rugby_football: "🏉", "woman-swimming": "🏊‍♀️", "man-swimming": "🏊‍♂️", swimmer: "🏊‍♂️", "woman-lifting-weights": "🏋️‍♀️", "man-lifting-weights": "🏋️‍♂️", weight_lifter: "🏋️‍♂️", "woman-golfing": "🏌️‍♀️", "man-golfing": "🏌️‍♂️", golfer: "🏌️‍♂️", racing_motorcycle: "🏍️", racing_car: "🏎️", cricket_bat_and_ball: "🏏", volleyball: "🏐", field_hockey_stick_and_ball: "🏑", ice_hockey_stick_and_puck: "🏒", table_tennis_paddle_and_ball: "🏓", snow_capped_mountain: "🏔️", camping: "🏕️", beach_with_umbrella: "🏖️", building_construction: "🏗️", house_buildings: "🏘️", cityscape: "🏙️", derelict_house_building: "🏚️", classical_building: "🏛️", desert: "🏜️", desert_island: "🏝️", national_park: "🏞️", stadium: "🏟️", house: "🏠", house_with_garden: "🏡", office: "🏢", post_office: "🏣", european_post_office: "🏤", hospital: "🏥", bank: "🏦", atm: "🏧", hotel: "🏨", love_hotel: "🏩", convenience_store: "🏪", school: "🏫", department_store: "🏬", factory: "🏭", izakaya_lantern: "🏮", lantern: "🏮", japanese_castle: "🏯", european_castle: "🏰", "rainbow-flag": "🏳️‍🌈", transgender_flag: "🏳️‍⚧️", waving_white_flag: "🏳️", pirate_flag: "🏴‍☠️", "flag-england": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", "flag-scotland": "🏴󠁧󠁢󠁳󠁣󠁴󠁿", "flag-wales": "🏴󠁧󠁢󠁷󠁬󠁳󠁿", waving_black_flag: "🏴", rosette: "🏵️", label: "🏷️", badminton_racquet_and_shuttlecock: "🏸", bow_and_arrow: "🏹", amphora: "🏺", "skin-tone-2": "🏻", "skin-tone-3": "🏼", "skin-tone-4": "🏽", "skin-tone-5": "🏾", "skin-tone-6": "🏿", rat: "🐀", mouse2: "🐁", ox: "🐂", water_buffalo: "🐃", cow2: "🐄", tiger2: "🐅", leopard: "🐆", rabbit2: "🐇", black_cat: "🐈‍⬛", cat2: "🐈", dragon: "🐉", crocodile: "🐊", whale2: "🐋", snail: "🐌", snake: "🐍", racehorse: "🐎", ram: "🐏", goat: "🐐", sheep: "🐑", monkey: "🐒", rooster: "🐓", chicken: "🐔", service_dog: "🐕‍🦺", dog2: "🐕", pig2: "🐖", boar: "🐗", elephant: "🐘", octopus: "🐙", shell: "🐚", bug: "🐛", ant: "🐜", bee: "🐝", honeybee: "🐝", ladybug: "🐞", lady_beetle: "🐞", fish: "🐟", tropical_fish: "🐠", blowfish: "🐡", turtle: "🐢", hatching_chick: "🐣", baby_chick: "🐤", hatched_chick: "🐥", bird: "🐦", penguin: "🐧", koala: "🐨", poodle: "🐩", dromedary_camel: "🐪", camel: "🐫", dolphin: "🐬", flipper: "🐬", mouse: "🐭", cow: "🐮", tiger: "🐯", rabbit: "🐰", cat: "🐱", dragon_face: "🐲", whale: "🐳", horse: "🐴", monkey_face: "🐵", dog: "🐶", pig: "🐷", frog: "🐸", hamster: "🐹", wolf: "🐺", polar_bear: "🐻‍❄️", bear: "🐻", panda_face: "🐼", pig_nose: "🐽", feet: "🐾", paw_prints: "🐾", chipmunk: "🐿️", eyes: "👀", "eye-in-speech-bubble": "👁️‍🗨️", eye: "👁️", ear: "👂", nose: "👃", lips: "👄", tongue: "👅", point_up_2: "👆", point_down: "👇", point_left: "👈", point_right: "👉", facepunch: "👊", punch: "👊", wave: "👋", ok_hand: "👌", "+1": "👍", thumbsup: "👍", "-1": "👎", thumbsdown: "👎", clap: "👏", open_hands: "👐", crown: "👑", womans_hat: "👒", eyeglasses: "👓", necktie: "👔", shirt: "👕", tshirt: "👕", jeans: "👖", dress: "👗", kimono: "👘", bikini: "👙", womans_clothes: "👚", purse: "👛", handbag: "👜", pouch: "👝", mans_shoe: "👞", shoe: "👞", athletic_shoe: "👟", high_heel: "👠", sandal: "👡", boot: "👢", footprints: "👣", bust_in_silhouette: "👤", busts_in_silhouette: "👥", boy: "👦", girl: "👧", "male-farmer": "👨‍🌾", "male-cook": "👨‍🍳", man_feeding_baby: "👨‍🍼", "male-student": "👨‍🎓", "male-singer": "👨‍🎤", "male-artist": "👨‍🎨", "male-teacher": "👨‍🏫", "male-factory-worker": "👨‍🏭", "man-boy-boy": "👨‍👦‍👦", "man-boy": "👨‍👦", "man-girl-boy": "👨‍👧‍👦", "man-girl-girl": "👨‍👧‍👧", "man-girl": "👨‍👧", "man-man-boy": "👨‍👨‍👦", "man-man-boy-boy": "👨‍👨‍👦‍👦", "man-man-girl": "👨‍👨‍👧", "man-man-girl-boy": "👨‍👨‍👧‍👦", "man-man-girl-girl": "👨‍👨‍👧‍👧", "man-woman-boy": "👨‍👩‍👦", family: "👨‍👩‍👦", "man-woman-boy-boy": "👨‍👩‍👦‍👦", "man-woman-girl": "👨‍👩‍👧", "man-woman-girl-boy": "👨‍👩‍👧‍👦", "man-woman-girl-girl": "👨‍👩‍👧‍👧", "male-technologist": "👨‍💻", "male-office-worker": "👨‍💼", "male-mechanic": "👨‍🔧", "male-scientist": "👨‍🔬", "male-astronaut": "👨‍🚀", "male-firefighter": "👨‍🚒", man_with_probing_cane: "👨‍🦯", red_haired_man: "👨‍🦰", curly_haired_man: "👨‍🦱", bald_man: "👨‍🦲", white_haired_man: "👨‍🦳", man_in_motorized_wheelchair: "👨‍🦼", man_in_manual_wheelchair: "👨‍🦽", "male-doctor": "👨‍⚕️", "male-judge": "👨‍⚖️", "male-pilot": "👨‍✈️", "man-heart-man": "👨‍❤️‍👨", "man-kiss-man": "👨‍❤️‍💋‍👨", man: "👨", "female-farmer": "👩‍🌾", "female-cook": "👩‍🍳", woman_feeding_baby: "👩‍🍼", "female-student": "👩‍🎓", "female-singer": "👩‍🎤", "female-artist": "👩‍🎨", "female-teacher": "👩‍🏫", "female-factory-worker": "👩‍🏭", "woman-boy-boy": "👩‍👦‍👦", "woman-boy": "👩‍👦", "woman-girl-boy": "👩‍👧‍👦", "woman-girl-girl": "👩‍👧‍👧", "woman-girl": "👩‍👧", "woman-woman-boy": "👩‍👩‍👦", "woman-woman-boy-boy": "👩‍👩‍👦‍👦", "woman-woman-girl": "👩‍👩‍👧", "woman-woman-girl-boy": "👩‍👩‍👧‍👦", "woman-woman-girl-girl": "👩‍👩‍👧‍👧", "female-technologist": "👩‍💻", "female-office-worker": "👩‍💼", "female-mechanic": "👩‍🔧", "female-scientist": "👩‍🔬", "female-astronaut": "👩‍🚀", "female-firefighter": "👩‍🚒", woman_with_probing_cane: "👩‍🦯", red_haired_woman: "👩‍🦰", curly_haired_woman: "👩‍🦱", bald_woman: "👩‍🦲", white_haired_woman: "👩‍🦳", woman_in_motorized_wheelchair: "👩‍🦼", woman_in_manual_wheelchair: "👩‍🦽", "female-doctor": "👩‍⚕️", "female-judge": "👩‍⚖️", "female-pilot": "👩‍✈️", "woman-heart-man": "👩‍❤️‍👨", "woman-heart-woman": "👩‍❤️‍👩", "woman-kiss-man": "👩‍❤️‍💋‍👨", "woman-kiss-woman": "👩‍❤️‍💋‍👩", woman: "👩", man_and_woman_holding_hands: "👫", woman_and_man_holding_hands: "👫", couple: "👫", two_men_holding_hands: "👬", men_holding_hands: "👬", two_women_holding_hands: "👭", women_holding_hands: "👭", "female-police-officer": "👮‍♀️", "male-police-officer": "👮‍♂️", cop: "👮‍♂️", "women-with-bunny-ears-partying": "👯‍♀️", "woman-with-bunny-ears-partying": "👯‍♀️", dancers: "👯‍♀️", "men-with-bunny-ears-partying": "👯‍♂️", "man-with-bunny-ears-partying": "👯‍♂️", woman_with_veil: "👰‍♀️", man_with_veil: "👰‍♂️", bride_with_veil: "👰", "blond-haired-woman": "👱‍♀️", "blond-haired-man": "👱‍♂️", person_with_blond_hair: "👱‍♂️", man_with_gua_pi_mao: "👲", "woman-wearing-turban": "👳‍♀️", "man-wearing-turban": "👳‍♂️", man_with_turban: "👳‍♂️", older_man: "👴", older_woman: "👵", baby: "👶", "female-construction-worker": "👷‍♀️", "male-construction-worker": "👷‍♂️", construction_worker: "👷‍♂️", princess: "👸", japanese_ogre: "👹", japanese_goblin: "👺", ghost: "👻", angel: "👼", alien: "👽", space_invader: "👾", imp: "👿", skull: "💀", "woman-tipping-hand": "💁‍♀️", information_desk_person: "💁‍♀️", "man-tipping-hand": "💁‍♂️", "female-guard": "💂‍♀️", "male-guard": "💂‍♂️", guardsman: "💂‍♂️", dancer: "💃", lipstick: "💄", nail_care: "💅", "woman-getting-massage": "💆‍♀️", massage: "💆‍♀️", "man-getting-massage": "💆‍♂️", "woman-getting-haircut": "💇‍♀️", haircut: "💇‍♀️", "man-getting-haircut": "💇‍♂️", barber: "💈", syringe: "💉", pill: "💊", kiss: "💋", love_letter: "💌", ring: "💍", gem: "💎", couplekiss: "💏", bouquet: "💐", couple_with_heart: "💑", wedding: "💒", heartbeat: "💓", broken_heart: "💔", two_hearts: "💕", sparkling_heart: "💖", heartpulse: "💗", cupid: "💘", blue_heart: "💙", green_heart: "💚", yellow_heart: "💛", purple_heart: "💜", gift_heart: "💝", revolving_hearts: "💞", heart_decoration: "💟", diamond_shape_with_a_dot_inside: "💠", bulb: "💡", anger: "💢", bomb: "💣", zzz: "💤", boom: "💥", collision: "💥", sweat_drops: "💦", droplet: "💧", dash: "💨", hankey: "💩", poop: "💩", shit: "💩", muscle: "💪", dizzy: "💫", speech_balloon: "💬", thought_balloon: "💭", white_flower: "💮", moneybag: "💰", currency_exchange: "💱", heavy_dollar_sign: "💲", credit_card: "💳", yen: "💴", dollar: "💵", euro: "💶", pound: "💷", money_with_wings: "💸", chart: "💹", seat: "💺", computer: "💻", briefcase: "💼", minidisc: "💽", floppy_disk: "💾", cd: "💿", dvd: "📀", file_folder: "📁", open_file_folder: "📂", page_with_curl: "📃", page_facing_up: "📄", date: "📅", calendar: "📆", card_index: "📇", chart_with_upwards_trend: "📈", chart_with_downwards_trend: "📉", bar_chart: "📊", clipboard: "📋", pushpin: "📌", round_pushpin: "📍", paperclip: "📎", straight_ruler: "📏", triangular_ruler: "📐", bookmark_tabs: "📑", ledger: "📒", notebook: "📓", notebook_with_decorative_cover: "📔", closed_book: "📕", book: "📖", open_book: "📖", green_book: "📗", blue_book: "📘", orange_book: "📙", books: "📚", name_badge: "📛", scroll: "📜", memo: "📝", pencil: "📝", telephone_receiver: "📞", pager: "📟", fax: "📠", satellite_antenna: "📡", loudspeaker: "📢", mega: "📣", outbox_tray: "📤", inbox_tray: "📥", package: "📦", "e-mail": "📧", incoming_envelope: "📨", envelope_with_arrow: "📩", mailbox_closed: "📪", mailbox: "📫", mailbox_with_mail: "📬", mailbox_with_no_mail: "📭", postbox: "📮", postal_horn: "📯", newspaper: "📰", iphone: "📱", calling: "📲", vibration_mode: "📳", mobile_phone_off: "📴", no_mobile_phones: "📵", signal_strength: "📶", camera: "📷", camera_with_flash: "📸", video_camera: "📹", tv: "📺", radio: "📻", vhs: "📼", film_projector: "📽️", prayer_beads: "📿", twisted_rightwards_arrows: "🔀", repeat: "🔁", repeat_one: "🔂", arrows_clockwise: "🔃", arrows_counterclockwise: "🔄", low_brightness: "🔅", high_brightness: "🔆", mute: "🔇", speaker: "🔈", sound: "🔉", loud_sound: "🔊", battery: "🔋", electric_plug: "🔌", mag: "🔍", mag_right: "🔎", lock_with_ink_pen: "🔏", closed_lock_with_key: "🔐", key: "🔑", lock: "🔒", unlock: "🔓", bell: "🔔", no_bell: "🔕", bookmark: "🔖", link: "🔗", radio_button: "🔘", back: "🔙", end: "🔚", on: "🔛", soon: "🔜", top: "🔝", underage: "🔞", keycap_ten: "🔟", capital_abcd: "🔠", abcd: "🔡", symbols: "🔣", abc: "🔤", fire: "🔥", flashlight: "🔦", wrench: "🔧", hammer: "🔨", nut_and_bolt: "🔩", hocho: "🔪", knife: "🔪", gun: "🔫", microscope: "🔬", telescope: "🔭", crystal_ball: "🔮", six_pointed_star: "🔯", beginner: "🔰", trident: "🔱", black_square_button: "🔲", white_square_button: "🔳", red_circle: "🔴", large_blue_circle: "🔵", large_orange_diamond: "🔶", large_blue_diamond: "🔷", small_orange_diamond: "🔸", small_blue_diamond: "🔹", small_red_triangle: "🔺", small_red_triangle_down: "🔻", arrow_up_small: "🔼", arrow_down_small: "🔽", om_symbol: "🕉️", dove_of_peace: "🕊️", kaaba: "🕋", mosque: "🕌", synagogue: "🕍", menorah_with_nine_branches: "🕎", clock1: "🕐", clock2: "🕑", clock3: "🕒", clock4: "🕓", clock5: "🕔", clock6: "🕕", clock7: "🕖", clock8: "🕗", clock9: "🕘", clock10: "🕙", clock11: "🕚", clock12: "🕛", clock130: "🕜", clock230: "🕝", clock330: "🕞", clock430: "🕟", clock530: "🕠", clock630: "🕡", clock730: "🕢", clock830: "🕣", clock930: "🕤", clock1030: "🕥", clock1130: "🕦", clock1230: "🕧", candle: "🕯️", mantelpiece_clock: "🕰️", hole: "🕳️", man_in_business_suit_levitating: "🕴️", "female-detective": "🕵️‍♀️", "male-detective": "🕵️‍♂️", sleuth_or_spy: "🕵️‍♂️", dark_sunglasses: "🕶️", spider: "🕷️", spider_web: "🕸️", joystick: "🕹️", man_dancing: "🕺", linked_paperclips: "🖇️", lower_left_ballpoint_pen: "🖊️", lower_left_fountain_pen: "🖋️", lower_left_paintbrush: "🖌️", lower_left_crayon: "🖍️", raised_hand_with_fingers_splayed: "🖐️", middle_finger: "🖕", reversed_hand_with_middle_finger_extended: "🖕", "spock-hand": "🖖", black_heart: "🖤", desktop_computer: "🖥️", printer: "🖨️", three_button_mouse: "🖱️", trackball: "🖲️", frame_with_picture: "🖼️", card_index_dividers: "🗂️", card_file_box: "🗃️", file_cabinet: "🗄️", wastebasket: "🗑️", spiral_note_pad: "🗒️", spiral_calendar_pad: "🗓️", compression: "🗜️", old_key: "🗝️", rolled_up_newspaper: "🗞️", dagger_knife: "🗡️", speaking_head_in_silhouette: "🗣️", left_speech_bubble: "🗨️", right_anger_bubble: "🗯️", ballot_box_with_ballot: "🗳️", world_map: "🗺️", mount_fuji: "🗻", tokyo_tower: "🗼", statue_of_liberty: "🗽", japan: "🗾", moyai: "🗿", grinning: "😀", grin: "😁", joy: "😂", smiley: "😃", smile: "😄", sweat_smile: "😅", laughing: "😆", satisfied: "😆", innocent: "😇", smiling_imp: "😈", wink: "😉", blush: "😊", yum: "😋", relieved: "😌", heart_eyes: "😍", sunglasses: "😎", smirk: "😏", neutral_face: "😐", expressionless: "😑", unamused: "😒", sweat: "😓", pensive: "😔", confused: "😕", confounded: "😖", kissing: "😗", kissing_heart: "😘", kissing_smiling_eyes: "😙", kissing_closed_eyes: "😚", stuck_out_tongue: "😛", stuck_out_tongue_winking_eye: "😜", stuck_out_tongue_closed_eyes: "😝", disappointed: "😞", worried: "😟", angry: "😠", rage: "😡", cry: "😢", persevere: "😣", triumph: "😤", disappointed_relieved: "😥", frowning: "😦", anguished: "😧", fearful: "😨", weary: "😩", sleepy: "😪", tired_face: "😫", grimacing: "😬", sob: "😭", face_exhaling: "😮‍💨", open_mouth: "😮", hushed: "😯", cold_sweat: "😰", scream: "😱", astonished: "😲", flushed: "😳", sleeping: "😴", face_with_spiral_eyes: "😵‍💫", dizzy_face: "😵", face_in_clouds: "😶‍🌫️", no_mouth: "😶", mask: "😷", smile_cat: "😸", joy_cat: "😹", smiley_cat: "😺", heart_eyes_cat: "😻", smirk_cat: "😼", kissing_cat: "😽", pouting_cat: "😾", crying_cat_face: "😿", scream_cat: "🙀", slightly_frowning_face: "🙁", slightly_smiling_face: "🙂", upside_down_face: "🙃", face_with_rolling_eyes: "🙄", "woman-gesturing-no": "🙅‍♀️", no_good: "🙅‍♀️", "man-gesturing-no": "🙅‍♂️", "woman-gesturing-ok": "🙆‍♀️", ok_woman: "🙆‍♀️", "man-gesturing-ok": "🙆‍♂️", "woman-bowing": "🙇‍♀️", "man-bowing": "🙇‍♂️", bow: "🙇‍♂️", see_no_evil: "🙈", hear_no_evil: "🙉", speak_no_evil: "🙊", "woman-raising-hand": "🙋‍♀️", raising_hand: "🙋‍♀️", "man-raising-hand": "🙋‍♂️", raised_hands: "🙌", "woman-frowning": "🙍‍♀️", person_frowning: "🙍‍♀️", "man-frowning": "🙍‍♂️", "woman-pouting": "🙎‍♀️", person_with_pouting_face: "🙎‍♀️", "man-pouting": "🙎‍♂️", pray: "🙏", rocket: "🚀", helicopter: "🚁", steam_locomotive: "🚂", railway_car: "🚃", bullettrain_side: "🚄", bullettrain_front: "🚅", train2: "🚆", metro: "🚇", light_rail: "🚈", station: "🚉", tram: "🚊", train: "🚋", bus: "🚌", oncoming_bus: "🚍", trolleybus: "🚎", busstop: "🚏", minibus: "🚐", ambulance: "🚑", fire_engine: "🚒", police_car: "🚓", oncoming_police_car: "🚔", taxi: "🚕", oncoming_taxi: "🚖", car: "🚗", red_car: "🚗", oncoming_automobile: "🚘", blue_car: "🚙", truck: "🚚", articulated_lorry: "🚛", tractor: "🚜", monorail: "🚝", mountain_railway: "🚞", suspension_railway: "🚟", mountain_cableway: "🚠", aerial_tramway: "🚡", ship: "🚢", "woman-rowing-boat": "🚣‍♀️", "man-rowing-boat": "🚣‍♂️", rowboat: "🚣‍♂️", speedboat: "🚤", traffic_light: "🚥", vertical_traffic_light: "🚦", construction: "🚧", rotating_light: "🚨", triangular_flag_on_post: "🚩", door: "🚪", no_entry_sign: "🚫", smoking: "🚬", no_smoking: "🚭", put_litter_in_its_place: "🚮", do_not_litter: "🚯", potable_water: "🚰", "non-potable_water": "🚱", bike: "🚲", no_bicycles: "🚳", "woman-biking": "🚴‍♀️", "man-biking": "🚴‍♂️", bicyclist: "🚴‍♂️", "woman-mountain-biking": "🚵‍♀️", "man-mountain-biking": "🚵‍♂️", mountain_bicyclist: "🚵‍♂️", "woman-walking": "🚶‍♀️", "man-walking": "🚶‍♂️", walking: "🚶‍♂️", no_pedestrians: "🚷", children_crossing: "🚸", mens: "🚹", womens: "🚺", restroom: "🚻", baby_symbol: "🚼", toilet: "🚽", wc: "🚾", shower: "🚿", bath: "🛀", bathtub: "🛁", passport_control: "🛂", customs: "🛃", baggage_claim: "🛄", left_luggage: "🛅", couch_and_lamp: "🛋️", sleeping_accommodation: "🛌", shopping_bags: "🛍️", bellhop_bell: "🛎️", bed: "🛏️", place_of_worship: "🛐", octagonal_sign: "🛑", shopping_trolley: "🛒", hindu_temple: "🛕", hut: "🛖", elevator: "🛗", hammer_and_wrench: "🛠️", shield: "🛡️", oil_drum: "🛢️", motorway: "🛣️", railway_track: "🛤️", motor_boat: "🛥️", small_airplane: "🛩️", airplane_departure: "🛫", airplane_arriving: "🛬", satellite: "🛰️", passenger_ship: "🛳️", scooter: "🛴", motor_scooter: "🛵", canoe: "🛶", sled: "🛷", flying_saucer: "🛸", skateboard: "🛹", auto_rickshaw: "🛺", pickup_truck: "🛻", roller_skate: "🛼", large_orange_circle: "🟠", large_yellow_circle: "🟡", large_green_circle: "🟢", large_purple_circle: "🟣", large_brown_circle: "🟤", large_red_square: "🟥", large_blue_square: "🟦", large_orange_square: "🟧", large_yellow_square: "🟨", large_green_square: "🟩", large_purple_square: "🟪", large_brown_square: "🟫", pinched_fingers: "🤌", white_heart: "🤍", brown_heart: "🤎", pinching_hand: "🤏", zipper_mouth_face: "🤐", money_mouth_face: "🤑", face_with_thermometer: "🤒", nerd_face: "🤓", thinking_face: "🤔", face_with_head_bandage: "🤕", robot_face: "🤖", hugging_face: "🤗", the_horns: "🤘", sign_of_the_horns: "🤘", call_me_hand: "🤙", raised_back_of_hand: "🤚", "left-facing_fist": "🤛", "right-facing_fist": "🤜", handshake: "🤝", crossed_fingers: "🤞", hand_with_index_and_middle_fingers_crossed: "🤞", i_love_you_hand_sign: "🤟", face_with_cowboy_hat: "🤠", clown_face: "🤡", nauseated_face: "🤢", rolling_on_the_floor_laughing: "🤣", drooling_face: "🤤", lying_face: "🤥", "woman-facepalming": "🤦‍♀️", "man-facepalming": "🤦‍♂️", face_palm: "🤦", sneezing_face: "🤧", face_with_raised_eyebrow: "🤨", face_with_one_eyebrow_raised: "🤨", "star-struck": "🤩", grinning_face_with_star_eyes: "🤩", zany_face: "🤪", grinning_face_with_one_large_and_one_small_eye: "🤪", shushing_face: "🤫", face_with_finger_covering_closed_lips: "🤫", face_with_symbols_on_mouth: "🤬", serious_face_with_symbols_covering_mouth: "🤬", face_with_hand_over_mouth: "🤭", smiling_face_with_smiling_eyes_and_hand_covering_mouth: "🤭", face_vomiting: "🤮", face_with_open_mouth_vomiting: "🤮", exploding_head: "🤯", shocked_face_with_exploding_head: "🤯", pregnant_woman: "🤰", "breast-feeding": "🤱", palms_up_together: "🤲", selfie: "🤳", prince: "🤴", woman_in_tuxedo: "🤵‍♀️", man_in_tuxedo: "🤵‍♂️", person_in_tuxedo: "🤵", mrs_claus: "🤶", mother_christmas: "🤶", "woman-shrugging": "🤷‍♀️", "man-shrugging": "🤷‍♂️", shrug: "🤷", "woman-cartwheeling": "🤸‍♀️", "man-cartwheeling": "🤸‍♂️", person_doing_cartwheel: "🤸", "woman-juggling": "🤹‍♀️", "man-juggling": "🤹‍♂️", juggling: "🤹", fencer: "🤺", "woman-wrestling": "🤼‍♀️", "man-wrestling": "🤼‍♂️", wrestlers: "🤼", "woman-playing-water-polo": "🤽‍♀️", "man-playing-water-polo": "🤽‍♂️", water_polo: "🤽", "woman-playing-handball": "🤾‍♀️", "man-playing-handball": "🤾‍♂️", handball: "🤾", diving_mask: "🤿", wilted_flower: "🥀", drum_with_drumsticks: "🥁", clinking_glasses: "🥂", tumbler_glass: "🥃", spoon: "🥄", goal_net: "🥅", first_place_medal: "🥇", second_place_medal: "🥈", third_place_medal: "🥉", boxing_glove: "🥊", martial_arts_uniform: "🥋", curling_stone: "🥌", lacrosse: "🥍", softball: "🥎", flying_disc: "🥏", croissant: "🥐", avocado: "🥑", cucumber: "🥒", bacon: "🥓", potato: "🥔", carrot: "🥕", baguette_bread: "🥖", green_salad: "🥗", shallow_pan_of_food: "🥘", stuffed_flatbread: "🥙", egg: "🥚", glass_of_milk: "🥛", peanuts: "🥜", kiwifruit: "🥝", pancakes: "🥞", dumpling: "🥟", fortune_cookie: "🥠", takeout_box: "🥡", chopsticks: "🥢", bowl_with_spoon: "🥣", cup_with_straw: "🥤", coconut: "🥥", broccoli: "🥦", pie: "🥧", pretzel: "🥨", cut_of_meat: "🥩", sandwich: "🥪", canned_food: "🥫", leafy_green: "🥬", mango: "🥭", moon_cake: "🥮", bagel: "🥯", smiling_face_with_3_hearts: "🥰", yawning_face: "🥱", smiling_face_with_tear: "🥲", partying_face: "🥳", woozy_face: "🥴", hot_face: "🥵", cold_face: "🥶", ninja: "🥷", disguised_face: "🥸", pleading_face: "🥺", sari: "🥻", lab_coat: "🥼", goggles: "🥽", hiking_boot: "🥾", womans_flat_shoe: "🥿", crab: "🦀", lion_face: "🦁", scorpion: "🦂", turkey: "🦃", unicorn_face: "🦄", eagle: "🦅", duck: "🦆", bat: "🦇", shark: "🦈", owl: "🦉", fox_face: "🦊", butterfly: "🦋", deer: "🦌", gorilla: "🦍", lizard: "🦎", rhinoceros: "🦏", shrimp: "🦐", squid: "🦑", giraffe_face: "🦒", zebra_face: "🦓", hedgehog: "🦔", sauropod: "🦕", "t-rex": "🦖", cricket: "🦗", kangaroo: "🦘", llama: "🦙", peacock: "🦚", hippopotamus: "🦛", parrot: "🦜", raccoon: "🦝", lobster: "🦞", mosquito: "🦟", microbe: "🦠", badger: "🦡", swan: "🦢", mammoth: "🦣", dodo: "🦤", sloth: "🦥", otter: "🦦", orangutan: "🦧", skunk: "🦨", flamingo: "🦩", oyster: "🦪", beaver: "🦫", bison: "🦬", seal: "🦭", guide_dog: "🦮", probing_cane: "🦯", bone: "🦴", leg: "🦵", foot: "🦶", tooth: "🦷", female_superhero: "🦸‍♀️", male_superhero: "🦸‍♂️", superhero: "🦸", female_supervillain: "🦹‍♀️", male_supervillain: "🦹‍♂️", supervillain: "🦹", safety_vest: "🦺", ear_with_hearing_aid: "🦻", motorized_wheelchair: "🦼", manual_wheelchair: "🦽", mechanical_arm: "🦾", mechanical_leg: "🦿", cheese_wedge: "🧀", cupcake: "🧁", salt: "🧂", beverage_box: "🧃", garlic: "🧄", onion: "🧅", falafel: "🧆", waffle: "🧇", butter: "🧈", mate_drink: "🧉", ice_cube: "🧊", bubble_tea: "🧋", woman_standing: "🧍‍♀️", man_standing: "🧍‍♂️", standing_person: "🧍", woman_kneeling: "🧎‍♀️", man_kneeling: "🧎‍♂️", kneeling_person: "🧎", deaf_woman: "🧏‍♀️", deaf_man: "🧏‍♂️", deaf_person: "🧏", face_with_monocle: "🧐", farmer: "🧑‍🌾", cook: "🧑‍🍳", person_feeding_baby: "🧑‍🍼", mx_claus: "🧑‍🎄", student: "🧑‍🎓", singer: "🧑‍🎤", artist: "🧑‍🎨", teacher: "🧑‍🏫", factory_worker: "🧑‍🏭", technologist: "🧑‍💻", office_worker: "🧑‍💼", mechanic: "🧑‍🔧", scientist: "🧑‍🔬", astronaut: "🧑‍🚀", firefighter: "🧑‍🚒", people_holding_hands: "🧑‍🤝‍🧑", person_with_probing_cane: "🧑‍🦯", red_haired_person: "🧑‍🦰", curly_haired_person: "🧑‍🦱", bald_person: "🧑‍🦲", white_haired_person: "🧑‍🦳", person_in_motorized_wheelchair: "🧑‍🦼", person_in_manual_wheelchair: "🧑‍🦽", health_worker: "🧑‍⚕️", judge: "🧑‍⚖️", pilot: "🧑‍✈️", adult: "🧑", child: "🧒", older_adult: "🧓", woman_with_beard: "🧔‍♀️", man_with_beard: "🧔‍♂️", bearded_person: "🧔", person_with_headscarf: "🧕", woman_in_steamy_room: "🧖‍♀️", man_in_steamy_room: "🧖‍♂️", person_in_steamy_room: "🧖‍♂️", woman_climbing: "🧗‍♀️", person_climbing: "🧗‍♀️", man_climbing: "🧗‍♂️", woman_in_lotus_position: "🧘‍♀️", person_in_lotus_position: "🧘‍♀️", man_in_lotus_position: "🧘‍♂️", female_mage: "🧙‍♀️", mage: "🧙‍♀️", male_mage: "🧙‍♂️", female_fairy: "🧚‍♀️", fairy: "🧚‍♀️", male_fairy: "🧚‍♂️", female_vampire: "🧛‍♀️", vampire: "🧛‍♀️", male_vampire: "🧛‍♂️", mermaid: "🧜‍♀️", merman: "🧜‍♂️", merperson: "🧜‍♂️", female_elf: "🧝‍♀️", male_elf: "🧝‍♂️", elf: "🧝‍♂️", female_genie: "🧞‍♀️", male_genie: "🧞‍♂️", genie: "🧞‍♂️", female_zombie: "🧟‍♀️", male_zombie: "🧟‍♂️", zombie: "🧟‍♂️", brain: "🧠", orange_heart: "🧡", billed_cap: "🧢", scarf: "🧣", gloves: "🧤", coat: "🧥", socks: "🧦", red_envelope: "🧧", firecracker: "🧨", jigsaw: "🧩", test_tube: "🧪", petri_dish: "🧫", dna: "🧬", compass: "🧭", abacus: "🧮", fire_extinguisher: "🧯", toolbox: "🧰", bricks: "🧱", magnet: "🧲", luggage: "🧳", lotion_bottle: "🧴", thread: "🧵", yarn: "🧶", safety_pin: "🧷", teddy_bear: "🧸", broom: "🧹", basket: "🧺", roll_of_paper: "🧻", soap: "🧼", sponge: "🧽", receipt: "🧾", nazar_amulet: "🧿", ballet_shoes: "🩰", "one-piece_swimsuit": "🩱", briefs: "🩲", shorts: "🩳", thong_sandal: "🩴", drop_of_blood: "🩸", adhesive_bandage: "🩹", stethoscope: "🩺", "yo-yo": "🪀", kite: "🪁", parachute: "🪂", boomerang: "🪃", magic_wand: "🪄", pinata: "🪅", nesting_dolls: "🪆", ringed_planet: "🪐", chair: "🪑", razor: "🪒", axe: "🪓", diya_lamp: "🪔", banjo: "🪕", military_helmet: "🪖", accordion: "🪗", long_drum: "🪘", coin: "🪙", carpentry_saw: "🪚", screwdriver: "🪛", ladder: "🪜", hook: "🪝", mirror: "🪞", window: "🪟", plunger: "🪠", sewing_needle: "🪡", knot: "🪢", bucket: "🪣", mouse_trap: "🪤", toothbrush: "🪥", headstone: "🪦", placard: "🪧", rock: "🪨", fly: "🪰", worm: "🪱", beetle: "🪲", cockroach: "🪳", potted_plant: "🪴", wood: "🪵", feather: "🪶", anatomical_heart: "🫀", lungs: "🫁", people_hugging: "🫂", blueberries: "🫐", bell_pepper: "🫑", olive: "🫒", flatbread: "🫓", tamale: "🫔", fondue: "🫕", teapot: "🫖", bangbang: "‼️", interrobang: "⁉️", tm: "™️", information_source: "ℹ️", left_right_arrow: "↔️", arrow_up_down: "↕️", arrow_upper_left: "↖️", arrow_upper_right: "↗️", arrow_lower_right: "↘️", arrow_lower_left: "↙️", leftwards_arrow_with_hook: "↩️", arrow_right_hook: "↪️", watch: "⌚", hourglass: "⌛", keyboard: "⌨️", eject: "⏏️", fast_forward: "⏩", rewind: "⏪", arrow_double_up: "⏫", arrow_double_down: "⏬", black_right_pointing_double_triangle_with_vertical_bar: "⏭️", black_left_pointing_double_triangle_with_vertical_bar: "⏮️", black_right_pointing_triangle_with_double_vertical_bar: "⏯️", alarm_clock: "⏰", stopwatch: "⏱️", timer_clock: "⏲️", hourglass_flowing_sand: "⏳", double_vertical_bar: "⏸️", black_square_for_stop: "⏹️", black_circle_for_record: "⏺️", m: "Ⓜ️", black_small_square: "▪️", white_small_square: "▫️", arrow_forward: "▶️", arrow_backward: "◀️", white_medium_square: "◻️", black_medium_square: "◼️", white_medium_small_square: "◽", black_medium_small_square: "◾", sunny: "☀️", cloud: "☁️", umbrella: "☂️", snowman: "☃️", comet: "☄️", phone: "☎️", telephone: "☎️", ballot_box_with_check: "☑️", shamrock: "☘️", point_up: "☝️", skull_and_crossbones: "☠️", radioactive_sign: "☢️", biohazard_sign: "☣️", orthodox_cross: "☦️", star_and_crescent: "☪️", peace_symbol: "☮️", yin_yang: "☯️", wheel_of_dharma: "☸️", white_frowning_face: "☹️", relaxed: "☺️", female_sign: "♀️", male_sign: "♂️", gemini: "♊", cancer: "♋", leo: "♌", virgo: "♍", libra: "♎", scorpius: "♏", chess_pawn: "♟️", spades: "♠️", clubs: "♣️", hearts: "♥️", diamonds: "♦️", hotsprings: "♨️", recycle: "♻️", infinity: "♾️", wheelchair: "♿", hammer_and_pick: "⚒️", crossed_swords: "⚔️", medical_symbol: "⚕️", staff_of_aesculapius: "⚕️", scales: "⚖️", alembic: "⚗️", gear: "⚙️", atom_symbol: "⚛️", fleur_de_lis: "⚜️", warning: "⚠️", zap: "⚡", transgender_symbol: "⚧️", white_circle: "⚪", black_circle: "⚫", coffin: "⚰️", funeral_urn: "⚱️", soccer: "⚽", baseball: "⚾", snowman_without_snow: "⛄", partly_sunny: "⛅", thunder_cloud_and_rain: "⛈️", ophiuchus: "⛎", pick: "⛏️", helmet_with_white_cross: "⛑️", chains: "⛓️", no_entry: "⛔", shinto_shrine: "⛩️", church: "⛪", mountain: "⛰️", umbrella_on_ground: "⛱️", fountain: "⛲", golf: "⛳", ferry: "⛴️", boat: "⛵", sailboat: "⛵", skier: "⛷️", ice_skate: "⛸️", "woman-bouncing-ball": "⛹️‍♀️", "man-bouncing-ball": "⛹️‍♂️", person_with_ball: "⛹️‍♂️", tent: "⛺", fuelpump: "⛽", scissors: "✂️", airplane: "✈️", email: "✉️", envelope: "✉️", fist: "✊", hand: "✋", raised_hand: "✋", v: "✌️", writing_hand: "✍️", pencil2: "✏️", black_nib: "✒️", heavy_check_mark: "✔️", heavy_multiplication_x: "✖️", latin_cross: "✝️", star_of_david: "✡️", eight_spoked_asterisk: "✳️", eight_pointed_black_star: "✴️", snowflake: "❄️", sparkle: "❇️", x: "❌", negative_squared_cross_mark: "❎", heavy_heart_exclamation_mark_ornament: "❣️", heart_on_fire: "❤️‍🔥", mending_heart: "❤️‍🩹", heart: "❤️", arrow_right: "➡️", curly_loop: "➰", loop: "➿", arrow_heading_up: "⤴️", arrow_heading_down: "⤵️", arrow_left: "⬅️", arrow_up: "⬆️", arrow_down: "⬇️", black_large_square: "⬛", white_large_square: "⬜", star: "⭐", o: "⭕", wavy_dash: "〰️", part_alternation_mark: "〽️", congratulations: "㊗️", secret: "㊙️" };
96138
96253
  });
96139
96254
 
96140
96255
  // node_modules/.bun/node-emoji@1.11.0/node_modules/node-emoji/lib/emoji.js
96141
- var require_emoji2 = __commonJS((exports, module) => {
96256
+ var require_emoji2 = __commonJS(function(exports, module) {
96142
96257
  var toArray = require_toArray();
96143
96258
  var emojiByName = require_emoji();
96144
96259
  var emojiNameRegex = /:([a-zA-Z0-9_\-\+]+):/g;
@@ -96283,7 +96398,7 @@ var require_emoji2 = __commonJS((exports, module) => {
96283
96398
  });
96284
96399
 
96285
96400
  // node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js
96286
- var require_has_flag = __commonJS((exports, module) => {
96401
+ var require_has_flag = __commonJS(function(exports, module) {
96287
96402
  module.exports = (flag, argv = process.argv) => {
96288
96403
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
96289
96404
  const position = argv.indexOf(prefix + flag);
@@ -96293,7 +96408,7 @@ var require_has_flag = __commonJS((exports, module) => {
96293
96408
  });
96294
96409
 
96295
96410
  // node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js
96296
- var require_supports_color = __commonJS((exports, module) => {
96411
+ var require_supports_color = __commonJS(function(exports, module) {
96297
96412
  var os = __require("os");
96298
96413
  var tty = __require("tty");
96299
96414
  var hasFlag = require_has_flag();
@@ -96392,7 +96507,7 @@ var require_supports_color = __commonJS((exports, module) => {
96392
96507
  });
96393
96508
 
96394
96509
  // node_modules/.bun/supports-hyperlinks@2.3.0/node_modules/supports-hyperlinks/index.js
96395
- var require_supports_hyperlinks = __commonJS((exports, module) => {
96510
+ var require_supports_hyperlinks = __commonJS(function(exports, module) {
96396
96511
  var supportsColor = require_supports_color();
96397
96512
  var hasFlag = require_has_flag();
96398
96513
  function parseVersion(versionString) {
@@ -96471,7 +96586,7 @@ var require_supports_hyperlinks = __commonJS((exports, module) => {
96471
96586
  });
96472
96587
 
96473
96588
  // node_modules/.bun/marked-terminal@5.2.0+2cbc53c039b95cf4/node_modules/marked-terminal/index.cjs
96474
- var require_marked_terminal = __commonJS((exports, module) => {
96589
+ var require_marked_terminal = __commonJS(function(exports, module) {
96475
96590
  var process$1 = __require("node:process");
96476
96591
  var os = __require("node:os");
96477
96592
  var tty = __require("node:tty");
@@ -97459,7 +97574,7 @@ var require_marked_terminal = __commonJS((exports, module) => {
97459
97574
  });
97460
97575
 
97461
97576
  // node_modules/.bun/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js
97462
- var require_escape_string_regexp = __commonJS((exports, module) => {
97577
+ var require_escape_string_regexp = __commonJS(function(exports, module) {
97463
97578
  var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
97464
97579
  module.exports = function(str) {
97465
97580
  if (typeof str !== "string") {
@@ -97470,7 +97585,7 @@ var require_escape_string_regexp = __commonJS((exports, module) => {
97470
97585
  });
97471
97586
 
97472
97587
  // node_modules/.bun/ansi-styles@2.2.1/node_modules/ansi-styles/index.js
97473
- var require_ansi_styles = __commonJS((exports, module) => {
97588
+ var require_ansi_styles = __commonJS(function(exports, module) {
97474
97589
  function assembleStyles() {
97475
97590
  var styles2 = {
97476
97591
  modifiers: {
@@ -97529,14 +97644,14 @@ var require_ansi_styles = __commonJS((exports, module) => {
97529
97644
  });
97530
97645
 
97531
97646
  // node_modules/.bun/has-ansi@2.0.0/node_modules/has-ansi/index.js
97532
- var require_has_ansi = __commonJS((exports, module) => {
97647
+ var require_has_ansi = __commonJS(function(exports, module) {
97533
97648
  var ansiRegex = require_ansi_regex();
97534
97649
  var re = new RegExp(ansiRegex().source);
97535
97650
  module.exports = re.test.bind(re);
97536
97651
  });
97537
97652
 
97538
97653
  // node_modules/.bun/supports-color@2.0.0/node_modules/supports-color/index.js
97539
- var require_supports_color2 = __commonJS((exports, module) => {
97654
+ var require_supports_color2 = __commonJS(function(exports, module) {
97540
97655
  var argv = process.argv;
97541
97656
  var terminator = argv.indexOf("--");
97542
97657
  var hasFlag = function(flag) {
@@ -97574,7 +97689,7 @@ var require_supports_color2 = __commonJS((exports, module) => {
97574
97689
  });
97575
97690
 
97576
97691
  // node_modules/.bun/chalk@1.1.3/node_modules/chalk/index.js
97577
- var require_chalk = __commonJS((exports, module) => {
97692
+ var require_chalk = __commonJS(function(exports, module) {
97578
97693
  var escapeStringRegexp = require_escape_string_regexp();
97579
97694
  var ansiStyles = require_ansi_styles();
97580
97695
  var stripAnsi = require_strip_ansi();
@@ -97655,7 +97770,7 @@ var require_chalk = __commonJS((exports, module) => {
97655
97770
  });
97656
97771
 
97657
97772
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/markdown.js
97658
- var require_markdown = __commonJS((exports, module) => {
97773
+ var require_markdown = __commonJS(function(exports, module) {
97659
97774
  var blessed = require_blessed();
97660
97775
  var Box = blessed.Box;
97661
97776
  var marked = require_marked();
@@ -97709,7 +97824,7 @@ var require_markdown = __commonJS((exports, module) => {
97709
97824
  });
97710
97825
 
97711
97826
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/charts/bar.js
97712
- var require_bar = __commonJS((exports, module) => {
97827
+ var require_bar = __commonJS(function(exports, module) {
97713
97828
  var blessed = require_blessed();
97714
97829
  var Node = blessed.Node;
97715
97830
  var Canvas = require_canvas();
@@ -97790,7 +97905,7 @@ var require_bar = __commonJS((exports, module) => {
97790
97905
  });
97791
97906
 
97792
97907
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/charts/stacked-bar.js
97793
- var require_stacked_bar = __commonJS((exports, module) => {
97908
+ var require_stacked_bar = __commonJS(function(exports, module) {
97794
97909
  var blessed = require_blessed();
97795
97910
  var Node = blessed.Node;
97796
97911
  var Canvas = require_canvas();
@@ -97946,7 +98061,7 @@ var require_stacked_bar = __commonJS((exports, module) => {
97946
98061
  });
97947
98062
 
97948
98063
  // node_modules/.bun/lodash@4.17.21/node_modules/lodash/lodash.js
97949
- var require_lodash = __commonJS((exports, module) => {
98064
+ var require_lodash = __commonJS(function(exports, module) {
97950
98065
  (function() {
97951
98066
  var undefined2;
97952
98067
  var VERSION = "4.17.21";
@@ -101173,7 +101288,7 @@ var require_lodash = __commonJS((exports, module) => {
101173
101288
  }
101174
101289
  return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
101175
101290
  });
101176
- function join11(array, separator) {
101291
+ function join13(array, separator) {
101177
101292
  return array == null ? "" : nativeJoin.call(array, separator);
101178
101293
  }
101179
101294
  function last(array) {
@@ -103105,7 +103220,7 @@ __p += '`;
103105
103220
  lodash.isUndefined = isUndefined;
103106
103221
  lodash.isWeakMap = isWeakMap;
103107
103222
  lodash.isWeakSet = isWeakSet;
103108
- lodash.join = join11;
103223
+ lodash.join = join13;
103109
103224
  lodash.kebabCase = kebabCase;
103110
103225
  lodash.last = last;
103111
103226
  lodash.lastIndexOf = lastIndexOf;
@@ -103362,7 +103477,7 @@ __p += '`;
103362
103477
  });
103363
103478
 
103364
103479
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/widget/charts/line.js
103365
- var require_line = __commonJS((exports, module) => {
103480
+ var require_line = __commonJS(function(exports, module) {
103366
103481
  var blessed = require_blessed();
103367
103482
  var Node = blessed.Node;
103368
103483
  var Canvas = require_canvas();
@@ -103569,7 +103684,7 @@ var require_line = __commonJS((exports, module) => {
103569
103684
  });
103570
103685
 
103571
103686
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/lib/server-utils.js
103572
- var require_server_utils = __commonJS((exports) => {
103687
+ var require_server_utils = __commonJS(function(exports) {
103573
103688
  var url = __require("url");
103574
103689
  var contrib = require_blessed_contrib();
103575
103690
  var blessed = require_blessed();
@@ -103633,7 +103748,7 @@ var require_server_utils = __commonJS((exports) => {
103633
103748
  });
103634
103749
 
103635
103750
  // node_modules/.bun/blessed-contrib@4.11.0/node_modules/blessed-contrib/index.js
103636
- var require_blessed_contrib = __commonJS((exports) => {
103751
+ var require_blessed_contrib = __commonJS(function(exports) {
103637
103752
  exports.grid = require_grid();
103638
103753
  exports.carousel = require_carousel();
103639
103754
  exports.map = require_map2();
@@ -103786,27 +103901,15 @@ __export(exports_dev, {
103786
103901
  default: () => dev
103787
103902
  });
103788
103903
  import { spawn } from "node:child_process";
103789
- import { existsSync as existsSync6 } from "node:fs";
103790
- import { join as join11 } from "node:path";
103791
- function getRerouteCommand() {
103792
- const binPath = join11(import.meta.dir, "..", "..", "bin.ts");
103793
- const isBunDev = existsSync6(binPath);
103794
- if (isBunDev) {
103795
- return `bun ${binPath}`;
103796
- }
103797
- const cwd = process.cwd();
103798
- const nodeModulesPaths = [
103799
- join11(cwd, "node_modules", ".bin", "reroute"),
103800
- join11(cwd, "..", "node_modules", ".bin", "reroute"),
103801
- join11(cwd, "..", "..", "node_modules", ".bin", "reroute"),
103802
- join11(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
103803
- ];
103804
- for (const binPath2 of nodeModulesPaths) {
103805
- if (existsSync6(binPath2)) {
103806
- return binPath2;
103807
- }
103904
+ import { existsSync as existsSync7 } from "node:fs";
103905
+ import { join as join13 } from "node:path";
103906
+ import { pathToFileURL as pathToFileURL9 } from "node:url";
103907
+ function parsePort(args) {
103908
+ const portIndex = args.findIndex((arg) => arg === "--port" || arg === "-p");
103909
+ if (portIndex !== -1 && args[portIndex + 1]) {
103910
+ return Number(args[portIndex + 1]);
103808
103911
  }
103809
- return "reroute";
103912
+ return Number(process.env.PORT || "3000");
103810
103913
  }
103811
103914
  async function waitForInitialBuild(genProcess) {
103812
103915
  console.log("[reroute/dev] Waiting for initial build...");
@@ -103831,15 +103934,33 @@ async function waitForInitialBuild(genProcess) {
103831
103934
  console.log("[reroute/dev] Initial build complete!");
103832
103935
  return outputBuffer;
103833
103936
  }
103834
- async function startServerProcess(genProcess, port) {
103937
+ async function startTui(port) {
103938
+ const rerouteCmd = getRerouteCommand();
103939
+ const useShell = rerouteCmd.includes(" ");
103940
+ const genCommand = useShell ? `${rerouteCmd} gen --watch` : rerouteCmd;
103941
+ const genArgs = useShell ? [] : ["gen", "--watch"];
103942
+ const genProcess = spawn(genCommand, genArgs, {
103943
+ stdio: ["ignore", "pipe", "pipe"],
103944
+ shell: useShell,
103945
+ env: {
103946
+ ...process.env,
103947
+ PORT: String(port),
103948
+ REROUTE_DEV: "1"
103949
+ }
103950
+ });
103951
+ const outputBuffer = await waitForInitialBuild(genProcess).catch((error) => {
103952
+ console.error("[reroute/dev] Failed to complete initial build:", error);
103953
+ genProcess.kill();
103954
+ process.exit(1);
103955
+ });
103835
103956
  const serverProcess = spawn("bun", ["--watch", "src/index.ts"], {
103836
103957
  stdio: ["ignore", "pipe", "pipe"],
103837
103958
  env: {
103838
103959
  ...process.env,
103839
- PORT: String(port)
103960
+ PORT: String(port),
103961
+ REROUTE_DEV: "1"
103840
103962
  }
103841
103963
  });
103842
- console.log("[reroute/dev] Starting server...");
103843
103964
  try {
103844
103965
  await waitForServerReady(port);
103845
103966
  console.log(`[reroute/dev] ✓ Server ready at http://localhost:${port}
@@ -103850,48 +103971,6 @@ async function startServerProcess(genProcess, port) {
103850
103971
  serverProcess.kill();
103851
103972
  process.exit(1);
103852
103973
  }
103853
- return serverProcess;
103854
- }
103855
- function setupDefaultMode(genProcess, serverProcess, outputBuffer) {
103856
- const genBuffer = { current: "" };
103857
- const serverBuffer = { current: "" };
103858
- const handleGenOutput = (data) => {
103859
- const text = genBuffer.current + data.toString();
103860
- const lines = text.split(`
103861
- `);
103862
- genBuffer.current = lines.pop() || "";
103863
- for (const line of lines) {
103864
- if (!line.trim())
103865
- continue;
103866
- const ansiColored = colorizeLogPrefixAnsi(line);
103867
- console.log(ansiColored);
103868
- }
103869
- };
103870
- const handleServerOutput = createServerOutputHandler(serverBuffer);
103871
- for (const data of outputBuffer) {
103872
- handleGenOutput(data);
103873
- }
103874
- genProcess.stdout?.on("data", handleGenOutput);
103875
- genProcess.stderr?.on("data", handleGenOutput);
103876
- serverProcess.stdout?.on("data", handleServerOutput);
103877
- serverProcess.stderr?.on("data", handleServerOutput);
103878
- genProcess.on("exit", (code) => {
103879
- console.log(`
103880
- [reroute/gen] Process exited with code ${code}`);
103881
- });
103882
- serverProcess.on("exit", (code) => {
103883
- console.log(`
103884
- [server] Process exited with code ${code}`);
103885
- });
103886
- process.on("SIGINT", () => {
103887
- console.log(`
103888
- [reroute/dev] Shutting down...`);
103889
- genProcess.kill("SIGINT");
103890
- serverProcess.kill("SIGINT");
103891
- process.exit(0);
103892
- });
103893
- }
103894
- async function setupTerminalUI(genProcess, serverProcess, outputBuffer) {
103895
103974
  const blessed = await Promise.resolve().then(() => __toESM(require_blessed(), 1));
103896
103975
  const contrib = await Promise.resolve().then(() => __toESM(require_blessed_contrib(), 1));
103897
103976
  const screen = blessed.default.screen({
@@ -103907,33 +103986,53 @@ async function setupTerminalUI(genProcess, serverProcess, outputBuffer) {
103907
103986
  const { setupTerminalUIHandlers: setupTerminalUIHandlers2 } = await Promise.resolve().then(() => exports_terminal_ui);
103908
103987
  setupTerminalUIHandlers2(screen, grid, genProcess, serverProcess, outputBuffer, blessed, colorizeLogPrefix);
103909
103988
  }
103989
+ async function startDefault(port) {
103990
+ process.env.PORT = String(port);
103991
+ process.env.REROUTE_DEV = "1";
103992
+ const session = await startGenWatch(process.cwd(), ["--watch"]);
103993
+ const entry = join13(process.cwd(), "src/index.ts");
103994
+ if (!existsSync7(entry)) {
103995
+ session.close();
103996
+ throw new Error(`[reroute/dev] Missing ${entry}`);
103997
+ }
103998
+ console.log("[reroute/dev] Starting server...");
103999
+ await import(pathToFileURL9(entry).href);
104000
+ try {
104001
+ await waitForServerReady(port);
104002
+ console.log(`[reroute/dev] ✓ Server ready at http://localhost:${port}
104003
+ `);
104004
+ } catch (error) {
104005
+ session.close();
104006
+ console.error("[reroute/dev] Server failed to start:", error);
104007
+ process.exit(1);
104008
+ }
104009
+ const shutdown = () => {
104010
+ console.log(`
104011
+ [reroute/dev] Shutting down...`);
104012
+ session.close();
104013
+ process.exit(0);
104014
+ };
104015
+ process.on("SIGINT", shutdown);
104016
+ process.on("SIGTERM", shutdown);
104017
+ }
103910
104018
  async function dev(args) {
103911
104019
  const terminalUI = args.includes("--tui") || args.includes("-t");
103912
- const portIndex = args.findIndex((arg) => arg === "--port" || arg === "-p");
103913
- const port = portIndex !== -1 && args[portIndex + 1] ? Number(args[portIndex + 1]) : Number(process.env.PORT || "3000");
104020
+ const port = parsePort(args);
104021
+ if (await isServerRunning(port)) {
104022
+ console.log(`[reroute/dev] Already running at http://localhost:${port} — not starting another instance`);
104023
+ return;
104024
+ }
104025
+ process.env.PORT = String(port);
104026
+ process.env.REROUTE_DEV = "1";
103914
104027
  try {
103915
- console.log("[reroute/dev] Starting development servers...");
104028
+ console.log("[reroute/dev] Starting development server...");
103916
104029
  console.log(`[reroute/dev] Press Ctrl+C to stop
103917
104030
  `);
103918
- const rerouteCmd = getRerouteCommand();
103919
- const useShell = rerouteCmd.includes(" ");
103920
- const genCommand = useShell ? `${rerouteCmd} gen --watch` : rerouteCmd;
103921
- const genArgs = useShell ? [] : ["gen", "--watch"];
103922
- const genProcess = spawn(genCommand, genArgs, {
103923
- stdio: ["ignore", "pipe", "pipe"],
103924
- shell: useShell
103925
- });
103926
- const outputBuffer = await waitForInitialBuild(genProcess).catch((error) => {
103927
- console.error("[reroute/dev] Failed to complete initial build:", error);
103928
- genProcess.kill();
103929
- process.exit(1);
103930
- });
103931
- const serverProcess = await startServerProcess(genProcess, port);
103932
- if (!terminalUI) {
103933
- setupDefaultMode(genProcess, serverProcess, outputBuffer);
103934
- } else {
103935
- await setupTerminalUI(genProcess, serverProcess, outputBuffer);
104031
+ if (terminalUI) {
104032
+ await startTui(port);
104033
+ return;
103936
104034
  }
104035
+ await startDefault(port);
103937
104036
  } catch (error) {
103938
104037
  if (error.code === "SIGINT") {
103939
104038
  console.log(`
@@ -103945,6 +104044,8 @@ async function dev(args) {
103945
104044
  }
103946
104045
  }
103947
104046
  var init_dev = __esm(() => {
104047
+ init_gen();
104048
+ init_command();
103948
104049
  init_log();
103949
104050
  });
103950
104051
 
@@ -103954,23 +104055,23 @@ __export(exports_start, {
103954
104055
  default: () => start
103955
104056
  });
103956
104057
  import { spawn as spawn2 } from "node:child_process";
103957
- import { existsSync as existsSync7 } from "node:fs";
103958
- import { join as join12 } from "node:path";
104058
+ import { existsSync as existsSync8 } from "node:fs";
104059
+ import { join as join14 } from "node:path";
103959
104060
  function getRerouteCommand2() {
103960
- const binPath = join12(import.meta.dir, "..", "..", "bin.ts");
103961
- const isBunDev = existsSync7(binPath);
104061
+ const binPath = join14(import.meta.dir, "..", "..", "bin.ts");
104062
+ const isBunDev = existsSync8(binPath);
103962
104063
  if (isBunDev) {
103963
104064
  return `bun ${binPath}`;
103964
104065
  }
103965
104066
  const cwd = process.cwd();
103966
104067
  const nodeModulesPaths = [
103967
- join12(cwd, "node_modules", ".bin", "reroute"),
103968
- join12(cwd, "..", "node_modules", ".bin", "reroute"),
103969
- join12(cwd, "..", "..", "node_modules", ".bin", "reroute"),
103970
- join12(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
104068
+ join14(cwd, "node_modules", ".bin", "reroute"),
104069
+ join14(cwd, "..", "node_modules", ".bin", "reroute"),
104070
+ join14(cwd, "..", "..", "node_modules", ".bin", "reroute"),
104071
+ join14(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
103971
104072
  ];
103972
104073
  for (const binPath2 of nodeModulesPaths) {
103973
- if (existsSync7(binPath2)) {
104074
+ if (existsSync8(binPath2)) {
103974
104075
  return binPath2;
103975
104076
  }
103976
104077
  }
@@ -104091,17 +104192,17 @@ var init_start = __esm(() => {
104091
104192
  // packages/cli/src/commands/lib/assets.ts
104092
104193
  import {
104093
104194
  cpSync,
104094
- existsSync as existsSync8,
104195
+ existsSync as existsSync9,
104095
104196
  mkdirSync,
104096
104197
  readdirSync
104097
104198
  } from "node:fs";
104098
- import { join as join13 } from "node:path";
104199
+ import { join as join15 } from "node:path";
104099
104200
  function copyAssetsToReroute(cwd, sourceAssetsDir, rerouteAssetsDir) {
104100
- if (!existsSync8(sourceAssetsDir)) {
104201
+ if (!existsSync9(sourceAssetsDir)) {
104101
104202
  return 0;
104102
104203
  }
104103
- const rerouteDir = join13(cwd, ".reroute");
104104
- if (!existsSync8(rerouteDir)) {
104204
+ const rerouteDir = join15(cwd, ".reroute");
104205
+ if (!existsSync9(rerouteDir)) {
104105
104206
  mkdirSync(rerouteDir, { recursive: true });
104106
104207
  }
104107
104208
  cpSync(sourceAssetsDir, rerouteAssetsDir, { recursive: true });
@@ -104112,7 +104213,7 @@ function countFiles(dir) {
104112
104213
  const entries = readdirSync(dir, { withFileTypes: true });
104113
104214
  for (const entry of entries) {
104114
104215
  if (entry.isDirectory()) {
104115
- count += countFiles(join13(dir, entry.name));
104216
+ count += countFiles(join15(dir, entry.name));
104116
104217
  } else {
104117
104218
  count++;
104118
104219
  }
@@ -104127,23 +104228,23 @@ __export(exports_build, {
104127
104228
  default: () => build
104128
104229
  });
104129
104230
  import { spawn as spawn3 } from "node:child_process";
104130
- import { existsSync as existsSync9, readFileSync as readFileSync5, rmSync, unlinkSync } from "node:fs";
104131
- import { join as join14 } from "node:path";
104231
+ import { existsSync as existsSync10, readFileSync as readFileSync5, rmSync, unlinkSync } from "node:fs";
104232
+ import { join as join16 } from "node:path";
104132
104233
  function getRerouteCommand3() {
104133
- const binPath = join14(import.meta.dir, "..", "..", "bin.ts");
104134
- const isBunDev = existsSync9(binPath);
104234
+ const binPath = join16(import.meta.dir, "..", "..", "bin.ts");
104235
+ const isBunDev = existsSync10(binPath);
104135
104236
  if (isBunDev) {
104136
104237
  return `bun ${binPath}`;
104137
104238
  }
104138
104239
  const cwd = process.cwd();
104139
104240
  const nodeModulesPaths = [
104140
- join14(cwd, "node_modules", ".bin", "reroute"),
104141
- join14(cwd, "..", "node_modules", ".bin", "reroute"),
104142
- join14(cwd, "..", "..", "node_modules", ".bin", "reroute"),
104143
- join14(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
104241
+ join16(cwd, "node_modules", ".bin", "reroute"),
104242
+ join16(cwd, "..", "node_modules", ".bin", "reroute"),
104243
+ join16(cwd, "..", "..", "node_modules", ".bin", "reroute"),
104244
+ join16(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
104144
104245
  ];
104145
104246
  for (const binPath2 of nodeModulesPaths) {
104146
- if (existsSync9(binPath2)) {
104247
+ if (existsSync10(binPath2)) {
104147
104248
  return binPath2;
104148
104249
  }
104149
104250
  }
@@ -104151,8 +104252,8 @@ function getRerouteCommand3() {
104151
104252
  }
104152
104253
  function getOutputName() {
104153
104254
  const cwd = process.cwd();
104154
- const packageJsonPath = join14(cwd, "package.json");
104155
- if (existsSync9(packageJsonPath)) {
104255
+ const packageJsonPath = join16(cwd, "package.json");
104256
+ if (existsSync10(packageJsonPath)) {
104156
104257
  try {
104157
104258
  const packageJson = JSON.parse(readFileSync5(packageJsonPath, "utf-8"));
104158
104259
  const name = packageJson.name;
@@ -104183,16 +104284,16 @@ function parseBuildArgs(args) {
104183
104284
  return { outfile, compileBinary, noCompression, externalArgs };
104184
104285
  }
104185
104286
  function cleanDistFolder(cwd) {
104186
- const distDir = join14(cwd, "dist");
104187
- if (existsSync9(distDir)) {
104287
+ const distDir = join16(cwd, "dist");
104288
+ if (existsSync10(distDir)) {
104188
104289
  process.stdout.write(colorizeLogPrefixAnsi(`[reroute/build] Cleaning dist folder...
104189
104290
  `));
104190
104291
  rmSync(distDir, { recursive: true });
104191
104292
  }
104192
104293
  }
104193
104294
  async function cleanRerouteFolder(cwd) {
104194
- const rerouteDir = join14(cwd, ".reroute");
104195
- if (existsSync9(rerouteDir)) {
104295
+ const rerouteDir = join16(cwd, ".reroute");
104296
+ if (existsSync10(rerouteDir)) {
104196
104297
  process.stdout.write(colorizeLogPrefixAnsi(`[reroute/build] Cleaning .reroute folder...
104197
104298
  `));
104198
104299
  rmSync(rerouteDir, { recursive: true, force: true });
@@ -104246,10 +104347,10 @@ async function runGenCommand(rerouteCmd, useShell, noCompression) {
104246
104347
  async function copyAssets(cwd) {
104247
104348
  const config2 = await loadConfig(cwd);
104248
104349
  const appSrc = config2.app?.src ?? "./src/client/App";
104249
- const dirname7 = __require("node:path").dirname;
104250
- const assetsPath = dirname7(appSrc);
104251
- const sourceAssetsDir = join14(cwd, assetsPath, "assets");
104252
- const rerouteAssetsDir = join14(cwd, ".reroute", "assets");
104350
+ const dirname8 = __require("node:path").dirname;
104351
+ const assetsPath = dirname8(appSrc);
104352
+ const sourceAssetsDir = join16(cwd, assetsPath, "assets");
104353
+ const rerouteAssetsDir = join16(cwd, ".reroute", "assets");
104253
104354
  process.stdout.write(colorizeLogPrefixAnsi(`[reroute/build] Copying assets...
104254
104355
  `));
104255
104356
  const fileCount = copyAssetsToReroute(cwd, sourceAssetsDir, rerouteAssetsDir);
@@ -104264,9 +104365,9 @@ async function copyAssets(cwd) {
104264
104365
  async function buildBundle(cwd, buildArgs) {
104265
104366
  const external = [...buildArgs.externalArgs, "sharp", "@vercel/og"];
104266
104367
  const buildResult = await Bun.build({
104267
- entrypoints: [join14(cwd, ".reroute/entry.ts")],
104368
+ entrypoints: [join16(cwd, ".reroute/entry.ts")],
104268
104369
  target: "bun",
104269
- outdir: join14(cwd, "dist"),
104370
+ outdir: join16(cwd, "dist"),
104270
104371
  sourcemap: "external",
104271
104372
  ...getCommonBuildOptions(),
104272
104373
  external,
@@ -104309,8 +104410,8 @@ function cleanupBundledFiles(rerouteDir) {
104309
104410
  "markdown-components.ts"
104310
104411
  ];
104311
104412
  for (const file of tsFilesToRemove) {
104312
- const filePath = join14(rerouteDir, file);
104313
- if (existsSync9(filePath)) {
104413
+ const filePath = join16(rerouteDir, file);
104414
+ if (existsSync10(filePath)) {
104314
104415
  try {
104315
104416
  unlinkSync(filePath);
104316
104417
  cleanupCount++;
@@ -104319,8 +104420,8 @@ function cleanupBundledFiles(rerouteDir) {
104319
104420
  }
104320
104421
  const dirsToRemove = ["markdown", "streaming"];
104321
104422
  for (const dir of dirsToRemove) {
104322
- const dirPath = join14(rerouteDir, dir);
104323
- if (existsSync9(dirPath)) {
104423
+ const dirPath = join16(rerouteDir, dir);
104424
+ if (existsSync10(dirPath)) {
104324
104425
  try {
104325
104426
  rmSync(dirPath, { recursive: true });
104326
104427
  cleanupCount++;
@@ -104353,7 +104454,7 @@ async function build(args) {
104353
104454
  await runGenCommand(rerouteCmd, useShell, buildArgs.noCompression);
104354
104455
  await copyAssets(cwd);
104355
104456
  await buildBundle(cwd, buildArgs);
104356
- const rerouteDir = join14(cwd, ".reroute");
104457
+ const rerouteDir = join16(cwd, ".reroute");
104357
104458
  cleanupBundledFiles(rerouteDir);
104358
104459
  logBuildComplete(buildStartTime, buildArgs);
104359
104460
  process.exit(0);
@@ -104369,60 +104470,31 @@ var init_build = __esm(() => {
104369
104470
  init_log();
104370
104471
  });
104371
104472
 
104372
- // packages/cli/src/commands/lib/command.ts
104373
- var exports_command = {};
104374
- __export(exports_command, {
104375
- getRerouteCommand: () => getRerouteCommand4
104376
- });
104377
- import { existsSync as existsSync10 } from "node:fs";
104378
- import { join as join15 } from "node:path";
104379
- function getRerouteCommand4() {
104380
- const binPath = join15(import.meta.dir, "..", "..", "bin.ts");
104381
- const isBunDev = existsSync10(binPath);
104382
- if (isBunDev) {
104383
- return `bun ${binPath}`;
104384
- }
104385
- const cwd = process.cwd();
104386
- const nodeModulesPaths = [
104387
- join15(cwd, "node_modules", ".bin", "reroute"),
104388
- join15(cwd, "..", "node_modules", ".bin", "reroute"),
104389
- join15(cwd, "..", "..", "node_modules", ".bin", "reroute"),
104390
- join15(cwd, "..", "..", "..", "node_modules", ".bin", "reroute")
104391
- ];
104392
- for (const binPath2 of nodeModulesPaths) {
104393
- if (existsSync10(binPath2)) {
104394
- return binPath2;
104395
- }
104396
- }
104397
- return "reroute";
104398
- }
104399
- var init_command = () => {};
104400
-
104401
104473
  // packages/cli/src/commands/analyze.ts
104402
104474
  var exports_analyze = {};
104403
104475
  __export(exports_analyze, {
104404
104476
  default: () => analyze
104405
104477
  });
104406
104478
  import { existsSync as existsSync11, statSync } from "node:fs";
104407
- import { readdir as readdir8, readFile, stat as stat5, writeFile as writeFile2 } from "node:fs/promises";
104408
- import { basename as basename3, join as join16, relative as relative3 } from "node:path";
104479
+ import { readdir as readdir8, readFile, stat as stat6, writeFile as writeFile2 } from "node:fs/promises";
104480
+ import { basename as basename4, join as join17, relative as relative3 } from "node:path";
104409
104481
  import Table from "cli-table3";
104410
104482
  async function findChunkBundles(cwd) {
104411
104483
  const bundles = [];
104412
- const chunksDir = join16(cwd, ".reroute", "chunks");
104484
+ const chunksDir = join17(cwd, ".reroute", "chunks");
104413
104485
  if (!existsSync11(chunksDir))
104414
104486
  return bundles;
104415
104487
  const collections2 = await readdir8(chunksDir, { withFileTypes: true });
104416
104488
  for (const collection of collections2) {
104417
104489
  if (!collection.isDirectory())
104418
104490
  continue;
104419
- const collectionDir = join16(chunksDir, collection.name);
104491
+ const collectionDir = join17(chunksDir, collection.name);
104420
104492
  const files = await readdir8(collectionDir);
104421
104493
  for (const file of files) {
104422
104494
  if (!file.endsWith(".js"))
104423
104495
  continue;
104424
- const filePath = join16(collectionDir, file);
104425
- const stats = await stat5(filePath);
104496
+ const filePath = join17(collectionDir, file);
104497
+ const stats = await stat6(filePath);
104426
104498
  const content2 = await Bun.file(filePath).arrayBuffer();
104427
104499
  const gzippedSize = Bun.gzipSync(new Uint8Array(content2)).length;
104428
104500
  bundles.push({
@@ -104439,12 +104511,12 @@ async function findChunkBundles(cwd) {
104439
104511
  }
104440
104512
  async function findDistBundles(cwd) {
104441
104513
  const bundles = [];
104442
- const distDir = join16(cwd, "dist");
104514
+ const distDir = join17(cwd, "dist");
104443
104515
  if (!existsSync11(distDir))
104444
104516
  return bundles;
104445
104517
  const files = await readdir8(distDir);
104446
104518
  for (const file of files) {
104447
- const filePath = join16(distDir, file);
104519
+ const filePath = join17(distDir, file);
104448
104520
  const stats = statSync(filePath);
104449
104521
  if (stats.isFile() && !file.endsWith(".map") && !file.endsWith(".d.ts")) {
104450
104522
  const content2 = await Bun.file(filePath).arrayBuffer();
@@ -104470,9 +104542,9 @@ async function findBundles(cwd) {
104470
104542
  }
104471
104543
  async function findBrowserEntry(cwd) {
104472
104544
  try {
104473
- const clientDir = join16(cwd, "src", "client");
104474
- const tsxEntry = join16(clientDir, "index.tsx");
104475
- const tsEntry = join16(clientDir, "index.ts");
104545
+ const clientDir = join17(cwd, "src", "client");
104546
+ const tsxEntry = join17(clientDir, "index.tsx");
104547
+ const tsEntry = join17(clientDir, "index.ts");
104476
104548
  let sourceEntry = null;
104477
104549
  if (existsSync11(tsxEntry)) {
104478
104550
  sourceEntry = tsxEntry;
@@ -104505,12 +104577,12 @@ async function findBrowserEntry(cwd) {
104505
104577
  console.warn("[reroute/analyze] Browser build produced no outputs");
104506
104578
  return null;
104507
104579
  }
104508
- const tempDir = join16(cwd, ".reroute", "browser");
104580
+ const tempDir = join17(cwd, ".reroute", "browser");
104509
104581
  await import("node:fs/promises").then((fs) => fs.mkdir(tempDir, { recursive: true }));
104510
104582
  const output = result.outputs[0];
104511
104583
  const code = await output.text();
104512
104584
  const actualHash = await generateContentHash2(code);
104513
- const bundlePath = join16(tempDir, `index.${actualHash}.js`);
104585
+ const bundlePath = join17(tempDir, `index.${actualHash}.js`);
104514
104586
  await writeFile2(bundlePath, code, "utf-8");
104515
104587
  const mapOutput = result.outputs.find((o) => o.path.endsWith(".map"));
104516
104588
  if (mapOutput) {
@@ -104562,7 +104634,7 @@ function calculateStats(bundles) {
104562
104634
  }
104563
104635
  async function getInstalledPackageSizes(cwd) {
104564
104636
  const packageSizes = new Map;
104565
- const nodeModulesDir = join16(cwd, "node_modules");
104637
+ const nodeModulesDir = join17(cwd, "node_modules");
104566
104638
  if (!existsSync11(nodeModulesDir))
104567
104639
  return packageSizes;
104568
104640
  try {
@@ -104577,7 +104649,7 @@ async function getInstalledPackageSizes(cwd) {
104577
104649
  const [sizeKB, path3] = line.split("\t");
104578
104650
  if (!path3)
104579
104651
  continue;
104580
- const pkgName = basename3(path3);
104652
+ const pkgName = basename4(path3);
104581
104653
  if (pkgName.startsWith("@")) {
104582
104654
  const scopeDir = path3;
104583
104655
  const scopedOutput = execSync(`du -sk ${scopeDir}/* 2>/dev/null || true`, {
@@ -104589,7 +104661,7 @@ async function getInstalledPackageSizes(cwd) {
104589
104661
  const [scopedSizeKB, scopedPath] = scopedLine.split("\t");
104590
104662
  if (!scopedPath)
104591
104663
  continue;
104592
- const fullPkgName = `${pkgName}/${basename3(scopedPath)}`;
104664
+ const fullPkgName = `${pkgName}/${basename4(scopedPath)}`;
104593
104665
  packageSizes.set(fullPkgName, Number.parseInt(scopedSizeKB, 10) * 1024);
104594
104666
  }
104595
104667
  } else {
@@ -104604,7 +104676,7 @@ async function buildDependencyTree(entryPath, cwd) {
104604
104676
  if (!existsSync11(entryPath))
104605
104677
  return null;
104606
104678
  const root = {
104607
- name: basename3(entryPath),
104679
+ name: basename4(entryPath),
104608
104680
  path: entryPath,
104609
104681
  size: 0,
104610
104682
  children: []
@@ -104618,14 +104690,14 @@ async function buildDependencyTree(entryPath, cwd) {
104618
104690
  if (!pkgNode) {
104619
104691
  pkgNode = {
104620
104692
  name: pkgName || "unknown",
104621
- path: join16(cwd, "node_modules", pkgName || ""),
104693
+ path: join17(cwd, "node_modules", pkgName || ""),
104622
104694
  size: 0,
104623
104695
  children: []
104624
104696
  };
104625
104697
  nodeModulesNode.children?.push(pkgNode);
104626
104698
  }
104627
104699
  pkgNode.children?.push({
104628
- name: basename3(filePath),
104700
+ name: basename4(filePath),
104629
104701
  path: filePath,
104630
104702
  size
104631
104703
  });
@@ -104639,7 +104711,7 @@ async function buildDependencyTree(entryPath, cwd) {
104639
104711
  if (!child) {
104640
104712
  child = {
104641
104713
  name: part,
104642
- path: join16(cwd, ...parts.slice(0, i + 1)),
104714
+ path: join17(cwd, ...parts.slice(0, i + 1)),
104643
104715
  size: 0,
104644
104716
  children: []
104645
104717
  };
@@ -104648,7 +104720,7 @@ async function buildDependencyTree(entryPath, cwd) {
104648
104720
  current = child;
104649
104721
  }
104650
104722
  current.children?.push({
104651
- name: parts[parts.length - 1] || basename3(filePath),
104723
+ name: parts[parts.length - 1] || basename4(filePath),
104652
104724
  path: filePath,
104653
104725
  size
104654
104726
  });
@@ -104670,7 +104742,7 @@ async function buildDependencyTree(entryPath, cwd) {
104670
104742
  const modulePattern = /\/\/\s*(.+?\.(?:ts|tsx|js|jsx|mjs|cjs))\s*$/gm;
104671
104743
  const nodeModulesNode = {
104672
104744
  name: "node_modules",
104673
- path: join16(cwd, "node_modules"),
104745
+ path: join17(cwd, "node_modules"),
104674
104746
  size: 0,
104675
104747
  children: []
104676
104748
  };
@@ -104736,7 +104808,7 @@ async function buildTreeFromSourceMap(bundlePath, cwd) {
104736
104808
  if (sourcePath.startsWith("/") || sourcePath.match(/^[A-Za-z]:\\/))
104737
104809
  return sourcePath;
104738
104810
  const bundleDir = bundlePath.substring(0, bundlePath.lastIndexOf("/"));
104739
- return join16(bundleDir, sourceRoot || "", sourcePath);
104811
+ return join17(bundleDir, sourceRoot || "", sourcePath);
104740
104812
  }, computeSizes = function(node) {
104741
104813
  if (node.children && node.children.length > 0) {
104742
104814
  node.size = node.children.reduce((s, c) => s + computeSizes(c), 0);
@@ -104801,14 +104873,14 @@ async function buildTreeFromSourceMap(bundlePath, cwd) {
104801
104873
  }
104802
104874
  }
104803
104875
  const root = {
104804
- name: basename3(bundlePath),
104876
+ name: basename4(bundlePath),
104805
104877
  path: bundlePath,
104806
104878
  size: 0,
104807
104879
  children: []
104808
104880
  };
104809
104881
  const nodeModulesNode = {
104810
104882
  name: "node_modules",
104811
- path: join16(cwd, "node_modules"),
104883
+ path: join17(cwd, "node_modules"),
104812
104884
  size: 0,
104813
104885
  children: []
104814
104886
  };
@@ -104848,14 +104920,14 @@ async function buildTreeFromSourceMap(bundlePath, cwd) {
104848
104920
  if (!pkgNode) {
104849
104921
  pkgNode = {
104850
104922
  name: pkgName || "unknown",
104851
- path: join16(cwd, "node_modules", pkgName || ""),
104923
+ path: join17(cwd, "node_modules", pkgName || ""),
104852
104924
  size: 0,
104853
104925
  children: []
104854
104926
  };
104855
104927
  nodeModulesNode.children?.push(pkgNode);
104856
104928
  }
104857
104929
  pkgNode.children?.push({
104858
- name: basename3(srcPath),
104930
+ name: basename4(srcPath),
104859
104931
  path: srcPath,
104860
104932
  size
104861
104933
  });
@@ -104869,7 +104941,7 @@ async function buildTreeFromSourceMap(bundlePath, cwd) {
104869
104941
  if (!child) {
104870
104942
  child = {
104871
104943
  name: part,
104872
- path: join16(cwd, ...parts.slice(0, i2 + 1)),
104944
+ path: join17(cwd, ...parts.slice(0, i2 + 1)),
104873
104945
  size: 0,
104874
104946
  children: []
104875
104947
  };
@@ -104878,7 +104950,7 @@ async function buildTreeFromSourceMap(bundlePath, cwd) {
104878
104950
  current = child;
104879
104951
  }
104880
104952
  current.children?.push({
104881
- name: parts[parts.length - 1] || basename3(srcPath),
104953
+ name: parts[parts.length - 1] || basename4(srcPath),
104882
104954
  path: srcPath,
104883
104955
  size
104884
104956
  });
@@ -104899,11 +104971,11 @@ async function generateHTMLReport(stats, depTree, mainInfo, browserDepTree, brow
104899
104971
  let actualServerBinarySize = null;
104900
104972
  let actualServerBinaryGzipped = null;
104901
104973
  try {
104902
- const distDir = join16(process.cwd(), "dist");
104974
+ const distDir = join17(process.cwd(), "dist");
104903
104975
  if (existsSync11(distDir)) {
104904
104976
  const files = await readdir8(distDir);
104905
104977
  for (const file of files) {
104906
- const filePath = join16(distDir, file);
104978
+ const filePath = join17(distDir, file);
104907
104979
  const stats2 = statSync(filePath);
104908
104980
  if (stats2.isFile() && !file.includes(".")) {
104909
104981
  actualServerBinarySize = stats2.size;
@@ -106385,11 +106457,11 @@ async function printConsoleReport(stats, depTree, mainInfo, browserDepTree, brow
106385
106457
  let actualServerBinarySize = null;
106386
106458
  let actualServerBinaryGzipped = null;
106387
106459
  try {
106388
- const distDir = join16(process.cwd(), "dist");
106460
+ const distDir = join17(process.cwd(), "dist");
106389
106461
  if (existsSync11(distDir)) {
106390
106462
  const files = await readdir8(distDir);
106391
106463
  for (const file of files) {
106392
- const filePath = join16(distDir, file);
106464
+ const filePath = join17(distDir, file);
106393
106465
  const stats2 = statSync(filePath);
106394
106466
  if (stats2.isFile() && !file.includes(".")) {
106395
106467
  actualServerBinarySize = stats2.size;
@@ -106423,13 +106495,13 @@ async function analyze(args) {
106423
106495
  const isProd = isProductionMode(args);
106424
106496
  const searchIndex = args.indexOf("--search");
106425
106497
  const initialSearch = searchIndex !== -1 && args[searchIndex + 1] ? args[searchIndex + 1] : "";
106426
- const rerouteIndexPath = join16(cwd, ".reroute", "index.ts");
106498
+ const rerouteIndexPath = join17(cwd, ".reroute", "index.ts");
106427
106499
  if (!existsSync11(rerouteIndexPath)) {
106428
106500
  console.log(colorizeLogPrefixAnsi(`[reroute/analyze] .reroute artifacts not found, running build...
106429
106501
  `));
106430
106502
  const { spawn: spawn4 } = await import("node:child_process");
106431
- const { getRerouteCommand: getRerouteCommand5 } = await Promise.resolve().then(() => (init_command(), exports_command));
106432
- const rerouteCmd = getRerouteCommand5();
106503
+ const { getRerouteCommand: getRerouteCommand4 } = await Promise.resolve().then(() => (init_command(), exports_command));
106504
+ const rerouteCmd = getRerouteCommand4();
106433
106505
  const useShell = rerouteCmd.includes(" ");
106434
106506
  const buildCommand = useShell ? `${rerouteCmd} build` : rerouteCmd;
106435
106507
  const buildArgs = useShell ? [] : ["build"];
@@ -106470,11 +106542,11 @@ async function analyze(args) {
106470
106542
  `));
106471
106543
  }
106472
106544
  try {
106473
- const browserStat = await stat5(browserEntry);
106545
+ const browserStat = await stat6(browserEntry);
106474
106546
  const browserContent = await readFile(browserEntry);
106475
106547
  const browserGzipped = Bun.gzipSync(browserContent).length;
106476
106548
  browserInfo = {
106477
- name: basename3(browserEntry),
106549
+ name: basename4(browserEntry),
106478
106550
  size: browserStat.size,
106479
106551
  gzippedSize: browserGzipped
106480
106552
  };
@@ -106486,12 +106558,12 @@ async function analyze(args) {
106486
106558
  let entry = null;
106487
106559
  let depTree = null;
106488
106560
  let mainInfo = null;
106489
- const srcEntry = join16(cwd, "src", "index.ts");
106561
+ const srcEntry = join17(cwd, "src", "index.ts");
106490
106562
  if (existsSync11(srcEntry)) {
106491
106563
  console.log(colorizeLogPrefixAnsi(`[reroute/analyze] Building server binary for analysis...
106492
106564
  `));
106493
106565
  const { mkdir: mkdir4 } = await import("node:fs/promises");
106494
- const serverAnalysisDir = join16(cwd, ".reroute", "server");
106566
+ const serverAnalysisDir = join17(cwd, ".reroute", "server");
106495
106567
  await mkdir4(serverAnalysisDir, { recursive: true });
106496
106568
  const result = await Bun.build({
106497
106569
  entrypoints: [srcEntry],
@@ -106504,7 +106576,7 @@ async function analyze(args) {
106504
106576
  if (result.success && result.outputs.length > 0) {
106505
106577
  const output = result.outputs[0];
106506
106578
  const code = await output.text();
106507
- const analysisEntry = join16(serverAnalysisDir, "index.js");
106579
+ const analysisEntry = join17(serverAnalysisDir, "index.js");
106508
106580
  await writeFile2(analysisEntry, code, "utf-8");
106509
106581
  const mapOutput = result.outputs.find((o) => o.path.endsWith(".map"));
106510
106582
  if (mapOutput) {
@@ -106522,7 +106594,7 @@ async function analyze(args) {
106522
106594
  `));
106523
106595
  const installedSizes = await getInstalledPackageSizes(cwd);
106524
106596
  if (depTree) {
106525
- const packageJsonPath = join16(cwd, "package.json");
106597
+ const packageJsonPath = join17(cwd, "package.json");
106526
106598
  if (existsSync11(packageJsonPath)) {
106527
106599
  try {
106528
106600
  const packageJson = JSON.parse(await readFile(packageJsonPath, "utf-8"));
@@ -106534,7 +106606,7 @@ async function analyze(args) {
106534
106606
  if (!trackedPkgs.has(pkgName) && installedSizes.has(pkgName)) {
106535
106607
  nodeModulesNode.children?.push({
106536
106608
  name: pkgName,
106537
- path: join16(cwd, "node_modules", pkgName),
106609
+ path: join17(cwd, "node_modules", pkgName),
106538
106610
  size: installedSizes.get(pkgName) || 0
106539
106611
  });
106540
106612
  }
@@ -106552,11 +106624,11 @@ async function analyze(args) {
106552
106624
  }
106553
106625
  }
106554
106626
  try {
106555
- const entryStat = await stat5(entry);
106627
+ const entryStat = await stat6(entry);
106556
106628
  const entryContent = await readFile(entry);
106557
106629
  const entryGzipped = Bun.gzipSync(entryContent).length;
106558
106630
  mainInfo = {
106559
- name: basename3(entry),
106631
+ name: basename4(entry),
106560
106632
  size: entryStat.size,
106561
106633
  gzippedSize: entryGzipped
106562
106634
  };
@@ -106565,10 +106637,10 @@ async function analyze(args) {
106565
106637
  const fullOutput = args.includes("--full");
106566
106638
  await printConsoleReport(stats, depTree, mainInfo, browserDepTree, browserInfo, fullOutput);
106567
106639
  if (outputHtml || openBrowser) {
106568
- const htmlPath = join16(cwd, ".reroute", "analysis.html");
106640
+ const htmlPath = join17(cwd, ".reroute", "analysis.html");
106569
106641
  const html2 = await generateHTMLReport(stats, depTree, mainInfo, browserDepTree, browserInfo, initialSearch);
106570
106642
  const { mkdir: mkdir4 } = await import("node:fs/promises");
106571
- await mkdir4(join16(cwd, ".reroute"), { recursive: true });
106643
+ await mkdir4(join17(cwd, ".reroute"), { recursive: true });
106572
106644
  await writeFile2(htmlPath, html2, "utf-8");
106573
106645
  console.log(colorizeLogPrefixAnsi(`[reroute/analyze] HTML report generated: ${relative3(cwd, htmlPath)}
106574
106646
  `));
@@ -106632,7 +106704,7 @@ __export(exports_og, {
106632
106704
  });
106633
106705
  import { spawn as spawn4 } from "node:child_process";
106634
106706
  import { readdir as readdir9 } from "node:fs/promises";
106635
- import { join as join17 } from "node:path";
106707
+ import { join as join18 } from "node:path";
106636
106708
  function getPortFromConfig(baseUrl) {
106637
106709
  if (!baseUrl)
106638
106710
  return 3000;
@@ -106653,7 +106725,7 @@ async function killProcessOnPort(port) {
106653
106725
  });
106654
106726
  } catch {}
106655
106727
  }
106656
- async function isServerRunning(port) {
106728
+ async function isServerRunning2(port) {
106657
106729
  try {
106658
106730
  const response = await fetch(`http://localhost:${port}`, {
106659
106731
  signal: AbortSignal.timeout(1000)
@@ -106664,7 +106736,7 @@ async function isServerRunning(port) {
106664
106736
  }
106665
106737
  }
106666
106738
  async function ensureServer(cwd, port) {
106667
- const alreadyRunning = await isServerRunning(port);
106739
+ const alreadyRunning = await isServerRunning2(port);
106668
106740
  if (alreadyRunning) {
106669
106741
  console.log(`✅ Dev server already running at http://localhost:${port}
106670
106742
  `);
@@ -106711,8 +106783,8 @@ async function scanForOgTemplates(dir, base, routes) {
106711
106783
  try {
106712
106784
  const entries = await readdir9(dir, { withFileTypes: true });
106713
106785
  for (const entry of entries) {
106714
- const fullPath = join17(dir, entry.name);
106715
- const relativePath = join17(base, entry.name);
106786
+ const fullPath = join18(dir, entry.name);
106787
+ const relativePath = join18(base, entry.name);
106716
106788
  if (entry.isDirectory()) {
106717
106789
  if (entry.name === "content")
106718
106790
  continue;
@@ -106733,7 +106805,7 @@ async function addContentRoutes(routesPath, routes) {
106733
106805
  for (const entry of entries) {
106734
106806
  if (!entry.isDirectory())
106735
106807
  continue;
106736
- const contentDir = join17(routesPath, entry.name, "content");
106808
+ const contentDir = join18(routesPath, entry.name, "content");
106737
106809
  try {
106738
106810
  const contentFiles = await readdir9(contentDir);
106739
106811
  if (contentFiles.length === 0)
@@ -106750,7 +106822,7 @@ async function addContentRoutes(routesPath, routes) {
106750
106822
  async function findRoutesWithOG(cwd) {
106751
106823
  const routes = [];
106752
106824
  try {
106753
- const manifestPath = join17(cwd, ".reroute", "manifest.json");
106825
+ const manifestPath = join18(cwd, ".reroute", "manifest.json");
106754
106826
  const manifestFile = Bun.file(manifestPath);
106755
106827
  const manifest = await manifestFile.json();
106756
106828
  if (manifest.staticRoutes && Array.isArray(manifest.staticRoutes)) {
@@ -106761,7 +106833,7 @@ async function findRoutesWithOG(cwd) {
106761
106833
  }
106762
106834
  } catch {
106763
106835
  console.warn("⚠️ .reroute/manifest.json not found, scanning routes directory...");
106764
- const routesPath = join17(cwd, ROUTES_DIR2);
106836
+ const routesPath = join18(cwd, ROUTES_DIR2);
106765
106837
  await scanForOgTemplates(routesPath, "", routes);
106766
106838
  await addContentRoutes(routesPath, routes);
106767
106839
  }
@@ -107013,7 +107085,7 @@ async function getVersionString2() {
107013
107085
  }
107014
107086
  async function getVersion2() {
107015
107087
  if (true) {
107016
- return "1.0.0-alpha.4";
107088
+ return "1.0.0-alpha.6";
107017
107089
  }
107018
107090
  const possiblePaths = [
107019
107091
  path3.join(import.meta.dir, "../../../package.json"),
@@ -107030,10 +107102,10 @@ async function getVersion2() {
107030
107102
  }
107031
107103
  async function getCommit2() {
107032
107104
  if (true) {
107033
- return "f832946";
107105
+ return "1f58c52";
107034
107106
  }
107035
107107
  return "dev";
107036
107108
  }
107037
107109
  main();
107038
107110
 
107039
- //# debugId=3453DF5462E3D8B364756E2164756E21
107111
+ //# debugId=AFC08EDF211039B364756E2164756E21