@absolutejs/absolute 0.20.0-beta.7 → 0.20.0-beta.70

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 (192) hide show
  1. package/README.md +205 -0
  2. package/dist/angular/browser.js +392 -405
  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 +379 -321
  7. package/dist/angular/index.js.map +8 -7
  8. package/dist/angular/server.js +133 -61
  9. package/dist/angular/server.js.map +8 -7
  10. package/dist/build.js +2629 -1416
  11. package/dist/build.js.map +26 -19
  12. package/dist/cli/config/client.js +12 -12
  13. package/dist/cli/config/server.js +1140 -1091
  14. package/dist/cli/index.js +41579 -15184
  15. package/dist/client/chunks/angularPatch-arh4sr68.js +157 -0
  16. package/dist/client/chunks/angularPatch-arh4sr68.js.map +10 -0
  17. package/dist/client/chunks/index-5py90ctf.js +87 -0
  18. package/dist/client/chunks/index-5py90ctf.js.map +10 -0
  19. package/dist/client/chunks/index-m35nbkdp.js +374 -0
  20. package/dist/client/chunks/index-m35nbkdp.js.map +12 -0
  21. package/dist/client/chunks/index-qxjc7kc5.js +12 -0
  22. package/dist/client/chunks/index-qxjc7kc5.js.map +9 -0
  23. package/dist/client/chunks/islands-xj2n8nwf.js +281 -0
  24. package/dist/client/chunks/islands-xj2n8nwf.js.map +14 -0
  25. package/dist/client/chunks/react-pdg4325x.js +65 -0
  26. package/dist/client/chunks/react-pdg4325x.js.map +10 -0
  27. package/dist/client/chunks/svelte-s0c964kb.js +19 -0
  28. package/dist/client/chunks/svelte-s0c964kb.js.map +10 -0
  29. package/dist/client/chunks/vue-rdskrnyg.js +24 -0
  30. package/dist/client/chunks/vue-rdskrnyg.js.map +10 -0
  31. package/dist/client/index.js +73 -841
  32. package/dist/client/index.js.map +7 -20
  33. package/dist/core/streamingSlotRegistrar.js +15 -13
  34. package/dist/core/streamingSlotRegistrar.js.map +2 -2
  35. package/dist/core/streamingSlotRegistry.js +11 -9
  36. package/dist/core/streamingSlotRegistry.js.map +2 -2
  37. package/dist/dev/client/hmrClient.ts +35 -3
  38. package/dist/dev/client/hmrTiming.ts +6 -0
  39. package/dist/dev/client/syncDevtools.ts +237 -0
  40. package/dist/dev/serverBootstrap.js +572 -6
  41. package/dist/image-client/imageClient.js +7 -7
  42. package/dist/index.js +4157 -2440
  43. package/dist/index.js.map +43 -32
  44. package/dist/islands/browser.js +11 -25
  45. package/dist/islands/browser.js.map +2 -2
  46. package/dist/islands/index.js +55 -52
  47. package/dist/islands/index.js.map +5 -4
  48. package/dist/mobile/browser.js +429 -20
  49. package/dist/mobile/browser.js.map +8 -5
  50. package/dist/mobile/index.js +37077 -4967
  51. package/dist/mobile/index.js.map +100 -18
  52. package/dist/mobile/mobilePreviewClient.ts +246 -0
  53. package/dist/mobile/remoteMacAgentEntry.js +1899 -14
  54. package/dist/mobile/shellAuth.js +20 -9
  55. package/dist/mobile/shellBootstrap.js +6801 -120
  56. package/dist/mobile/shellExpoAuth.js +179 -0
  57. package/dist/mobile/shellExpoDevices.js +93 -0
  58. package/dist/mobile/shellExpoSync.js +120 -0
  59. package/dist/mobile/shellSync.js +152 -3
  60. package/dist/mobile/shellUpdate.js +559 -0
  61. package/dist/mobile/uiPrimitives.js +280 -0
  62. package/dist/react/browser.js +17 -59
  63. package/dist/react/browser.js.map +2 -2
  64. package/dist/react/components/browser/index.js +107 -107
  65. package/dist/react/components/index.js +118 -116
  66. package/dist/react/components/index.js.map +2 -2
  67. package/dist/react/hooks/index.js +11 -25
  68. package/dist/react/hooks/index.js.map +2 -2
  69. package/dist/react/index.js +110 -67
  70. package/dist/react/index.js.map +8 -7
  71. package/dist/react/jsxDevRuntimeCompat.js +11 -9
  72. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  73. package/dist/react/jsxRuntimeCompat.js +11 -9
  74. package/dist/react/jsxRuntimeCompat.js.map +2 -2
  75. package/dist/react/router/browser.js +9 -7
  76. package/dist/react/router/browser.js.map +2 -2
  77. package/dist/react/router/index.js +9 -7
  78. package/dist/react/router/index.js.map +2 -2
  79. package/dist/react/server.js +67 -11
  80. package/dist/react/server.js.map +7 -6
  81. package/dist/src/build/chainInlineSourcemaps.d.ts +2 -0
  82. package/dist/src/build/pwa.d.ts +16 -0
  83. package/dist/src/build/vueCompileCache.d.ts +43 -0
  84. package/dist/src/cli/config/server.d.ts +1 -1
  85. package/dist/src/cli/instanceStatus.d.ts +1 -0
  86. package/dist/src/cli/scripts/dev.d.ts +2 -0
  87. package/dist/src/client/browserTranslation.d.ts +19 -0
  88. package/dist/src/client/index.d.ts +1 -0
  89. package/dist/src/core/browserTranslation.d.ts +6 -0
  90. package/dist/src/core/devBuild.d.ts +1 -0
  91. package/dist/src/core/prepare.d.ts +376 -0
  92. package/dist/src/dev/bootLifecycle.d.ts +11 -0
  93. package/dist/src/dev/clientManager.d.ts +1 -0
  94. package/dist/src/dev/devCert.d.ts +6 -4
  95. package/dist/src/dev/earlyListener.d.ts +41 -0
  96. package/dist/src/dev/serverEntryCopies.d.ts +3 -0
  97. package/dist/src/ember/browser.d.ts +0 -16
  98. package/dist/src/mobile/adaptiveShell.d.ts +27 -0
  99. package/dist/src/mobile/androidEmulatorController.d.ts +8 -1
  100. package/dist/src/mobile/androidRelease.d.ts +9 -2
  101. package/dist/src/mobile/androidTestReport.d.ts +14 -0
  102. package/dist/src/mobile/androidUpgradeConformance.d.ts +47 -0
  103. package/dist/src/mobile/androidWebView.d.ts +1 -0
  104. package/dist/src/mobile/browser.d.ts +2 -0
  105. package/dist/src/mobile/capacitorBundle.d.ts +33 -1
  106. package/dist/src/mobile/ciWorkflow.d.ts +26 -0
  107. package/dist/src/mobile/config.d.ts +22 -1
  108. package/dist/src/mobile/devDeviceAdapter.d.ts +3 -0
  109. package/dist/src/mobile/deviceCapabilities.d.ts +49 -0
  110. package/dist/src/mobile/expoBridge.d.ts +91 -0
  111. package/dist/src/mobile/expoCodeSigning.d.ts +14 -0
  112. package/dist/src/mobile/expoDevController.d.ts +64 -0
  113. package/dist/src/mobile/expoNativeObservability.d.ts +3 -0
  114. package/dist/src/mobile/expoProject.d.ts +16 -0
  115. package/dist/src/mobile/expoUpdate.d.ts +27 -0
  116. package/dist/src/mobile/index.d.ts +29 -0
  117. package/dist/src/mobile/iosDeviceAcceptance.d.ts +32 -0
  118. package/dist/src/mobile/iosPhysicalDeviceTransport.d.ts +16 -0
  119. package/dist/src/mobile/iosRelease.d.ts +63 -3
  120. package/dist/src/mobile/iosSimulatorController.d.ts +20 -2
  121. package/dist/src/mobile/iosTestReport.d.ts +24 -0
  122. package/dist/src/mobile/mobileBundleInspection.d.ts +63 -0
  123. package/dist/src/mobile/mobileInspect.d.ts +156 -0
  124. package/dist/src/mobile/mobilePreview.d.ts +174 -0
  125. package/dist/src/mobile/mobilePreviewClient.d.ts +1 -0
  126. package/dist/src/mobile/nativeAuth.d.ts +6 -0
  127. package/dist/src/mobile/nativeBackgroundSync.d.ts +4 -0
  128. package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
  129. package/dist/src/mobile/nativeObservability.d.ts +4 -0
  130. package/dist/src/mobile/nativeRoute.d.ts +13 -0
  131. package/dist/src/mobile/nativeTestReport.d.ts +91 -0
  132. package/dist/src/mobile/nativeUpdates.d.ts +4 -0
  133. package/dist/src/mobile/navigationLifecycle.d.ts +36 -0
  134. package/dist/src/mobile/navigationState.d.ts +53 -0
  135. package/dist/src/mobile/pageProtocol.d.ts +2 -0
  136. package/dist/src/mobile/releaseDoctor.d.ts +23 -1
  137. package/dist/src/mobile/remoteMacProtocol.d.ts +134 -1
  138. package/dist/src/mobile/remoteMacWire.d.ts +1 -1
  139. package/dist/src/mobile/shellAuth.d.ts +5 -1
  140. package/dist/src/mobile/shellBootstrap.d.ts +12 -2
  141. package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
  142. package/dist/src/mobile/shellExpoDevices.d.ts +3 -0
  143. package/dist/src/mobile/shellExpoSync.d.ts +18 -0
  144. package/dist/src/mobile/shellHttp.d.ts +2 -0
  145. package/dist/src/mobile/shellNativeObservability.d.ts +21 -0
  146. package/dist/src/mobile/shellObservability.d.ts +11 -0
  147. package/dist/src/mobile/shellPush.d.ts +11 -0
  148. package/dist/src/mobile/shellSync.d.ts +37 -4
  149. package/dist/src/mobile/shellUpdate.d.ts +2 -0
  150. package/dist/src/mobile/syncRemediation.d.ts +10 -0
  151. package/dist/src/mobile/syncSchema.d.ts +9 -0
  152. package/dist/src/mobile/transport.d.ts +21 -0
  153. package/dist/src/mobile/uiPrimitives.d.ts +37 -0
  154. package/dist/src/mobile/updateClient.d.ts +44 -0
  155. package/dist/src/mobile/updateProtocol.d.ts +51 -0
  156. package/dist/src/mobile/updatePublisher.d.ts +66 -0
  157. package/dist/src/mobile/updateRollout.d.ts +16 -0
  158. package/dist/src/mobile/updateRuntime.d.ts +37 -0
  159. package/dist/src/mobile/updateSigning.d.ts +20 -0
  160. package/dist/src/plugins/hmr.d.ts +3 -0
  161. package/dist/src/plugins/imageOptimizer.d.ts +1 -1
  162. package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
  163. package/dist/src/utils/imageProcessing.d.ts +3 -0
  164. package/dist/src/utils/loadConfig.d.ts +1 -0
  165. package/dist/src/utils/logger.d.ts +1 -0
  166. package/dist/src/utils/startupBanner.d.ts +1 -0
  167. package/dist/src/utils/startupTimings.d.ts +4 -0
  168. package/dist/src/utils/userAgentFunctions.d.ts +1 -1
  169. package/dist/src/vue/browser.d.ts +1 -0
  170. package/dist/src/vue/browserTranslation.d.ts +5 -0
  171. package/dist/src/vue/index.d.ts +1 -0
  172. package/dist/svelte/browser.js +12 -26
  173. package/dist/svelte/browser.js.map +2 -2
  174. package/dist/svelte/index.js +104 -61
  175. package/dist/svelte/index.js.map +8 -7
  176. package/dist/svelte/server.js +84 -28
  177. package/dist/svelte/server.js.map +7 -6
  178. package/dist/types/build.d.ts +83 -3
  179. package/dist/types/cli.d.ts +1 -0
  180. package/dist/types/globals.d.ts +15 -0
  181. package/dist/types/messages.d.ts +1 -1
  182. package/dist/vue/browser.js +116 -56
  183. package/dist/vue/browser.js.map +5 -3
  184. package/dist/vue/components/Image.js +9 -7
  185. package/dist/vue/components/Image.js.map +2 -2
  186. package/dist/vue/components/index.js +11 -9
  187. package/dist/vue/components/index.js.map +2 -2
  188. package/dist/vue/index.js +211 -94
  189. package/dist/vue/index.js.map +10 -7
  190. package/dist/vue/server.js +69 -13
  191. package/dist/vue/server.js.map +7 -6
  192. package/package.json +46 -15
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Props supplied automatically to an application-owned Expo native route.
3
+ * Import the existing AbsoluteJS page-props type as `PageProps` so server and
4
+ * native rendering stay on the same compile-time contract.
5
+ */
6
+ export type AbsoluteNativeRouteProps<PageProps extends object, Params extends object = Record<string, string | string[] | undefined>> = {
7
+ /** Live props produced by the ordinary server route for the current URL. */
8
+ pageProps: Readonly<PageProps>;
9
+ /** Expo Router path and query parameters for the current native route. */
10
+ params: Readonly<Params>;
11
+ /** Re-run the trusted server route without remounting the native screen. */
12
+ reload: () => void;
13
+ };
@@ -0,0 +1,91 @@
1
+ import type { AbsoluteAndroidUpgradeConformanceResult } from './androidUpgradeConformance';
2
+ export type AbsoluteNativeReportResult = 'FAIL' | 'NOT_RUN' | 'PASS' | 'SKIPPED';
3
+ export type AbsoluteNativeReportCheck = {
4
+ details: string;
5
+ evidence?: string;
6
+ id: string;
7
+ result: AbsoluteNativeReportResult;
8
+ };
9
+ export type AbsoluteNativeHmrResult = {
10
+ clientMs?: number;
11
+ durationMs: number;
12
+ outcome: 'applied' | 'failed' | 'reloaded';
13
+ serverMs?: number;
14
+ };
15
+ export type AbsoluteNativeSyncMigrationResult = {
16
+ durationMs: number;
17
+ failedAttempt: {
18
+ code: 'INVALID_PLAN' | 'MIGRATION_MISSING' | 'SCHEMA_TOO_NEW' | 'SCHEMA_TOO_OLD' | 'UNKNOWN';
19
+ storedVersion?: number;
20
+ targetVersion?: number;
21
+ };
22
+ outcome: 'fail' | 'pass';
23
+ recovery: {
24
+ storedVersion: number;
25
+ targetVersion: number;
26
+ };
27
+ state: {
28
+ authCredential: boolean;
29
+ pendingOperations: boolean;
30
+ rollbackPreserved: boolean;
31
+ schemaAdvanced: boolean;
32
+ };
33
+ };
34
+ export type AbsoluteNativeAutomatedRun = {
35
+ appId: string;
36
+ deviceAcceptance?: {
37
+ https: boolean;
38
+ relaunchMs: number;
39
+ remote: boolean;
40
+ };
41
+ durationMs: number;
42
+ error?: string;
43
+ hmr?: AbsoluteNativeHmrResult;
44
+ hmrConnected: boolean;
45
+ platform: 'android' | 'ios';
46
+ port: number;
47
+ routes?: string[];
48
+ screenshot?: string;
49
+ status: 'fail' | 'pass';
50
+ syncMigration?: AbsoluteNativeSyncMigrationResult;
51
+ targetId: string;
52
+ targetKind: 'device' | 'emulator' | 'simulator';
53
+ upgrade?: AbsoluteAndroidUpgradeConformanceResult;
54
+ };
55
+ export type AbsoluteNativeTestReport = {
56
+ automatedChecks: AbsoluteNativeReportCheck[];
57
+ generatedAt: string;
58
+ manualChecks: AbsoluteNativeReportCheck[];
59
+ metadata: Record<string, string> & {
60
+ absolutejsVersion: string;
61
+ bunVersion: string;
62
+ provider: 'capacitor';
63
+ };
64
+ overallResult: 'FAIL' | 'INCOMPLETE';
65
+ platform: 'android' | 'ios';
66
+ reportVersion: 1;
67
+ run: AbsoluteNativeAutomatedRun;
68
+ };
69
+ export type AbsoluteNativeManualCheckDefinition = readonly [
70
+ id: string,
71
+ details: string
72
+ ];
73
+ type CreateAbsoluteNativeTestReportOptions = {
74
+ automatedChecks?: AbsoluteNativeReportCheck[];
75
+ generatedAt?: string;
76
+ manualChecks: readonly AbsoluteNativeManualCheckDefinition[];
77
+ manualCheckResults?: Record<string, AbsoluteNativeReportCheck>;
78
+ metadata: AbsoluteNativeTestReport['metadata'];
79
+ run: AbsoluteNativeAutomatedRun;
80
+ };
81
+ export declare const sanitizeNativeReportText: (value: string) => string;
82
+ export declare const createAbsoluteNativeAutomatedChecks: (run: AbsoluteNativeAutomatedRun) => AbsoluteNativeReportCheck[];
83
+ export declare const createAbsoluteNativeTestReport: (options: CreateAbsoluteNativeTestReportOptions) => AbsoluteNativeTestReport;
84
+ export declare const readPackageVersionForNativeReport: (packageJsonPath: string) => Promise<string>;
85
+ export declare const renderAbsoluteNativeTestReport: (report: AbsoluteNativeTestReport) => string;
86
+ export declare const writeAbsoluteNativeTestReport: (directory: string, report: AbsoluteNativeTestReport) => Promise<{
87
+ directory: string;
88
+ jsonPath: string;
89
+ markdownPath: string;
90
+ }>;
91
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { NormalizedAbsoluteMobileConfig } from './config';
2
+ export declare const applyAbsoluteNativeUpdates: (config: NormalizedAbsoluteMobileConfig, platforms?: import("..").MobilePlatform[]) => Promise<{
3
+ changed: boolean;
4
+ }>;
@@ -0,0 +1,36 @@
1
+ export type AbsoluteMobileNavigationHistoryMode = 'none' | 'push' | 'replace';
2
+ export type AbsoluteMobileNavigationRequest = {
3
+ direction: 'back' | 'forward' | 'replace';
4
+ from: string;
5
+ historyMode: AbsoluteMobileNavigationHistoryMode;
6
+ path: string;
7
+ };
8
+ export type AbsoluteMobileNavigationFailurePhase = 'commit' | 'load';
9
+ export type AbsoluteMobileNavigationResult = {
10
+ kind: 'cancelled';
11
+ } | {
12
+ kind: 'committed';
13
+ } | {
14
+ kind: 'failed';
15
+ error: unknown;
16
+ phase: AbsoluteMobileNavigationFailurePhase;
17
+ };
18
+ export type AbsoluteMobileNavigationCoordinatorOptions<Payload> = {
19
+ commit: (payload: Payload, request: AbsoluteMobileNavigationRequest) => Promise<void>;
20
+ load: (request: AbsoluteMobileNavigationRequest, signal: AbortSignal) => Promise<Payload>;
21
+ onCommit?: (request: AbsoluteMobileNavigationRequest) => void;
22
+ onFailure?: (error: unknown, phase: AbsoluteMobileNavigationFailurePhase, request: AbsoluteMobileNavigationRequest) => void;
23
+ onStart?: (request: AbsoluteMobileNavigationRequest) => void;
24
+ onSuccess?: (request: AbsoluteMobileNavigationRequest) => void;
25
+ };
26
+ export type AbsoluteMobileNavigationCoordinator = {
27
+ cancelPending(): boolean;
28
+ dispose(): void;
29
+ navigate(request: AbsoluteMobileNavigationRequest): Promise<AbsoluteMobileNavigationResult>;
30
+ phase(): 'committing' | 'idle' | 'loading' | 'queued';
31
+ };
32
+ /**
33
+ * Coordinates native-shell route loads. Loads may overlap, but only the latest
34
+ * completed load may enter the serialized document commit boundary.
35
+ */
36
+ export declare const createAbsoluteMobileNavigationCoordinator: <Payload>(options: AbsoluteMobileNavigationCoordinatorOptions<Payload>) => AbsoluteMobileNavigationCoordinator;
@@ -0,0 +1,53 @@
1
+ export type AbsoluteMobileHistoryEntry = {
2
+ absoluteMobile: true;
3
+ entryId: string;
4
+ index: number;
5
+ path: string;
6
+ };
7
+ type ElementLocator = {
8
+ kind: 'id';
9
+ value: string;
10
+ } | {
11
+ kind: 'index';
12
+ index: number;
13
+ } | {
14
+ kind: 'name';
15
+ index: number;
16
+ value: string;
17
+ };
18
+ type ControlSnapshot = {
19
+ checked?: boolean;
20
+ locator: ElementLocator;
21
+ open?: boolean;
22
+ selectionEnd?: number;
23
+ selectionStart?: number;
24
+ tag: string;
25
+ value?: string;
26
+ values?: string[];
27
+ };
28
+ type ScrollSnapshot = {
29
+ left: number;
30
+ locator: ElementLocator;
31
+ top: number;
32
+ };
33
+ export type AbsoluteMobileDocumentSnapshot = {
34
+ controls: ControlSnapshot[];
35
+ focus?: ElementLocator;
36
+ scroll: ScrollSnapshot[];
37
+ window: {
38
+ x: number;
39
+ y: number;
40
+ };
41
+ };
42
+ export declare const createAbsoluteMobileHistoryEntry: (path: string, index: number, entryId?: string) => {
43
+ absoluteMobile: true;
44
+ entryId: string;
45
+ index: number;
46
+ path: string;
47
+ };
48
+ export declare const readAbsoluteMobileHistoryEntry: (value: unknown) => AbsoluteMobileHistoryEntry | undefined;
49
+ /** Captures route-local state in memory. Sensitive credential fields are omitted. */
50
+ export declare const captureAbsoluteMobileDocumentState: () => AbsoluteMobileDocumentSnapshot;
51
+ export declare const restoreAbsoluteMobileDocumentState: (snapshot: AbsoluteMobileDocumentSnapshot) => void;
52
+ export declare const resetAbsoluteMobileDocumentState: () => void;
53
+ export {};
@@ -1,5 +1,6 @@
1
1
  export declare const ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE = "application/vnd.absolute.page+json";
