@absolutejs/absolute 0.20.0-beta.79 → 0.20.0-beta.80
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/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/{compile-ee32zv39.js → compile-x4hfth3p.js} +2 -2
- package/dist/cli/{dev-b1m7jp2t.js → dev-8vv459ty.js} +2 -2
- package/dist/cli/{expoDevController-bdm4cq6m.js → expoDevController-n19kb5fr.js} +129 -18
- package/dist/cli/{expoProject-c6tpj156.js → expoProject-3mmwtemn.js} +1 -1
- package/dist/cli/{index-wt6kdy5f.js → index-d4ar3mwd.js} +1 -1
- package/dist/cli/{index-eyx1hnm6.js → index-p8ezgd5e.js} +8 -12
- package/dist/cli/{index-7q7wjgkq.js → index-w5y7wxn9.js} +1 -1
- package/dist/cli/index.js +5 -5
- package/dist/cli/{mobile-hyxr0n58.js → mobile-mfp26v2d.js} +3 -3
- package/dist/cli/{start-ty8jjzn8.js → start-dtrp1pry.js} +3 -3
- package/dist/mobile/index.js +138 -31
- package/dist/mobile/index.js.map +4 -4
- package/dist/mobile/remoteMacAgentEntry.js +92 -93
- package/dist/src/mobile/expoDevController.d.ts +21 -0
- package/package.json +3 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-aw6snq/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-aw6snq/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-aw6snq/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";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
createIslandRegistryDefinitionPlugin,
|
|
13
13
|
finalizeAbsoluteMobileCompatibilityBuild,
|
|
14
14
|
resolveServerBundleExternals
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-w5y7wxn9.js";
|
|
16
16
|
import {
|
|
17
17
|
loadIslandRegistryBuildInfo
|
|
18
18
|
} from "./index-bzs19w3r.js";
|
|
@@ -36,7 +36,7 @@ import"./index-w5vswatm.js";
|
|
|
36
36
|
import {
|
|
37
37
|
normalizeAbsoluteMobileConfig
|
|
38
38
|
} from "./index-6fb7k6dg.js";
|
|
39
|
-
import"./index-
|
|
39
|
+
import"./index-p8ezgd5e.js";
|
|
40
40
|
import {
|
|
41
41
|
ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV,
|
|
42
42
|
installAbsoluteMobileAuthEnvironment
|
|
@@ -1282,8 +1282,8 @@ var loadAbsoluteMobileDevModules = async () => {
|
|
|
1282
1282
|
iosNativeWatcher
|
|
1283
1283
|
] = await Promise.all([
|
|
1284
1284
|
import("./config-z8wwxatc.js"),
|
|
1285
|
-
import("./expoProject-
|
|
1286
|
-
import("./expoDevController-
|
|
1285
|
+
import("./expoProject-3mmwtemn.js"),
|
|
1286
|
+
import("./expoDevController-n19kb5fr.js"),
|
|
1287
1287
|
import("./nativeAuth-zx4tsb1f.js"),
|
|
1288
1288
|
import("./androidEmulatorController-nybhzc6c.js"),
|
|
1289
1289
|
import("./emulatorDoctor-y2nqmaha.js"),
|
|
@@ -50,8 +50,10 @@ var expoDevelopmentClientScheme = (appId) => `exp+${appId.toLowerCase().replaceA
|
|
|
50
50
|
var expoDevelopmentClientUrl = (appId, host, port) => `${expoDevelopmentClientScheme(appId)}://expo-development-client/?url=${encodeURIComponent(`http://${host}:${port}`)}`;
|
|
51
51
|
var captureCommand = (command) => {
|
|
52
52
|
const result = Bun.spawnSync(command, {
|
|
53
|
+
killSignal: "SIGKILL",
|
|
53
54
|
stderr: "ignore",
|
|
54
|
-
stdout: "pipe"
|
|
55
|
+
stdout: "pipe",
|
|
56
|
+
timeout: 30000
|
|
55
57
|
});
|
|
56
58
|
return { exitCode: result.exitCode, stdout: result.stdout.toString() };
|
|
57
59
|
};
|
|
@@ -94,7 +96,35 @@ var connectLocalExpoAndroid = (adb, appId, metroPort, capture, preferredDevice)
|
|
|
94
96
|
openDevelopmentClient();
|
|
95
97
|
return serial;
|
|
96
98
|
};
|
|
97
|
-
var
|
|
99
|
+
var launchLocalExpoAndroidRelease = (adb, appId, forwardedPort, capture, preferredDevice) => {
|
|
100
|
+
const devices = capture([adb, "devices"]);
|
|
101
|
+
if (devices.exitCode !== 0)
|
|
102
|
+
throw new Error("Could not inspect devices after the Expo release build.");
|
|
103
|
+
const ready = devices.stdout.split(/\r?\n/u).flatMap((line) => {
|
|
104
|
+
const match = /^(\S+)\s+device$/u.exec(line.trim());
|
|
105
|
+
return match?.[1] ? [match[1]] : [];
|
|
106
|
+
});
|
|
107
|
+
const serial = preferredDevice ? ready.find((value) => value === preferredDevice) : ready.find((value) => value.startsWith("emulator-")) ?? ready[0];
|
|
108
|
+
if (!serial)
|
|
109
|
+
throw new Error("Expo release build completed but no ready device was found.");
|
|
110
|
+
const run = (args, message) => {
|
|
111
|
+
if (capture([adb, "-s", serial, ...args]).exitCode !== 0)
|
|
112
|
+
throw new Error(message);
|
|
113
|
+
};
|
|
114
|
+
run(["reverse", `tcp:${forwardedPort}`, `tcp:${forwardedPort}`], "Expo Android release forwarding failed.");
|
|
115
|
+
run(["shell", "am", "force-stop", appId], "Expo Android release reset failed.");
|
|
116
|
+
run([
|
|
117
|
+
"shell",
|
|
118
|
+
"monkey",
|
|
119
|
+
"-p",
|
|
120
|
+
appId,
|
|
121
|
+
"-c",
|
|
122
|
+
"android.intent.category.LAUNCHER",
|
|
123
|
+
"1"
|
|
124
|
+
], "Expo Android release launch failed.");
|
|
125
|
+
return serial;
|
|
126
|
+
};
|
|
127
|
+
var encodedWindowsExpoAndroidCommand = (project, androidRoot, appId, args, capture, forwardedPort, preferredDevice, mode = "development") => {
|
|
98
128
|
const windowsSource = windowsPathFromWsl(project, capture);
|
|
99
129
|
const buildId = Bun.hash(resolvePath(project)).toString(16);
|
|
100
130
|
const buildDirectory = resolvePath(androidRoot, "..", "..", "ExpoBuilds", buildId.slice(0, 10));
|
|
@@ -110,15 +140,24 @@ var encodedWindowsExpoAndroidCommand = (project, androidRoot, appId, args, captu
|
|
|
110
140
|
`[IO.File]::WriteAllText($hook, [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('${realpathHook}')))`,
|
|
111
141
|
"$env:ABSOLUTE_EXPO_PHYSICAL_ROOT = $directory",
|
|
112
142
|
"$env:ABSOLUTE_EXPO_MAPPED_ROOT = $mappedProject",
|
|
143
|
+
"$env:ABSOLUTE_EXPO_APP_ROOT = $mappedProject",
|
|
113
144
|
'$env:NODE_OPTIONS = "--require=$hook"',
|
|
114
145
|
"$env:GRADLE_OPTS = (($env:GRADLE_OPTS + ' -Dorg.gradle.daemon=false').Trim())",
|
|
115
146
|
"$autolinkingCache = Join-Path $mappedProject 'android\\build\\generated\\autolinking'",
|
|
116
147
|
"if ([IO.Directory]::Exists($autolinkingCache)) { [IO.Directory]::Delete($autolinkingCache, $true) }",
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
148
|
+
...mode === "development" ? [
|
|
149
|
+
"$expo = Join-Path $mappedProject 'node_modules\\.bin\\expo.exe'",
|
|
150
|
+
"& $expo @expoArguments",
|
|
151
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android native build failed.' }"
|
|
152
|
+
] : [
|
|
153
|
+
"$gradle = Join-Path $mappedProject 'android\\gradlew.bat'",
|
|
154
|
+
"$androidProject = Join-Path $mappedProject 'android'",
|
|
155
|
+
"& $gradle --no-daemon --console=plain -p $androidProject assembleRelease",
|
|
156
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android release compilation failed.' }"
|
|
157
|
+
],
|
|
120
158
|
"$adb = Join-Path $androidHome 'platform-tools\\adb.exe'",
|
|
121
|
-
"$
|
|
159
|
+
"$deviceDeadline = [DateTime]::UtcNow.AddSeconds(60)",
|
|
160
|
+
"do { $readyDevices = @(& $adb devices) | Where-Object { $_ -match '\\tdevice$' } | ForEach-Object { ($_ -split '\\s+')[0] }; if (-not $readyDevices) { Start-Sleep -Milliseconds 500 } } while (-not $readyDevices -and [DateTime]::UtcNow -lt $deviceDeadline)",
|
|
122
161
|
...preferredDevice ? [
|
|
123
162
|
`$serial = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('${encode(preferredDevice)}'))`,
|
|
124
163
|
"if ($readyDevices -notcontains $serial) { throw 'The selected Expo Android device is not connected after build.' }"
|
|
@@ -127,16 +166,35 @@ var encodedWindowsExpoAndroidCommand = (project, androidRoot, appId, args, captu
|
|
|
127
166
|
"if (-not $serial) { $serial = $readyDevices | Select-Object -First 1 }"
|
|
128
167
|
],
|
|
129
168
|
"if (-not $serial) { throw 'Expo Android build completed but no ready device was found.' }",
|
|
130
|
-
|
|
131
|
-
|
|
169
|
+
...mode === "release" ? [
|
|
170
|
+
"$apk = Join-Path $mappedProject 'android\\app\\build\\outputs\\apk\\release\\app-release.apk'",
|
|
171
|
+
"$installOutput = Join-Path $env:TEMP ('absolutejs-adb-install-' + [Guid]::NewGuid().ToString('N') + '.out')",
|
|
172
|
+
"$installError = $installOutput + '.err'",
|
|
173
|
+
"$install = Start-Process -FilePath $adb -ArgumentList @('-s', $serial, 'install', '-r', $apk) -NoNewWindow -PassThru -RedirectStandardOutput $installOutput -RedirectStandardError $installError",
|
|
174
|
+
"if (-not $install.WaitForExit(900000)) { $install.Kill(); throw 'Expo Android release installation timed out after 15 minutes.' }",
|
|
175
|
+
"$install.WaitForExit()",
|
|
176
|
+
"$installText = ((Get-Content $installOutput -Raw -ErrorAction SilentlyContinue) + (Get-Content $installError -Raw -ErrorAction SilentlyContinue))",
|
|
177
|
+
"if ($installText) { Write-Output $installText.Trim() }",
|
|
178
|
+
"Remove-Item $installOutput, $installError -Force -ErrorAction SilentlyContinue",
|
|
179
|
+
"if ($install.ExitCode -ne 0 -and $installText -notmatch '(?m)^Success\\r?$') { throw 'Expo Android release installation failed.' }",
|
|
180
|
+
"$installedPackage = @(& $adb -s $serial shell pm path " + `'${appId}')`,
|
|
181
|
+
"if ($LASTEXITCODE -ne 0 -or $installedPackage -notmatch '^package:') { throw 'Expo Android release package verification failed.' }"
|
|
182
|
+
] : [],
|
|
183
|
+
`& $adb -s $serial reverse 'tcp:${forwardedPort}' 'tcp:${forwardedPort}'`,
|
|
184
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android port forwarding failed.' }",
|
|
132
185
|
`& $adb -s $serial shell am force-stop '${appId}'`,
|
|
133
|
-
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
186
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android application reset failed.' }",
|
|
187
|
+
...mode === "development" ? [
|
|
188
|
+
`$developmentUrl = '${developmentScheme}://expo-development-client/?url=' + [Uri]::EscapeDataString('http://localhost:${forwardedPort}')`,
|
|
189
|
+
`& $adb -s $serial shell am start -a android.intent.action.VIEW -d $developmentUrl '${appId}'`,
|
|
190
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android development-client launch failed.' }",
|
|
191
|
+
"Start-Sleep -Milliseconds 1000",
|
|
192
|
+
`& $adb -s $serial shell am start -a android.intent.action.VIEW -d $developmentUrl '${appId}'`,
|
|
193
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android development-client retry failed.' }"
|
|
194
|
+
] : [
|
|
195
|
+
`& $adb -s $serial shell monkey -p '${appId}' -c android.intent.category.LAUNCHER 1 | Out-Null`,
|
|
196
|
+
"if ($LASTEXITCODE -ne 0) { throw 'Expo Android release launch failed.' }"
|
|
197
|
+
]
|
|
140
198
|
].join("; ");
|
|
141
199
|
const source = [
|
|
142
200
|
"$ErrorActionPreference = 'Stop'",
|
|
@@ -147,7 +205,7 @@ var encodedWindowsExpoAndroidCommand = (project, androidRoot, appId, args, captu
|
|
|
147
205
|
`$expoArguments = @([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('${encode(JSON.stringify(args))}')) | ConvertFrom-Json)`,
|
|
148
206
|
"$env:ANDROID_HOME = $androidHome",
|
|
149
207
|
"$env:ANDROID_SDK_ROOT = $androidHome",
|
|
150
|
-
|
|
208
|
+
`$env:NODE_ENV = '${mode === "development" ? "development" : "production"}'`,
|
|
151
209
|
...preferredDevice ? [] : ["$env:ORG_GRADLE_PROJECT_reactNativeArchitectures = 'x86_64'"],
|
|
152
210
|
"New-Item -ItemType Directory -Force -Path $directory | Out-Null",
|
|
153
211
|
"& robocopy.exe $source $directory /MIR /XD node_modules .expo .git .gradle .cxx .kotlin build /XF bun.lock bun.lockb .absolutejs-preserve-subst.cjs /NFL /NDL /NJH /NJS /NP",
|
|
@@ -157,9 +215,11 @@ var encodedWindowsExpoAndroidCommand = (project, androidRoot, appId, args, captu
|
|
|
157
215
|
"$bun = (Get-Command bun.exe -ErrorAction Stop).Source",
|
|
158
216
|
"& $bun install",
|
|
159
217
|
"if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }",
|
|
218
|
+
"$mirrorRoot = Split-Path -Parent $directory",
|
|
219
|
+
"$staleDrives = @(& subst.exe) | ForEach-Object { if ($_ -match '^([A-Z]:)\\\\: => (.+)$' -and [String]::Equals($Matches[2].TrimEnd('\\'), $mirrorRoot.TrimEnd('\\'), [StringComparison]::OrdinalIgnoreCase)) { $Matches[1] } }",
|
|
220
|
+
"foreach ($staleDrive in $staleDrives) { & subst.exe $staleDrive /D | Out-Null }",
|
|
160
221
|
"$drive = @('Z:', 'Y:', 'X:', 'W:', 'V:', 'U:', 'T:') | Where-Object { -not (Test-Path ($_ + '\\')) } | Select-Object -First 1",
|
|
161
222
|
"if (-not $drive) { throw 'AbsoluteJS could not reserve a temporary drive letter for the Expo Android build.' }",
|
|
162
|
-
"$mirrorRoot = Split-Path -Parent $directory",
|
|
163
223
|
"& subst.exe $drive $mirrorRoot",
|
|
164
224
|
"if ($LASTEXITCODE -ne 0) { throw 'AbsoluteJS could not create the short Expo Android build path.' }",
|
|
165
225
|
`try { ${mappedBuild} } finally { Set-Location ($env:SystemDrive + '\\'); & subst.exe $drive /D | Out-Null }`,
|
|
@@ -293,7 +353,7 @@ var waitForExit = (process2) => new Promise((resolve) => {
|
|
|
293
353
|
var runUtilityCommand = async (run, command, args, options) => {
|
|
294
354
|
const child = run(command, args, {
|
|
295
355
|
cwd: options.cwd,
|
|
296
|
-
env: process.env,
|
|
356
|
+
env: options.env ?? process.env,
|
|
297
357
|
stdio: ["ignore", "pipe", "pipe"]
|
|
298
358
|
});
|
|
299
359
|
forwardLines(child, options.log);
|
|
@@ -305,6 +365,56 @@ var runUtilityCommand = async (run, command, args, options) => {
|
|
|
305
365
|
throw abortError();
|
|
306
366
|
return exitCode;
|
|
307
367
|
};
|
|
368
|
+
var installAbsoluteExpoAndroidRelease = async (options) => {
|
|
369
|
+
if (options.config.engine !== "expo")
|
|
370
|
+
throw new TypeError("The Expo Android release installer requires Expo.");
|
|
371
|
+
if (!options.config.platforms.includes("android"))
|
|
372
|
+
throw new TypeError("The Expo Android release installer requires the android platform.");
|
|
373
|
+
const host = options.host ?? detectAbsoluteMobileHost();
|
|
374
|
+
const project = options.config.nativeProjectDirectory;
|
|
375
|
+
const executable = options.executable ?? await absoluteExpoExecutable(project);
|
|
376
|
+
const capture = options.capture ?? captureCommand;
|
|
377
|
+
const run = options.spawnProcess ?? spawn;
|
|
378
|
+
const log = options.log ?? (() => {
|
|
379
|
+
return;
|
|
380
|
+
});
|
|
381
|
+
const env = { ...process.env, NODE_ENV: "production" };
|
|
382
|
+
const utilityOptions = {
|
|
383
|
+
cwd: project,
|
|
384
|
+
env,
|
|
385
|
+
log,
|
|
386
|
+
signal: options.signal
|
|
387
|
+
};
|
|
388
|
+
const started = performance.now();
|
|
389
|
+
const prebuildExit = await runUtilityCommand(run, executable, ["prebuild", "--clean", "--no-install", "--platform", "android"], utilityOptions);
|
|
390
|
+
if (prebuildExit !== 0)
|
|
391
|
+
throw new Error(`Expo Android production preparation exited with status ${prebuildExit}.`);
|
|
392
|
+
const androidRoot = options.androidRoot ?? process.env.ANDROID_HOME ?? process.env.ANDROID_SDK_ROOT ?? absoluteManagedAndroidSdkRoot(host);
|
|
393
|
+
const args = [
|
|
394
|
+
"run:android",
|
|
395
|
+
"--variant",
|
|
396
|
+
"release",
|
|
397
|
+
"--no-bundler",
|
|
398
|
+
...options.androidDevice ? ["--device", options.androidDevice] : []
|
|
399
|
+
];
|
|
400
|
+
const invocation = host === "wsl" ? encodedWindowsExpoAndroidCommand(project, androidRoot, options.config.appId, args, capture, options.forwardedPort, options.androidDevice, "release") : [executable, ...args];
|
|
401
|
+
if (host === "wsl")
|
|
402
|
+
log("[android] Mirroring native inputs to the Windows host for an installable Expo release build.");
|
|
403
|
+
const [releaseExecutable, ...releaseArguments] = invocation;
|
|
404
|
+
if (!releaseExecutable)
|
|
405
|
+
throw new Error("Expo Android release build command is empty.");
|
|
406
|
+
const releaseExit = await runUtilityCommand(run, releaseExecutable, releaseArguments, utilityOptions);
|
|
407
|
+
if (releaseExit !== 0)
|
|
408
|
+
throw new Error(`Expo Android release build exited with status ${releaseExit}.`);
|
|
409
|
+
const adb = options.androidAdb ?? join(androidRoot, "platform-tools", host === "windows" || host === "wsl" ? "adb.exe" : "adb");
|
|
410
|
+
const serial = host === "wsl" ? options.androidDevice ?? capture([adb, "devices"]).stdout.split(/\r?\n/u).flatMap((line) => {
|
|
411
|
+
const match = /^(\S+)\s+device$/u.exec(line.trim());
|
|
412
|
+
return match?.[1] ? [match[1]] : [];
|
|
413
|
+
}).find((value) => value.startsWith("emulator-")) : launchLocalExpoAndroidRelease(adb, options.config.appId, options.forwardedPort, capture, options.androidDevice);
|
|
414
|
+
if (!serial)
|
|
415
|
+
throw new Error("Expo Android release build completed but its device could not be identified.");
|
|
416
|
+
return { durationMs: performance.now() - started, serial };
|
|
417
|
+
};
|
|
308
418
|
var startAbsoluteExpoDevSession = async (options) => {
|
|
309
419
|
const plan = planAbsoluteExpoDevSession(options.config, options);
|
|
310
420
|
const executable = options.executable ?? await absoluteExpoExecutable(plan.project);
|
|
@@ -539,6 +649,7 @@ var startAbsoluteExpoDevSession = async (options) => {
|
|
|
539
649
|
};
|
|
540
650
|
export {
|
|
541
651
|
absoluteExpoExecutable,
|
|
652
|
+
installAbsoluteExpoAndroidRelease,
|
|
542
653
|
planAbsoluteExpoDevSession,
|
|
543
654
|
startAbsoluteExpoDevSession
|
|
544
655
|
};
|
|
@@ -1614,7 +1614,7 @@ var expoAppConfig = (config, auth, sync, devices, runtimeFingerprint) => {
|
|
|
1614
1614
|
slug: config.appId.toLowerCase().replaceAll(".", "-"),
|
|
1615
1615
|
...config.updates ? {
|
|
1616
1616
|
updates: {
|
|
1617
|
-
checkAutomatically: "
|
|
1617
|
+
checkAutomatically: "ON_ERROR_RECOVERY",
|
|
1618
1618
|
fallbackToCacheTimeout: config.updates.bootTimeoutMs,
|
|
1619
1619
|
requestHeaders: {
|
|
1620
1620
|
"x-absolute-mobile-app": config.appId,
|
|
@@ -1694,7 +1694,7 @@ var metroConfig = (projectRoot) => `${EXPO_GENERATED_HEADER}const { getDefaultCo
|
|
|
1694
1694
|
const path = require('node:path');
|
|
1695
1695
|
|
|
1696
1696
|
const projectRoot = __dirname;
|
|
1697
|
-
const appRoot = ${JSON.stringify(projectRoot)};
|
|
1697
|
+
const appRoot = process.env.ABSOLUTE_EXPO_APP_ROOT || ${JSON.stringify(projectRoot)};
|
|
1698
1698
|
const config = getDefaultConfig(projectRoot);
|
|
1699
1699
|
config.resolver.assetExts.push('absasset');
|
|
1700
1700
|
config.resolver.nodeModulesPaths = [
|
|
@@ -1728,15 +1728,11 @@ export default function AbsoluteLayout() {
|
|
|
1728
1728
|
return <Stack screenOptions={{ headerShown: false }} />;
|
|
1729
1729
|
}
|
|
1730
1730
|
`;
|
|
1731
|
-
var updatesRuntimeSource = (
|
|
1731
|
+
var updatesRuntimeSource = () => `${EXPO_GENERATED_HEADER}import { randomUUID } from 'expo-crypto';
|
|
1732
1732
|
import * as SecureStore from 'expo-secure-store';
|
|
1733
1733
|
import * as Updates from 'expo-updates';
|
|
1734
1734
|
|
|
1735
1735
|
const INSTALLATION_KEY = 'absolutejs.mobile.update.installation.v1';
|
|
1736
|
-
const REQUEST_HEADERS = ${JSON.stringify({
|
|
1737
|
-
"x-absolute-mobile-app": config.appId,
|
|
1738
|
-
"x-absolute-mobile-channel": config.updates?.channel
|
|
1739
|
-
})};
|
|
1740
1736
|
|
|
1741
1737
|
let startPromise: Promise<void> | undefined;
|
|
1742
1738
|
export const startAbsoluteExpoUpdates = () => {
|
|
@@ -1747,13 +1743,13 @@ export const startAbsoluteExpoUpdates = () => {
|
|
|
1747
1743
|
installationId = randomUUID();
|
|
1748
1744
|
await SecureStore.setItemAsync(INSTALLATION_KEY, installationId);
|
|
1749
1745
|
}
|
|
1750
|
-
await Updates.
|
|
1751
|
-
...REQUEST_HEADERS,
|
|
1752
|
-
'x-absolute-mobile-installation': installationId
|
|
1753
|
-
});
|
|
1746
|
+
await Updates.setExtraParamAsync('absolute-installation', installationId);
|
|
1754
1747
|
const result = await Updates.checkForUpdateAsync();
|
|
1755
1748
|
if (result.isAvailable || result.isRollBackToEmbedded) {
|
|
1756
1749
|
await Updates.fetchUpdateAsync();
|
|
1750
|
+
if (result.isRollBackToEmbedded) {
|
|
1751
|
+
await Updates.reloadAsync();
|
|
1752
|
+
}
|
|
1757
1753
|
}
|
|
1758
1754
|
})().catch(error => {
|
|
1759
1755
|
console.warn('[absolute:mobile-update] Expo update check failed', error instanceof Error ? error.message : 'unknown error');
|
|
@@ -2695,7 +2691,7 @@ node_modules/
|
|
|
2695
2691
|
files.set(path, source);
|
|
2696
2692
|
}
|
|
2697
2693
|
if (config.updates) {
|
|
2698
|
-
files.set(join4(project, "src", "generated", "AbsoluteUpdates.ts"), updatesRuntimeSource(
|
|
2694
|
+
files.set(join4(project, "src", "generated", "AbsoluteUpdates.ts"), updatesRuntimeSource());
|
|
2699
2695
|
}
|
|
2700
2696
|
const expoCodeSigning = config.updates?.expoCodeSigning;
|
|
2701
2697
|
if (expoCodeSigning)
|
package/dist/cli/index.js
CHANGED
|
@@ -58,7 +58,7 @@ if (command === "dev") {
|
|
|
58
58
|
}
|
|
59
59
|
const positionalArgs = stripNamedArgs("--config", "--android-device", "--ios-device").filter((arg) => arg !== "--no-mobile" && arg !== "--eager");
|
|
60
60
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
61
|
-
const { dev } = await import("./dev-
|
|
61
|
+
const { dev } = await import("./dev-8vv459ty.js");
|
|
62
62
|
await dev(serverEntry, configPath, {
|
|
63
63
|
androidDevice,
|
|
64
64
|
eager: args.includes("--eager"),
|
|
@@ -71,7 +71,7 @@ if (command === "dev") {
|
|
|
71
71
|
const configPath = parseNamedArg("--config");
|
|
72
72
|
const positionalArgs = stripNamedArgs("--outdir", "--config").filter((arg) => arg !== "--prebuilt");
|
|
73
73
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
74
|
-
const { start } = await import("./start-
|
|
74
|
+
const { start } = await import("./start-dtrp1pry.js");
|
|
75
75
|
await start(serverEntry, outdir, configPath, {
|
|
76
76
|
prebuilt: args.includes("--prebuilt")
|
|
77
77
|
});
|
|
@@ -81,7 +81,7 @@ if (command === "dev") {
|
|
|
81
81
|
const configPath = parseNamedArg("--config");
|
|
82
82
|
const positionalArgs = stripNamedArgs("--outdir", "--config");
|
|
83
83
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
84
|
-
const { start } = await import("./start-
|
|
84
|
+
const { start } = await import("./start-dtrp1pry.js");
|
|
85
85
|
await start(serverEntry, outdir, configPath, { prepareOnly: true });
|
|
86
86
|
} else if (command === "build") {
|
|
87
87
|
sendTelemetryEvent("cli:command", { command });
|
|
@@ -197,13 +197,13 @@ if (command === "dev") {
|
|
|
197
197
|
const configPath = parseNamedArg("--config");
|
|
198
198
|
const positionalArgs = stripNamedArgs("--outdir", "--outfile", "--config");
|
|
199
199
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
200
|
-
const { compile } = await import("./compile-
|
|
200
|
+
const { compile } = await import("./compile-x4hfth3p.js");
|
|
201
201
|
await compile(serverEntry, outdir, outfile, configPath);
|
|
202
202
|
} else if (command === "mobile") {
|
|
203
203
|
sendTelemetryEvent("cli:command", {
|
|
204
204
|
command: `mobile:${workspaceCommand ?? "unknown"}`
|
|
205
205
|
});
|
|
206
|
-
const { runMobile } = await import("./mobile-
|
|
206
|
+
const { runMobile } = await import("./mobile-mfp26v2d.js");
|
|
207
207
|
try {
|
|
208
208
|
await runMobile(args);
|
|
209
209
|
} catch (error) {
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./index-zh6hhrwy.js";
|
|
5
5
|
import {
|
|
6
6
|
start
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-d4ar3mwd.js";
|
|
8
8
|
import {
|
|
9
9
|
ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,
|
|
10
10
|
ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,
|
|
11
11
|
resolveAbsoluteMobileRoute
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-w5y7wxn9.js";
|
|
13
13
|
import"./index-bzs19w3r.js";
|
|
14
14
|
import"./index-s2tazax7.js";
|
|
15
15
|
import {
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
syncAbsoluteExpoWebAssets,
|
|
64
64
|
unsignedAbsoluteMobileUpdate,
|
|
65
65
|
writeAbsoluteExpoProject
|
|
66
|
-
} from "./index-
|
|
66
|
+
} from "./index-p8ezgd5e.js";
|
|
67
67
|
import {
|
|
68
68
|
normalizeAbsoluteIosDeviceIdentifier
|
|
69
69
|
} from "./index-j66p8hn5.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
start
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-d4ar3mwd.js";
|
|
5
|
+
import"./index-w5y7wxn9.js";
|
|
6
6
|
import"./index-bzs19w3r.js";
|
|
7
7
|
import"./index-s2tazax7.js";
|
|
8
8
|
import"./index-fc9vxw56.js";
|
|
@@ -11,7 +11,7 @@ import"./index-06cmrcdq.js";
|
|
|
11
11
|
import"./index-9kwmb3c0.js";
|
|
12
12
|
import"./index-w5vswatm.js";
|
|
13
13
|
import"./index-6fb7k6dg.js";
|
|
14
|
-
import"./index-
|
|
14
|
+
import"./index-p8ezgd5e.js";
|
|
15
15
|
import"./index-ar4gz15x.js";
|
|
16
16
|
import"./index-t84wxk1p.js";
|
|
17
17
|
import"./index-wtfnv3n2.js";
|