@absolutejs/absolute 0.20.0-beta.167 → 0.20.0-beta.169

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 (89) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +81 -0
  3. package/changelog.json +35 -0
  4. package/dist/angular/browser.js +3 -3
  5. package/dist/angular/browser.js.map +3 -3
  6. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  7. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  8. package/dist/angular/index.js +211 -197
  9. package/dist/angular/index.js.map +8 -8
  10. package/dist/angular/server.js +211 -197
  11. package/dist/angular/server.js.map +8 -8
  12. package/dist/build.js +1324 -998
  13. package/dist/build.js.map +12 -8
  14. package/dist/cli/{add-kwyqxccz.js → add-7azr0c83.js} +5 -5
  15. package/dist/cli/{androidEmulatorController-3zn6a4j3.js → androidEmulatorController-68jjdxmx.js} +3 -3
  16. package/dist/cli/{androidNativeWatcher-wz7vhnkr.js → androidNativeWatcher-x032x9yr.js} +3 -3
  17. package/dist/cli/{api-m3n8xbcv.js → api-mshjr4ah.js} +1 -1
  18. package/dist/cli/{compile-30m09382.js → compile-4jnfxts9.js} +2 -2
  19. package/dist/cli/config/server.js +129 -115
  20. package/dist/cli/{dev-ny2vah78.js → dev-9tk5hn2e.js} +9 -9
  21. package/dist/cli/{emulatorDoctor-1m4rr9y3.js → emulatorDoctor-p3yt7140.js} +2 -2
  22. package/dist/cli/{emulatorInstaller-70v711bj.js → emulatorInstaller-4pm2kx9w.js} +3 -3
  23. package/dist/cli/{expoDevController-hen9sra5.js → expoDevController-0vj8dvkh.js} +3 -3
  24. package/dist/cli/{generate-vx6tz1y2.js → generate-v75p2fct.js} +4 -4
  25. package/dist/cli/{htmx-dym03fq5.js → htmx-427swtdz.js} +2 -2
  26. package/dist/cli/{index-j9yrhw7a.js → index-066qhc6n.js} +1 -1
  27. package/dist/cli/{index-x1swv7rw.js → index-3vmc30gf.js} +1 -1
  28. package/dist/cli/{index-g8489j4d.js → index-a4ws2jwd.js} +1 -1
  29. package/dist/cli/{index-xj68ep9n.js → index-b7hjgknf.js} +2 -2
  30. package/dist/cli/{index-vkba3289.js → index-bhbs6d5z.js} +2 -2
  31. package/dist/cli/{index-v4cg4dvm.js → index-exfkpjja.js} +4 -3
  32. package/dist/cli/{index-vy8zejts.js → index-eyzwc7gz.js} +1 -1
  33. package/dist/cli/{index-d3br7c47.js → index-k3y8cb6c.js} +1 -1
  34. package/dist/cli/{index-52a2csjm.js → index-ppphkyps.js} +1 -1
  35. package/dist/cli/{index-bvwkwgjw.js → index-s3xvccq3.js} +1 -1
  36. package/dist/cli/{index-6ps18fvr.js → index-t8cf0zj9.js} +2 -2
  37. package/dist/cli/{index-wwnnfhm6.js → index-w09fzs9f.js} +1 -1
  38. package/dist/cli/{index-px7fqsfk.js → index-zd3cna19.js} +1 -1
  39. package/dist/cli/index.js +16 -16
  40. package/dist/cli/{info-9ffx5h3h.js → info-mn125212.js} +1 -1
  41. package/dist/cli/{iosNativeWatcher-ntzec3hx.js → iosNativeWatcher-0nm6qad5.js} +4 -4
  42. package/dist/cli/{iosSimulatorController-hjzy6pq6.js → iosSimulatorController-hza2c3rv.js} +4 -4
  43. package/dist/cli/{islands-rq6wx0kh.js → islands-8sgky9gh.js} +1 -1
  44. package/dist/cli/{mobile-41sev6v0.js → mobile-hcxjr2gf.js} +10 -10
  45. package/dist/cli/{ps-0tryaye0.js → ps-ezmzyscn.js} +1 -1
  46. package/dist/cli/{psTui-0nx63pmr.js → psTui-3x3ykjve.js} +1 -1
  47. package/dist/cli/{remoteMacProtocol-2ej6fbnj.js → remoteMacProtocol-g09myqt5.js} +4 -4
  48. package/dist/cli/{remove-qgme4h2s.js → remove-1ycjx85k.js} +4 -4
  49. package/dist/cli/{start-0ebxkwga.js → start-mbaejxhm.js} +3 -3
  50. package/dist/cli/{typecheck-7yhekrc0.js → typecheck-dr068pmh.js} +209 -43
  51. package/dist/cli/{workspace-atcxzyee.js → workspace-1sycp9g1.js} +7 -4
  52. package/dist/client/index.js +8 -3
  53. package/dist/client/index.js.map +4 -4
  54. package/dist/index.js +1402 -1075
  55. package/dist/index.js.map +14 -10
  56. package/dist/islands/browser.js +3 -3
  57. package/dist/islands/browser.js.map +3 -3
  58. package/dist/islands/index.js +3 -3
  59. package/dist/islands/index.js.map +3 -3
  60. package/dist/mobile/index.js.map +1 -1
  61. package/dist/react/browser.js +3 -3
  62. package/dist/react/browser.js.map +3 -3
  63. package/dist/react/index.js +231 -217
  64. package/dist/react/index.js.map +9 -9
  65. package/dist/react/server.js +231 -191
  66. package/dist/react/server.js.map +9 -8
  67. package/dist/src/build/islandBootstrap.d.ts +22 -0
  68. package/dist/src/build/missingClientFrameworks.d.ts +29 -0
  69. package/dist/src/build/svelteDeclarations.d.ts +27 -0
  70. package/dist/src/cli/utils.d.ts +5 -1
  71. package/dist/src/client/islandResolver.d.ts +3 -1
  72. package/dist/src/core/build.d.ts +1 -1
  73. package/dist/src/core/islandManifest.d.ts +10 -0
  74. package/dist/src/core/islandPageContext.d.ts +2 -0
  75. package/dist/src/dev/svelteDeclarationRefresher.d.ts +6 -0
  76. package/dist/svelte/browser.js +3 -3
  77. package/dist/svelte/browser.js.map +3 -3
  78. package/dist/svelte/index.js +211 -197
  79. package/dist/svelte/index.js.map +8 -8
  80. package/dist/svelte/server.js +211 -171
  81. package/dist/svelte/server.js.map +8 -7
  82. package/dist/vue/browser.js +3 -3
  83. package/dist/vue/browser.js.map +3 -3
  84. package/dist/vue/index.js +231 -217
  85. package/dist/vue/index.js.map +9 -9
  86. package/dist/vue/server.js +231 -191
  87. package/dist/vue/server.js.map +9 -8
  88. package/package.json +6 -1
  89. /package/dist/cli/{index-e6ysp900.js → index-z794p5qg.js} +0 -0
