@absolutejs/absolute 0.20.0-beta.5 → 0.20.0-beta.51

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 (142) hide show
  1. package/README.md +205 -0
  2. package/dist/angular/browser.js +392 -361
  3. package/dist/angular/browser.js.map +3 -3
  4. package/dist/angular/components/core/streamingSlotRegistrar.js +7 -7
  5. package/dist/angular/components/core/streamingSlotRegistry.js +4 -4
  6. package/dist/angular/index.js +355 -302
  7. package/dist/angular/index.js.map +5 -5
  8. package/dist/angular/server.js +109 -58
  9. package/dist/angular/server.js.map +5 -5
  10. package/dist/build.js +2261 -1335
  11. package/dist/build.js.map +16 -12
  12. package/dist/cli/config/client.js +12 -12
  13. package/dist/cli/config/server.js +1136 -1090
  14. package/dist/cli/index.js +8615 -1975
  15. package/dist/client/index.js +29 -25
  16. package/dist/client/index.js.map +2 -2
  17. package/dist/core/streamingSlotRegistrar.js +15 -13
  18. package/dist/core/streamingSlotRegistrar.js.map +2 -2
  19. package/dist/core/streamingSlotRegistry.js +11 -9
  20. package/dist/core/streamingSlotRegistry.js.map +2 -2
  21. package/dist/dev/client/hmrClient.ts +35 -3
  22. package/dist/dev/client/hmrTiming.ts +6 -0
  23. package/dist/dev/client/syncDevtools.ts +237 -0
  24. package/dist/dev/serverBootstrap.js +28 -0
  25. package/dist/image-client/imageClient.js +7 -7
  26. package/dist/index.js +3400 -2126
  27. package/dist/index.js.map +30 -23
  28. package/dist/islands/browser.js +11 -9
  29. package/dist/islands/browser.js.map +2 -2
  30. package/dist/islands/index.js +39 -35
  31. package/dist/islands/index.js.map +2 -2
  32. package/dist/mobile/browser.js +167 -20
  33. package/dist/mobile/browser.js.map +7 -5
  34. package/dist/mobile/index.js +8144 -3016
  35. package/dist/mobile/index.js.map +37 -18
  36. package/dist/mobile/remoteMacAgentEntry.js +1355 -14
  37. package/dist/mobile/shellAuth.js +36 -0
  38. package/dist/mobile/shellBootstrap.js +836 -0
  39. package/dist/mobile/shellExpoAuth.js +163 -0
  40. package/dist/mobile/shellExpoDevices.js +77 -0
  41. package/dist/mobile/shellExpoSync.js +104 -0
  42. package/dist/mobile/shellSync.js +173 -0
  43. package/dist/react/browser.js +17 -15
  44. package/dist/react/browser.js.map +2 -2
  45. package/dist/react/components/browser/index.js +107 -107
  46. package/dist/react/components/index.js +118 -116
  47. package/dist/react/components/index.js.map +2 -2
  48. package/dist/react/hooks/index.js +11 -9
  49. package/dist/react/hooks/index.js.map +2 -2
  50. package/dist/react/index.js +92 -49
  51. package/dist/react/index.js.map +4 -4
  52. package/dist/react/jsxDevRuntimeCompat.js +11 -9
  53. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  54. package/dist/react/jsxRuntimeCompat.js +11 -9
  55. package/dist/react/jsxRuntimeCompat.js.map +2 -2
  56. package/dist/react/router/browser.js +9 -7
  57. package/dist/react/router/browser.js.map +2 -2
  58. package/dist/react/router/index.js +9 -7
  59. package/dist/react/router/index.js.map +2 -2
  60. package/dist/react/server.js +51 -10
  61. package/dist/react/server.js.map +4 -4
  62. package/dist/src/build/pwa.d.ts +16 -0
  63. package/dist/src/cli/config/server.d.ts +1 -1
  64. package/dist/src/cli/instanceStatus.d.ts +1 -0
  65. package/dist/src/cli/scripts/dev.d.ts +2 -0
  66. package/dist/src/core/devBuild.d.ts +1 -0
  67. package/dist/src/core/prepare.d.ts +376 -0
  68. package/dist/src/dev/clientManager.d.ts +1 -0
  69. package/dist/src/dev/devCert.d.ts +6 -4
  70. package/dist/src/dev/serverEntryCopies.d.ts +3 -0
  71. package/dist/src/mobile/androidEmulatorController.d.ts +8 -1
  72. package/dist/src/mobile/androidRelease.d.ts +9 -2
  73. package/dist/src/mobile/androidTestReport.d.ts +14 -0
  74. package/dist/src/mobile/androidUpgradeConformance.d.ts +47 -0
  75. package/dist/src/mobile/androidWebView.d.ts +1 -0
  76. package/dist/src/mobile/browser.d.ts +1 -0
  77. package/dist/src/mobile/capacitorBundle.d.ts +11 -0
  78. package/dist/src/mobile/ciWorkflow.d.ts +26 -0
  79. package/dist/src/mobile/config.d.ts +4 -1
  80. package/dist/src/mobile/devDeviceAdapter.d.ts +3 -0
  81. package/dist/src/mobile/deviceCapabilities.d.ts +48 -0
  82. package/dist/src/mobile/expoBridge.d.ts +91 -0
  83. package/dist/src/mobile/expoDevController.d.ts +56 -0
  84. package/dist/src/mobile/expoProject.d.ts +16 -0
  85. package/dist/src/mobile/index.d.ts +14 -0
  86. package/dist/src/mobile/iosDeviceAcceptance.d.ts +32 -0
  87. package/dist/src/mobile/iosPhysicalDeviceTransport.d.ts +16 -0
  88. package/dist/src/mobile/iosRelease.d.ts +63 -3
  89. package/dist/src/mobile/iosSimulatorController.d.ts +20 -2
  90. package/dist/src/mobile/iosTestReport.d.ts +24 -0
  91. package/dist/src/mobile/mobileBundleInspection.d.ts +55 -0
  92. package/dist/src/mobile/mobileInspect.d.ts +136 -0
  93. package/dist/src/mobile/mobilePreview.d.ts +174 -0
  94. package/dist/src/mobile/mobilePreviewClient.d.ts +1 -0
  95. package/dist/src/mobile/nativeAuth.d.ts +6 -0
  96. package/dist/src/mobile/nativeBackgroundSync.d.ts +4 -0
  97. package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
  98. package/dist/src/mobile/nativeRoute.d.ts +13 -0
  99. package/dist/src/mobile/nativeTestReport.d.ts +91 -0
  100. package/dist/src/mobile/pageProtocol.d.ts +2 -0
  101. package/dist/src/mobile/releaseDoctor.d.ts +23 -1
  102. package/dist/src/mobile/remoteMacProtocol.d.ts +90 -0
  103. package/dist/src/mobile/remoteMacWire.d.ts +1 -1
  104. package/dist/src/mobile/shellAuth.d.ts +8 -1
  105. package/dist/src/mobile/shellBootstrap.d.ts +14 -2
  106. package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
  107. package/dist/src/mobile/shellExpoDevices.d.ts +3 -0
  108. package/dist/src/mobile/shellExpoSync.d.ts +18 -0
  109. package/dist/src/mobile/shellHttp.d.ts +2 -0
  110. package/dist/src/mobile/shellPush.d.ts +11 -0
  111. package/dist/src/mobile/shellSync.d.ts +46 -1
  112. package/dist/src/mobile/syncRemediation.d.ts +10 -0
  113. package/dist/src/mobile/syncSchema.d.ts +9 -0
  114. package/dist/src/mobile/transport.d.ts +7 -0
  115. package/dist/src/plugins/hmr.d.ts +3 -0
  116. package/dist/src/plugins/imageOptimizer.d.ts +1 -1
  117. package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
  118. package/dist/src/utils/imageProcessing.d.ts +3 -0
  119. package/dist/src/utils/loadConfig.d.ts +1 -0
  120. package/dist/src/utils/logger.d.ts +1 -0
  121. package/dist/src/utils/startupBanner.d.ts +1 -0
  122. package/dist/src/utils/userAgentFunctions.d.ts +1 -1
  123. package/dist/svelte/browser.js +12 -10
  124. package/dist/svelte/browser.js.map +2 -2
  125. package/dist/svelte/index.js +86 -43
  126. package/dist/svelte/index.js.map +4 -4
  127. package/dist/svelte/server.js +68 -27
  128. package/dist/svelte/server.js.map +4 -4
  129. package/dist/types/build.d.ts +53 -3
  130. package/dist/types/cli.d.ts +1 -0
  131. package/dist/types/messages.d.ts +1 -1
  132. package/dist/vue/browser.js +14 -12
  133. package/dist/vue/browser.js.map +2 -2
  134. package/dist/vue/components/Image.js +9 -7
  135. package/dist/vue/components/Image.js.map +2 -2
  136. package/dist/vue/components/index.js +11 -9
  137. package/dist/vue/components/index.js.map +2 -2
  138. package/dist/vue/index.js +91 -48
  139. package/dist/vue/index.js.map +4 -4
  140. package/dist/vue/server.js +53 -12
  141. package/dist/vue/server.js.map +4 -4
  142. package/package.json +35 -15
