@absolutejs/absolute 0.20.0-beta.137 → 0.20.0-beta.139

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 (118) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/changelog.json +35 -0
  3. package/dist/angular/browser.js +2 -2
  4. package/dist/angular/browser.js.map +3 -3
  5. package/dist/angular/components/constants.js +3 -0
  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 +2 -2
  9. package/dist/angular/index.js.map +3 -3
  10. package/dist/angular/server.js +2 -2
  11. package/dist/angular/server.js.map +3 -3
  12. package/dist/build.js +17 -9
  13. package/dist/build.js.map +7 -7
  14. package/dist/cli/{add-hvqeg5sz.js → add-a33ashpx.js} +9 -9
  15. package/dist/cli/{analyze-c2x2aym5.js → analyze-3cyek6v3.js} +3 -3
  16. package/dist/cli/{androidEmulatorController-j73a1br6.js → androidEmulatorController-3zn6a4j3.js} +6 -6
  17. package/dist/cli/{androidNativeWatcher-ctbnsr1v.js → androidNativeWatcher-wz7vhnkr.js} +6 -6
  18. package/dist/cli/{api-rk13rfd9.js → api-m3n8xbcv.js} +8 -8
  19. package/dist/cli/{build-20y4b6rj.js → build-25rz8v25.js} +3 -3
  20. package/dist/cli/{buildDepVendor-axqvbbm6.js → buildDepVendor-bpac1bhq.js} +3 -3
  21. package/dist/cli/{compile-brr8ad4a.js → compile-grhs9tj4.js} +6 -6
  22. package/dist/cli/{db-p8pc325y.js → db-5b4s1kvx.js} +2 -2
  23. package/dist/cli/{dev-k5mbc04f.js → dev-4ps2yg1z.js} +16 -16
  24. package/dist/cli/{doctor-8rm8p4dm.js → doctor-f13ntk9a.js} +3 -3
  25. package/dist/cli/{emulatorDoctor-cwa70kgt.js → emulatorDoctor-1m4rr9y3.js} +5 -5
  26. package/dist/cli/{emulatorInstaller-dx3fmm2m.js → emulatorInstaller-70v711bj.js} +6 -6
  27. package/dist/cli/{env-2107nff1.js → env-snb0597q.js} +3 -3
  28. package/dist/cli/{expoDevController-s70fj7vf.js → expoDevController-hen9sra5.js} +6 -6
  29. package/dist/cli/{expoProject-4x9q22xw.js → expoProject-kabqa80q.js} +1 -1
  30. package/dist/cli/{generate-nz4w03yz.js → generate-vx6tz1y2.js} +8 -8
  31. package/dist/cli/{heapDiff-2etr2r26.js → heapDiff-wqj8vrq8.js} +3 -3
  32. package/dist/cli/{htmx-0xcaqrny.js → htmx-dym03fq5.js} +6 -6
  33. package/dist/cli/{index-xcr3r6a1.js → index-14fbvz34.js} +2 -2
  34. package/dist/cli/{index-1ff9q1vx.js → index-3y57kd7x.js} +3 -3
  35. package/dist/cli/{index-j57pgg5m.js → index-52a2csjm.js} +1 -1
  36. package/dist/cli/{index-92hmw204.js → index-74m7kh8c.js} +1 -1
  37. package/dist/cli/{index-gmwb037j.js → index-7whcck3r.js} +1 -1
  38. package/dist/cli/{index-fkn59pcp.js → index-b1vyj26r.js} +3 -3
  39. package/dist/cli/{index-8w2wazrk.js → index-bvwkwgjw.js} +2 -2
  40. package/dist/cli/{index-adywn74r.js → index-cvkfb73g.js} +1 -1
  41. package/dist/cli/{index-8kdmmgvc.js → index-d3br7c47.js} +1 -1
  42. package/dist/cli/{index-s9374tcg.js → index-fezxjrgd.js} +1 -1
  43. package/dist/cli/{index-73sk1ney.js → index-g4ehq6ev.js} +1 -1
  44. package/dist/cli/{index-3gtnqd57.js → index-g8489j4d.js} +1 -1
  45. package/dist/cli/{index-djme2zmz.js → index-h078vn9f.js} +5 -5
  46. package/dist/cli/{index-ma1dw7x2.js → index-h5qx5jpk.js} +1 -1
  47. package/dist/cli/{index-1x1vah31.js → index-kye08pjx.js} +1 -1
  48. package/dist/cli/{index-g407dg4f.js → index-nrtt3x67.js} +18 -2
  49. package/dist/cli/index-pb1dcdw6.js +4 -0
  50. package/dist/cli/{index-jcjwsdqt.js → index-px7fqsfk.js} +1 -1
  51. package/dist/cli/{index-k4t9k1xk.js → index-v4cg4dvm.js} +2 -2
  52. package/dist/cli/{index-snbzdwb9.js → index-vy8zejts.js} +1 -1
  53. package/dist/cli/{index-wy0yh4jj.js → index-x1swv7rw.js} +1 -1
  54. package/dist/cli/{index-31j3beht.js → index-xj68ep9n.js} +2 -2
  55. package/dist/cli/{index-ppxed116.js → index-xw1byvzp.js} +1 -1
  56. package/dist/cli/{index-m1vntzf1.js → index-ys2rzqhg.js} +1 -1
  57. package/dist/cli/index.js +32 -32
  58. package/dist/cli/{info-kx5510rq.js → info-9ffx5h3h.js} +5 -5
  59. package/dist/cli/{inspect-5dj06x0m.js → inspect-c7s117j0.js} +5 -5
  60. package/dist/cli/{iosNativeWatcher-p1z40vbb.js → iosNativeWatcher-7n2a7nh5.js} +7 -7
  61. package/dist/cli/{iosSimulatorController-491k640d.js → iosSimulatorController-6qfhmbq0.js} +7 -7
  62. package/dist/cli/{islands-z4adh55n.js → islands-rq6wx0kh.js} +3 -3
  63. package/dist/cli/{logs-3p2vrq5h.js → logs-ej1add2b.js} +3 -3
  64. package/dist/cli/{ls-nkspq73y.js → ls-4m4yqwww.js} +3 -3
  65. package/dist/cli/{mem-h3f497cr.js → mem-5q7n3ymb.js} +5 -5
  66. package/dist/cli/{migrate-52bqqp08.js → migrate-6nm4kdf6.js} +2 -2
  67. package/dist/cli/{mobile-jx4e7r2w.js → mobile-p657bkqa.js} +82 -16719
  68. package/dist/cli/{prettier-c1624g36.js → prettier-phdtvqef.js} +1 -1
  69. package/dist/cli/{ps-0jedm91n.js → ps-0tryaye0.js} +6 -6
  70. package/dist/cli/{psTui-tpr5nbmc.js → psTui-0nx63pmr.js} +7 -7
  71. package/dist/cli/{remoteMacProtocol-5qxgxk21.js → remoteMacProtocol-2vffjhdd.js} +7 -7
  72. package/dist/cli/{remove-z0brj5nd.js → remove-qgme4h2s.js} +8 -8
  73. package/dist/cli/{routes-ey0sw1eq.js → routes-3xj256gx.js} +3 -3
  74. package/dist/cli/{start-7qsbfdxf.js → start-3m7bd02e.js} +7 -7
  75. package/dist/cli/{typecheck-nmf6e7k7.js → typecheck-w6kex2xj.js} +126 -39
  76. package/dist/cli/{workspace-yetzedke.js → workspace-atcxzyee.js} +5 -5
  77. package/dist/client/chunks/{islands-rc28k5sx.js → islands-eexr591d.js} +7 -7
  78. package/dist/client/chunks/{islands-rc28k5sx.js.map → islands-eexr591d.js.map} +3 -3
  79. package/dist/client/index.js +2 -2
  80. package/dist/dev/client/constants.ts +4 -0
  81. package/dist/dev/client/cssUtils.ts +94 -9
  82. package/dist/dev/serverBootstrap.js +1 -1
  83. package/dist/index.js +20 -9
  84. package/dist/index.js.map +8 -8
  85. package/dist/islands/index.js +2 -2
  86. package/dist/islands/index.js.map +3 -3
  87. package/dist/mobile/index.js +191 -16831
  88. package/dist/mobile/index.js.map +7 -51
  89. package/dist/mobile/remoteMacAgentEntry.js +145 -145
  90. package/dist/react/components/index.js +2 -2
  91. package/dist/react/components/index.js.map +3 -3
  92. package/dist/react/index.js +2 -2
  93. package/dist/react/index.js.map +3 -3
  94. package/dist/react/server.js +2 -2
  95. package/dist/react/server.js.map +3 -3
  96. package/dist/src/angular/components/constants.d.ts +3 -0
  97. package/dist/src/build/compileTailwind.d.ts +8 -2
  98. package/dist/src/cli/scripts/bunCheck.d.ts +19 -0
  99. package/dist/src/constants.d.ts +3 -0
  100. package/dist/src/core/build.d.ts +2 -0
  101. package/dist/src/mobile/nativePackages.d.ts +3 -0
  102. package/dist/svelte/index.js +2 -2
  103. package/dist/svelte/index.js.map +3 -3
  104. package/dist/svelte/server.js +2 -2
  105. package/dist/svelte/server.js.map +3 -3
  106. package/dist/types/client.d.ts +5 -0
  107. package/dist/types/style-module-shim.d.ts +15 -0
  108. package/dist/vue/components/Image.js +2 -2
  109. package/dist/vue/components/Image.js.map +3 -3
  110. package/dist/vue/components/index.js +2 -2
  111. package/dist/vue/components/index.js.map +3 -3
  112. package/dist/vue/index.js +2 -2
  113. package/dist/vue/index.js.map +3 -3
  114. package/dist/vue/server.js +2 -2
  115. package/dist/vue/server.js.map +3 -3
  116. package/package.json +11 -3
  117. package/dist/cli/index-fde3c297.js +0 -37
  118. /package/dist/cli/{index-hxqprc80.js → index-fgz435qn.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  BASE_36_RADIX
4
- } from "./index-hxqprc80.js";
4
+ } from "./index-fgz435qn.js";
5
5
 