@@ -6,16 +6,16 @@ import {
6
6
  frameworks,
7
7
  configuredFrameworks,
8
8
  resolveProject
9
- } from "./index-vy8zejts.js";
9
+ } from "./index-eyzwc7gz.js";
10
10
  import {
11
11
  applyAbsoluteConfigEdit
12
- } from "./index-d3br7c47.js";
12
+ } from "./index-k3y8cb6c.js";
13
13
  import"./index-h7qhz02e.js";
14
14
  import"./index-fgz435qn.js";
15
15
  import {
16
16
  generatePage
17
- } from "./index-xj68ep9n.js";
18
- import"./index-g8489j4d.js";
17
+ } from "./index-b7hjgknf.js";
18
+ import"./index-a4ws2jwd.js";
19
19
  import {
20
20
  colors
21
21
  } from "./index-xw1byvzp.js";
@@ -27,7 +27,7 @@ import {
27
27
  readVendoredHtmx,
28
28
  writeHtmx
29
29
  } from "./index-3wm8p7rg.js";
30
- import"./index-v4cg4dvm.js";
30
+ import"./index-exfkpjja.js";
31
31
  import"./index-74m7kh8c.js";
32
32
  import"./index-kye08pjx.js";
33
33
 
@@ -6,9 +6,9 @@ import {
6
6
  buildAbsoluteAndroidGradleArtifact2,
7
7
  prepareAbsoluteAndroidDevProject2,
8
8
  startAbsoluteAndroidDevSession2
9
- } from "./index-bvwkwgjw.js";
10
- import"./index-52a2csjm.js";
11
- import"./index-v4cg4dvm.js";
9
+ } from "./index-s3xvccq3.js";
10
+ import"./index-ppphkyps.js";
11
+ import"./index-exfkpjja.js";
12
12
  import"./index-74m7kh8c.js";
13
13
  import"./index-kye08pjx.js";
14
14
  import"./index-fgz435qn.js";
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import"./index-fgz435qn.js";
3
- import"./index-52a2csjm.js";
3
+ import"./index-ppphkyps.js";
4
4
  import {
5
5
  fingerprintAbsoluteAndroidNativeProject2
6
- } from "./index-bvwkwgjw.js";
7
- import"./index-v4cg4dvm.js";
6
+ } from "./index-s3xvccq3.js";
7
+ import"./index-exfkpjja.js";
8
8
  import"./index-74m7kh8c.js";