@@ -0,0 +1,48 @@
1
+ export type AbsoluteDeviceCapabilityProvider = {
2
+ factory: string;
3
+ module: string;
4
+ plugins?: string[];
5
+ native?: {
6
+ android?: {
7
+ permissions: string[];
8
+ };
9
+ ios?: {
10
+ privacyAccessedApis?: Partial<Record<AbsoluteIosPrivacyAccessedApi, string[]>>;
11
+ pushNotifications?: true;
12
+ systemBars?: true;
13
+ usageDescriptions?: AbsoluteIosUsageDescription[];
14
+ };
15
+ };
16
+ packages: string[];
17
+ };
18
+ export type AbsoluteIosUsageDescription = 'camera' | 'location-always' | 'location-when-in-use' | 'photo-library' | 'photo-library-add';
19
+ export type AbsoluteIosPrivacyAccessedApi = 'NSPrivacyAccessedAPICategoryFileTimestamp';
20
+ export type AbsoluteDeviceCapabilityPlan = {
21
+ capabilities: string[];
22
+ providers: Record<string, AbsoluteDeviceCapabilityProvider>;
23
+ requiredPackages: string[];
24
+ };
25
+ export type AbsoluteDeviceProvider = 'capacitor' | 'expo';
26
+ export declare const absoluteDeviceNativeRequirements: (plan: AbsoluteDeviceCapabilityPlan) => {
27
+ androidPermissions: string[];
28
+ iosPrivacyAccessedApis: {
29
+ api: "NSPrivacyAccessedAPICategoryFileTimestamp";
30
+ reasons: string[];
31
+ }[];
32
+ iosPushNotifications: boolean;
33
+ iosSystemBars: boolean;
34
+ iosUsageDescriptions: AbsoluteIosUsageDescription[];
35
+ };
36
+ export declare const loadAbsoluteDeviceCapabilityProviders: (projectRoot: string, provider?: AbsoluteDeviceProvider) => {
37
+ [k: string]: AbsoluteDeviceCapabilityProvider;
38
+ };
39
+ export declare const assertAbsoluteDeviceCapabilityPackages: (projectRoot: string, plan: AbsoluteDeviceCapabilityPlan) => void;
40
+ export declare const directAbsoluteProjectPackages: (projectRoot: string) => Set<string>;
41
+ export declare const discoverAbsoluteDeviceCapabilities: (projectRoot: string, providers?: {
42
+ [k: string]: AbsoluteDeviceCapabilityProvider;
43
+ }) => string[];
44
+ export declare const missingAbsoluteDeviceCapabilityPackages: (plan: AbsoluteDeviceCapabilityPlan, directPackages: ReadonlySet<string>) => string[];
45
+ /** Framework-agnostic capability discovery used by web/PWA builds. This does
46
+ * not load a native provider manifest, so Web Push never requires Capacitor. */
47
+ export declare const projectImportsAbsoluteDeviceCapability: (projectRoot: string, capability: string) => boolean;
48
+ export declare const resolveAbsoluteDeviceCapabilityPlan: (projectRoot: string, provider?: AbsoluteDeviceProvider) => AbsoluteDeviceCapabilityPlan;
@@ -0,0 +1,91 @@
1
+ export declare const ABSOLUTE_EXPO_BRIDGE_FORMAT: 3;
2
+ export declare const ABSOLUTE_EXPO_BRIDGE_MAX_BYTES: number;
3
+ export declare const ABSOLUTE_EXPO_BRIDGE_METHODS: readonly ["devices.platform.getInfo", "devices.lifecycle.getState", "devices.links.getLaunchUrl", "devices.links.openExternal", "devices.network.getStatus", "devices.storage.clear", "devices.storage.get", "devices.storage.keys", "devices.storage.remove", "devices.storage.set", "devices.back.capability", "devices.clipboard.capability", "devices.clipboard.readText", "devices.clipboard.writeText", "devices.share.capability", "devices.share.share", "devices.haptics.capability", "devices.haptics.impact", "devices.haptics.notification", "devices.haptics.selectionChanged", "devices.haptics.vibrate", "devices.keyboard.capability", "devices.keyboard.dismiss", "devices.keyboard.getState", "devices.systemBars.capability", "devices.systemBars.setAppearance", "devices.systemBars.setVisible", "devices.camera.capability", "devices.camera.queryPermission", "devices.camera.requestPermission", "devices.camera.takePhoto", "devices.photos.capability", "devices.photos.pick", "devices.location.capability", "devices.location.current", "devices.location.queryPermission", "devices.location.requestPermission", "devices.location.watch.start", "devices.location.watch.stop", "devices.localNotifications.capability", "devices.localNotifications.queryPermission", "devices.localNotifications.requestPermission", "devices.localNotifications.schedule", "devices.localNotifications.pending", "devices.localNotifications.cancel", "devices.pushNotifications.capability", "devices.pushNotifications.queryPermission", "devices.pushNotifications.requestPermission", "devices.pushNotifications.enable", "devices.pushNotifications.disable", "devices.documents.capability", "devices.documents.pick", "devices.transfer.read", "devices.transfer.close", "devices.upload.begin", "devices.upload.write", "devices.documents.export", "devices.documents.open", "http.fetch", "auth.signIn", "auth.signOut", "auth.status", "sync.store.begin", "sync.store.deleteNamespace", "sync.store.end", "sync.store.schema", "sync.tx.deleteCollection", "sync.tx.deleteMutation", "sync.tx.getCollection", "sync.tx.getInstallationId", "sync.tx.getMutation", "sync.tx.listCollections", "sync.tx.listMutations", "sync.tx.putCollection", "sync.tx.putMutation", "sync.tx.setInstallationId", "sync.socket.close", "sync.socket.open", "sync.socket.sendChunk"];
4
+ export type AbsoluteExpoBridgeMethod = (typeof ABSOLUTE_EXPO_BRIDGE_METHODS)[number];
5
+ export type AbsoluteExpoBridgeRequest = {
6
+ format: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;
7
+ id: string;
8
+ kind: 'request';
9
+ method: AbsoluteExpoBridgeMethod;
10
+ params: Record<string, unknown>;
11
+ path: string;
12
+ };
13
+ export type AbsoluteExpoBridgeResponse = {
14
+ format: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;
15
+ id: string;
16
+ kind: 'response';
17
+ result?: unknown;
18
+ error?: {
19
+ code: string;
20
+ message: string;
21
+ };
22
+ };
23
+ export type AbsoluteExpoBridgeEvent = {
24
+ format: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;
25
+ kind: 'event';
26
+ event: 'ready' | 'navigation' | 'auth.principal' | 'sync.socket' | 'sync.wake';
27
+ path: string;
28
+ payload?: Record<string, unknown>;
29
+ };
30
+ export type AbsoluteExpoBridgeMessage = AbsoluteExpoBridgeEvent | AbsoluteExpoBridgeRequest | AbsoluteExpoBridgeResponse;
31
+ export declare const createAbsoluteExpoBridgeError: (id: string, code: string, message: string) => {
32
+ error: {
33
+ code: string;
34
+ message: string;
35
+ };
36
+ format: 3;
37
+ id: string;
38
+ kind: "response";
39
+ result?: undefined;
40
+ } | {
41
+ format: 3;
42
+ id: string;
43
+ kind: "response";
44
+ result: unknown;
45
+ error?: undefined;
46
+ };
47
+ export declare const createAbsoluteExpoBridgeResponse: (id: string, result: unknown) => {
48
+ error: {
49
+ code: string;
50
+ message: string;
51
+ };
52
+ format: 3;
53
+ id: string;
54
+ kind: "response";
55
+ result?: undefined;
56
+ } | {
57
+ format: 3;
58
+ id: string;
59
+ kind: "response";
60
+ result: unknown;
61
+ error?: undefined;
62
+ };
63
+ export declare const parseAbsoluteExpoBridgeMessage: (source: string) => {
64
+ format: 3;
65
+ id: string;
66
+ kind: "request";
67
+ method: "devices.platform.getInfo" | "devices.lifecycle.getState" | "devices.links.getLaunchUrl" | "devices.links.openExternal" | "devices.network.getStatus" | "devices.storage.clear" | "devices.storage.get" | "devices.storage.keys" | "devices.storage.remove" | "devices.storage.set" | "devices.back.capability" | "devices.clipboard.capability" | "devices.clipboard.readText" | "devices.clipboard.writeText" | "devices.share.capability" | "devices.share.share" | "devices.haptics.capability" | "devices.haptics.impact" | "devices.haptics.notification" | "devices.haptics.selectionChanged" | "devices.haptics.vibrate" | "devices.keyboard.capability" | "devices.keyboard.dismiss" | "devices.keyboard.getState" | "devices.systemBars.capability" | "devices.systemBars.setAppearance" | "devices.systemBars.setVisible" | "devices.camera.capability" | "devices.camera.queryPermission" | "devices.camera.requestPermission" | "devices.camera.takePhoto" | "devices.photos.capability" | "devices.photos.pick" | "devices.location.capability" | "devices.location.current" | "devices.location.queryPermission" | "devices.location.requestPermission" | "devices.location.watch.start" | "devices.location.watch.stop" | "devices.localNotifications.capability" | "devices.localNotifications.queryPermission" | "devices.localNotifications.requestPermission" | "devices.localNotifications.schedule" | "devices.localNotifications.pending" | "devices.localNotifications.cancel" | "devices.pushNotifications.capability" | "devices.pushNotifications.queryPermission" | "devices.pushNotifications.requestPermission" | "devices.pushNotifications.enable" | "devices.pushNotifications.disable" | "devices.documents.capability" | "devices.documents.pick" | "devices.transfer.read" | "devices.transfer.close" | "devices.upload.begin" | "devices.upload.write" | "devices.documents.export" | "devices.documents.open" | "http.fetch" | "auth.signIn" | "auth.signOut" | "auth.status" | "sync.store.begin" | "sync.store.deleteNamespace" | "sync.store.end" | "sync.store.schema" | "sync.tx.deleteCollection" | "sync.tx.deleteMutation" | "sync.tx.getCollection" | "sync.tx.getInstallationId" | "sync.tx.getMutation" | "sync.tx.listCollections" | "sync.tx.listMutations" | "sync.tx.putCollection" | "sync.tx.putMutation" | "sync.tx.setInstallationId" | "sync.socket.close" | "sync.socket.open" | "sync.socket.sendChunk";
68
+ params: Record<string, unknown>;
69
+ path: string;
70
+ } | {
71
+ error: {
72
+ code: string;
73
+ message: string;
74
+ };
75
+ format: 3;
76
+ id: string;
77
+ kind: "response";
78
+ result?: undefined;
79
+ } | {
80
+ format: 3;
81
+ id: string;
82
+ kind: "response";
83
+ result: unknown;
84
+ error?: undefined;
85
+ } | {
86
+ payload?: Record<string, unknown> | undefined;
87
+ event: string;
88
+ format: 3;
89
+ kind: "event";
90
+ path: string;
91
+ };
@@ -0,0 +1,56 @@
1
+ import { spawn } from 'node:child_process';
2
+ import type { NormalizedAbsoluteMobileConfig } from './config';
3
+ import { startAbsoluteIosCaEnrollmentServer } from './iosPhysicalDeviceTransport';
4
+ export type AbsoluteExpoDevPlatform = 'android' | 'ios';
5
+ export type AbsoluteExpoDevState = 'building-android' | 'building-ios' | 'closed' | 'enrolling-trust' | 'failed' | 'preparing-native' | 'ready' | 'starting-metro';
6
+ export type AbsoluteExpoDevCommand = {
7
+ args: string[];
8
+ env: Record<string, string>;
9
+ platform?: AbsoluteExpoDevPlatform;
10
+ role: 'metro' | 'native-build' | 'native-prepare';
11
+ };
12
+ export type AbsoluteExpoDevPlan = {
13
+ commands: AbsoluteExpoDevCommand[];
14
+ metroPort: number;
15
+ project: string;
16
+ };
17
+ export type PlanAbsoluteExpoDevOptions = {
18
+ androidDevice?: string;
19
+ androidOrigin?: string;
20
+ certificateAuthorityPath?: string;
21
+ iosDevice?: string;
22
+ iosOrigin?: string;
23
+ metroHost?: string;
24
+ metroPort: number;
25
+ /** The caller owns Metro, for example through a Remote Mac tunnel. */
26
+ metro?: 'external' | 'managed';
27
+ platforms: AbsoluteExpoDevPlatform[];
28
+ };
29
+ export type AbsoluteExpoDevPhaseTiming = {
30
+ durationMs: number;
31
+ phase: AbsoluteExpoDevState;
32
+ };
33
+ export type StartAbsoluteExpoDevOptions = PlanAbsoluteExpoDevOptions & {
34
+ config: NormalizedAbsoluteMobileConfig;
35
+ executable?: string;
36
+ log?: (message: string) => void;
37
+ onPhaseTiming?: (timing: AbsoluteExpoDevPhaseTiming) => void;
38
+ onStateChange?: (state: AbsoluteExpoDevState) => void;
39
+ signal?: AbortSignal;
40
+ spawnProcess?: typeof spawn;
41
+ startCaEnrollmentServer?: typeof startAbsoluteIosCaEnrollmentServer;
42
+ };
43
+ export type AbsoluteExpoDevSession = {
44
+ close: () => Promise<void>;
45
+ metroPort: number;
46
+ platforms: AbsoluteExpoDevPlatform[];
47
+ timings: Partial<Record<AbsoluteExpoDevState, number>>;
48
+ };
49
+ export declare const absoluteExpoExecutable: (project: string) => Promise<string>;
50
+ export declare const planAbsoluteExpoDevSession: (config: NormalizedAbsoluteMobileConfig, options: PlanAbsoluteExpoDevOptions) => AbsoluteExpoDevPlan;
51
+ export declare const startAbsoluteExpoDevSession: (options: StartAbsoluteExpoDevOptions) => Promise<{
52
+ metroPort: number;
53
+ platforms: AbsoluteExpoDevPlatform[];
54
+ timings: Partial<Record<AbsoluteExpoDevState, number>>;
55
+ close: () => Promise<void>;
56
+ }>;
@@ -0,0 +1,16 @@
1
+ import type { NormalizedAbsoluteMobileConfig } from './config';
2
+ export type WriteAbsoluteExpoProjectOptions = {
3
+ force?: boolean;
4
+ projectRoot: string;
5
+ };
6
+ export declare const writeAbsoluteExpoProject: (config: NormalizedAbsoluteMobileConfig, options: WriteAbsoluteExpoProjectOptions) => Promise<{
7
+ changed: number;
8
+ path: string;
9
+ written: string[];
10
+ }>;
11
+ export declare const syncAbsoluteExpoWebAssets: (config: NormalizedAbsoluteMobileConfig) => Promise<{
12
+ appBuild: string;
13
+ assets: number;
14
+ bundleId: string;
15
+ path: string;
16
+ }>;
@@ -1,26 +1,40 @@
1
1
  export * from './artifactStore';
