@absolutejs/absolute 0.20.0-beta.134 → 0.20.0-beta.136
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 +14 -0
- package/changelog.json +22 -0
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/{compile-dae4qez4.js → compile-c7798g5y.js} +2 -2
- package/dist/cli/{dev-wv69we44.js → dev-k5mbc04f.js} +4 -4
- package/dist/cli/{expoProject-zy02tbfg.js → expoProject-4x9q22xw.js} +1 -1
- package/dist/cli/{index-thqwfzy8.js → index-adywn74r.js} +24 -0
- package/dist/cli/{index-f0bjr9s0.js → index-djme2zmz.js} +1 -1
- package/dist/cli/{index-vj2v38sq.js → index-fkn59pcp.js} +1 -1
- package/dist/cli/{index-5sjk7daj.js → index-g407dg4f.js} +2 -2
- package/dist/cli/{index-1qewxkgy.js → index-gmwb037j.js} +1 -1
- package/dist/cli/{index-gy8rm8hs.js → index-s9374tcg.js} +1 -1
- package/dist/cli/index.js +5 -5
- package/dist/cli/{iosNativeWatcher-zx49pzej.js → iosNativeWatcher-p1z40vbb.js} +2 -2
- package/dist/cli/{iosSimulatorController-haa1cc3p.js → iosSimulatorController-491k640d.js} +2 -2
- package/dist/cli/{mobile-5tx2cfm5.js → mobile-jx4e7r2w.js} +6 -6
- package/dist/cli/{remoteMacProtocol-v3ax0y0f.js → remoteMacProtocol-5qxgxk21.js} +2 -2
- package/dist/cli/{start-tpebqwc0.js → start-7qsbfdxf.js} +3 -3
- package/dist/mobile/index.js +27 -3
- package/dist/mobile/index.js.map +6 -6
- package/dist/mobile/remoteMacAgentEntry.js +104 -104
- package/dist/src/mobile/nativePackages.d.ts +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,20 @@ 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.136 — 2026-10-08
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **iOS release builds check that a push app is signed for production push**
|
|
14
|
+
An app that uses push notifications is built with the `development` push environment so debug builds sign, and App Store export is expected to switch it to `production` through the distribution profile. If it does not, Apple rejects every installed device's push token and no user receives push, with nothing to show for it. `absolute mobile build ios` now reads the entitlements signed into the exported IPA and fails, explaining the fix, unless `aps-environment` is `production`. Apps that do not use push are not inspected.
|
|
15
|
+
|
|
16
|
+
## 0.20.0-beta.135 — 2026-10-08
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **Tapping a notification that launches an Expo app now opens its deep link**
|
|
21
|
+
Mobile builds now install `@absolutejs/devices` 0.7.1 and Expo builds `@absolutejs/devices-expo` 0.0.12. On Expo, tapping a notification while the app is closed now reaches `pushNotifications.onAction`, so the notification's deep link opens; before, a tap that launched the app was reported before anything listened and was lost. `@absolutejs/devices/testing` gains a push notifications test capability. Run `absolute mobile sync` to update an existing app.
|
|
22
|
+
|
|
9
23
|
## 0.20.0-beta.134 — 2026-10-08
|
|
10
24
|
|
|
11
25
|
### Added
|
package/changelog.json
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
"contract": 1,
|
|
3
3
|
"name": "@absolutejs/absolute",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"changes": [
|
|
7
|
+
{
|
|
8
|
+
"detail": "An app that uses push notifications is built with the `development` push environment so debug builds sign, and App Store export is expected to switch it to `production` through the distribution profile. If it does not, Apple rejects every installed device's push token and no user receives push, with nothing to show for it. `absolute mobile build ios` now reads the entitlements signed into the exported IPA and fails, explaining the fix, unless `aps-environment` is `production`. Apps that do not use push are not inspected.",
|
|
9
|
+
"kind": "added",
|
|
10
|
+
"summary": "iOS release builds check that a push app is signed for production push"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"date": "2026-10-08",
|
|
14
|
+
"version": "0.20.0-beta.136"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"changes": [
|
|
18
|
+
{
|
|
19
|
+
"detail": "Mobile builds now install `@absolutejs/devices` 0.7.1 and Expo builds `@absolutejs/devices-expo` 0.0.12. On Expo, tapping a notification while the app is closed now reaches `pushNotifications.onAction`, so the notification's deep link opens; before, a tap that launched the app was reported before anything listened and was lost. `@absolutejs/devices/testing` gains a push notifications test capability. Run `absolute mobile sync` to update an existing app.",
|
|
20
|
+
"kind": "fixed",
|
|
21
|
+
"summary": "Tapping a notification that launches an Expo app now opens its deep link"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"date": "2026-10-08",
|
|
25
|
+
"version": "0.20.0-beta.135"
|
|
26
|
+
},
|
|
5
27
|
{
|
|
6
28
|
"changes": [
|
|
7
29
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// .angular-partial-tmp-
|
|
2
|
+
// .angular-partial-tmp-cFHuGA/src/core/streamingSlotRegistrar.ts
|
|
3
3
|
var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
|
|
4
4
|
var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
|
|
5
5
|
var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// .angular-partial-tmp-
|
|
2
|
+
// .angular-partial-tmp-cFHuGA/src/core/streamingSlotRegistrar.ts
|
|
3
3
|
var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
|
|
4
4
|
var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
|
|
5
5
|
var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
@@ -46,7 +46,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
|
|
|
46
46
|
getWarningController()?.maybeWarn(primitiveName);
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
// .angular-partial-tmp-
|
|
49
|
+
// .angular-partial-tmp-cFHuGA/src/core/streamingSlotRegistry.ts
|
|
50
50
|
var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
|
|
51
51
|
var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
|
|
52
52
|
var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
|
|
@@ -13,11 +13,11 @@ import {
|
|
|
13
13
|
createElysiaOpenApiTypeboxPlugin,
|
|
14
14
|
createOptionalPeerPlugin,
|
|
15
15
|
resolveServerBundleExternals
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-s9374tcg.js";
|
|
17
17
|
import {
|
|
18
18
|
normalizeAbsoluteMobileConfig2
|
|
19
19
|
} from "./index-t7yf3vxs.js";
|
|
20
|
-
import"./index-
|
|
20
|
+
import"./index-g407dg4f.js";
|
|
21
21
|
import {
|
|
22
22
|
ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV2,
|
|
23
23
|
installAbsoluteMobileAuthEnvironment2
|
|
@@ -1314,16 +1314,16 @@ var loadAbsoluteMobileDevModules = async () => {
|
|
|
1314
1314
|
expoNativeWatcher
|
|
1315
1315
|
] = await Promise.all([
|
|
1316
1316
|
import("./config-hy5dkexz.js"),
|
|
1317
|
-
import("./expoProject-
|
|
1317
|
+
import("./expoProject-4x9q22xw.js"),
|
|
1318
1318
|
import("./expoDevController-s70fj7vf.js"),
|
|
1319
1319
|
import("./nativeAuth-ysv0x5dy.js"),
|
|
1320
1320
|
import("./androidEmulatorController-j73a1br6.js"),
|
|
1321
1321
|
import("./emulatorDoctor-cwa70kgt.js"),
|
|
1322
1322
|
import("./emulatorInstaller-dx3fmm2m.js"),
|
|
1323
1323
|
import("./androidNativeWatcher-ctbnsr1v.js"),
|
|
1324
|
-
import("./iosSimulatorController-
|
|
1325
|
-
import("./remoteMacProtocol-
|
|
1326
|
-
import("./iosNativeWatcher-
|
|
1324
|
+
import("./iosSimulatorController-491k640d.js"),
|
|
1325
|
+
import("./remoteMacProtocol-5qxgxk21.js"),
|
|
1326
|
+
import("./iosNativeWatcher-p1z40vbb.js"),
|
|
1327
1327
|
import("./expoNativeWatcher-aakp7xvj.js")
|
|
1328
1328
|
]);
|
|
1329
1329
|
return {
|
|
@@ -35,9 +35,31 @@ var requireManifest = (value) => {
|
|
|
35
35
|
return {
|
|
36
36
|
appBuild: value.appBuild,
|
|
37
37
|
appId: value.appId,
|
|
38
|
+
deviceCapabilities: Array.isArray(value.deviceCapabilities) ? value.deviceCapabilities.filter((capability) => typeof capability === "string") : [],
|
|
38
39
|
runtime: value.runtime
|
|
39
40
|
};
|
|
40
41
|
};
|
|
42
|
+
var APS_ENVIRONMENT_PATTERN = /<key>aps-environment<\/key>\s*<string>([^<]*)<\/string>/;
|
|
43
|
+
var verifyIosPushEntitlement = async (options) => {
|
|
44
|
+
const unpacked = join(options.staging, "push-entitlement-check");
|
|
45
|
+
if (options.capture(["ditto", "-x", "-k", options.artifactPath, unpacked]).exitCode !== 0)
|
|
46
|
+
throw new TypeError("Could not unpack the exported IPA to check its push entitlement.");
|
|
47
|
+
const app = await findByExtension(join(unpacked, "Payload"), ".app");
|
|
48
|
+
if (!app)
|
|
49
|
+
throw new TypeError("The exported IPA does not contain an app bundle.");
|
|
50
|
+
const signed = options.capture([
|
|
51
|
+
"codesign",
|
|
52
|
+
"--display",
|
|
53
|
+
"--entitlements",
|
|
54
|
+
":-",
|
|
55
|
+
app
|
|
56
|
+
]);
|
|
57
|
+
if (signed.exitCode !== 0)
|
|
58
|
+
throw new TypeError("Could not read the exported app's signed entitlements.");
|
|
59
|
+
const environment = APS_ENVIRONMENT_PATTERN.exec(signed.stdout)?.[1];
|
|
60
|
+
if (environment !== "production")
|
|
61
|
+
throw new TypeError(`The app uses push notifications, but its signed aps-environment entitlement is ${environment ? `"${environment}"` : "missing"}, not "production". APNs production would reject its device tokens, so no installed user would receive push. Sign the release with an App Store distribution profile whose App ID has Push Notifications enabled.`);
|
|
62
|
+
};
|
|
41
63
|
var pathExists = async (path) => {
|
|
42
64
|
try {
|
|
43
65
|
await access(path);
|
|
@@ -407,6 +429,8 @@ var buildAbsoluteIosRelease = async (options) => {
|
|
|
407
429
|
const artifactPath = await findByExtension(exportPath, ".ipa");
|
|
408
430
|
if (!artifactPath)
|
|
409
431
|
throw new TypeError("Xcode did not produce an exported IPA.");
|
|
432
|
+
if (signed && manifest.deviceCapabilities.includes("pushNotifications"))
|
|
433
|
+
await verifyIosPushEntitlement({ artifactPath, capture, staging });
|
|
410
434
|
const [bytes, sha256] = await Promise.all([
|
|
411
435
|
stat(artifactPath).then(({ size }) => size),
|
|
412
436
|
sha256File(artifactPath)
|
|
@@ -29,8 +29,8 @@ import { readFile } from "fs/promises";
|
|
|
29
29
|
import { dirname, join, resolve } from "path";
|
|
30
30
|
var ABSOLUTE_CAPACITOR_DEVICES_VERSION = "0.8.0";
|
|
31
31
|
var ABSOLUTE_CAPACITOR_SYNC_VERSION = "0.9.3";
|
|
32
|
-
var ABSOLUTE_DEVICES_VERSION = "0.7.
|
|
33
|
-
var ABSOLUTE_EXPO_DEVICES_VERSION = "0.0.
|
|
32
|
+
var ABSOLUTE_DEVICES_VERSION = "0.7.1";
|
|
33
|
+
var ABSOLUTE_EXPO_DEVICES_VERSION = "0.0.12";
|
|
34
34
|
var ABSOLUTE_NATIVE_EXACT_PACKAGES = new Set([
|
|
35
35
|
"@absolutejs/devices",
|
|
36
36
|
"@absolutejs/devices-capacitor",
|
package/dist/cli/index.js
CHANGED
|
@@ -54,7 +54,7 @@ if (command === "dev") {
|
|
|
54
54
|
}
|
|
55
55
|
const positionalArgs = stripNamedArgs("--config", "--android-device", "--ios-device").filter((arg) => arg !== "--no-mobile" && arg !== "--eager");
|
|
56
56
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
57
|
-
const { dev } = await import("./dev-
|
|
57
|
+
const { dev } = await import("./dev-k5mbc04f.js");
|
|
58
58
|
await dev(serverEntry, configPath, {
|
|
59
59
|
androidDevice,
|
|
60
60
|
eager: args.includes("--eager"),
|
|
@@ -70,7 +70,7 @@ if (command === "dev") {
|
|
|
70
70
|
const configPath = parseNamedArg("--config");
|
|
71
71
|
const positionalArgs = stripNamedArgs("--outdir", "--config").filter((arg) => arg !== "--prebuilt");
|
|
72
72
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
73
|
-
const { start } = await import("./start-
|
|
73
|
+
const { start } = await import("./start-7qsbfdxf.js");
|
|
74
74
|
await start(serverEntry, outdir, configPath, {
|
|
75
75
|
prebuilt: args.includes("--prebuilt")
|
|
76
76
|
});
|
|
@@ -80,7 +80,7 @@ if (command === "dev") {
|
|
|
80
80
|
const configPath = parseNamedArg("--config");
|
|
81
81
|
const positionalArgs = stripNamedArgs("--outdir", "--config");
|
|
82
82
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
83
|
-
const { start } = await import("./start-
|
|
83
|
+
const { start } = await import("./start-7qsbfdxf.js");
|
|
84
84
|
await start(serverEntry, outdir, configPath, { prepareOnly: true });
|
|
85
85
|
} else if (command === "build") {
|
|
86
86
|
sendTelemetryEvent("cli:command", { command });
|
|
@@ -201,13 +201,13 @@ if (command === "dev") {
|
|
|
201
201
|
const configPath = parseNamedArg("--config");
|
|
202
202
|
const positionalArgs = stripNamedArgs("--outdir", "--outfile", "--config");
|
|
203
203
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
204
|
-
const { compile } = await import("./compile-
|
|
204
|
+
const { compile } = await import("./compile-c7798g5y.js");
|
|
205
205
|
await compile(serverEntry, outdir, outfile, configPath);
|
|
206
206
|
} else if (command === "mobile") {
|
|
207
207
|
sendTelemetryEvent("cli:command", {
|
|
208
208
|
command: `mobile:${workspaceCommand ?? "unknown"}`
|
|
209
209
|
});
|
|
210
|
-
const { runMobile } = await import("./mobile-
|
|
210
|
+
const { runMobile } = await import("./mobile-jx4e7r2w.js");
|
|
211
211
|
try {
|
|
212
212
|
await runMobile(args);
|
|
213
213
|
} catch (error) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import"./index-hxqprc80.js";
|
|
3
3
|
import"./index-j57pgg5m.js";
|
|
4
|
-
import"./index-
|
|
4
|
+
import"./index-adywn74r.js";
|
|
5
5
|
import {
|
|
6
6
|
fingerprintAbsoluteIosDevProject2
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-fkn59pcp.js";
|
|
8
8
|
import"./index-k4t9k1xk.js";
|
|
9
9
|
import"./index-92hmw204.js";
|
|
10
10
|
import"./index-1x1vah31.js";
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
fingerprintAbsoluteIosDevProject2,
|
|
7
7
|
prepareAbsoluteIosDevProject2,
|
|
8
8
|
startAbsoluteIosDevSession2
|
|
9
|
-
} from "./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
} from "./index-fkn59pcp.js";
|
|
10
|
+
import"./index-adywn74r.js";
|
|
11
11
|
import"./index-j57pgg5m.js";
|
|
12
12
|
import"./index-k4t9k1xk.js";
|
|
13
13
|
import"./index-92hmw204.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
renderAbsoluteMobileBrandingPreview,
|
|
23
23
|
writeAbsoluteExpoProject2,
|
|
24
24
|
syncAbsoluteExpoWebAssets2
|
|
25
|
-
} from "./index-
|
|
25
|
+
} from "./index-g407dg4f.js";
|
|
26
26
|
import {
|
|
27
27
|
projectUsesAbsoluteAuth2,
|
|
28
28
|
projectUsesAbsoluteSync2
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
resolveAbsoluteMobileRoute,
|
|
59
59
|
ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,
|
|
60
60
|
ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT
|
|
61
|
-
} from "./index-
|
|
61
|
+
} from "./index-s9374tcg.js";
|
|
62
62
|
import {
|
|
63
63
|
buildAbsoluteExpoAndroidWslBundle2
|
|
64
64
|
} from "./index-jcjwsdqt.js";
|
|
@@ -66,16 +66,16 @@ import {
|
|
|
66
66
|
resolveAbsoluteIosXcodeProject,
|
|
67
67
|
requireAbsoluteIosReleaseMetadata,
|
|
68
68
|
buildAbsoluteIosRelease
|
|
69
|
-
} from "./index-
|
|
69
|
+
} from "./index-adywn74r.js";
|
|
70
70
|
import {
|
|
71
71
|
ABSOLUTE_IOS_SIMULATOR_NAME2,
|
|
72
72
|
parseIosSimulators2,
|
|
73
73
|
repairAbsoluteIosDevSession2
|
|
74
|
-
} from "./index-
|
|
74
|
+
} from "./index-fkn59pcp.js";
|
|
75
75
|
import"./index-e6ysp900.js";
|
|
76
76
|
import {
|
|
77
77
|
start2
|
|
78
|
-
} from "./index-
|
|
78
|
+
} from "./index-djme2zmz.js";
|
|
79
79
|
import {
|
|
80
80
|
captureAbsoluteRemoteMacCommand2,
|
|
81
81
|
getAbsoluteRemoteMacProfile2,
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
inspectAbsoluteRemoteMacWorkspace2,
|
|
89
89
|
buildAbsoluteRemoteIosRelease2,
|
|
90
90
|
runAbsoluteRemoteIosReleaseAcceptance2
|
|
91
|
-
} from "./index-
|
|
91
|
+
} from "./index-gmwb037j.js";
|
|
92
92
|
import {
|
|
93
93
|
installPackages
|
|
94
94
|
} from "./index-jjfbjv1z.js";
|
|
@@ -15,8 +15,8 @@ import {
|
|
|
15
15
|
runAbsoluteRemoteIosReleaseAcceptance2,
|
|
16
16
|
startAbsoluteRemoteExpoIosDevSession2,
|
|
17
17
|
startAbsoluteRemoteIosDevSession2
|
|
18
|
-
} from "./index-
|
|
19
|
-
import"./index-
|
|
18
|
+
} from "./index-gmwb037j.js";
|
|
19
|
+
import"./index-adywn74r.js";
|
|
20
20
|
import"./index-j57pgg5m.js";
|
|
21
21
|
import"./index-k4t9k1xk.js";
|
|
22
22
|
import"./index-92hmw204.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
start2
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-djme2zmz.js";
|
|
5
|
+
import"./index-s9374tcg.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-
|
|
12
|
+
import"./index-g407dg4f.js";
|
|
13
13
|
import"./index-pch0v1z6.js";
|
|
14
14
|
import"./index-k4t9k1xk.js";
|
|
15
15
|
import"./index-92hmw204.js";
|
package/dist/mobile/index.js
CHANGED
|
@@ -24852,9 +24852,31 @@ var requireManifest2 = (value) => {
|
|
|
24852
24852
|
return {
|
|
24853
24853
|
appBuild: value.appBuild,
|
|
24854
24854
|
appId: value.appId,
|
|
24855
|
+
deviceCapabilities: Array.isArray(value.deviceCapabilities) ? value.deviceCapabilities.filter((capability) => typeof capability === "string") : [],
|
|
24855
24856
|
runtime: value.runtime
|
|
24856
24857
|
};
|
|
24857
24858
|
};
|
|
24859
|
+
var APS_ENVIRONMENT_PATTERN = /<key>aps-environment<\/key>\s*<string>([^<]*)<\/string>/;
|
|
24860
|
+
var verifyIosPushEntitlement = async (options) => {
|
|
24861
|
+
const unpacked = join8(options.staging, "push-entitlement-check");
|
|
24862
|
+
if (options.capture(["ditto", "-x", "-k", options.artifactPath, unpacked]).exitCode !== 0)
|
|
24863
|
+
throw new TypeError("Could not unpack the exported IPA to check its push entitlement.");
|
|
24864
|
+
const app = await findByExtension(join8(unpacked, "Payload"), ".app");
|
|
24865
|
+
if (!app)
|
|
24866
|
+
throw new TypeError("The exported IPA does not contain an app bundle.");
|
|
24867
|
+
const signed = options.capture([
|
|
24868
|
+
"codesign",
|
|
24869
|
+
"--display",
|
|
24870
|
+
"--entitlements",
|
|
24871
|
+
":-",
|
|
24872
|
+
app
|
|
24873
|
+
]);
|
|
24874
|
+
if (signed.exitCode !== 0)
|
|
24875
|
+
throw new TypeError("Could not read the exported app's signed entitlements.");
|
|
24876
|
+
const environment = APS_ENVIRONMENT_PATTERN.exec(signed.stdout)?.[1];
|
|
24877
|
+
if (environment !== "production")
|
|
24878
|
+
throw new TypeError(`The app uses push notifications, but its signed aps-environment entitlement is ${environment ? `"${environment}"` : "missing"}, not "production". APNs production would reject its device tokens, so no installed user would receive push. Sign the release with an App Store distribution profile whose App ID has Push Notifications enabled.`);
|
|
24879
|
+
};
|
|
24858
24880
|
var pathExists4 = async (path) => {
|
|
24859
24881
|
try {
|
|
24860
24882
|
await access8(path);
|
|
@@ -25224,6 +25246,8 @@ var buildAbsoluteIosRelease = async (options) => {
|
|
|
25224
25246
|
const artifactPath = await findByExtension(exportPath, ".ipa");
|
|
25225
25247
|
if (!artifactPath)
|
|
25226
25248
|
throw new TypeError("Xcode did not produce an exported IPA.");
|
|
25249
|
+
if (signed && manifest.deviceCapabilities.includes("pushNotifications"))
|
|
25250
|
+
await verifyIosPushEntitlement({ artifactPath, capture, staging });
|
|
25227
25251
|
const [bytes, sha256] = await Promise.all([
|
|
25228
25252
|
stat3(artifactPath).then(({ size }) => size),
|
|
25229
25253
|
sha256File2(artifactPath)
|
|
@@ -29084,8 +29108,8 @@ import { basename as basename6, dirname as dirname13, join as join21, relative a
|
|
|
29084
29108
|
// src/mobile/nativePackages.ts
|
|
29085
29109
|
var ABSOLUTE_CAPACITOR_DEVICES_VERSION = "0.8.0";
|
|
29086
29110
|
var ABSOLUTE_CAPACITOR_SYNC_VERSION = "0.9.3";
|
|
29087
|
-
var ABSOLUTE_DEVICES_VERSION = "0.7.
|
|
29088
|
-
var ABSOLUTE_EXPO_DEVICES_VERSION = "0.0.
|
|
29111
|
+
var ABSOLUTE_DEVICES_VERSION = "0.7.1";
|
|
29112
|
+
var ABSOLUTE_EXPO_DEVICES_VERSION = "0.0.12";
|
|
29089
29113
|
var ABSOLUTE_NATIVE_EXACT_PACKAGES = new Set([
|
|
29090
29114
|
"@absolutejs/devices",
|
|
29091
29115
|
"@absolutejs/devices-capacitor",
|
|
@@ -44234,5 +44258,5 @@ export {
|
|
|
44234
44258
|
writeAbsoluteMobileUpdateRegistry
|
|
44235
44259
|
};
|
|
44236
44260
|
|
|
44237
|
-
//# debugId=
|
|
44261
|
+
//# debugId=996CBF4A7D59550E64756E2164756E21
|
|
44238
44262
|
//# sourceMappingURL=index.js.map
|