9
9
  import"./index-kye08pjx.js";
10
10
 
@@ -12,7 +12,7 @@ import"./index-g4ehq6ev.js";
12
12
  import"./index-h5qx5jpk.js";
13
13
  import {
14
14
  openUrlInBrowser
15
- } from "./index-v4cg4dvm.js";
15
+ } from "./index-exfkpjja.js";
16
16
  import"./index-74m7kh8c.js";
17
17
  import"./index-kye08pjx.js";
18
18
 
@@ -6,7 +6,7 @@ import {
6
6
  } from "./index-bp60baze.js";
7
7
  import {
8
8
  loadIslandRegistryBuildInfo
9
- } from "./index-e6ysp900.js";
9
+ } from "./index-z794p5qg.js";
10
10
  import {
11
11
  createIslandRegistryDefinitionPlugin,
12
12
  createBunStringRawUnicodePlugin,
@@ -52,7 +52,7 @@ import {
52
52
  import {
53
53
  findFreePort,
54
54
  killStaleProcesses
55
- } from "./index-v4cg4dvm.js";
55
+ } from "./index-exfkpjja.js";
56
56
  import {
57
57
  formatTimestamp2
58
58
  } from "./index-74m7kh8c.js";
@@ -37183,14 +37183,133 @@ var TIME_PRECISION = 2;
37183
37183
  var TWO_THIRDS = 2 / 3;
37184
37184
  var UNFOUND_INDEX = -1;
37185
37185
 
37186
+ // src/utils/getDurationString.ts
37187
+ var getDurationString = (duration) => {
37188
+ let durationString;
37189
+ if (duration < MILLISECONDS_IN_A_SECOND) {
37190
+ durationString = `${duration.toFixed(TIME_PRECISION)}ms`;
37191
+ } else if (duration < MILLISECONDS_IN_A_MINUTE) {
37192
+ durationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;
37193
+ } else {
37194
+ const totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);
37195
+ const minutes = Math.floor(totalSeconds / 60);
37196
+ const seconds = totalSeconds % 60;
37197
+ durationString = seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
37198
+ }
37199
+ return durationString;
37200
+ };
37201
+
37202
+ // src/utils/startupBanner.ts
37203
+ var colors = {
37204
+ bold: "\x1B[1m",
37205
+ cyan: "\x1B[36m",
37206
+ dim: "\x1B[2m",
37207
+ green: "\x1B[32m",
37208
+ reset: "\x1B[0m"
37209
+ };
37210
+ var MONTHS = [
37211
+ "Jan",
37212
+ "Feb",
37213
+ "Mar",
37214
+ "Apr",
37215
+ "May",
37216
+ "Jun",
37217
+ "Jul",
37218
+ "Aug",
37219
+ "Sep",
37220
+ "Oct",
37221
+ "Nov",
37222
+ "Dec"
37223
+ ];
37224
+ var formatTimestamp = () => {
37225
+ const now = new Date;
37226
+ const month = MONTHS[now.getMonth()];
37227
+ const day = now.getDate().toString().padStart(2, "0");
37228
+ let hours = now.getHours();
37229
+ const minutes = now.getMinutes().toString().padStart(2, "0");
37230
+ const seconds = now.getSeconds().toString().padStart(2, "0");
37231
+ const ampm = hours >= HOURS_IN_HALF_DAY ? "PM" : "AM";
37232
+ hours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;
37233
+ return `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;
37234
+ };
37235
+ var startupBanner = (options) => {
37236
+ const {
37237
+ version,
37238
+ readyDuration,
37239
+ buildDuration,
37240
+ port,
37241
+ host,
37242
+ networkUrl,
37243
+ mobilePreviewUrl,
37244
+ protocol = "http"
37245
+ } = options;
37246
+ const name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;
37247
+ const ver = `${colors.dim}v${version}${colors.reset}`;
37248
+ const time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;
37249
+ const build = typeof buildDuration === "number" && Number.isFinite(buildDuration) ? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}` : "";
37250
+ console.log("");
37251
+ console.log(` ${name} ${ver} ${time}${build}`);
37252
+ console.log("");
37253
+ console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === "0.0.0.0" ? "localhost" : host}:${port}/`);
37254
+ if (networkUrl) {
37255
+ console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`);
37256
+ }
37257
+ if (mobilePreviewUrl) {
37258
+ console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Mobile:${colors.reset} ${mobilePreviewUrl}`);
37259
+ }
37260
+ console.log("");
37261
+ };
37262
+
37263
+ // src/utils/logger.ts
37264
+ var colors2 = {
37265
+ blue: "\x1B[34m",
37266
+ bold: "\x1B[1m",
37267
+ cyan: "\x1B[36m",
37268
+ dim: "\x1B[2m",
37269
+ green: "\x1B[32m",
37270
+ magenta: "\x1B[35m",
37271
+ red: "\x1B[31m",
37272
+ reset: "\x1B[0m",
37273
+ white: "\x1B[37m",
37274
+ yellow: "\x1B[33m"
37275
+ };
37276
+ var frameworkColors = {
37277
+ angular: colors2.magenta,
37278
+ assets: colors2.dim,
37279
+ css: colors2.cyan,
37280
+ html: colors2.white,
37281
+ htmx: colors2.white,
37282
+ react: colors2.blue,
37283
+ svelte: colors2.yellow,
37284
+ vue: colors2.green
37285
+ };
37286
+ var logWarn = (message) => {
37287
+ const timestamp = `${colors2.dim}${formatTimestamp()}${colors2.reset}`;
37288
+ const tag = `${colors2.yellow}[hmr]${colors2.reset}`;
37289
+ console.log(`${timestamp} ${tag} ${colors2.yellow}warning ${message}${colors2.reset}`);
37290
+ };
37291
+
37292
+ // src/core/islandManifest.ts
37293
+ var ISLAND_BOOTSTRAP_MANIFEST_KEY = "AbsoluteIslandBootstrap";
37294
+ var LEGACY_ISLAND_BOOTSTRAP_MANIFEST_KEY = "BootstrapClient";
37295
+ var getIslandBootstrapPath = (manifest) => manifest[ISLAND_BOOTSTRAP_MANIFEST_KEY] ?? manifest[LEGACY_ISLAND_BOOTSTRAP_MANIFEST_KEY];
37296
+
37186
37297
  // src/core/islandPageContext.ts
37187
- var BOOTSTRAP_MANIFEST_KEY = "BootstrapClient";
37188
37298
  var ISLAND_MARKER = 'data-island="true"';
37189
37299
  var CLOSING_HEAD_TAG = "</head>";
37300
+ var warnedMissingBootstrap = false;
37301
+ var warnIfBootstrapMissing = (manifest) => {
37302
+ if (warnedMissingBootstrap || getIslandBootstrapPath(manifest))
37303
+ return;
37304
+ if (false)
37305
+ ;
37306
+ warnedMissingBootstrap = true;
37307
+ logWarn("A page contains islands, but the build manifest has no islands bootstrap, so they will render without hydrating. Set `islands.registry` in absolute.config.ts (a default bootstrap is generated from it) or point `islands.bootstrap` at a file that calls startIslands().");
37308
+ };
37190
37309
  var buildIslandsHeadMarkup = (manifest) => {
37191
37310
  const manifestScript = `<script>window.__ABSOLUTE_MANIFEST__ = ${JSON.stringify(manifest)}</script>`;
37192
37311
  const islandStateScript = `<script>window.__ABS_ISLAND_STATE__ = ${JSON.stringify(globalThis.__ABS_ISLAND_STATE__ ?? {})}</script>`;
37193
- const bootstrapPath = manifest[BOOTSTRAP_MANIFEST_KEY];
37312
+ const bootstrapPath = getIslandBootstrapPath(manifest);
37194
37313
  const bootstrapScript = bootstrapPath ? `<script type="module" src="${bootstrapPath}"></script>` : "";
37195
37314
  return `${manifestScript}${islandStateScript}${bootstrapScript}`;
37196
37315
  };
@@ -37299,7 +37418,7 @@ var pipeStreamWithHeadInjection = (stream, markup) => {
37299
37418
  }
37300
37419
  });
37301
37420
  };
37302
- var pipeStreamWithIslandMarkerDetection = (stream, markup) => {
37421
+ var pipeStreamWithIslandMarkerDetection = (stream, markup, onIslandsDetected) => {
37303
37422
  const encoder = new TextEncoder;
37304
37423
  const decoder = new TextDecoder;
37305
37424
  const headLookbehind = CLOSING_HEAD_TAG.length - 1;
@@ -37312,6 +37431,7 @@ var pipeStreamWithIslandMarkerDetection = (stream, markup) => {
37312
37431
  if (!held.includes(ISLAND_MARKER)) {
37313
37432
  return { held, injected: false, pending: "", sawHead: true };
37314
37433
  }
37434
+ onIslandsDetected();
37315
37435
  enqueue(controller, `${markup}${held}`);
37316
37436
  return { held: "", injected: true, pending: "", sawHead: true };
37317
37437
  };
@@ -37377,12 +37497,13 @@ var injectIslandPageContextStream = (stream, options) => {
37377
37497
  return stream;
37378
37498
  const markup = buildIslandsHeadMarkup(manifest);
37379
37499
  if (options?.hasIslands === true) {
37500
+ warnIfBootstrapMissing(manifest);
37380
37501
  return pipeStreamWithHeadInjection(stream, markup);
37381
37502
  }
37382
37503
  if (options?.hasIslands === false) {
37383
37504
  return stream;
37384
37505
  }
37385
- return pipeStreamWithIslandMarkerDetection(stream, markup);
37506
+ return pipeStreamWithIslandMarkerDetection(stream, markup, () => warnIfBootstrapMissing(manifest));
37386
37507
  };
37387
37508
 
37388
37509
  // src/core/devRouteRegistrationCallsite.ts
@@ -38736,114 +38857,6 @@ var withRegisteredStreamingSlots = async (renderResponse, options = {}) => {
38736
38857
 
38737
38858
  // src/core/streamingSlotWarningScope.ts
38738
38859
  import { AsyncLocalStorage as AsyncLocalStorage2 } from "async_hooks";
38739
-
38740
- // src/utils/getDurationString.ts
38741
- var getDurationString = (duration) => {
38742
- let durationString;
38743
- if (duration < MILLISECONDS_IN_A_SECOND) {
38744
- durationString = `${duration.toFixed(TIME_PRECISION)}ms`;
38745
- } else if (duration < MILLISECONDS_IN_A_MINUTE) {
38746
- durationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;
38747
- } else {
38748
- const totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);
38749
- const minutes = Math.floor(totalSeconds / 60);
38750
- const seconds = totalSeconds % 60;
38751
- durationString = seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
38752
- }
38753
- return durationString;
38754
- };
38755
-
38756
- // src/utils/startupBanner.ts
38757
- var colors = {
38758
- bold: "\x1B[1m",
38759
- cyan: "\x1B[36m",
38760
- dim: "\x1B[2m",
38761
- green: "\x1B[32m",
38762
- reset: "\x1B[0m"
38763
- };
38764
- var MONTHS = [
38765
- "Jan",
38766
- "Feb",
38767
- "Mar",
38768
- "Apr",
38769
- "May",
38770
- "Jun",
38771
- "Jul",
38772
- "Aug",
38773
- "Sep",
38774
- "Oct",
38775
- "Nov",
38776
- "Dec"
38777
- ];
38778
- var formatTimestamp = () => {
38779
- const now = new Date;
38780
- const month = MONTHS[now.getMonth()];
38781
- const day = now.getDate().toString().padStart(2, "0");
38782
- let hours = now.getHours();
38783
- const minutes = now.getMinutes().toString().padStart(2, "0");
38784
- const seconds = now.getSeconds().toString().padStart(2, "0");
38785
- const ampm = hours >= HOURS_IN_HALF_DAY ? "PM" : "AM";
38786
- hours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;
38787
- return `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;
38788
- };
38789
- var startupBanner = (options) => {
38790
- const {
38791
- version,
38792
- readyDuration,
38793
- buildDuration,
38794
- port,
38795
- host,
38796
- networkUrl,
38797
- mobilePreviewUrl,
38798
- protocol = "http"
38799
- } = options;
38800
- const name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;
38801
- const ver = `${colors.dim}v${version}${colors.reset}`;
38802
- const time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;
38803
- const build = typeof buildDuration === "number" && Number.isFinite(buildDuration) ? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}` : "";
38804
- console.log("");
38805
- console.log(` ${name} ${ver} ${time}${build}`);
38806
- console.log("");
38807
- console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === "0.0.0.0" ? "localhost" : host}:${port}/`);
38808
- if (networkUrl) {
38809
- console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`);
38810
- }
38811
- if (mobilePreviewUrl) {
38812
- console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Mobile:${colors.reset} ${mobilePreviewUrl}`);
38813
- }
38814
- console.log("");
38815
- };
38816
-
38817
- // src/utils/logger.ts
38818
- var colors2 = {
38819
- blue: "\x1B[34m",
38820
- bold: "\x1B[1m",
38821
- cyan: "\x1B[36m",
38822
- dim: "\x1B[2m",
38823
- green: "\x1B[32m",
38824
- magenta: "\x1B[35m",
38825
- red: "\x1B[31m",
38826
- reset: "\x1B[0m",
38827
- white: "\x1B[37m",
38828
- yellow: "\x1B[33m"
38829
- };
38830
- var frameworkColors = {
38831
- angular: colors2.magenta,
38832
- assets: colors2.dim,
38833
- css: colors2.cyan,
38834
- html: colors2.white,
38835
- htmx: colors2.white,
38836
- react: colors2.blue,
38837
- svelte: colors2.yellow,
38838
- vue: colors2.green
38839
- };
38840
- var logWarn = (message) => {
38841
- const timestamp = `${colors2.dim}${formatTimestamp()}${colors2.reset}`;
38842
- const tag = `${colors2.yellow}[hmr]${colors2.reset}`;
38843
- console.log(`${timestamp} ${tag} ${colors2.yellow}warning ${message}${colors2.reset}`);
38844
- };
38845
-
38846
- // src/core/streamingSlotWarningScope.ts
38847
38860
  var STREAMING_SLOT_WARNING_STORAGE_KEY2 = Symbol.for("absolutejs.streamingSlotWarningAsyncLocalStorage");