2
2
  export * from './androidRelease';
3
+ export * from './androidUpgradeConformance';
3
4
  export * from './iosRelease';
4
5
  export * from './iosConformance';
5
6
  export * from './iosSimulatorController';
7
+ export * from './iosPhysicalDeviceTransport';
6
8
  export * from './iosNativeWatcher';
7
9
  export * from './remoteMacProtocol';
10
+ export * from './iosDeviceAcceptance';
8
11
  export * from './associationFiles';
9
12
  export * from './buildMetadata';
10
13
  export * from './buildPipeline';
11
14
  export * from './buildRelease';
12
15
  export * from './capacitorBundle';
16
+ export * from './syncSchema';
17
+ export * from './syncRemediation';
18
+ export * from './deviceCapabilities';
19
+ export * from './expoBridge';
20
+ export * from './expoDevController';
21
+ export * from './expoProject';
13
22
  export * from './capacitorProject';
14
23
  export * from './config';
15
24
  export * from './client';
25
+ export * from './ciWorkflow';
16
26
  export * from './compatibilityDispatcher';
17
27
  export * from './materializedBundle';
28
+ export * from './mobilePreview';
18
29
  export * from './nativeDeepLinks';
30
+ export * from './nativeDeviceCapabilities';
19
31
  export * from './nativeAuth';