6
6
  // src/cli/cache.ts
7
7
  import { mkdir } from "fs/promises";
@@ -1,23 +1,23 @@
1
1
  // @bun
2
2
  import {
3
3
  LIST_TUI_COLUMN_GAP
4
- } from "./index-hxqprc80.js";
4
+ } from "./index-fgz435qn.js";
5
5
  import"./index-71gchbzt.js";
6
6
  import {
7
7
  colors,
8
8
  padLine,
9
9
  visibleLength
10
- } from "./index-ppxed116.js";
10
+ } from "./index-xw1byvzp.js";
11
11
  import {
12
12
  discoverInstances,
13
13
  enrichInstances
14
- } from "./index-73sk1ney.js";
14
+ } from "./index-g4ehq6ev.js";
15
15
  import {
16
16
  formatBytes
17
- } from "./index-ma1dw7x2.js";
17
+ } from "./index-h5qx5jpk.js";
18
18
  import {
19
19
  getDurationString
20
- } from "./index-1x1vah31.js";
20
+ } from "./index-kye08pjx.js";
21
21
 
22
22
  // src/cli/scripts/ps.ts
23
23
  var killPid = (pid) => {
@@ -79,7 +79,7 @@ var runPs = async (args) => {
79
79
  }
80
80
  });
81
81
  if (args.includes("--watch") || args.includes("-w")) {
82
- const { runPsTui } = await import("./psTui-tpr5nbmc.js");
82
+ const { runPsTui } = await import("./psTui-0nx63pmr.js");
83
83
  await runPsTui();
84
84
  return;
85
85
  }