38848
38861
  var isObjectRecord3 = (value) => Boolean(value) && typeof value === "object";
38849
38862
  var isAsyncLocalStorage3 = (value) => isObjectRecord3(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
@@ -39429,10 +39442,10 @@ var killStaleProcesses = (port, logMessage) => {
39429
39442
  encoding: "utf-8"
39430
39443
  }).trim();
39431
39444
  } catch {
39432
- return;
39445
+ return [];
39433
39446
  }
39434
39447
  if (!output) {
39435
- return;
39448
+ return [];
39436
39449
  }
39437
39450
  const report = (message) => {
39438
39451
  if (logMessage) {
@@ -39444,7 +39457,7 @@ var killStaleProcesses = (port, logMessage) => {
39444
39457
  const pids = output.split(`
39445
39458
  `).map(Number).filter((pid) => pid !== process.pid && pid > 0);
39446
39459
  if (pids.length === 0) {
39447
- return;
39460
+ return [];
39448
39461
  }
39449
39462
  const projectDirectory = realpathSync(process.cwd());
39450
39463
  const holders = pids.map((pid) => ({
@@ -39459,6 +39472,7 @@ var killStaleProcesses = (port, logMessage) => {
39459
39472
  report(`Killed ${own.length} stale ${own.length === 1 ? "process" : "processes"} on port ${port}.`);
39460
39473
  for (const holder of foreign)
39461
39474
  report(`Port ${port} is in use by another process (pid ${holder.pid}: ${holder.command.slice(0, 120) || "unknown"}). It was left running; stop it or choose another port.`);
39475
+ return foreign;
39462
39476
  };
39463
39477
  var openUrlInBrowser = (url, onError) => {
39464
39478
  if (process.env.ABSOLUTE_NO_OPEN)
@@ -66,7 +66,7 @@ import {
66
66
  readDbScripts,
67
67
  startDatabase,
68
68
  stopDatabase
69
- } from "./index-v4cg4dvm.js";
69
+ } from "./index-exfkpjja.js";
70
70
  import {
71
71
  formatTimestamp2
72
72
  } from "./index-74m7kh8c.js";
@@ -1339,15 +1339,15 @@ var loadAbsoluteMobileDevModules = async () => {
1339
1339
  ] = await Promise.all([
1340
1340
  import("./config-hy5dkexz.js"),
1341
1341
  import("./expoProject-h404n2r8.js"),
1342
- import("./expoDevController-hen9sra5.js"),
1342
+ import("./expoDevController-0vj8dvkh.js"),
1343
1343
  import("./nativeAuth-ysv0x5dy.js"),
1344
- import("./androidEmulatorController-3zn6a4j3.js"),
1345
- import("./emulatorDoctor-1m4rr9y3.js"),
1346
- import("./emulatorInstaller-70v711bj.js"),
1347
- import("./androidNativeWatcher-wz7vhnkr.js"),
1348
- import("./iosSimulatorController-hjzy6pq6.js"),
1349
- import("./remoteMacProtocol-2ej6fbnj.js"),
1350
- import("./iosNativeWatcher-ntzec3hx.js"),
1344
+ import("./androidEmulatorController-68jjdxmx.js"),
1345
+ import("./emulatorDoctor-p3yt7140.js"),
1346
+ import("./emulatorInstaller-4pm2kx9w.js"),
1347
+ import("./androidNativeWatcher-x032x9yr.js"),
1348
+ import("./iosSimulatorController-hza2c3rv.js"),
1349
+ import("./remoteMacProtocol-g09myqt5.js"),
1350
+ import("./iosNativeWatcher-0nm6qad5.js"),
1351
1351
  import("./expoNativeWatcher-aakp7xvj.js")
1352
1352
  ]);
1353
1353
  return {
@@ -4,8 +4,8 @@ import {
4
4
  absoluteManagedAndroidSdkRoot2,
5
5
  detectAbsoluteMobileHost2,
6
6
  inspectAbsoluteMobileToolchain2
7
- } from "./index-52a2csjm.js";
8
- import"./index-v4cg4dvm.js";
7
+ } from "./index-ppphkyps.js";
8
+ import"./index-exfkpjja.js";
9
9
  import"./index-74m7kh8c.js";
10
10
  import"./index-kye08pjx.js";
11
11
  import"./index-fgz435qn.js";
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  planAbsoluteMobileEmulatorInstall2,
4
4
  fixAbsoluteMobileEmulatorToolchain2
5
- } from "./index-x1swv7rw.js";
6
- import"./index-52a2csjm.js";
7
- import"./index-v4cg4dvm.js";
5
+ } from "./index-3vmc30gf.js";
6
+ import"./index-ppphkyps.js";
7
+ import"./index-exfkpjja.js";
8
8
  import"./index-74m7kh8c.js";
9
9
  import"./index-kye08pjx.js";
10
10
  import"./index-fgz435qn.js";
@@ -3,9 +3,9 @@ import {
3
3
  buildAbsoluteExpoAndroidWslBundle2,
4
4
  absoluteExpoExecutable2,
5
5
  startAbsoluteExpoDevSession2
6
- } from "./index-px7fqsfk.js";
7
- import"./index-52a2csjm.js";
8
- import"./index-v4cg4dvm.js";
6
+ } from "./index-zd3cna19.js";
7
+ import"./index-ppphkyps.js";
8
+ import"./index-exfkpjja.js";
9
9
  import"./index-74m7kh8c.js";
10
10
  import"./index-kye08pjx.js";
11
11
  import"./index-fgz435qn.js";
@@ -5,11 +5,11 @@ import {
5
5
  resolveProject,
6
6
  selectFramework,
7
7
  toModuleSpecifier
8
- } from "./index-vy8zejts.js";
8
+ } from "./index-eyzwc7gz.js";
9
9
  import"./index-fgz435qn.js";
10
10
  import {
11
11
  wirePluginUse
12
- } from "./index-g8489j4d.js";
12
+ } from "./index-a4ws2jwd.js";
13
13
  import {
14
14
  isValidName,
15
15
  toCamelCase,
@@ -18,11 +18,11 @@ import {
18
18
  toTitleCase,
19
19
  emptyOutcome,
20
20
  generatePage
21
- } from "./index-xj68ep9n.js";
21
+ } from "./index-b7hjgknf.js";
22
22
  import {
23
23
  colors
24
24
  } from "./index-xw1byvzp.js";
25
- import"./index-v4cg4dvm.js";
25
+ import"./index-exfkpjja.js";
26
26
  import"./index-74m7kh8c.js";
27
27
  import"./index-kye08pjx.js";
28
28
 
@@ -2,7 +2,7 @@
2
2
  import"./index-h7qhz02e.js";
3
3
  import {
4
4
  resolveProject
5
- } from "./index-vy8zejts.js";
5
+ } from "./index-eyzwc7gz.js";
6
6
  import"./index-fgz435qn.js";
