@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.
- package/README.md +205 -0
- package/dist/angular/browser.js +392 -405
- package/dist/angular/browser.js.map +3 -3
- package/dist/angular/components/core/streamingSlotRegistrar.js +7 -7
- package/dist/angular/components/core/streamingSlotRegistry.js +4 -4
- package/dist/angular/index.js +379 -321
- package/dist/angular/index.js.map +8 -7
- package/dist/angular/server.js +133 -61
- package/dist/angular/server.js.map +8 -7
- package/dist/build.js +2629 -1416
- package/dist/build.js.map +26 -19
- package/dist/cli/config/client.js +12 -12
- package/dist/cli/config/server.js +1140 -1091
- package/dist/cli/index.js +41579 -15184
- package/dist/client/chunks/angularPatch-arh4sr68.js +157 -0
- package/dist/client/chunks/angularPatch-arh4sr68.js.map +10 -0
- package/dist/client/chunks/index-5py90ctf.js +87 -0
- package/dist/client/chunks/index-5py90ctf.js.map +10 -0
- package/dist/client/chunks/index-m35nbkdp.js +374 -0
- package/dist/client/chunks/index-m35nbkdp.js.map +12 -0
- package/dist/client/chunks/index-qxjc7kc5.js +12 -0
- package/dist/client/chunks/index-qxjc7kc5.js.map +9 -0
- package/dist/client/chunks/islands-xj2n8nwf.js +281 -0
- package/dist/client/chunks/islands-xj2n8nwf.js.map +14 -0
- package/dist/client/chunks/react-pdg4325x.js +65 -0
- package/dist/client/chunks/react-pdg4325x.js.map +10 -0
- package/dist/client/chunks/svelte-s0c964kb.js +19 -0
- package/dist/client/chunks/svelte-s0c964kb.js.map +10 -0
- package/dist/client/chunks/vue-rdskrnyg.js +24 -0
- package/dist/client/chunks/vue-rdskrnyg.js.map +10 -0
- package/dist/client/index.js +73 -841
- package/dist/client/index.js.map +7 -20
- package/dist/core/streamingSlotRegistrar.js +15 -13
- package/dist/core/streamingSlotRegistrar.js.map +2 -2
- package/dist/core/streamingSlotRegistry.js +11 -9
- package/dist/core/streamingSlotRegistry.js.map +2 -2
- package/dist/dev/client/hmrClient.ts +35 -3
- package/dist/dev/client/hmrTiming.ts +6 -0
- package/dist/dev/client/syncDevtools.ts +237 -0
- package/dist/dev/serverBootstrap.js +572 -6
- package/dist/image-client/imageClient.js +7 -7
- package/dist/index.js +4157 -2440
- package/dist/index.js.map +43 -32
- package/dist/islands/browser.js +11 -25
- package/dist/islands/browser.js.map +2 -2
- package/dist/islands/index.js +55 -52
- package/dist/islands/index.js.map +5 -4
- package/dist/mobile/browser.js +429 -20
- package/dist/mobile/browser.js.map +8 -5
- package/dist/mobile/index.js +37077 -4967
- package/dist/mobile/index.js.map +100 -18
- package/dist/mobile/mobilePreviewClient.ts +246 -0
- package/dist/mobile/remoteMacAgentEntry.js +1899 -14
- package/dist/mobile/shellAuth.js +20 -9
- package/dist/mobile/shellBootstrap.js +6801 -120
- package/dist/mobile/shellExpoAuth.js +179 -0
- package/dist/mobile/shellExpoDevices.js +93 -0
- package/dist/mobile/shellExpoSync.js +120 -0
- package/dist/mobile/shellSync.js +152 -3
- package/dist/mobile/shellUpdate.js +559 -0
- package/dist/mobile/uiPrimitives.js +280 -0
- package/dist/react/browser.js +17 -59
- package/dist/react/browser.js.map +2 -2
- package/dist/react/components/browser/index.js +107 -107
- package/dist/react/components/index.js +118 -116
- package/dist/react/components/index.js.map +2 -2
- package/dist/react/hooks/index.js +11 -25
- package/dist/react/hooks/index.js.map +2 -2
- package/dist/react/index.js +110 -67
- package/dist/react/index.js.map +8 -7
- package/dist/react/jsxDevRuntimeCompat.js +11 -9
- package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
- package/dist/react/jsxRuntimeCompat.js +11 -9
- package/dist/react/jsxRuntimeCompat.js.map +2 -2
- package/dist/react/router/browser.js +9 -7
- package/dist/react/router/browser.js.map +2 -2
- package/dist/react/router/index.js +9 -7
- package/dist/react/router/index.js.map +2 -2
- package/dist/react/server.js +67 -11
- package/dist/react/server.js.map +7 -6
- package/dist/src/build/chainInlineSourcemaps.d.ts +2 -0
- package/dist/src/build/pwa.d.ts +16 -0
- package/dist/src/build/vueCompileCache.d.ts +43 -0
- package/dist/src/cli/config/server.d.ts +1 -1
- package/dist/src/cli/instanceStatus.d.ts +1 -0
- package/dist/src/cli/scripts/dev.d.ts +2 -0
- package/dist/src/client/browserTranslation.d.ts +19 -0
- package/dist/src/client/index.d.ts +1 -0
- package/dist/src/core/browserTranslation.d.ts +6 -0
- package/dist/src/core/devBuild.d.ts +1 -0
- package/dist/src/core/prepare.d.ts +376 -0
- package/dist/src/dev/bootLifecycle.d.ts +11 -0
- package/dist/src/dev/clientManager.d.ts +1 -0
- package/dist/src/dev/devCert.d.ts +6 -4
- package/dist/src/dev/earlyListener.d.ts +41 -0
- package/dist/src/dev/serverEntryCopies.d.ts +3 -0
- package/dist/src/ember/browser.d.ts +0 -16
- package/dist/src/mobile/adaptiveShell.d.ts +27 -0
- package/dist/src/mobile/androidEmulatorController.d.ts +8 -1
- package/dist/src/mobile/androidRelease.d.ts +9 -2
- package/dist/src/mobile/androidTestReport.d.ts +14 -0
- package/dist/src/mobile/androidUpgradeConformance.d.ts +47 -0
- package/dist/src/mobile/androidWebView.d.ts +1 -0
- package/dist/src/mobile/browser.d.ts +2 -0
- package/dist/src/mobile/capacitorBundle.d.ts +33 -1
- package/dist/src/mobile/ciWorkflow.d.ts +26 -0
- package/dist/src/mobile/config.d.ts +22 -1
- package/dist/src/mobile/devDeviceAdapter.d.ts +3 -0
- package/dist/src/mobile/deviceCapabilities.d.ts +49 -0
- package/dist/src/mobile/expoBridge.d.ts +91 -0
- package/dist/src/mobile/expoCodeSigning.d.ts +14 -0
- package/dist/src/mobile/expoDevController.d.ts +64 -0
- package/dist/src/mobile/expoNativeObservability.d.ts +3 -0
- package/dist/src/mobile/expoProject.d.ts +16 -0
- package/dist/src/mobile/expoUpdate.d.ts +27 -0
- package/dist/src/mobile/index.d.ts +29 -0
- package/dist/src/mobile/iosDeviceAcceptance.d.ts +32 -0
- package/dist/src/mobile/iosPhysicalDeviceTransport.d.ts +16 -0
- package/dist/src/mobile/iosRelease.d.ts +63 -3
- package/dist/src/mobile/iosSimulatorController.d.ts +20 -2
- package/dist/src/mobile/iosTestReport.d.ts +24 -0
- package/dist/src/mobile/mobileBundleInspection.d.ts +63 -0
- package/dist/src/mobile/mobileInspect.d.ts +156 -0
- package/dist/src/mobile/mobilePreview.d.ts +174 -0
- package/dist/src/mobile/mobilePreviewClient.d.ts +1 -0
- package/dist/src/mobile/nativeAuth.d.ts +6 -0
- package/dist/src/mobile/nativeBackgroundSync.d.ts +4 -0
- package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
- package/dist/src/mobile/nativeObservability.d.ts +4 -0
- package/dist/src/mobile/nativeRoute.d.ts +13 -0
- package/dist/src/mobile/nativeTestReport.d.ts +91 -0
- package/dist/src/mobile/nativeUpdates.d.ts +4 -0
- package/dist/src/mobile/navigationLifecycle.d.ts +36 -0
- package/dist/src/mobile/navigationState.d.ts +53 -0
- package/dist/src/mobile/pageProtocol.d.ts +2 -0
- package/dist/src/mobile/releaseDoctor.d.ts +23 -1
- package/dist/src/mobile/remoteMacProtocol.d.ts +134 -1
- package/dist/src/mobile/remoteMacWire.d.ts +1 -1
- package/dist/src/mobile/shellAuth.d.ts +5 -1
- package/dist/src/mobile/shellBootstrap.d.ts +12 -2
- package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
- package/dist/src/mobile/shellExpoDevices.d.ts +3 -0
- package/dist/src/mobile/shellExpoSync.d.ts +18 -0
- package/dist/src/mobile/shellHttp.d.ts +2 -0
- package/dist/src/mobile/shellNativeObservability.d.ts +21 -0
- package/dist/src/mobile/shellObservability.d.ts +11 -0
- package/dist/src/mobile/shellPush.d.ts +11 -0
- package/dist/src/mobile/shellSync.d.ts +37 -4
- package/dist/src/mobile/shellUpdate.d.ts +2 -0
- package/dist/src/mobile/syncRemediation.d.ts +10 -0
- package/dist/src/mobile/syncSchema.d.ts +9 -0
- package/dist/src/mobile/transport.d.ts +21 -0
- package/dist/src/mobile/uiPrimitives.d.ts +37 -0
- package/dist/src/mobile/updateClient.d.ts +44 -0
- package/dist/src/mobile/updateProtocol.d.ts +51 -0
- package/dist/src/mobile/updatePublisher.d.ts +66 -0
- package/dist/src/mobile/updateRollout.d.ts +16 -0
- package/dist/src/mobile/updateRuntime.d.ts +37 -0
- package/dist/src/mobile/updateSigning.d.ts +20 -0
- package/dist/src/plugins/hmr.d.ts +3 -0
- package/dist/src/plugins/imageOptimizer.d.ts +1 -1
- package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
- package/dist/src/utils/imageProcessing.d.ts +3 -0
- package/dist/src/utils/loadConfig.d.ts +1 -0
- package/dist/src/utils/logger.d.ts +1 -0
- package/dist/src/utils/startupBanner.d.ts +1 -0
- package/dist/src/utils/startupTimings.d.ts +4 -0
- package/dist/src/utils/userAgentFunctions.d.ts +1 -1
- package/dist/src/vue/browser.d.ts +1 -0
- package/dist/src/vue/browserTranslation.d.ts +5 -0
- package/dist/src/vue/index.d.ts +1 -0
- package/dist/svelte/browser.js +12 -26
- package/dist/svelte/browser.js.map +2 -2
- package/dist/svelte/index.js +104 -61
- package/dist/svelte/index.js.map +8 -7
- package/dist/svelte/server.js +84 -28
- package/dist/svelte/server.js.map +7 -6
- package/dist/types/build.d.ts +83 -3
- package/dist/types/cli.d.ts +1 -0
- package/dist/types/globals.d.ts +15 -0
- package/dist/types/messages.d.ts +1 -1
- package/dist/vue/browser.js +116 -56
- package/dist/vue/browser.js.map +5 -3
- package/dist/vue/components/Image.js +9 -7
- package/dist/vue/components/Image.js.map +2 -2
- package/dist/vue/components/index.js +11 -9
- package/dist/vue/components/index.js.map +2 -2
- package/dist/vue/index.js +211 -94
- package/dist/vue/index.js.map +10 -7
- package/dist/vue/server.js +69 -13
- package/dist/vue/server.js.map +7 -6
- 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,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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
14
|
-
|
|
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,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,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;
|