@@ -14,7 +14,7 @@ import {
14
14
  LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS,
15
15
  LIST_WATCH_REFRESH_MS,
16
16
  UNFOUND_INDEX
17
- } from "./index-hxqprc80.js";
17
+ } from "./index-fgz435qn.js";
18
18
  import"./index-71gchbzt.js";
19
19
  import {
20
20
  colors,
@@ -26,22 +26,22 @@ import {
26
26
  stripAnsi,
27
27
  truncateText,
28
28
  visibleLength
29
- } from "./index-ppxed116.js";
29
+ } from "./index-xw1byvzp.js";
30
30
  import {
31
31
  discoverInstances,
32
32
  enrichInstances
33
- } from "./index-73sk1ney.js";
33
+ } from "./index-g4ehq6ev.js";
34
34
  import {
35
35
  formatBytes
36
- } from "./index-ma1dw7x2.js";
36
+ } from "./index-h5qx5jpk.js";
37
37
  import {
38
38
  killStaleProcesses,
39
39
  openUrlInBrowser
40
- } from "./index-k4t9k1xk.js";
41
- import"./index-92hmw204.js";
40
+ } from "./index-v4cg4dvm.js";
41
+ import"./index-74m7kh8c.js";
42
42
  import {
43
43
  getDurationString
44
- } from "./index-1x1vah31.js";
44
+ } from "./index-kye08pjx.js";
45
45
 
46
46
  // src/cli/psTui.ts
47
47
  import { spawn } from "child_process";
@@ -15,13 +15,13 @@ import {
15
15
  runAbsoluteRemoteIosReleaseAcceptance2,
16
16
  startAbsoluteRemoteExpoIosDevSession2,
17
17
  startAbsoluteRemoteIosDevSession2
18
- } from "./index-gmwb037j.js";
19
- import"./index-adywn74r.js";
20
- import"./index-j57pgg5m.js";
21
- import"./index-k4t9k1xk.js";
22
- import"./index-92hmw204.js";
23
- import"./index-1x1vah31.js";
24
- import"./index-hxqprc80.js";
18
+ } from "./index-7whcck3r.js";
19
+ import"./index-cvkfb73g.js";
20
+ import"./index-52a2csjm.js";
21
+ import"./index-v4cg4dvm.js";
22
+ import"./index-74m7kh8c.js";
23
+ import"./index-kye08pjx.js";
24
+ import"./index-fgz435qn.js";
25
25
  export {
26
26
  buildAbsoluteRemoteIosRelease2 as buildAbsoluteRemoteIosRelease,
27
27
  captureAbsoluteRemoteMacCommand2 as captureAbsoluteRemoteMacCommand,
@@ -3,24 +3,24 @@ import {
3
3
  isFrameworkKey,
4
4
  frameworks,
5
5
  resolveProject
6
- } from "./index-snbzdwb9.js";
6
+ } from "./index-vy8zejts.js";
7
7
  import {
8
8
  applyAbsoluteConfigEdit
9
- } from "./index-8kdmmgvc.js";
9
+ } from "./index-d3br7c47.js";
10
10
  import"./index-h7qhz02e.js";