2
2
  export declare const ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION: 1;
3
+ export declare const ABSOLUTE_NATIVE_ROUTE_DATA_MEDIA_TYPE = "application/vnd.absolute.native-route+json";
3
4
  declare const SERVER_ERROR_STATUS = 500;
4
5
  export declare const MOBILE_PAGE_REQUEST_HEADERS: {
5
6
  readonly appBuild: "x-absolute-mobile-app-build";
@@ -81,6 +82,7 @@ type FinalizeAbsoluteMobilePageInput<Props> = {
81
82
  status?: number;
82
83
  };
83
84
  export declare const acceptsAbsoluteMobilePage: (request: Request | undefined) => boolean;
85
+ export declare const acceptsAbsoluteNativeRouteData: (request: Request | undefined) => boolean;
84
86
  export declare const parseAbsoluteMobilePageRequest: (request: Request | undefined) => ParsedMobilePageRequest;
85
87
  export declare const createAbsoluteMobileInvalidRequestResponse: (message: string) => Response;
86
88
  export declare const createAbsoluteMobilePageErrorResponse: (pageId: string) => Response;
@@ -4,10 +4,32 @@ export type AbsoluteMobileReleaseCheck = {
4
4
  id: string;
5
5
  path?: string;
6
6
  remediation?: string;
7
- status: 'fail' | 'pass';
7
+ status: 'fail' | 'pass' | 'warn';
8
8
  };
9
9
  export type AbsoluteMobileReleaseDoctorResult = {
10
10
  checks: AbsoluteMobileReleaseCheck[];
11
11
  ready: boolean;
12
12
  };
13
+ export declare const ABSOLUTE_MOBILE_COMPLIANCE_REPORT_FORMAT: 1;
14
+ export type AbsoluteMobileComplianceReport = {
15
+ app: {
16
+ appId: string;
17
+ engine: 'capacitor' | 'expo';
18
+ platforms: string[];
19
+ productionOrigin: string;
20
+ };
21
+ checks: Array<{
22
+ id: string;
23
+ status: AbsoluteMobileReleaseCheck['status'];
24
+ }>;
25
+ format: typeof ABSOLUTE_MOBILE_COMPLIANCE_REPORT_FORMAT;
26
+ manualReview: string[];
27
+ ready: boolean;
28
+ summary: {
29
+ failed: number;
30
+ passed: number;
31
+ warnings: number;
32
+ };
33
+ };
34
+ export declare const createAbsoluteMobileComplianceReport: (config: NormalizedAbsoluteMobileConfig, result: AbsoluteMobileReleaseDoctorResult) => AbsoluteMobileComplianceReport;
13
35
  export declare const inspectAbsoluteMobileRelease: (config: NormalizedAbsoluteMobileConfig, projectRoot: string) => Promise<AbsoluteMobileReleaseDoctorResult>;
@@ -1,6 +1,8 @@
1
1
  import type { FileSink } from 'bun';
2
2
  import type { NormalizedAbsoluteMobileConfig } from './config';
3
+ import { installAbsoluteIosRelease, type AbsoluteIosReleaseMetadata } from './iosRelease';
3
4
  import type { AbsoluteIosDevPhaseTiming, AbsoluteIosDevSession, AbsoluteIosDevState, AbsoluteIosNativeLogEntry } from './iosSimulatorController';
5
+ import type { AbsoluteExpoDevPhaseTiming, AbsoluteExpoDevSession, AbsoluteExpoDevState } from './expoDevController';
4
6
  export { ABSOLUTE_REMOTE_MAC_EVENT_PREFIX, ABSOLUTE_REMOTE_MAC_PROTOCOL_VERSION } from './remoteMacWire';
5
7
  export type AbsoluteRemoteMacProfile = {
6
8
  bunPath: string;
@@ -28,6 +30,11 @@ export type AbsoluteRemoteIosDevProject = {
28
30
  xcodebuild: string;
29
31
  xcrun: string;
30
32
  };
33
+ export type AbsoluteRemoteExpoIosDevProject = AbsoluteRemoteIosDevProject & {
34
+ config: NormalizedAbsoluteMobileConfig & {
35
+ engine: 'expo';
36
+ };
37
+ };
31
38
  export type AbsoluteIosDevelopmentProject = AbsoluteRemoteIosDevProject | (import('./iosSimulatorController').AbsoluteIosDevProject & {
32
39
  remote?: false;
33
40
  });
@@ -49,7 +56,9 @@ export type AbsoluteRemoteMacTransport = {
49
56
  };
50
57
  };
51
58
  export type AbsoluteRemoteIosOptions = {
59
+ certificateAuthorityPath?: string;
52
60
  https?: boolean;
61
+ deviceIdentifier?: string;
53
62
  log?: (message: string) => void;
54
63
  nativeLog?: (entry: AbsoluteIosNativeLogEntry) => void;
55
64
  onPhaseTiming?: (timing: AbsoluteIosDevPhaseTiming) => void;
@@ -57,6 +66,26 @@ export type AbsoluteRemoteIosOptions = {
57
66
  port: number;
58
67
  project: AbsoluteRemoteIosDevProject;
59
68
  signal?: AbortSignal;
69
+ serverHost?: string;
70
+ installAgent?: (project: AbsoluteRemoteIosDevProject) => Promise<{
71
+ remotePath: string;
72
+ uploaded?: boolean;
73
+ }>;
74
+ syncProject?: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
75
+ transport?: AbsoluteRemoteMacTransport;
76
+ };
77
+ export type AbsoluteRemoteExpoIosOptions = {
78
+ certificateAuthorityPath?: string;
79
+ deviceIdentifier?: string;
80
+ https?: boolean;
81
+ log?: (message: string) => void;
82
+ metroPort: number;
83
+ onPhaseTiming?: (timing: AbsoluteExpoDevPhaseTiming) => void;
84
+ onStateChange?: (state: AbsoluteExpoDevState) => void;
85
+ port: number;
86
+ project: AbsoluteRemoteExpoIosDevProject;
87
+ serverHost?: string;
88
+ signal?: AbortSignal;
60
89
  installAgent?: (project: AbsoluteRemoteIosDevProject) => Promise<{
61
90
  remotePath: string;
62
91
  uploaded?: boolean;
@@ -64,11 +93,55 @@ export type AbsoluteRemoteIosOptions = {
64
93
  syncProject?: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
65
94
  transport?: AbsoluteRemoteMacTransport;
66
95
  };
96
+ export type BuildAbsoluteRemoteIosReleaseOptions = {
97
+ acquireLease?: (project: AbsoluteRemoteIosDevProject, signal?: AbortSignal) => Promise<AbsoluteRemoteMacLease>;
98
+ allowUnsigned?: boolean;
99
+ developmentTeam?: string;
100
+ installAgent?: (project: AbsoluteRemoteIosDevProject) => Promise<{
101
+ remotePath: string;
102
+ uploaded?: boolean;
103
+ }>;
104
+ log?: (message: string) => void;
105
+ onPhaseTiming?: (timing: {
106
+ durationMs: number;
107
+ phase: string;
108
+ }) => void;
109
+ outputDirectory?: string;
110
+ prepareBuildNumber?: (buildIdentity: string) => Promise<number>;
111
+ project: AbsoluteRemoteIosDevProject;
112
+ retrieveRelease?: (project: AbsoluteRemoteIosDevProject, metadata: AbsoluteIosReleaseMetadata, outputDirectory?: string) => Promise<Awaited<ReturnType<typeof installAbsoluteIosRelease>>>;
113
+ syncReleaseInputs?: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
114
+ syncProject?: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
115
+ signal?: AbortSignal;
116
+ transport?: Pick<AbsoluteRemoteMacTransport, 'capture' | 'spawn'>;
117
+ };
118
+ export type AbsoluteRemoteMacLease = {
119
+ heartbeat: () => Promise<void>;
120
+ path: string;
121
+ recovered: boolean;
122
+ release: () => Promise<void>;
123
+ token: string;
124
+ };
125
+ export type AbsoluteRemoteMacWorkspaceInspection = {
126
+ agentCount: number;
127
+ bytes: number;
128
+ leaseCount: number;
129
+ profile: string;
130
+ projectCount: number;
131
+ workspaceRoot: string;
132
+ };
67
133
  export declare const validateAbsoluteRemoteMacProfileName: (name: string) => string;
68
134
  export declare const validateAbsoluteSshDestination: (destination: string) => string;
69
135
  export declare const absoluteRemoteMacSshBase: (profile: Pick<AbsoluteRemoteMacProfile, "destination" | "port">, options?: {
70
136
  acceptNew?: boolean;
71
137
  }) => string[];
138
+ /** Run a non-interactive command on an already paired Mac.
139
+ *
140
+ * Arguments are quoted independently before crossing SSH. This is intended for
141
+ * small, read-only inspections and lifecycle commands that do not need the
142
+ * long-running remote development agent.
143
+ */
144
+ export declare const captureAbsoluteRemoteMacCommand: (profile: AbsoluteRemoteMacProfile, command: string[], transport?: Pick<AbsoluteRemoteMacTransport, "capture">) => Promise<AbsoluteRemoteMacCommandResult>;
72
145
  export declare const getAbsoluteRemoteMacProfile: (name?: string, profilePath?: string) => Promise<AbsoluteRemoteMacProfile | undefined>;
73
146
  export declare const inspectAbsoluteRemoteMac: (destination: string, options?: {
74
147
  acceptNew?: boolean;
@@ -80,6 +153,7 @@ export declare const inspectAbsoluteRemoteMac: (destination: string, options?: {
80
153
  os: string;
81
154
  xcodeVersion: string;
82
155
  }>;
156
+ export declare const inspectAbsoluteRemoteMacLanHost: (profile: AbsoluteRemoteMacProfile, transport?: Pick<AbsoluteRemoteMacTransport, "capture">) => Promise<string>;
83
157
  export declare const listAbsoluteRemoteMacProfiles: (profilePath?: string) => Promise<{
84
158
  defaultProfile: string | undefined;
85
159
  profiles: AbsoluteRemoteMacProfile[];
@@ -93,7 +167,29 @@ export declare const pairAbsoluteRemoteMac: (options: {
93
167
  workspaceRoot?: string;
94
168
  }) => Promise<AbsoluteRemoteMacProfile>;
95
169
  export declare const removeAbsoluteRemoteMacProfile: (name: string, profilePath?: string) => Promise<boolean>;
170
+ export declare const createAbsoluteRemoteExpoIosDevProject: (config: NormalizedAbsoluteMobileConfig, projectRoot: string, profile: AbsoluteRemoteMacProfile) => AbsoluteRemoteExpoIosDevProject;
96
171
  export declare const createAbsoluteRemoteIosDevProject: (config: NormalizedAbsoluteMobileConfig, projectRoot: string, profile: AbsoluteRemoteMacProfile) => AbsoluteRemoteIosDevProject;
172
+ /** Acquire the project-scoped release lease before changing shared remote state.
173
+ *
174
+ * `mkdir` and the stale-directory rename are atomic on the Remote Mac. The
175
+ * random token prevents an expired owner from touching or releasing a newer
176
+ * owner's lease after a delayed SSH command completes.
177
+ */
178
+ export declare const acquireAbsoluteRemoteMacReleaseLease: (project: AbsoluteRemoteIosDevProject, options?: {
179
+ signal?: AbortSignal;
180
+ staleSeconds?: number;
181
+ transport?: Pick<AbsoluteRemoteMacTransport, "capture">;
182
+ }) => Promise<AbsoluteRemoteMacLease>;
183
+ declare const inspectAbsoluteRemoteMacWorkspace: (profile: AbsoluteRemoteMacProfile, transport?: Pick<AbsoluteRemoteMacTransport, "capture">) => Promise<AbsoluteRemoteMacWorkspaceInspection>;
184
+ /** Remove only abandoned staging directories. Project dependency/native caches,
185
+ * immutable releases, and active leases are deliberately retained.
186
+ */
187
+ declare const cleanAbsoluteRemoteMacWorkspace: (profile: AbsoluteRemoteMacProfile, transport?: Pick<AbsoluteRemoteMacTransport, "capture">) => Promise<{
188
+ profile: string;
189
+ removed: number;
190
+ workspaceRoot: string;
191
+ }>;
192
+ export { cleanAbsoluteRemoteMacWorkspace, inspectAbsoluteRemoteMacWorkspace };
97
193
  export declare const installAbsoluteRemoteMacAgent: (project: AbsoluteRemoteIosDevProject) => Promise<{
98
194
  remotePath: string;
99
195
  uploaded: boolean;
@@ -110,5 +206,42 @@ export declare const absoluteRemoteProjectSyncCommands: (project: AbsoluteRemote
110
206
  remote: string[];
111
207
  tar: string[];
112
208
  };
113
- export declare const syncAbsoluteRemoteMacProject: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
209
+ export declare const syncAbsoluteRemoteMacProject: (project: AbsoluteRemoteIosDevProject, options?: {
210
+ signal?: AbortSignal;
211
+ }) => Promise<void>;
212
+ export declare const absoluteRemoteReleaseInputSyncCommands: (project: AbsoluteRemoteIosDevProject) => {
213
+ remote: string[];
214
+ tar: string[];
215
+ };
216
+ export declare const syncAbsoluteRemoteMacReleaseInputs: (project: AbsoluteRemoteIosDevProject, options?: {
217
+ signal?: AbortSignal;
218
+ }) => Promise<void>;
219
+ export declare const buildAbsoluteRemoteIosRelease: (options: BuildAbsoluteRemoteIosReleaseOptions) => Promise<{
220
+ timings: {
221
+ 'remote-agent': number;
222
+ 'remote-release-download': number;
223
+ 'remote-release-lease': number;
224
+ 'remote-release-sync': number;
225
+ total: number;
226
+ };
227
+ artifactPath: string;
228
+ metadata: {
229
+ artifact: "App.ipa";
230
+ sha256: string;
231
+ type: "ipa";
232
+ format: typeof import("./iosRelease").ABSOLUTE_IOS_RELEASE_FORMAT;
233
+ bytes: number;
234
+ runtime: string;
235
+ releaseId: string;
236
+ appBuild: string;
237
+ appId: string;
238
+ platform: "ios";
239
+ buildNumber?: number | undefined;
240
+ engine: "capacitor" | "expo";
241
+ marketingVersion: string;
242
+ signed: boolean;
243
+ };
244
+ releaseRoot: string;
245
+ }>;
246
+ export declare const startAbsoluteRemoteExpoIosDevSession: (options: AbsoluteRemoteExpoIosOptions) => Promise<AbsoluteExpoDevSession>;
114
247
  export declare const startAbsoluteRemoteIosDevSession: (options: AbsoluteRemoteIosOptions) => Promise<AbsoluteIosDevSession>;
@@ -1,2 +1,2 @@
1
1
  export declare const ABSOLUTE_REMOTE_MAC_EVENT_PREFIX = "ABSOLUTE_REMOTE_MAC\t";
2
- export declare const ABSOLUTE_REMOTE_MAC_PROTOCOL_VERSION = 1;
2
+ export declare const ABSOLUTE_REMOTE_MAC_PROTOCOL_VERSION = 3;
@@ -2,10 +2,14 @@ import { type MobileAuthPrincipal } from '@absolutejs/auth/client/mobile';
2
2
  import type { AbsoluteMobileAuthManifest } from './nativeAuth';
3
3
  import type { AbsoluteMobileFetch } from './transport';
4
4
  export type AbsoluteMobileShellAuth = {
5
+ clientId: string;
5
6
  fetch: AbsoluteMobileFetch;
6
7
  onPrincipalChange: (listener: (principal: MobileAuthPrincipal | null) => void) => () => void;
7
8
  principal: MobileAuthPrincipal | null;
8
9
  redirectUri: string;
10
+ issuer: string;
9
11
  socketTicket: (audience?: string) => Promise<string>;
10
12
  };
11
- export declare const createAbsoluteMobileShellAuth: (config: AbsoluteMobileAuthManifest) => Promise<AbsoluteMobileShellAuth>;
13
+ export declare const createAbsoluteMobileShellAuth: (config: AbsoluteMobileAuthManifest, options?: {
14
+ beforeSignOut?: () => Promise<void> | void;
15
+ }) => Promise<AbsoluteMobileShellAuth>;
@@ -1,16 +1,26 @@
1
1
  import { type AbsoluteMobileFetch, type AbsoluteMobileClientManifest } from './transport';
2
+ import { type AbsoluteMobileObservabilityEngine } from './shellObservability';
2
3
  export type AbsoluteMobileShellAuthRuntime = {
4
+ clientId: string;
3
5
  fetch: AbsoluteMobileFetch;
4
6
  onPrincipalChange: (listener: (principal: AbsoluteMobileShellPrincipal | null) => void) => () => void;
5
7
  principal: AbsoluteMobileShellPrincipal | null;
6
8
  redirectUri: string;
9
+ issuer: string;
7
10
  socketTicket: (audience?: string) => Promise<string>;
8
11
  };
9
12
  export type AbsoluteMobileShellPrincipal = {
10
13
  namespace: string;
11
14
  };
12
15
  export type AbsoluteMobileShellOptions = {
13
- createAuth?: (config: NonNullable<AbsoluteMobileClientManifest['auth']>) => Promise<AbsoluteMobileShellAuthRuntime>;
14
- installSync?: (auth: AbsoluteMobileShellAuthRuntime) => void | (() => void);
16
+ engine?: AbsoluteMobileObservabilityEngine;
17
+ createFetch?: (manifest: AbsoluteMobileClientManifest) => AbsoluteMobileFetch;
18
+ createAuth?: (config: NonNullable<AbsoluteMobileClientManifest['auth']>, options?: {
19
+ beforeSignOut?: () => Promise<void> | void;
20
+ }) => Promise<AbsoluteMobileShellAuthRuntime>;
21
+ beforeSignOut?: () => Promise<void> | void;
22
+ connectPush?: (auth: AbsoluteMobileShellAuthRuntime) => void;
23
+ installSync?: (auth: AbsoluteMobileShellAuthRuntime, config: NonNullable<AbsoluteMobileClientManifest['sync']>) => void | (() => void);
24
+ installUpdates?: (manifest: AbsoluteMobileClientManifest) => Promise<void>;
15
25
  };
16
26
  export declare const startAbsoluteMobileShell: (options?: AbsoluteMobileShellOptions) => Promise<void>;
@@ -0,0 +1,12 @@
1
+ import { type MobileAuthPrincipal } from '@absolutejs/auth/client/mobile';
2
+ import type { AbsoluteMobileAuthManifest } from './nativeAuth';
3
+ import type { AbsoluteMobileFetch } from './transport';
4
+ export declare const createAbsoluteExpoShellAuth: (config: AbsoluteMobileAuthManifest) => Promise<{
5
+ clientId: string;
6
+ fetch: AbsoluteMobileFetch;
7
+ issuer: string;
8
+ principal: Pick<MobileAuthPrincipal, "namespace"> | null;
9
+ redirectUri: string;
10
+ onPrincipalChange: (listener: (principal: Pick<MobileAuthPrincipal, "namespace"> | null) => void) => () => boolean;
11
+ socketTicket: () => Promise<never>;
12
+ }>;
@@ -0,0 +1,3 @@
1
+ export declare const createAbsoluteExpoBridgeFetch: () => (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
2
+ /** Installs the provider-neutral adapter backed by the generated native host. */
3
+ export declare const installAbsoluteExpoWebDeviceAdapter: (capabilities?: readonly string[]) => () => void;
@@ -0,0 +1,18 @@
1
+ import { type AbsoluteExpoSyncBridgeProvider } from '@absolutejs/sync-expo/client';
2
+ import type { SyncClientStatus } from '@absolutejs/sync/client';
3
+ import type { AbsoluteMobileShellAuthRuntime } from './shellBootstrap';
4
+ import type { AbsoluteMobileClientManifest } from './transport';
5
+ type ExpoBridge = AbsoluteExpoSyncBridgeProvider & {
6
+ on(event: 'sync.socket' | 'sync.wake', listener: (payload: Record<string, unknown>) => void): () => void;
7
+ };
8
+ export type AbsoluteExpoShellSyncOptions = {
9
+ provider?: ExpoBridge;
10
+ reload?: () => void;
11
+ reportStatus?: (status: SyncClientStatus) => void;
12
+ };
13
+ /**
14
+ * Gives unchanged WebView page clients native-owned SQLite and sockets. Auth
15
+ * namespaces and socket tickets never cross into page-controlled JavaScript.
16
+ */
17
+ export declare const installAbsoluteExpoShellSync: (auth: AbsoluteMobileShellAuthRuntime, config?: NonNullable<AbsoluteMobileClientManifest["sync"]>, options?: AbsoluteExpoShellSyncOptions) => () => void;
18
+ export {};
@@ -0,0 +1,2 @@
1
+ import { type AbsoluteHttpFetch } from '@absolutejs/http';
2
+ export declare const installAbsoluteMobileShellHttp: (origin: string, fetch?: AbsoluteHttpFetch) => () => void;
@@ -0,0 +1,21 @@
1
+ import type { AbsoluteMobileClientManifest, AbsoluteMobileFetch } from './transport';
2
+ export type AbsoluteMobileNativeDiagnostic = {
3
+ details: Record<string, unknown>;
4
+ id: string;
5
+ kind: string;
6
+ occurredAt: number;
7
+ platform: 'android' | 'ios';
8
+ };
9
+ export type AbsoluteMobileNativeObservabilityPlugin = {
10
+ acknowledge(options: {
11
+ ids: string[];
12
+ }): Promise<void>;
13
+ pending(): Promise<{
14
+ reports: unknown[];
15
+ }>;
16
+ };
17
+ export type AbsoluteMobileNativeObservabilityDrainOptions = {
18
+ native?: boolean;
19
+ plugin?: AbsoluteMobileNativeObservabilityPlugin;
20
+ };
21
+ export declare const drainAbsoluteMobileNativeObservability: (manifest: AbsoluteMobileClientManifest, fetch: AbsoluteMobileFetch, options?: AbsoluteMobileNativeObservabilityDrainOptions) => Promise<number>;
@@ -0,0 +1,11 @@
1
+ import { type Beacon } from '@absolutejs/beacon';
2
+ import type { AbsoluteMobileClientManifest, AbsoluteMobileFetch } from './transport';
3
+ export type AbsoluteMobileObservabilityEngine = 'capacitor' | 'expo';
4
+ export type AbsoluteMobileShellObservability = {
5
+ beacon: Beacon;
6
+ captureException: (error: unknown, context?: {
7
+ phase?: string;
8
+ path?: string;
9
+ }) => void;
10
+ };
11
+ export declare const installAbsoluteMobileShellObservability: (manifest: AbsoluteMobileClientManifest, engine: AbsoluteMobileObservabilityEngine, fetch?: AbsoluteMobileFetch) => AbsoluteMobileShellObservability | undefined;
@@ -0,0 +1,11 @@
1
+ import { secureStorage, type DevicePushNotificationsCapability } from '@absolutejs/devices';
2
+ import type { CapacitorPushNotificationsOptions } from '@absolutejs/devices-capacitor/push-notifications';
3
+ import type { AbsoluteMobileShellAuthRuntime } from './shellBootstrap';
4
+ export declare const ABSOLUTE_PUSH_ROUTE: "/auth/push";
5
+ export declare const createAbsoluteMobileShellPush: ({ storage }?: {
6
+ storage?: Pick<typeof secureStorage, "get" | "remove" | "set">;
7
+ }) => {
8
+ capabilityOptions: CapacitorPushNotificationsOptions;
9
+ beforeSignOut: () => Promise<void>;
10
+ connect: (nextAuth: AbsoluteMobileShellAuthRuntime, nextCapability: DevicePushNotificationsCapability) => void;
11
+ };
@@ -1,14 +1,47 @@
1
- import { type CapacitorSyncLifecycleOptions } from '@absolutejs/sync-capacitor';
2
- import type { SyncLocalStore } from '@absolutejs/sync/client';
1
+ import { configureCapacitorBackgroundSync, type CapacitorSyncLifecycleOptions, type CapacitorSyncLocalStoreOptions } from '@absolutejs/sync-capacitor';
2
+ import type { SyncClientStatus, SyncLocalStore, SyncLocalStoreSchemaStatus } from '@absolutejs/sync/client';
3
3
  import type { AbsoluteMobileShellAuthRuntime } from './shellBootstrap';
4
+ import type { AbsoluteMobileClientManifest } from './transport';
4
5
  export type AbsoluteMobileShellSyncOptions = {
5
- createStore?: () => SyncLocalStore;
6
+ createStore?: (options?: CapacitorSyncLocalStoreOptions) => SyncLocalStore;
6
7
  installLifecycle?: (options: CapacitorSyncLifecycleOptions) => Promise<() => void>;
7
8
  reload?: () => void;
9
+ reportStatus?: (status: SyncClientStatus) => void;
10
+ reportSchemaState?: (state: AbsoluteMobileSyncSchemaState) => void;
11
+ configureBackground?: typeof configureCapacitorBackgroundSync;
12
+ clearBackground?: () => Promise<void>;
8
13
  };
14
+ export declare const ABSOLUTE_MOBILE_SYNC_SCHEMA_EVENT = "absolute:sync-schema";
15
+ export declare const ABSOLUTE_MOBILE_SYNC_SCHEMA_STATE_KEY = "absolutejs.mobile.sync.schema-state";
16
+ export declare const ABSOLUTE_MOBILE_SYNC_STATUS_EVENT = "absolute:sync-status";
17
+ export type AbsoluteMobileSyncSchemaFailureCode = 'INVALID_PLAN' | 'MIGRATION_MISSING' | 'SCHEMA_TOO_NEW' | 'SCHEMA_TOO_OLD' | 'UNKNOWN';
18
+ export type AbsoluteMobileSyncSchemaState = {
19
+ state: 'preparing';
20
+ } | SyncLocalStoreSchemaStatus | {
21
+ code: AbsoluteMobileSyncSchemaFailureCode;
22
+ state: 'failed';
23
+ storedVersion?: number;
24
+ targetVersion?: number;
25
+ };
26
+ export declare const readAbsoluteMobileSyncSchemaState: () => SyncLocalStoreSchemaStatus | {
27
+ code: AbsoluteMobileSyncSchemaFailureCode;
28
+ state: "failed";
29
+ storedVersion?: number;
30
+ targetVersion?: number;
31
+ } | {
32
+ state: any;
33
+ minimumCompatibleVersion?: undefined;
34
+ storedVersion?: undefined;
35
+ targetVersion?: undefined;
36
+ } | {
37
+ minimumCompatibleVersion: number;
38
+ state: any;
39
+ storedVersion: number;
40
+ targetVersion: number;
41
+ } | undefined;
9
42
  /**
10
43
  * Provisions unchanged Sync clients with native durability, Auth isolation, and
11
44
  * foreground/connectivity reconnects. An identity change reloads the shell so
12
45
  * no page-held client can retain the previous account's in-memory rows.
13
46
  */
14
- export declare const installAbsoluteMobileShellSync: (auth: AbsoluteMobileShellAuthRuntime, options?: AbsoluteMobileShellSyncOptions) => () => void;
47
+ export declare const installAbsoluteMobileShellSync: (auth: AbsoluteMobileShellAuthRuntime, config?: NonNullable<AbsoluteMobileClientManifest["sync"]>, options?: AbsoluteMobileShellSyncOptions) => () => void;
@@ -0,0 +1,2 @@
1
+ import type { AbsoluteMobileClientManifest } from './transport';
2
+ export declare const installAbsoluteMobileShellUpdates: (manifest: AbsoluteMobileClientManifest) => Promise<void>;
@@ -0,0 +1,10 @@
1
+ import { type SyncRuntimeInspection } from '@absolutejs/sync/client/runtime';
2
+ export type AbsoluteMobileSyncRemediation = {
3
+ discard: (operationId: string) => Promise<void>;
4
+ inspect: () => Promise<SyncRuntimeInspection>;
5
+ rebase: (operationId: string, args: unknown) => Promise<string>;
6
+ retry: (operationId: string) => Promise<void>;
7
+ };
8
+ /** Install the native shell's framework-neutral, redacted remediation bridge. */
9
+ export declare const getAbsoluteMobileSyncRemediation: () => AbsoluteMobileSyncRemediation | undefined;
10
+ export declare const installAbsoluteMobileSyncRemediation: (bridge?: AbsoluteMobileSyncRemediation) => () => void;