@absolutejs/absolute 0.20.0-beta.26 → 0.20.0-beta.27

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/cli/index.js CHANGED
@@ -6817,15 +6817,23 @@ var DEVICES_PACKAGE = "@absolutejs/devices", CAPACITOR_ADAPTER = "@absolutejs/de
6817
6817
  return;
6818
6818
  if (!object2(value))
6819
6819
  throw new TypeError(`${field} must be an object.`);
6820
- const { privacyAccessedApis, pushNotifications, usageDescriptions } = value;
6820
+ const {
6821
+ privacyAccessedApis,
6822
+ pushNotifications,
6823
+ systemBars,
6824
+ usageDescriptions
6825
+ } = value;
6821
6826
  if (pushNotifications !== undefined && pushNotifications !== true)
6822
6827
  throw new TypeError(`${field}.pushNotifications must be true.`);
6828
+ if (systemBars !== undefined && systemBars !== true)
6829
+ throw new TypeError(`${field}.systemBars must be true.`);
6823
6830
  if (usageDescriptions !== undefined && (!Array.isArray(usageDescriptions) || !usageDescriptions.every((purpose) => typeof purpose === "string" && IOS_USAGE_DESCRIPTIONS.has(purpose))))
6824
6831
  throw new TypeError(`${field}.usageDescriptions contains an unsupported purpose.`);
6825
6832
  const privacy = iosPrivacyAccessedApis(privacyAccessedApis, `${field}.privacyAccessedApis`);
6826
6833
  return {
6827
6834
  ...privacy === undefined ? {} : { privacyAccessedApis: privacy },
6828
6835
  ...pushNotifications === true ? { pushNotifications: true } : {},
6836
+ ...systemBars === true ? { systemBars: true } : {},
6829
6837
  ...usageDescriptions === undefined ? {} : { usageDescriptions: [...usageDescriptions] }
6830
6838
  };
6831
6839
  }, parseProvider = (name, value) => {
@@ -6882,6 +6890,7 @@ var DEVICES_PACKAGE = "@absolutejs/devices", CAPACITOR_ADAPTER = "@absolutejs/de
6882
6890
  return reasons ? [{ api, reasons: [...reasons].sort() }] : [];
6883
6891
  }),
6884
6892
  iosPushNotifications: plan.capabilities.some((name) => plan.providers[name]?.native?.ios?.pushNotifications === true),
6893
+ iosSystemBars: plan.capabilities.some((name) => plan.providers[name]?.native?.ios?.systemBars === true),
6885
6894
  iosUsageDescriptions: [
6886
6895
  ...new Set(plan.capabilities.flatMap((name) => plan.providers[name]?.native?.ios?.usageDescriptions ?? []))
6887
6896
  ].sort()
@@ -16717,8 +16726,18 @@ ${next.slice(index)}`;
16717
16726
  const path = join47(config.nativeProjectDirectory, "ios/App/App/Info.plist");
16718
16727
  const source = await readFile12(path, "utf8");
16719
16728
  const requirements = absoluteDeviceNativeRequirements(plan);
16720
- const content = requirements.iosUsageDescriptions.map((purpose) => ` <key>${IOS_KEYS[purpose]}</key>
16729
+ const existingSystemBars = source.match(/<key>UIViewControllerBasedStatusBarAppearance<\/key>\s*<(true|false)\s*\/>/u);
16730
+ const ownedStart = source.indexOf(START_MARKER2);
16731
+ const ownedEnd = source.indexOf(END_MARKER2);
16732
+ const ownsSystemBars = ownedStart >= 0 && ownedEnd > ownedStart && source.slice(ownedStart, ownedEnd).includes("UIViewControllerBasedStatusBarAppearance");
16733
+ if (requirements.iosSystemBars && existingSystemBars?.[1] === "false" && !ownsSystemBars)
16734
+ throw new TypeError("iOS system bars require UIViewControllerBasedStatusBarAppearance to be true.");
16735
+ const usageContent = requirements.iosUsageDescriptions.map((purpose) => ` <key>${IOS_KEYS[purpose]}</key>
16721
16736
  <string>${escapeXml2(iosDescription(config.appName, purpose))}</string>`).join(`
16737
+ `);
16738
+ const systemBarsContent = requirements.iosSystemBars && (existingSystemBars === null || ownsSystemBars) ? ` <key>UIViewControllerBasedStatusBarAppearance</key>
16739
+ <true/>` : "";
16740
+ const content = [usageContent, systemBarsContent].filter(Boolean).join(`
16722
16741
  `);