32
+ export * from './nativeRoute';
20
33
  export * from './pageProtocol';
21
34
  export * from './producerContext';
22
35
  export * from './releaseArtifact';
23
36
  export * from './releasePublisher';
24
37
  export * from './routeMetadataTransform';
25
38
  export * from './routeMatcher';
39
+ export * from './shellHttp';
26
40
  export * from './transport';
@@ -0,0 +1,32 @@
1
+ export type AbsoluteIosDeviceAcceptanceResult = {
2
+ hmrConnected: true;
3
+ installed: true;
4
+ relaunchMs: number;
5
+ };
6
+ type CommandResult = {
7
+ exitCode: number;
8
+ stderr: string;
9
+ stdout: string;
10
+ };
11
+ export declare const absoluteIosDeviceAcceptanceCommands: (options: {
12
+ appId: string;
13
+ device: string;
14
+ xcrun?: string;
15
+ }) => {
16
+ apps: string[];
17
+ details: string[];
18
+ launch: string[];
19
+ };
20
+ /**
21
+ * Validate and relaunch a physical iOS app without retaining device inventory,
22
+ * signing output, or console output in the acceptance result.
23
+ */
24
+ export declare const testAbsoluteIosPhysicalDevice: (options: {
25
+ appId: string;
26
+ capture: (command: string[]) => Promise<CommandResult>;
27
+ device: string;
28
+ now?: () => number;
29
+ waitForHmr: () => Promise<void>;
30
+ xcrun?: string;
31
+ }) => Promise<AbsoluteIosDeviceAcceptanceResult>;
32
+ export {};
@@ -0,0 +1,16 @@
1
+ export type AbsoluteIosCloseableServer = {
2
+ close: () => Promise<void>;
3
+ };
4
+ export type AbsoluteIosCaEnrollmentServer = AbsoluteIosCloseableServer & {
5
+ url: string;
6
+ };
7
+ export declare const normalizeAbsoluteIosDeviceHost: (value: string) => string;
8
+ export declare const normalizeAbsoluteIosDeviceIdentifier: (value: string) => string;
9
+ export declare const startAbsoluteIosCaEnrollmentServer: (options: {
10
+ certificateAuthorityPath: string;
11
+ displayHost: string;
12
+ }) => Promise<AbsoluteIosCaEnrollmentServer>;
13
+ export declare const startAbsoluteIosTcpRelay: (options: {
14
+ listenPort: number;
15
+ targetPort: number;
16
+ }) => Promise<AbsoluteIosCloseableServer>;
@@ -7,7 +7,7 @@ export type AbsoluteIosReleaseMetadata = {
7
7
  artifact: 'App.ipa';
8
8
  buildNumber?: number;
9
9
  bytes: number;
10
- engine: 'capacitor';
10
+ engine: 'capacitor' | 'expo';
11
11
  format: typeof ABSOLUTE_IOS_RELEASE_FORMAT;
12
12
  marketingVersion: string;
13
13
  platform: 'ios';
@@ -30,14 +30,54 @@ export type BuildAbsoluteIosReleaseOptions = {
30
30
  allowUnsigned?: boolean;
31
31
  capture?: (command: string[], options?: CommandOptions) => CommandResult;
32
32
  config: NormalizedAbsoluteMobileConfig;
33
+ developmentTeam?: string;
34
+ env?: Record<string, string | undefined>;
33
35
  host?: AbsoluteMobileHost;
34
36
  outputDirectory?: string;
35
37
  prepareBuildNumber?: (buildIdentity: string) => Promise<number>;
36
38
  projectRoot: string;
37
39
  run?: (command: string[], options?: CommandOptions) => Promise<number>;
38
40
  buildNumber?: number;
41
+ scheme?: string;
42
+ workspacePath?: string;
43
+ };
44
+ type InstallAbsoluteIosReleaseOptions = {
45
+ artifactPath: string;
46
+ metadata: unknown;
47
+ outputDirectory?: string;
48
+ projectRoot: string;
39
49
  };
40
- export declare const fingerprintAbsoluteIosNativeProject: (nativeDirectory: string) => Promise<string>;
50
+ export declare const fingerprintAbsoluteIosNativeProject: (nativeDirectory: string, options?: {
51
+ includePublicBundle?: boolean;
52
+ }) => Promise<string>;
53
+ export declare const resolveAbsoluteIosXcodeProject: (nativeDirectory: string, options?: {
54
+ scheme?: string;
55
+ workspacePath?: string;
56
+ }) => Promise<{
57
+ scheme: string;
58
+ workspacePath: string;
59
+ }>;
60
+ export declare const requireAbsoluteIosReleaseMetadata: (value: unknown) => {
61
+ bytes: number;
62
+ engine: "capacitor" | "expo";
63
+ format: 1;
64
+ marketingVersion: string;
65
+ platform: "ios";
66
+ releaseId: string;
67
+ runtime: string;
68
+ sha256: string;
69
+ signed: boolean;
70
+ type: "ipa";
71
+ buildNumber?: number | undefined;
72
+ appBuild: string;
73
+ appId: string;
74
+ artifact: "App.ipa";
75
+ };
76
+ /** Import an IPA produced by a trusted AbsoluteJS build host.
77
+ *
78
+ * The artifact is hashed and sized locally before it enters the immutable
79
+ * release store. Remote metadata is never trusted as proof of its contents.
80
+ */
41
81
  export declare const buildAbsoluteIosRelease: (options: BuildAbsoluteIosReleaseOptions) => Promise<{
42
82
  artifactPath: string;
43
83
  metadata: {
@@ -52,7 +92,27 @@ export declare const buildAbsoluteIosRelease: (options: BuildAbsoluteIosReleaseO
52
92
  appId: string;
53
93
  platform: "ios";
54
94
  buildNumber?: number | undefined;
55
- engine: "capacitor";
95
+ engine: "capacitor" | "expo";
96
+ marketingVersion: string;
97
+ signed: boolean;
98
+ };
99
+ releaseRoot: string;
100
+ }>;
101
+ export declare const installAbsoluteIosRelease: (options: InstallAbsoluteIosReleaseOptions) => Promise<{
102
+ artifactPath: string;
103
+ metadata: {
104
+ artifact: "App.ipa";
105
+ sha256: string;
106
+ type: "ipa";
107
+ format: typeof ABSOLUTE_IOS_RELEASE_FORMAT;
108
+ bytes: number;
109
+ runtime: string;
110
+ releaseId: string;
111
+ appBuild: string;
112
+ appId: string;
113
+ platform: "ios";
114
+ buildNumber?: number | undefined;
115
+ engine: "capacitor" | "expo";
56
116
  marketingVersion: string;
57
117
  signed: boolean;
58
118
  };
@@ -1,4 +1,5 @@
1
1
  import type { NormalizedAbsoluteMobileConfig } from './config';
2
+ import { type AbsoluteIosCaEnrollmentServer } from './iosPhysicalDeviceTransport';
2
3
  export declare const ABSOLUTE_IOS_SIMULATOR_NAME = "AbsoluteJS iPhone";
3
4
  export type AbsoluteIosCommandOptions = {
4
5
  cwd?: string;
@@ -10,7 +11,7 @@ export type AbsoluteIosCommandResult = {
10
11
  stderr: string;
11
12
  stdout: string;
12
13
  };
13
- export type AbsoluteIosDevState = 'booting' | 'building' | 'checking-native' | 'closed' | 'closing' | 'configuring' | 'connecting' | 'failed' | 'installing' | 'launching' | 'ready' | 'streaming-logs' | 'syncing';
14
+ export type AbsoluteIosDevState = 'booting' | 'building' | 'checking-native' | 'closed' | 'closing' | 'configuring' | 'connecting' | 'enrolling-trust' | 'failed' | 'installing' | 'launching' | 'ready' | 'streaming-logs' | 'syncing';
14
15
  export type AbsoluteIosNativeLogEntry = {
15
16
  level: 'debug' | 'error' | 'fault' | 'info' | 'notice';
16
17
  message: string;
@@ -35,6 +36,7 @@ export type AbsoluteIosDevSession = {
35
36
  screenshot: (destination: string) => Promise<string>;
36
37
  startedSimulator: boolean;
37
38
  state: AbsoluteIosDevState;
39
+ targetKind: 'device' | 'simulator';
38
40
  timings: Record<string, number>;
39
41
  udid: string;
40
42
  };
@@ -47,9 +49,17 @@ export type PrepareAbsoluteIosDevOptions = {
47
49
  createNativeProject: boolean;
48
50
  projectRoot: string;
49
51
  run?: (command: string[], options?: AbsoluteIosCommandOptions) => Promise<number>;
52
+ target?: 'device' | 'simulator';
50
53
  };
51
54
  export type StartAbsoluteIosDevOptions = {
55
+ /** CA certificate installed into this simulator's trusted root store. */
56
+ certificateAuthorityPath?: string;
52
57
  capture?: (command: string[], options?: AbsoluteIosCommandOptions) => AbsoluteIosCommandResult;
58
+ /** Xcode device identifier or name. Omit to use the managed Simulator. */
59
+ deviceIdentifier?: string;
60
+ /** Launch the locally embedded production web bundle. `port` remains the
61
+ * configured backend port and no temporary development URL is projected. */
62
+ embeddedBundle?: boolean;
53
63
  https?: boolean;
54
64
  log?: (message: string) => void;
55
65
  nativeLog?: (entry: AbsoluteIosNativeLogEntry) => void;
@@ -58,10 +68,16 @@ export type StartAbsoluteIosDevOptions = {
58
68
  port: number;
59
69
  project: AbsoluteIosDevProject;
60
70
  run?: (command: string[], options?: AbsoluteIosCommandOptions) => Promise<number>;
71
+ /** Hostname or LAN address embedded into a physical-device dev URL. */
72
+ serverHost?: string;
61
73
  signal?: AbortSignal;
62
74
  sleep?: (milliseconds: number) => Promise<void>;
63
75
  spawn?: (command: string[], options?: AbsoluteIosCommandOptions) => void;
64
76
  startNativeLogs?: (command: string[], options: AbsoluteIosCommandOptions, onLine: (line: string) => void) => AbsoluteIosLogStream;
77
+ startCaEnrollmentServer?: (options: {
78
+ certificateAuthorityPath: string;
79
+ displayHost: string;
80
+ }) => Promise<AbsoluteIosCaEnrollmentServer>;
65
81
  };
66
82
  export declare const parseIosDeviceTypes: (source: string) => {
67
83
  identifier: string;
@@ -81,7 +97,9 @@ export declare const parseIosSimulators: (source: string) => {
81
97
  udid: string;
82
98
  }[];
83
99
  export declare const repairAbsoluteIosDevSession: (projectRoot: string) => Promise<boolean>;
84
- export declare const fingerprintAbsoluteIosDevProject: (project: Pick<AbsoluteIosDevProject, "nativeDirectory">) => Promise<string>;
100
+ export declare const fingerprintAbsoluteIosDevProject: (project: Pick<AbsoluteIosDevProject, "nativeDirectory">, options?: {
101
+ includePublicBundle?: boolean;
102
+ }) => Promise<string>;
85
103
  export declare const parseAbsoluteIosLogLine: (line: string) => AbsoluteIosNativeLogEntry | null;
86
104
  export declare const redactAbsoluteIosLog: (value: string) => string;
87
105
  export declare const prepareAbsoluteIosDevProject: (config: NormalizedAbsoluteMobileConfig, options: PrepareAbsoluteIosDevOptions) => Promise<AbsoluteIosDevProject>;
@@ -0,0 +1,24 @@
1
+ import { type AbsoluteNativeAutomatedRun, type AbsoluteNativeTestReport } from './nativeTestReport';
2
+ export type AbsoluteIosAutomatedResult = Omit<AbsoluteNativeAutomatedRun, 'platform' | 'targetId' | 'targetKind'> & {
3
+ targetId: string;
4
+ targetKind: 'device' | 'simulator';
5
+ };
6
+ export type AbsoluteIosPartnerReport = AbsoluteNativeTestReport;
7
+ type CreateAbsoluteIosPartnerReportOptions = {
8
+ absolutejsVersion: string;
9
+ bunVersion: string;
10
+ generatedAt?: string;
11
+ macosVersion: string;
12
+ run: AbsoluteIosAutomatedResult;
13
+ xcodeVersion: string;
14
+ };
15
+ export declare const readPackageVersionForIosReport: (packageJsonPath: string) => Promise<string>;
16
+ export declare const renderAbsoluteIosPartnerReport: (report: AbsoluteNativeTestReport) => string;
17
+ export declare const sanitizeIosReportText: (value: string) => string;
18
+ export declare const writeAbsoluteIosPartnerReport: (directory: string, report: AbsoluteNativeTestReport) => Promise<{
19
+ directory: string;
20
+ jsonPath: string;
21
+ markdownPath: string;
22
+ }>;
23
+ export declare const createAbsoluteIosPartnerReport: (options: CreateAbsoluteIosPartnerReportOptions) => AbsoluteNativeTestReport;
24
+ export {};
@@ -0,0 +1,55 @@
1
+ import type { NormalizedAbsoluteMobileConfig } from './config';
2
+ export type MobileBundleInspection = {
3
+ appBuild?: string;
4
+ auth?: boolean;
5
+ capabilities?: string[];
6
+ entryResolved?: boolean;
7
+ frameworks?: string[];
8
+ issue?: string;
9
+ manifest: string;
10
+ pageCount?: number;
11
+ routeCount?: number;
12
+ runtime?: string;
13
+ status: 'invalid' | 'missing' | 'valid';
14
+ sync?: boolean;
15
+ };
16
+ export declare const inspectAbsoluteMobileBundle: (config: NormalizedAbsoluteMobileConfig, projectRoot: string) => Promise<{
17
+ manifest: string;
18
+ status: "missing";
19
+ appBuild?: undefined;
20
+ auth?: undefined;
21
+ capabilities?: undefined;
22
+ entryResolved?: undefined;
23
+ frameworks?: undefined;
24
+ pageCount?: undefined;
25
+ routeCount?: undefined;
26
+ runtime?: undefined;
27
+ sync?: undefined;
28
+ issue?: undefined;
29
+ } | {
30
+ appBuild: string;
31
+ auth: boolean;
32
+ capabilities: string[];
33
+ entryResolved: true;
34
+ frameworks: string[];
35
+ manifest: string;
36
+ pageCount: number;
37
+ routeCount: number;
38
+ runtime: string;
39
+ status: "valid";
40
+ sync: boolean;
41
+ issue?: undefined;
42
+ } | {
43
+ issue: string;
44
+ manifest: string;
45
+ status: "invalid";
46
+ appBuild?: undefined;
47
+ auth?: undefined;
48
+ capabilities?: undefined;
49
+ entryResolved?: undefined;
50
+ frameworks?: undefined;
51
+ pageCount?: undefined;
52
+ routeCount?: undefined;
53
+ runtime?: undefined;
54
+ sync?: undefined;
55
+ }>;