@absolutejs/absolute 0.20.0-beta.92 → 0.20.0-beta.94

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 (39) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/changelog.json +48 -0
  3. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  4. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  5. package/dist/build/buildWorker.js +10 -1
  6. package/dist/build.js +16 -7
  7. package/dist/build.js.map +9 -8
  8. package/dist/cli/{compile-vf61bv90.js → compile-qg75ewma.js} +5 -5
  9. package/dist/cli/{dev-perzmh2w.js → dev-sm9px53g.js} +83 -11
  10. package/dist/cli/{expoDevController-tr63cg78.js → expoDevController-a0jk8d43.js} +31 -2
  11. package/dist/cli/expoNativeWatcher-rmc95bak.js +138 -0
  12. package/dist/cli/{expoProject-djc0vk7g.js → expoProject-h38entbj.js} +1 -1
  13. package/dist/cli/{index-8zrnvazp.js → index-0t1cxstr.js} +261 -48
  14. package/dist/cli/{index-fn44wefq.js → index-3sdvzrv2.js} +37 -28
  15. package/dist/cli/{index-gxkmg2ss.js → index-51yyq29s.js} +1 -1
  16. package/dist/cli/index-bw4ktfnz.js +11 -0
  17. package/dist/cli/{index-751czk1b.js → index-d8va9b7v.js} +1 -1
  18. package/dist/cli/index.js +5 -5
  19. package/dist/cli/{mobile-yk7qr9qg.js → mobile-dev4mjsa.js} +20 -12
  20. package/dist/cli/{remoteMacProtocol-vw931n0a.js → remoteMacProtocol-kqvkp0qd.js} +2 -1
  21. package/dist/cli/{start-ef7tgbmf.js → start-0ddnh0y4.js} +3 -3
  22. package/dist/dev/client/handlers/svelte.ts +11 -15
  23. package/dist/dev/serverBootstrap.js +10 -1
  24. package/dist/index.js +17 -8
  25. package/dist/index.js.map +11 -10
  26. package/dist/mobile/index.js +599 -208
  27. package/dist/mobile/index.js.map +11 -8
  28. package/dist/mobile/mobilePreviewClient.ts +1 -1
  29. package/dist/mobile/remoteMacAgentEntry.js +354 -188
  30. package/dist/src/dev/clientManager.d.ts +2 -2
  31. package/dist/src/mobile/androidConformance.d.ts +4 -1
  32. package/dist/src/mobile/expoActivityResultRecovery.d.ts +1 -0
  33. package/dist/src/mobile/expoBridge.d.ts +2 -2
  34. package/dist/src/mobile/expoDevController.d.ts +2 -6
  35. package/dist/src/mobile/expoNativeWatcher.d.ts +21 -0
  36. package/dist/src/mobile/index.d.ts +1 -0
  37. package/dist/src/mobile/remoteMacProtocol.d.ts +1 -4
  38. package/dist/src/utils/unrefTimer.d.ts +5 -0
  39. package/package.json +5 -2
package/CHANGELOG.md CHANGED
@@ -6,6 +6,30 @@ This file is generated by `absolute-changelog` from the entries in
6
6
  `changelog/`. Edit an entry, not this file — and add new ones under
7
7
  `changelog/unreleased/`.
8
8
 
9
+ ## 0.20.0-beta.94 — 2026-09-15
10
+
11
+ ### Added
12
+
13
+ - **Expo Android restores in-flight camera results after background process death** (`ABSOLUTE_EXPO_BRIDGE_METHODS`, `parseAbsoluteExpoBridgeMessage`)
14
+ Generated Expo shells expose the provider-neutral restored-operation queue through the allowlisted bridge, and an installed API 36 gate proves exactly-once camera recovery without leaking native file paths.
15
+
16
+ ### Fixed
17
+
18
+ - **WSL Expo Android rebuilds preserve a compatible Windows Bun lockfile until source dependencies change**
19
+ AbsoluteJS hashes the source lock input and invalidates the mirrored Windows lock only when dependencies change, avoiding repeated resolution while keeping each host Bun version in control of its own lock format.
20
+
21
+ ## 0.20.0-beta.93 — 2026-09-13
22
+
23
+ ### Added
24
+
25
+ - **Expo development now preserves one Metro process across automatic native rebuilds and provides installed-app HMR conformance for native React plus every supported embedded framework.** (`AbsoluteExpoDevSession`, `AbsoluteExpoNativeChange`, `AbsoluteExpoNativeWatcher`, `AbsoluteExpoNativeWatcherOptions`, `createAbsoluteExpoNativeWatcher`, `fingerprintAbsoluteExpoNativeInputs`, `isAbsoluteExpoNativeRootInput`, `startAbsoluteExpoDevSession`, `startAbsoluteRemoteExpoIosDevSession`, `writeAbsoluteExpoProject`)
26
+ Native inputs are fingerprinted and coalesced, local and Remote Mac sessions share a serialized rebuild contract, generated WebView hosts can select an AbsoluteJS path, native timing logs and telemetry remain data-minimal, and Android conformance verifies state preservation, rebuild, and reconnect.
27
+
28
+ ### Fixed
29
+
30
+ - **Svelte rune state now remains deterministic across template-only HMR updates.**
31
+ AbsoluteJS now lets Svelte's compiler-owned HMR wrapper complete its state restoration instead of racing it with a redundant remount.
32
+
9
33
  ## 0.20.0-beta.92 — 2026-09-13