7
7
  import {
8
8
  colors
@@ -14,7 +14,7 @@ import {
14
14
  installedHtmxVersion,
15
15
  writeHtmx
16
16
  } from "./index-3wm8p7rg.js";
17
- import"./index-v4cg4dvm.js";
17
+ import"./index-exfkpjja.js";
18
18
  import"./index-74m7kh8c.js";
19
19
  import"./index-kye08pjx.js";
20
20
 
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  requireAbsoluteIosReleaseMetadata,
4
4
  installAbsoluteIosRelease
5
- } from "./index-wwnnfhm6.js";
5
+ } from "./index-w09fzs9f.js";
6
6
  import {
7
7
  unrefTimer
8
8
  } from "./index-1y5mmnwg.js";
@@ -4,7 +4,7 @@ import {
4
4
  absoluteManagedAndroidSdkRoot2,
5
5
  detectAbsoluteMobileHost2,
6
6
  inspectAbsoluteMobileToolchain2
7
- } from "./index-52a2csjm.js";
7
+ } from "./index-ppphkyps.js";
8
8
 
9
9
  // src/mobile/emulatorInstaller.ts
10
10
  import { createHash } from "crypto";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  toModuleSpecifier
4
- } from "./index-vy8zejts.js";
4
+ } from "./index-eyzwc7gz.js";
5
5
 