16723
16742
  const region = content ? ` ${START_MARKER2}
16724
16743
  ${content}
@@ -18144,6 +18163,10 @@ var init_iosTestReport = __esm(() => {
18144
18163
  ["DEV-01", "Record cold and warm bun dev startup timings."],
18145
18164
  ["DEV-02", "Complete route traversal, HMR, relaunch, and recovery checks."],
18146
18165
  ["CAP-01", "Complete automatic device-capability provisioning checks."],
18166
+ ...Array.from({ length: 8 }, (_, index) => [
18167
+ `SYSUI-${String(index + 1).padStart(2, "0")}`,
18168
+ `Complete provider-neutral Keyboard and System Bars runbook check SYSUI-${String(index + 1).padStart(2, "0")}.`
18169
+ ]),
18147
18170
  ...Array.from({ length: 8 }, (_, index) => [
18148
18171
  `FILES-${String(index + 1).padStart(2, "0")}`,
18149
18172
  `Complete provider-neutral Documents runbook check FILES-${String(index + 1).padStart(2, "0")}.`
@@ -18152,6 +18175,10 @@ var init_iosTestReport = __esm(() => {
18152
18175
  `NOTIF-${String(index + 1).padStart(2, "0")}`,
18153
18176
  `Complete provider-neutral Local Notifications runbook check NOTIF-${String(index + 1).padStart(2, "0")}.`
18154
18177
  ]),
18178
+ ...Array.from({ length: 8 }, (_, index) => [
18179
+ `PUSH-${String(index + 1).padStart(2, "0")}`,
18180
+ `Complete provider-neutral Push Notifications runbook check PUSH-${String(index + 1).padStart(2, "0")}.`
18181
+ ]),
18155
18182
  ...Array.from({ length: 14 }, (_, index) => [
18156
18183
  `LOC-${String(index + 1).padStart(2, "0")}`,
18157
18184
  `Complete foreground-location runbook check LOC-${String(index + 1).padStart(2, "0")} without recording exact coordinates.`
@@ -18213,6 +18240,10 @@ var init_androidTestReport = __esm(() => {
18213
18240
  ["DEV-01", "Record cold and warm native startup timings."],
18214
18241
  ["DEV-02", "Complete route traversal, HMR, relaunch, and recovery checks."],
18215
18242
  ["CAP-01", "Complete automatic device-capability provisioning checks."],
18243
+ [
18244
+ "SYSUI-01",
18245
+ "Complete keyboard and modern edge-to-edge system-bars checks."
18246
+ ],
18216
18247
  [
18217
18248
  "FILES-01",
18218
18249
  "Complete provider-neutral file pick, export, open, and cleanup checks."
package/dist/index.js CHANGED
@@ -13257,15 +13257,23 @@ var DEVICES_PACKAGE = "@absolutejs/devices", CAPACITOR_ADAPTER = "@absolutejs/de
13257
13257
  return;
13258
13258
  if (!object(value))
13259
13259
  throw new TypeError(`${field} must be an object.`);
13260
- const { privacyAccessedApis, pushNotifications, usageDescriptions } = value;
13260
+ const {
13261
+ privacyAccessedApis,
13262
+ pushNotifications,
13263
+ systemBars,
13264
+ usageDescriptions
13265
+ } = value;
13261
13266
  if (pushNotifications !== undefined && pushNotifications !== true)
13262
13267
  throw new TypeError(`${field}.pushNotifications must be true.`);
13268
+ if (systemBars !== undefined && systemBars !== true)
13269
+ throw new TypeError(`${field}.systemBars must be true.`);
13263
13270
  if (usageDescriptions !== undefined && (!Array.isArray(usageDescriptions) || !usageDescriptions.every((purpose) => typeof purpose === "string" && IOS_USAGE_DESCRIPTIONS.has(purpose))))
13264
13271
  throw new TypeError(`${field}.usageDescriptions contains an unsupported purpose.`);
13265
13272
  const privacy = iosPrivacyAccessedApis(privacyAccessedApis, `${field}.privacyAccessedApis`);
13266
13273
  return {
13267
13274
  ...privacy === undefined ? {} : { privacyAccessedApis: privacy },
13268
13275
  ...pushNotifications === true ? { pushNotifications: true } : {},
13276
+ ...systemBars === true ? { systemBars: true } : {},
13269
13277
  ...usageDescriptions === undefined ? {} : { usageDescriptions: [...usageDescriptions] }
13270
13278
  };
13271
13279
  }, parseProvider = (name, value) => {
@@ -13322,6 +13330,7 @@ var DEVICES_PACKAGE = "@absolutejs/devices", CAPACITOR_ADAPTER = "@absolutejs/de
13322
13330
  return reasons ? [{ api, reasons: [...reasons].sort() }] : [];
13323
13331
  }),
13324
13332
  iosPushNotifications: plan.capabilities.some((name) => plan.providers[name]?.native?.ios?.pushNotifications === true),
13333
+ iosSystemBars: plan.capabilities.some((name) => plan.providers[name]?.native?.ios?.systemBars === true),
13325
13334
  iosUsageDescriptions: [
13326
13335
  ...new Set(plan.capabilities.flatMap((name) => plan.providers[name]?.native?.ios?.usageDescriptions ?? []))
13327
13336
  ].sort()
@@ -40712,5 +40721,5 @@ export {
40712
40721
  ANGULAR_INIT_TIMEOUT_MS
40713
40722
  };
40714
40723
 
40715
- //# debugId=BDFEC8444CD05EBE64756E2164756E21
40724
+ //# debugId=C9BAE4208249D80364756E2164756E21
40716
40725
  //# sourceMappingURL=index.js.map