11
- import"./index-hxqprc80.js";
11
+ import"./index-fgz435qn.js";
12
12
  import {
13
13
  findRoutingFile
14
- } from "./index-3gtnqd57.js";
14
+ } from "./index-g8489j4d.js";
15
15
  import {
16
16
  colors
17
- } from "./index-ppxed116.js";
17
+ } from "./index-xw1byvzp.js";
18
18
  import {
19
19
  frameworkDependencyNames
20
20
  } from "./index-jjfbjv1z.js";
21
- import"./index-k4t9k1xk.js";
22
- import"./index-92hmw204.js";
23
- import"./index-1x1vah31.js";
21
+ import"./index-v4cg4dvm.js";
22
+ import"./index-74m7kh8c.js";
23
+ import"./index-kye08pjx.js";
24
24
 
25
25
  // src/cli/scripts/remove.ts
26
26
  import { existsSync, readFileSync } from "fs";
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import"./index-71gchbzt.js";
3
- import"./index-hxqprc80.js";
3
+ import"./index-fgz435qn.js";
4
4
  import {
5
5
  colors,
6
6
  padLine
7
- } from "./index-ppxed116.js";
7
+ } from "./index-xw1byvzp.js";
8
8
  import {
9
9
  discoverInstances,
10
10
  enrichInstances
11
- } from "./index-73sk1ney.js";
11
+ } from "./index-g4ehq6ev.js";
12
12
 
13
13
  // src/cli/scripts/routes.ts
14
14
  var METHOD_COLOR = {
@@ -1,20 +1,20 @@
1
1
  // @bun
2
2
  import {
3
3
  start2
4
- } from "./index-djme2zmz.js";
5
- import"./index-s9374tcg.js";
4
+ } from "./index-h078vn9f.js";
5
+ import"./index-fezxjrgd.js";
6
6
  import"./index-e6ysp900.js";
7
7
  import"./index-71gchbzt.js";
8
8
  import"./index-h7qhz02e.js";
9
9
  import"./index-qyxd5n9a.js";
10
10
  import"./index-43a1vvb7.js";
11
11
  import"./index-t7yf3vxs.js";
12
- import"./index-g407dg4f.js";
12
+ import"./index-nrtt3x67.js";
13
13
  import"./index-pch0v1z6.js";
14
- import"./index-k4t9k1xk.js";
15
- import"./index-92hmw204.js";
16
- import"./index-1x1vah31.js";
17
- import"./index-hxqprc80.js";
14
+ import"./index-v4cg4dvm.js";
15
+ import"./index-74m7kh8c.js";
16
+ import"./index-kye08pjx.js";
17
+ import"./index-fgz435qn.js";
18
18
  export {
19
19
  start2 as start
20
20
  };
@@ -7,21 +7,21 @@ import {
7
7
  } from "./index-h7qhz02e.js";
8
8
  import {
9
9
  ANSI_ESCAPE_CODE
10
- } from "./index-hxqprc80.js";
10
+ } from "./index-fgz435qn.js";
11
11
  import {
12
12
  getString,
13
13
  isRecord
14
14
  } from "./index-tx0kx9zx.js";
15
15
  import {
16
16
  DEFAULT_SERVER_ENTRY
17
- } from "./index-k4t9k1xk.js";
18
- import"./index-92hmw204.js";
19
- import"./index-1x1vah31.js";
17
+ } from "./index-v4cg4dvm.js";
18
+ import"./index-74m7kh8c.js";
19
+ import"./index-kye08pjx.js";
20
20
 
21
21
  // src/cli/scripts/typecheck.ts
22
- import { resolve, join, relative } from "path";
23
- import { existsSync, readFileSync } from "fs";
24
- import { mkdir, writeFile } from "fs/promises";
22
+ import { resolve as resolve2, join, relative } from "path";
23
+ import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
24
+ import { mkdir, rm, writeFile } from "fs/promises";
25
25
 
26
26
  // node_modules/jsonc-parser/lib/esm/impl/scanner.js