6
6
  // src/cli/generate/routeWiring.ts
7
7
  import ts from "typescript";
@@ -3,11 +3,11 @@ import {
3
3
  frameworks,
4
4
  sharedDirFor,
5
5
  toModuleSpecifier
6
- } from "./index-vy8zejts.js";
6
+ } from "./index-eyzwc7gz.js";
7
7
  import {
8
8
  findRoutingFile,
9
9
  wireRoute
10
- } from "./index-g8489j4d.js";
10
+ } from "./index-a4ws2jwd.js";
11
11
 
12
12
  // src/cli/generate/naming.ts
13
13
  var tokenize = (raw) => raw.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").split(/[^a-zA-Z0-9]+/).filter((token) => token.length > 0).map((token) => token.toLowerCase());
@@ -11,7 +11,7 @@ import {
11
11
  } from "./index-71gchbzt.js";
12
12
  import {
13
13
  loadIslandRegistryBuildInfo
14
- } from "./index-e6ysp900.js";
14
+ } from "./index-z794p5qg.js";
15
15
  import {
16
16
  createIslandRegistryDefinitionPlugin,
17
17
  createBunStringRawUnicodePlugin,
@@ -42,7 +42,7 @@ import {
42
42
  readDbScripts,
43
43
  startDatabase,
44
44
  stopDatabase
45
- } from "./index-v4cg4dvm.js";
45
+ } from "./index-exfkpjja.js";
46
46
  import {
47
47
  formatTimestamp2
48
48
  } from "./index-74m7kh8c.js";