10
34
 
11
35
  ### Changed
package/changelog.json CHANGED
@@ -2,6 +2,54 @@
2
2
  "contract": 1,
3
3
  "name": "@absolutejs/absolute",
4
4
  "releases": [
5
+ {
6
+ "changes": [
7
+ {
8
+ "detail": "Generated Expo shells expose the provider-neutral restored-operation queue through the allowlisted bridge, and an installed API 36 gate proves exactly-once camera recovery without leaking native file paths.",
9
+ "kind": "added",
10
+ "summary": "Expo Android restores in-flight camera results after background process death",
11
+ "symbols": [
12
+ "ABSOLUTE_EXPO_BRIDGE_METHODS",
13
+ "parseAbsoluteExpoBridgeMessage"
14
+ ]
15
+ },
16
+ {
17
+ "detail": "AbsoluteJS hashes the source lock input and invalidates the mirrored Windows lock only when dependencies change, avoiding repeated resolution while keeping each host Bun version in control of its own lock format.",
18
+ "kind": "fixed",
19
+ "summary": "WSL Expo Android rebuilds preserve a compatible Windows Bun lockfile until source dependencies change"
20
+ }
21
+ ],
22
+ "date": "2026-09-15",
23
+ "version": "0.20.0-beta.94"
24
+ },
25
+ {
26
+ "changes": [
27
+ {
28
+ "detail": "Native inputs are fingerprinted and coalesced, local and Remote Mac sessions share a serialized rebuild contract, generated WebView hosts can select an AbsoluteJS path, native timing logs and telemetry remain data-minimal, and Android conformance verifies state preservation, rebuild, and reconnect.",
29
+ "kind": "added",
30
+ "summary": "Expo development now preserves one Metro process across automatic native rebuilds and provides installed-app HMR conformance for native React plus every supported embedded framework.",
31
+ "symbols": [
32
+ "AbsoluteExpoDevSession",
33
+ "AbsoluteExpoNativeChange",
34
+ "AbsoluteExpoNativeWatcher",
35
+ "AbsoluteExpoNativeWatcherOptions",
36
+ "createAbsoluteExpoNativeWatcher",
37
+ "fingerprintAbsoluteExpoNativeInputs",
38
+ "isAbsoluteExpoNativeRootInput",
39
+ "startAbsoluteExpoDevSession",
40
+ "startAbsoluteRemoteExpoIosDevSession",
41
+ "writeAbsoluteExpoProject"
42
+ ]
43
+ },
44
+ {
45
+ "detail": "AbsoluteJS now lets Svelte's compiler-owned HMR wrapper complete its state restoration instead of racing it with a redundant remount.",
46
+ "kind": "fixed",
47
+ "summary": "Svelte rune state now remains deterministic across template-only HMR updates."
48
+ }
49
+ ],
50
+ "date": "2026-09-13",
51
+ "version": "0.20.0-beta.93"
52
+ },
5
53
  {
6
54
  "changes": [
7
55
  {
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-d8AfPq/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-LcQpR5/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-d8AfPq/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-LcQpR5/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -48,7 +48,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
48
48
  getWarningController()?.maybeWarn(primitiveName);
49
49
  };
50
50
 
51
- // .angular-partial-tmp-d8AfPq/src/core/streamingSlotRegistry.ts
51
+ // .angular-partial-tmp-LcQpR5/src/core/streamingSlotRegistry.ts
52
52
  var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
53
53
  var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
54
54
  var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
@@ -37,6 +37,15 @@ var init_startupTimings = __esm(() => {
37
37
  startupTimingsEnabled = devProfileEnabled || isTruthyFlag(process.env.ABSOLUTE_STARTUP_TIMINGS);
38
38
  });
39
39
 
40
+ // src/utils/unrefTimer.ts
41
+ var unrefTimer = (timer) => {
42
+ if (timer === null || typeof timer !== "object" && typeof timer !== "function")
43
+ return;
44
+ const unref = Reflect.get(timer, "unref");
45
+ if (typeof unref === "function")
46
+ Reflect.apply(unref, timer, []);
47
+ };
48
+
40
49
  // src/build/workerPool.ts
41
50
  var exports_workerPool = {};
42
51
  __export(exports_workerPool, {
@@ -180,7 +189,7 @@ var MIN_WORKERS = 2, MAX_DEFAULT_WORKERS = 8, MAX_OVERRIDE_WORKERS = 64, WORKER_
180
189
  if (slots.length === 0)
181
190
  return;
182
191
  idleTimer = setTimeout(terminateWorkers, idleTimeoutMs);
183
- idleTimer.unref();
192
+ unrefTimer(idleTimer);
184
193
  };
185
194
  const takeJobFor = (slot) => {
186
195
  const affine = queue.findIndex((job2) => job2.affinityIndex === slot.index);
package/dist/build.js CHANGED
@@ -18167,6 +18167,15 @@ var init_vueAutoRouterTransform = __esm(() => {
18167
18167
  SETUP_APP_FUNCTION_REGEX = /\bexport\s+(async\s+function|function)\s+setupApp\b/;
18168
18168
  });
18169
18169
 
18170
+ // src/utils/unrefTimer.ts
18171
+ var unrefTimer = (timer) => {
18172
+ if (timer === null || typeof timer !== "object" && typeof timer !== "function")
18173
+ return;
18174
+ const unref = Reflect.get(timer, "unref");
18175
+ if (typeof unref === "function")
18176
+ Reflect.apply(unref, timer, []);
18177
+ };
18178
+
18170
18179
  // src/build/chainInlineSourcemaps.ts
18171
18180
  var exports_chainInlineSourcemaps = {};
18172
18181
  __export(exports_chainInlineSourcemaps, {
@@ -19128,7 +19137,7 @@ var MIN_WORKERS = 2, MAX_DEFAULT_WORKERS = 8, MAX_OVERRIDE_WORKERS = 64, WORKER_
19128
19137
  if (slots.length === 0)
19129
19138
  return;
19130
19139
  idleTimer = setTimeout(terminateWorkers, idleTimeoutMs);
19131
- idleTimer.unref();
19140
+ unrefTimer(idleTimer);
19132
19141
  };
19133
19142
  const takeJobFor = (slot) => {
19134
19143
  const affine = queue.findIndex((job2) => job2.affinityIndex === slot.index);
@@ -25855,7 +25864,7 @@ var safeRemoveFromGraph = (graph, fullPath) => {
25855
25864
  atomicRecoveryScan(eventDir);
25856
25865
  for (const delay of [25, 100]) {
25857
25866
  const timer = setTimeout(() => atomicRecoveryScan(eventDir), delay);
25858
- timer.unref();
25867
+ unrefTimer(timer);
25859
25868
  }
25860
25869
  }
25861
25870
  return;
@@ -27484,8 +27493,7 @@ var DEFERRED_TASK_FALLBACK_SECONDS = 15, setBootPhase = (phase) => {
27484
27493
  globalThis.__absoluteDeferredBootTasks = queue;
27485
27494
  queue.push(task);
27486
27495
  const timer = setTimeout(runDeferredBootTasks, DEFERRED_TASK_FALLBACK_SECONDS * MILLISECONDS_IN_A_SECOND);
27487
- if (typeof timer === "object" && "unref" in timer)
27488
- timer.unref();
27496
+ unrefTimer(timer);
27489
27497
  }, runDeferredBootTasks = () => {
27490
27498
  const tasks = globalThis.__absoluteDeferredBootTasks ?? [];
27491
27499
  globalThis.__absoluteDeferredBootTasks = [];
@@ -27534,8 +27542,7 @@ var DEFAULT_BATCH_SIZE = 12, DEFAULT_POLL_MS = 25, DEFAULT_MAX_PAUSE_MS = 2000,
27534
27542
  return batch;
27535
27543
  }, defaultSleep = (delayMs) => new Promise((resolve44) => {
27536
27544
  const timer = setTimeout(resolve44, delayMs);
27537
- if (typeof timer === "object" && "unref" in timer)
27538
- timer.unref();
27545
+ unrefTimer(timer);
27539
27546
  }), dependencyOrderedSequence = function* (files, getEntrySources, getDependencies) {
27540
27547
  const remaining = new Set(files);
27541
27548
  let lastEntryCount = NO_ENTRIES_YET;
@@ -27616,6 +27623,7 @@ var DEFAULT_BATCH_SIZE = 12, DEFAULT_POLL_MS = 25, DEFAULT_MAX_PAUSE_MS = 2000,
27616
27623
  }
27617
27624
  };
27618
27625
  };
27626
+ var init_idleScheduler = () => {};
27619
27627
 
27620
27628
  // src/mobile/config.ts
27621
27629
  var exports_config = {};
@@ -32895,6 +32903,7 @@ var init_prepare = __esm(() => {
32895
32903
  init_bootTimeline();
32896
32904
  init_logger();
32897
32905
  init_bootLifecycle();
32906
+ init_idleScheduler();
32898
32907
  MAX_STATIC_ROUTE_COUNT = Number.MAX_SAFE_INTEGER;
32899
32908
  MOBILE_DEV_MODULE_HEADERS = {
32900
32909
  "Cache-Control": "no-store",
@@ -37949,5 +37958,5 @@ export {
37949
37958
  devBuild
37950
37959
  };
37951
37960
 
37952
- //# debugId=5D4C20D73CC0DA3264756E2164756E21
37961
+ //# debugId=BBDBAF4DAD912FB164756E2164756E21
37953
37962
  //# sourceMappingURL=build.js.map