27
27
  function createScanner(text, ignoreTrivia = false) {
@@ -1029,11 +1029,69 @@ var summarizeImportAdvice = (entries, label) => {
1029
1029
  `);
1030
1030
  };
1031
1031
 
1032
+ // src/cli/scripts/bunCheck.ts
1033
+ import { createHash } from "crypto";
1034
+ import { existsSync, readFileSync, statSync } from "fs";
1035
+ import { dirname, resolve } from "path";
1036
+ var BUN_CHECK_MIN_VERSION = "1.4.3";
1037
+ var CHECKER_ENV = "ABSOLUTE_TYPECHECK_CHECKER";
1038
+ var THREADS_ENV = "ABSOLUTE_TYPECHECK_THREADS";
1039
+ var bunCheckCommand = (configPath, env = process.env, bun = process.execPath, terminal = process.stdout.isTTY === true) => {
1040
+ const threads = Number(env[THREADS_ENV]);
1041
+ const command = [bun, "check", "-p", configPath, "--all"];
1042
+ if (terminal)
1043
+ command.push("--pretty=true");
1044
+ if (Number.isSafeInteger(threads) && threads > 0)
1045
+ command.push(`--threads=${threads}`);
1046
+ return command;
1047
+ };
1048
+ var bunCheckSupported = (version = Bun.version, env = process.env) => env[CHECKER_ENV] !== "tsc" && Bun.semver.satisfies(version, `>=${BUN_CHECK_MIN_VERSION}`);
1049
+ var isFilePath = (specifier) => specifier.startsWith(".") || specifier.startsWith("/");
1050
+ var parentsOf = (config) => {
1051
+ let parsed;
1052
+ try {
1053
+ parsed = parse2(readFileSync(config, "utf-8"));
1054
+ } catch {
1055
+ return [];
1056
+ }
1057
+ const parents = isRecord(parsed) ? parsed.extends : undefined;
1058
+ const list = Array.isArray(parents) ? parents : [parents];
1059
+ return list.filter((parent) => typeof parent === "string" && isFilePath(parent)).map((parent) => resolve(dirname(config), parent));
1060
+ };
1061
+ var configChain = (start) => {
1062
+ const seen = [];
1063
+ const pending = [start];
1064
+ for (let next = pending.shift();next; next = pending.shift()) {
1065
+ if (seen.includes(next) || !existsSync(next))
1066
+ continue;
1067
+ seen.push(next);
1068
+ pending.push(...parentsOf(next));
1069
+ }
1070
+ return seen;
1071
+ };
1072
+ var checkFingerprint = (listing, configPath, version = Bun.version) => {
1073
+ const hash = createHash("sha256").update(`bun ${version}
1074
+ `);
1075
+ for (const config of configChain(configPath))
1076
+ hash.update(`${config}
1077
+ ${readFileSync(config, "utf-8")}
1078
+ `);
1079
+ const files = listing.split(`
1080
+ `).map((line) => line.trim()).filter((line) => line.startsWith("/")).sort();
1081
+ for (const file of files) {
1082
+ const stats = existsSync(file) ? statSync(file) : null;
1083
+ hash.update(stats ? `${file}\x00${stats.size}\x00${stats.mtimeMs}
1084
+ ` : `${file}\x00missing
1085
+ `);
1086
+ }
1087
+ return files.length > 0 ? hash.digest("hex") : null;
1088
+ };
1089
+
1032
1090
  // src/cli/scripts/typecheck.ts
1033
1091
  var isCommandService = (service) => service.kind === "command" || Array.isArray(service.command);
1034
- var resolveConfigPath = (configPath) => resolve(configPath ?? process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
1092
+ var resolveConfigPath = (configPath) => resolve2(configPath ?? process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
1035
1093
  var getTypecheckTargets = async (configPath) => {
1036
- if (!existsSync(resolveConfigPath(configPath))) {
1094
+ if (!existsSync2(resolveConfigPath(configPath))) {
1037
1095
  const defaultService = {};
1038
1096
  return [defaultService];
1039
1097
  }
@@ -1075,8 +1133,8 @@ var run = async (name, command) => {
1075
1133
  var shellEscape = (value) => `'${value.replaceAll("'", "'\\''")}'`;
1076
1134
  var runShell = async (name, command) => run(name, ["/bin/bash", "-lc", command]);
1077
1135
  var findBin = (name) => {
1078
- const local = resolve("node_modules", ".bin", name);
1079
- return existsSync(local) ? local : null;
1136
+ const local = resolve2("node_modules", ".bin", name);
1137
+ return existsSync2(local) ? local : null;
1080
1138
  };
1081
1139
  var ANSI_COLOR_REGEX = new RegExp(`${String.fromCharCode(ANSI_ESCAPE_CODE)}\\[[0-9;]*m`, "g");
1082
1140
  var ANSI_PURPLE_REGEX = `${String.fromCharCode(ANSI_ESCAPE_CODE)}[35m`;
@@ -1135,12 +1193,12 @@ var ABSOLUTE_INTERNAL_EXCLUDES = [
1135
1193
  ];
1136
1194
  var resolveAbsoluteTypeFile = (fileName) => {
1137
1195
  const candidates = [
1138
- resolve("node_modules/@absolutejs/absolute/dist/types", fileName),
1139
- resolve(import.meta.dir, "../types", fileName),
1140
- resolve(import.meta.dir, "../../types", fileName),
1141
- resolve(import.meta.dir, "../../../types", fileName)
1196
+ resolve2("node_modules/@absolutejs/absolute/dist/types", fileName),
1197
+ resolve2(import.meta.dir, "../types", fileName),
1198
+ resolve2(import.meta.dir, "../../types", fileName),
1199
+ resolve2(import.meta.dir, "../../../types", fileName)
1142
1200
  ];
1143
- return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
1201
+ return candidates.find((candidate) => existsSync2(candidate)) ?? candidates[0];
1144
1202
  };
1145
1203
  var ABSOLUTE_TYPECHECK_FILES = [
1146
1204
  resolveAbsoluteTypeFile("style-module-shim.d.ts")
@@ -1148,7 +1206,7 @@ var ABSOLUTE_TYPECHECK_FILES = [
1148
1206
  var EMPTY_TSCONFIG = {};
1149
1207
  var readProjectTsconfig = () => {
1150
1208
  try {
1151
- const parsed = parse2(readFileSync(resolve("tsconfig.json"), "utf-8"));
1209
+ const parsed = parse2(readFileSync2(resolve2("tsconfig.json"), "utf-8"));
1152
1210
  return isRecord(parsed) ? parsed : EMPTY_TSCONFIG;
1153
1211
  } catch {
1154
1212
  return EMPTY_TSCONFIG;
@@ -1201,14 +1259,14 @@ var buildVueTscCheck = async (cacheDir) => {
1201
1259
  rootDir: ".."
1202
1260
  },
1203
1261
  exclude: getProjectTypecheckExcludes(),
1204
- extends: resolve("tsconfig.json"),
1262
+ extends: resolve2("tsconfig.json"),
1205
1263
  include: getProjectTypecheckIncludes()
1206
1264
  }, null, "\t"));
1207
1265
  const base = [
1208
1266
  vueTscBin,
1209
1267
  "--noEmit",
1210
1268
  "--project",
1211
- resolve(vueTsconfigPath),
1269
+ resolve2(vueTsconfigPath),
1212
1270
  "--pretty"
1213
1271
  ];
1214
1272
  const cached = await run("vue-tsc", [
@@ -1237,38 +1295,65 @@ var buildAngularCheck = async (cacheDir, angularDir) => {
1237
1295
  rootDir: ".."
1238
1296
  },
1239
1297
  exclude: getProjectTypecheckExcludes(),
1240
- extends: resolve("tsconfig.json"),
1298
+ extends: resolve2("tsconfig.json"),
1241
1299
  include: [
1242
1300
  ...getProjectDeclarationIncludes(),
1243
1301
  `../${angularDir}/**/*`
1244
1302
  ]
1245
1303
  }, null, "\t"));
1246
- return runShell("ngc", `${shellEscape(ngcBin)} -p ${shellEscape(resolve(angularTsconfigPath))}`);
1304
+ return runShell("ngc", `${shellEscape(ngcBin)} -p ${shellEscape(resolve2(angularTsconfigPath))}`);
1247
1305
  };
1248
- var buildTscCheck = (cacheDir) => {
1306
+ var writeTypecheckConfig = async (cacheDir, checker) => {
1307
+ const tscConfigPath = join(cacheDir, checker === "tsc" ? "tsconfig.typecheck.json" : "tsconfig.typecheck.bun.json");
1308
+ await writeFile(tscConfigPath, JSON.stringify({
1309
+ compilerOptions: checker === "tsc" ? { rootDir: ".." } : {},
1310
+ exclude: getProjectTypecheckExcludes(),
1311
+ extends: resolve2("tsconfig.json"),
1312
+ include: getProjectTypecheckIncludes()
1313
+ }, null, "\t"));
1314
+ return resolve2(tscConfigPath);
1315
+ };
1316
+ var buildTscCheck = async (cacheDir) => {
1249
1317
  const tscBin = findBin("tsc");
1250
1318
  if (!tscBin) {
1251
1319
  console.error("\x1B[31m\u2717\x1B[0m typescript is required for type checking. Install it: bun add -d typescript");
1252
1320
  process.exit(1);
1253
1321
  }
1254
- const tscConfigPath = join(cacheDir, "tsconfig.typecheck.json");
1255
- return writeFile(tscConfigPath, JSON.stringify({
1256
- compilerOptions: {
1257
- rootDir: ".."
1258
- },
1259
- exclude: getProjectTypecheckExcludes(),
1260
- extends: resolve("tsconfig.json"),
1261
- include: getProjectTypecheckIncludes()
1262
- }, null, "\t")).then(() => run("tsc", [
1322
+ const tscConfigPath = await writeTypecheckConfig(cacheDir, "tsc");
1323
+ return run("tsc", [
1263
1324
  tscBin,
1264
1325
  "--noEmit",
1265
1326
  "--project",
1266
- resolve(tscConfigPath),
1327
+ tscConfigPath,
1267
1328
  "--incremental",
1268
1329
  "--tsBuildInfoFile",
1269
1330
  join(cacheDir, "tsc.tsbuildinfo"),
1270
1331
  "--pretty"
1271
- ]));
1332
+ ]);
1333
+ };
1334
+ var BUN_CHECK_PASS_FILE = "bun-check.pass";
1335
+ var UNCHANGED = "unchanged since the last pass";
1336
+ var buildBunCheck = async (cacheDir) => {
1337
+ const configPath = await writeTypecheckConfig(cacheDir, "bun");
1338
+ const passFile = join(cacheDir, BUN_CHECK_PASS_FILE);
1339
+ const listing = await spawnChecker("bun check", [
1340
+ process.execPath,
1341
+ "check",
1342
+ "-p",
1343
+ configPath,
1344
+ "--listFilesOnly"
1345
+ ]);
1346
+ const fingerprint = listing.exitCode === 0 ? checkFingerprint(listing.output, configPath) : null;
1347
+ const lastPass = existsSync2(passFile) ? readFileSync2(passFile, "utf-8").trim() : null;
1348
+ if (fingerprint !== null && fingerprint === lastPass)
1349
+ return { exitCode: 0, name: "bun check", output: UNCHANGED };
1350
+ const result = await spawnChecker("bun check", bunCheckCommand(configPath));
1351
+ if (result.exitCode === 0 && fingerprint !== null)
1352
+ await writeFile(passFile, `${fingerprint}
1353
+ `);
1354
+ else if (existsSync2(passFile))
1355
+ await rm(passFile, { force: true });
1356
+ return result;
1272
1357
  };
1273
1358
  var buildSvelteCheck = async (cacheDir, svelteDir) => {
1274
1359
  const svelteBin = findBin("svelte-check");
@@ -1278,7 +1363,7 @@ var buildSvelteCheck = async (cacheDir, svelteDir) => {
1278
1363
  }
1279
1364
  const svelteTsconfigPath = join(cacheDir, "tsconfig.svelte-check.json");
1280
1365
  await writeFile(svelteTsconfigPath, JSON.stringify({
1281
- extends: resolve("tsconfig.json"),
1366
+ extends: resolve2("tsconfig.json"),
1282
1367
  files: ABSOLUTE_TYPECHECK_FILES,
1283
1368
  include: [
1284
1369
  ...getProjectDeclarationIncludes(),
@@ -1288,7 +1373,7 @@ var buildSvelteCheck = async (cacheDir, svelteDir) => {
1288
1373
  return run("svelte-check", [
1289
1374
  svelteBin,
1290
1375
  "--tsconfig",
1291
- resolve(svelteTsconfigPath),
1376
+ resolve2(svelteTsconfigPath),
1292
1377
  "--threshold",
1293
1378
  "error",
1294
1379
  "--compiler-warnings",
@@ -1301,11 +1386,11 @@ var buildSvelteCheck = async (cacheDir, svelteDir) => {
1301
1386
  var IMPORT_ADVICE_FLAG = "--import-advice";
1302
1387
  var importAdviceRequested = () => process.argv.includes(IMPORT_ADVICE_FLAG) || process.env.ABSOLUTE_IMPORT_ADVICE === "1";
1303
1388
  var serverEntryPaths = (targets) => [
1304
- ...new Set(targets.map((target) => resolve(target.cwd ?? ".", target.entry ?? DEFAULT_SERVER_ENTRY)).filter((path) => existsSync(path)))
1389
+ ...new Set(targets.map((target) => resolve2(target.cwd ?? ".", target.entry ?? DEFAULT_SERVER_ENTRY)).filter((path) => existsSync2(path)))
1305
1390
  ];
1306
1391
  var adviceFor = (path, detailed) => {
1307
1392
  const label = relative(process.cwd(), path) || path;
1308
- const entries = deferrableEntryImports(readFileSync(path, "utf-8"), path);
1393
+ const entries = deferrableEntryImports(readFileSync2(path, "utf-8"), path);
1309
1394
  return detailed ? formatImportAdvice(entries, label) : summarizeImportAdvice(entries, label);
1310
1395
  };
1311
1396
  var printAdviceFor = (path, detailed) => {
@@ -1336,7 +1421,8 @@ var typecheck = async (configPath) => {
1336
1421
  const cacheDir = ".absolutejs";
1337
1422
  await mkdir(cacheDir, { recursive: true });
1338
1423
  const checks = [];
1339
- checks.push(hasVue ? buildVueTscCheck(cacheDir) : buildTscCheck(cacheDir));
1424
+ const plainCheck = bunCheckSupported() ? buildBunCheck : buildTscCheck;
1425
+ checks.push(hasVue ? buildVueTscCheck(cacheDir) : plainCheck(cacheDir));
1340
1426
  for (const svelteDir of hasSvelte ? svelteDirs : []) {
1341
1427
  checks.push(buildSvelteCheck(cacheDir, svelteDir));
1342
1428
  }
@@ -1347,7 +1433,8 @@ var typecheck = async (configPath) => {
1347
1433
  const failed = results.filter((res) => res.exitCode !== 0);
1348
1434
  const detailedAdvice = importAdviceRequested();
1349
1435
  if (failed.length === 0) {
1350
- console.log("\x1B[32m\u2713\x1B[0m Typecheck passed");
1436
+ const unchanged = results.every((res) => res.output === UNCHANGED);
1437
+ console.log(`\x1B[32m\u2713\x1B[0m Typecheck passed${unchanged ? ` (${UNCHANGED})` : ""}`);
1351
1438
  reportImportAdvice(targets, detailedAdvice, true);
1352
1439
  return;
1353
1440
  }
@@ -25,7 +25,7 @@ import {
25
25
  WORKSPACE_TUI_STATUS_WIDTH,
26
26
  WORKSPACE_TUI_TARGET_PADDING_WIDTH,
27
27
  WORKSPACE_TUI_VISIBILITY_WIDTH
28
- } from "./index-hxqprc80.js";
28
+ } from "./index-fgz435qn.js";
29
29
  import {
30
30
  getWorkspaceServices,
31
31
  loadRawConfig
@@ -45,16 +45,16 @@ import {
45
45
  stripAnsi,
46
46
  truncateText,
47
47
  wrapText
48
- } from "./index-ppxed116.js";
48
+ } from "./index-xw1byvzp.js";
49
49
  import {
50
50
  DEFAULT_SERVER_ENTRY,
51
51
  isWSLEnvironment,
52
52
  killStaleProcesses
53
- } from "./index-k4t9k1xk.js";
54
- import"./index-92hmw204.js";
53
+ } from "./index-v4cg4dvm.js";
54
+ import"./index-74m7kh8c.js";
55
55
  import {
56
56
  getDurationString
57
- } from "./index-1x1vah31.js";
57
+ } from "./index-kye08pjx.js";
58
58
 
59
59
  // src/cli/scripts/workspace.ts
60
60
  import {
@@ -278,8 +278,8 @@ function parse(path) {
278
278
  var ret = { root: "", dir: "", base: "", ext: "", name: "" };
279
279
  if (path.length === 0)
280
280
  return ret;
281
- var code = path.charCodeAt(0), isAbsolute2 = code === 47, start;
282
- if (isAbsolute2)
281
+ var code = path.charCodeAt(0), isAbsolute = code === 47, start;
282
+ if (isAbsolute)
283
283
  ret.root = "/", start = 1;
284
284
  else
285
285
  start = 0;
@@ -304,12 +304,12 @@ function parse(path) {
304
304
  }
305
305
  if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
306
306
  if (end !== -1)
307
- if (startPart === 0 && isAbsolute2)
307
+ if (startPart === 0 && isAbsolute)
308
308
  ret.base = ret.name = path.slice(1, end);
309
309
  else
310
310
  ret.base = ret.name = path.slice(startPart, end);
311
311
  } else {
312
- if (startPart === 0 && isAbsolute2)
312
+ if (startPart === 0 && isAbsolute)
313
313
  ret.name = path.slice(1, startDot), ret.base = path.slice(1, end);
314
314
  else
315
315
  ret.name = path.slice(startPart, startDot), ret.base = path.slice(startPart, end);
@@ -317,7 +317,7 @@ function parse(path) {
317
317
  }
318
318
  if (startPart > 0)
319
319
  ret.dir = path.slice(0, startPart - 1);
320
- else if (isAbsolute2)
320
+ else if (isAbsolute)
321
321
  ret.dir = "/";
322
322
  return ret;
323
323
  }
@@ -432,5 +432,5 @@ export {
432
432
  mountAngularIsland
433
433
  };
434
434
 
435
- //# debugId=42CA21376B16F2BA64756E2164756E21
436
- //# sourceMappingURL=islands-rc28k5sx.js.map
435
+ //# debugId=5899F49F18FDF6B264756E2164756E21
436
+ //# sourceMappingURL=islands-eexr591d.js.map