@absolutejs/absolute 0.20.0-beta.91 → 0.20.0-beta.93
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.
- package/CHANGELOG.md +18 -0
- package/changelog.json +41 -0
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/build/buildWorker.js +10 -1
- package/dist/build.js +16 -7
- package/dist/build.js.map +9 -8
- package/dist/cli/{compile-5hchbcbd.js → compile-wkfd88w7.js} +5 -5
- package/dist/cli/{dev-aykeaa7b.js → dev-01zcxngn.js} +83 -11
- package/dist/cli/{expoDevController-tr63cg78.js → expoDevController-k15hftqn.js} +25 -1
- package/dist/cli/expoNativeWatcher-rmc95bak.js +138 -0
- package/dist/cli/{expoProject-dac8fqhq.js → expoProject-mmm3s62b.js} +1 -1
- package/dist/cli/{index-fn44wefq.js → index-3sdvzrv2.js} +37 -28
- package/dist/cli/index-bw4ktfnz.js +11 -0
- package/dist/cli/{index-jqdt7841.js → index-kh44yx23.js} +1 -1
- package/dist/cli/{index-39j0dhq7.js → index-v5knwk7v.js} +1 -1
- package/dist/cli/{index-tame6e2c.js → index-wqhbxtyp.js} +49 -12
- package/dist/cli/index.js +5 -5
- package/dist/cli/{mobile-bg1jy34n.js → mobile-pbe1a667.js} +20 -12
- package/dist/cli/{remoteMacProtocol-vw931n0a.js → remoteMacProtocol-kqvkp0qd.js} +2 -1
- package/dist/cli/{start-7jg0csqy.js → start-dw5crgp7.js} +3 -3
- package/dist/dev/client/handlers/svelte.ts +11 -15
- package/dist/dev/serverBootstrap.js +10 -1
- package/dist/index.js +17 -8
- package/dist/index.js.map +11 -10
- package/dist/mobile/index.js +371 -162
- package/dist/mobile/index.js.map +10 -8
- package/dist/mobile/mobilePreviewClient.ts +1 -1
- package/dist/mobile/remoteMacAgentEntry.js +105 -68
- package/dist/src/dev/clientManager.d.ts +2 -2
- package/dist/src/mobile/androidConformance.d.ts +4 -1
- package/dist/src/mobile/expoDevController.d.ts +2 -6
- package/dist/src/mobile/expoNativeObservability.d.ts +1 -1
- package/dist/src/mobile/expoNativeWatcher.d.ts +21 -0
- package/dist/src/mobile/index.d.ts +1 -0
- package/dist/src/mobile/remoteMacProtocol.d.ts +1 -4
- package/dist/src/utils/unrefTimer.d.ts +5 -0
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,24 @@ 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.93 — 2026-09-13
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **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`)
|
|
14
|
+
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.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **Svelte rune state now remains deterministic across template-only HMR updates.**
|
|
19
|
+
AbsoluteJS now lets Svelte's compiler-owned HMR wrapper complete its state restoration instead of racing it with a redundant remount.
|
|
20
|
+
|
|
21
|
+
## 0.20.0-beta.92 — 2026-09-13
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **Expo iOS now has an automated native observability gate for generated Swift compilation, trusted-relay redaction, restart-safe retry, acknowledgement, and deduplication.** (`expoNativeObservabilityRuntimeSource`)
|
|
26
|
+
|
|
9
27
|
## 0.20.0-beta.91 — 2026-09-13
|
|
10
28
|
|
|
11
29
|
### Added
|
package/changelog.json
CHANGED
|
@@ -2,6 +2,47 @@
|
|
|
2
2
|
"contract": 1,
|
|
3
3
|
"name": "@absolutejs/absolute",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"changes": [
|
|
7
|
+
{
|
|
8
|
+
"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.",
|
|
9
|
+
"kind": "added",
|
|
10
|
+
"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.",
|
|
11
|
+
"symbols": [
|
|
12
|
+
"AbsoluteExpoDevSession",
|
|
13
|
+
"AbsoluteExpoNativeChange",
|
|
14
|
+
"AbsoluteExpoNativeWatcher",
|
|
15
|
+
"AbsoluteExpoNativeWatcherOptions",
|
|
16
|
+
"createAbsoluteExpoNativeWatcher",
|
|
17
|
+
"fingerprintAbsoluteExpoNativeInputs",
|
|
18
|
+
"isAbsoluteExpoNativeRootInput",
|
|
19
|
+
"startAbsoluteExpoDevSession",
|
|
20
|
+
"startAbsoluteRemoteExpoIosDevSession",
|
|
21
|
+
"writeAbsoluteExpoProject"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"detail": "AbsoluteJS now lets Svelte's compiler-owned HMR wrapper complete its state restoration instead of racing it with a redundant remount.",
|
|
26
|
+
"kind": "fixed",
|
|
27
|
+
"summary": "Svelte rune state now remains deterministic across template-only HMR updates."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"date": "2026-09-13",
|
|
31
|
+
"version": "0.20.0-beta.93"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"changes": [
|
|
35
|
+
{
|
|
36
|
+
"kind": "changed",
|
|
37
|
+
"summary": "Expo iOS now has an automated native observability gate for generated Swift compilation, trusted-relay redaction, restart-safe retry, acknowledgement, and deduplication.",
|
|
38
|
+
"symbols": [
|
|
39
|
+
"expoNativeObservabilityRuntimeSource"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"date": "2026-09-13",
|
|
44
|
+
"version": "0.20.0-beta.92"
|
|
45
|
+
},
|
|
5
46
|
{
|
|
6
47
|
"changes": [
|
|
7
48
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-SWiKxc/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-
|
|
4
|
+
// .angular-partial-tmp-SWiKxc/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-
|
|
51
|
+
// .angular-partial-tmp-SWiKxc/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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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=
|
|
37961
|
+
//# debugId=BBDBAF4DAD912FB164756E2164756E21
|
|
37953
37962
|
//# sourceMappingURL=build.js.map
|