@@ -83,10 +83,10 @@ var killStaleProcesses = (port, logMessage) => {
83
83
  encoding: "utf-8"
84
84
  }).trim();
85
85
  } catch {
86
- return;
86
+ return [];
87
87
  }
88
88
  if (!output) {
89
- return;
89
+ return [];
90
90
  }
91
91
  const report = (message) => {
92
92
  if (logMessage) {
@@ -98,7 +98,7 @@ var killStaleProcesses = (port, logMessage) => {
98
98
  const pids = output.split(`
99
99
  `).map(Number).filter((pid) => pid !== process.pid && pid > 0);
100
100
  if (pids.length === 0) {
101
- return;
101
+ return [];
102
102
  }
103
103
  const projectDirectory = realpathSync(process.cwd());
104
104
  const holders = pids.map((pid) => ({
@@ -113,6 +113,7 @@ var killStaleProcesses = (port, logMessage) => {
113
113
  report(`Killed ${own.length} stale ${own.length === 1 ? "process" : "processes"} on port ${port}.`);
114
114
  for (const holder of foreign)
115
115
  report(`Port ${port} is in use by another process (pid ${holder.pid}: ${holder.command.slice(0, 120) || "unknown"}). It was left running; stop it or choose another port.`);
116
+ return foreign;
116
117
  };
117
118
  var openUrlInBrowser = (url, onError) => {
118
119
  if (process.env.ABSOLUTE_NO_OPEN)
@@ -7,7 +7,7 @@ import {
7
7
  } from "./index-tx0kx9zx.js";
8
8
  import {
9
9
  DEFAULT_SERVER_ENTRY
10
- } from "./index-v4cg4dvm.js";
10
+ } from "./index-exfkpjja.js";
11
11
 
12
12
  // src/cli/generate/frameworkKey.ts
13
13
  var FRAMEWORK_KEYS = [
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  findConfigObject
4
- } from "./index-vy8zejts.js";
4
+ } from "./index-eyzwc7gz.js";
5
5
  import {
6
6
  isRecord
7
7
  } from "./index-tx0kx9zx.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  isWSLEnvironment
4
- } from "./index-v4cg4dvm.js";
4
+ } from "./index-exfkpjja.js";
5
5
 
6
6
  // src/mobile/emulatorDoctor.ts
7
7
  import { access } from "fs/promises";
@@ -4,7 +4,7 @@ import {
4
4
  absoluteManagedAndroidSdkRoot2,
5
5
  detectAbsoluteMobileHost2,
6
6
  inspectAbsoluteMobileToolchain2
7
- } from "./index-52a2csjm.js";
7
+ } from "./index-ppphkyps.js";
8
8
  import {
9
9
  writeAbsoluteCapacitorConfig
10
10
  } from "./index-ypcqx24p.js";
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  detectAbsoluteMobileHost2,
4
4
  inspectAbsoluteMobileToolchain2
5
- } from "./index-52a2csjm.js";
5
+ } from "./index-ppphkyps.js";
6
6
  import {
7
7
  resolveAbsoluteIosXcodeTarget,
8
8
  fingerprintAbsoluteIosNativeProject
9
- } from "./index-wwnnfhm6.js";
9
+ } from "./index-w09fzs9f.js";
10
10
  import {
11
11
  normalizeAbsoluteIosDeviceHost,
12
12
  normalizeAbsoluteIosDeviceIdentifier,