@absolutejs/absolute 0.20.0-beta.0 → 0.20.0-beta.2

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 (91) hide show
  1. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  2. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  3. package/dist/angular/index.js +14 -1
  4. package/dist/angular/index.js.map +3 -3
  5. package/dist/angular/server.js +14 -1
  6. package/dist/angular/server.js.map +3 -3
  7. package/dist/build.js +206 -47
  8. package/dist/build.js.map +20 -19
  9. package/dist/cli/config/server.js +2 -2
  10. package/dist/cli/index.js +16506 -11326
  11. package/dist/dev/client/cssUtils.ts +98 -41
  12. package/dist/dev/client/handlers/html.ts +75 -15
  13. package/dist/dev/client/handlers/htmx.ts +43 -8
  14. package/dist/dev/client/handlers/react.ts +114 -32
  15. package/dist/dev/client/handlers/rebuild.ts +28 -8
  16. package/dist/dev/client/handlers/svelte.ts +33 -50
  17. package/dist/dev/client/handlers/vue.ts +36 -45
  18. package/dist/dev/client/hmrClient.ts +38 -6
  19. package/dist/dev/client/hmrTiming.ts +141 -0
  20. package/dist/dev/serverBootstrap.js +20 -11
  21. package/dist/index.js +953 -423
  22. package/dist/index.js.map +27 -23
  23. package/dist/mobile/browser.js.map +1 -1
  24. package/dist/mobile/index.js +2667 -260
  25. package/dist/mobile/index.js.map +27 -7
  26. package/dist/react/index.js +16 -3
  27. package/dist/react/index.js.map +4 -4
  28. package/dist/react/jsxDevRuntimeCompat.js +22 -2
  29. package/dist/react/jsxDevRuntimeCompat.js.map +5 -4
  30. package/dist/react/jsxRuntimeCompat.js +90 -0
  31. package/dist/react/jsxRuntimeCompat.js.map +10 -0
  32. package/dist/react/server.js +16 -3
  33. package/dist/react/server.js.map +4 -4
  34. package/dist/src/build/compileVue.d.ts +1 -1
  35. package/dist/src/build/resolveBuildMode.d.ts +7 -0
  36. package/dist/src/cli/scripts/dev.d.ts +4 -1
  37. package/dist/src/cli/scripts/mobile.d.ts +1 -0
  38. package/dist/src/cli/utils.d.ts +2 -2
  39. package/dist/src/core/build.d.ts +1 -1
  40. package/dist/src/dev/clientManager.d.ts +7 -0
  41. package/dist/src/dev/configResolver.d.ts +2 -0
  42. package/dist/src/dev/moduleMapper.d.ts +1 -1
  43. package/dist/src/dev/moduleServer.d.ts +2 -1
  44. package/dist/src/dev/pathUtils.d.ts +1 -1
  45. package/dist/src/dev/reactComponentClassifier.d.ts +1 -1
  46. package/dist/src/mobile/androidConformance.d.ts +42 -0
  47. package/dist/src/mobile/androidEmulatorController.d.ts +100 -0
  48. package/dist/src/mobile/androidNativeWatcher.d.ts +19 -0
  49. package/dist/src/mobile/androidRelease.d.ts +51 -0
  50. package/dist/src/mobile/androidWebView.d.ts +46 -0
  51. package/dist/src/mobile/associationFiles.d.ts +49 -0
  52. package/dist/src/mobile/buildMetadata.d.ts +10 -0
  53. package/dist/src/mobile/buildPipeline.d.ts +8 -0
  54. package/dist/src/mobile/buildRelease.d.ts +24 -0
  55. package/dist/src/mobile/capacitorBundle.d.ts +28 -0
  56. package/dist/src/mobile/capacitorProject.d.ts +9 -0
  57. package/dist/src/mobile/client.d.ts +1 -1
  58. package/dist/src/mobile/config.d.ts +17 -0
  59. package/dist/src/mobile/emulatorDoctor.d.ts +25 -0
  60. package/dist/src/mobile/emulatorInstaller.d.ts +41 -0
  61. package/dist/src/mobile/index.d.ts +14 -0
  62. package/dist/src/mobile/iosRelease.d.ts +61 -0
  63. package/dist/src/mobile/materializedBundle.d.ts +14 -0
  64. package/dist/src/mobile/nativeDeepLinks.d.ts +5 -0
  65. package/dist/src/mobile/releaseArtifact.d.ts +1 -0
  66. package/dist/src/mobile/releaseDoctor.d.ts +13 -0
  67. package/dist/src/mobile/releasePublisher.d.ts +130 -0
  68. package/dist/src/mobile/routeMatcher.d.ts +3 -0
  69. package/dist/src/mobile/routeMetadataTransform.d.ts +13 -0
  70. package/dist/src/mobile/shellBootstrap.d.ts +1 -0
  71. package/dist/src/mobile/transport.d.ts +31 -0
  72. package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
  73. package/dist/src/react/jsxDevRuntimeCompat.d.ts +1 -1
  74. package/dist/src/react/jsxRuntimeCompat.d.ts +7 -0
  75. package/dist/src/react/pageHandler.d.ts +3 -0
  76. package/dist/src/utils/loadConfig.d.ts +1 -0
  77. package/dist/src/utils/logger.d.ts +2 -0
  78. package/dist/src/utils/userAgentFunctions.d.ts +1 -1
  79. package/dist/svelte/index.js +14 -1
  80. package/dist/svelte/index.js.map +3 -3
  81. package/dist/svelte/server.js +14 -1
  82. package/dist/svelte/server.js.map +3 -3
  83. package/dist/types/build.d.ts +45 -0
  84. package/dist/types/cli.d.ts +2 -0
  85. package/dist/types/globals.d.ts +14 -0
  86. package/dist/types/messages.d.ts +12 -0
  87. package/dist/vue/index.js +14 -1
  88. package/dist/vue/index.js.map +3 -3
  89. package/dist/vue/server.js +14 -1
  90. package/dist/vue/server.js.map +3 -3
  91. package/package.json +35 -7
@@ -0,0 +1,7 @@
1
+ import type { BuildConfig } from '../../types/build';
2
+ export declare const resolveBuildDevelopmentMode: (mode: BuildConfig["mode"], nodeEnv: string | undefined) => boolean;
3
+ export declare const resolveVueFeatureFlags: (development: boolean) => {
4
+ __VUE_OPTIONS_API__: string;
5
+ __VUE_PROD_DEVTOOLS__: string;
6
+ __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: string;
7
+ };
@@ -1,2 +1,5 @@
1
1
  export declare const formatServerBootDiagnostic: (output: string, serverEntry: string) => string | null;
2
- export declare const dev: (serverEntry: string, configPath?: string) => Promise<void>;
2
+ export type AbsoluteDevOptions = {
3
+ mobile?: boolean;
4
+ };
5
+ export declare const dev: (serverEntry: string, configPath?: string, options?: AbsoluteDevOptions) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const runMobile: (args: string[]) => Promise<void>;
@@ -2,10 +2,10 @@ import type { DbScripts } from '../../types/cli';
2
2
  export declare const COMPOSE_PATH = "db/docker-compose.db.yml";
3
3
  export declare const DEFAULT_SERVER_ENTRY = "src/backend/server.ts";
4
4
  export declare const isWSLEnvironment: () => boolean;
5
- export declare const findFreePort: () => number;
5
+ export declare const findFreePort: () => Promise<number>;
6
6
  export declare const killStaleProcesses: (port: number, logMessage?: (message: string) => void) => void;
7
7
  export declare const openUrlInBrowser: (url: string, onError?: (message: string) => void) => boolean;
8
- export declare const printHelp: (subject?: string) => void;
8
+ export declare const printHelp: (subject?: string, mobile?: boolean) => void;
9
9
  export declare const printHint: () => void;
10
10
  export declare const readDbScripts: () => Promise<{
11
11
  downCommand: string;
@@ -3,7 +3,7 @@ import type { ConventionsMap } from '../../types/conventions';
3
3
  import type { BuildConfig, BuildPassError, BunBuildConfigOverride, BunBuildPassKey } from '../../types/build';
4
4
  export declare const scanWorkerReferences: (dirs: string[]) => Promise<string[]>;
5
5
  type BunBuildOptions = Parameters<typeof bunBuild>[0];
6
- export declare const resolveBunBuildOverride: (config: BuildConfig["bunBuild"], pass: BunBuildPassKey) => Partial<Omit<Bun.BuildConfig, "entrypoints" | "outdir" | "root" | "target" | "format" | "throw" | "compile">>;
6
+ export declare const resolveBunBuildOverride: (config: BuildConfig["bunBuild"], pass: BunBuildPassKey) => Partial<Omit<Bun.BuildConfig, "target" | "entrypoints" | "outdir" | "root" | "format" | "throw" | "compile">>;
7
7
  /** Resolve the Bun `sourcemap` mode for CLIENT bundles from the `sourcemaps`
8
8
  * config. Dev always uses inline maps (HMR / devtools); production emits
9
9
  * external maps only when explicitly enabled — they're then chained back to
@@ -4,6 +4,10 @@ import { type ModuleVersions } from './moduleVersionTracker';
4
4
  import type { HMRWebSocket } from '../../types/websocket';
5
5
  import type { BuildConfig, BuildPassError } from '../../types/build';
6
6
  import { type ResolvedBuildPaths } from './configResolver';
7
+ type HMRUpdateMetadata = {
8
+ framework?: string;
9
+ path?: string;
10
+ };
7
11
  export type HMRState = {
8
12
  connectedClients: Set<HMRWebSocket>;
9
13
  activeFrameworks: Set<string>;
@@ -25,6 +29,8 @@ export type HMRState = {
25
29
  rebuildCount: number;
26
30
  lastHmrPath?: string;
27
31
  lastHmrFramework?: string;
32
+ lastBroadcastTimestamp: number;
33
+ hmrUpdates: Map<number, HMRUpdateMetadata>;
28
34
  lastUserEditedFiles?: Set<string>;
29
35
  initialBuildFailed?: boolean;
30
36
  lastBuildErrors?: BuildPassError[];
@@ -33,3 +39,4 @@ export type HMRState = {
33
39
  export declare const createHMRState: (config: BuildConfig) => HMRState;
34
40
  export declare const incrementSourceFileVersion: (state: HMRState, filePath: string) => number;
35
41
  export declare const incrementSourceFileVersions: (state: HMRState, filePaths: string[]) => void;
42
+ export {};
@@ -7,6 +7,8 @@ export declare const resolveBuildPaths: (config: BuildConfig) => {
7
7
  emberDir: string | undefined;
8
8
  htmlDir: string | undefined;
9
9
  htmxDir: string | undefined;
10
+ mobileBundleDir: string | undefined;
11
+ mobileNativeDir: string | undefined;
10
12
  publicDir: string | undefined;
11
13
  reactDir: string | undefined;
12
14
  stylesDir: string | undefined;
@@ -12,7 +12,7 @@ export declare const createModuleUpdates: (changedFiles: string[], framework: st
12
12
  vueDir?: string;
13
13
  angularDir?: string;
14
14
  }) => {
15
- componentType: "server" | "client" | undefined;
15
+ componentType: "client" | "server" | undefined;
16
16
  framework: string;
17
17
  moduleKeys: string[];
18
18
  modulePaths: Record<string, string>;
@@ -10,6 +10,7 @@ type ModuleServerConfig = {
10
10
  };
11
11
  stylePreprocessors?: StylePreprocessorConfig;
12
12
  };
13
+ export declare const isReactFastRefreshSupported: () => boolean;
13
14
  export declare const warnIfReactFastRefreshUnsupported: () => void;
14
15
  export declare const warmCompilers: (frameworks: {
15
16
  svelte?: boolean;
@@ -17,7 +18,7 @@ export declare const warmCompilers: (frameworks: {
17
18
  }) => Promise<void>;
18
19
  export declare const createModuleServer: (config: ModuleServerConfig) => (pathname: string) => Promise<Response | undefined>;
19
20
  export declare const invalidateModule: (filePath: string) => void;
20
- export declare const warmCache: (pathname: string) => void;
21
+ export declare const warmCache: (pathname: string) => Promise<void>;
21
22
  declare let globalModuleServer: ((pathname: string) => Promise<Response | undefined> | Response | undefined) | null;
22
23
  export declare const SRC_URL_PREFIX = "/@src/";
23
24
  export declare const setGlobalModuleServer: (handler: typeof globalModuleServer) => void;
@@ -1,6 +1,6 @@
1
1
  import { BuildConfig } from '../../types/build';
2
2
  import type { ResolvedBuildPaths } from './configResolver';
3
- export declare const detectFramework: (filePath: string, resolved?: ResolvedBuildPaths) => "react" | "svelte" | "vue" | "angular" | "ember" | "html" | "unknown" | "ignored" | "styles" | "htmx" | "assets";
3
+ export declare const detectFramework: (filePath: string, resolved?: ResolvedBuildPaths) => "react" | "svelte" | "vue" | "angular" | "ember" | "html" | "htmx" | "unknown" | "ignored" | "styles" | "assets";
4
4
  export declare const getWatchPaths: (config: BuildConfig, resolved?: ResolvedBuildPaths) => string[];
5
5
  /** A path is ignored when it is NOT inside any of the configured
6
6
  * positive watch roots, OR when it falls inside a hard-denied
@@ -1,2 +1,2 @@
1
1
  export type ComponentType = 'client' | 'server';
2
- export declare const classifyComponent: (filePath: string) => "server" | "client";
2
+ export declare const classifyComponent: (filePath: string) => "client" | "server";
@@ -0,0 +1,42 @@
1
+ import type { HMRApplyKind, HMRApplyOutcome, HMRClientTarget } from '../../types/messages';
2
+ import type { AbsoluteAndroidWebViewSession } from './androidWebView';
3
+ export type AbsoluteAndroidHmrApply = {
4
+ clientMs: number;
5
+ duration: number;
6
+ kind?: HMRApplyKind;
7
+ outcome: HMRApplyOutcome;
8
+ serverMs: number;
9
+ target: HMRClientTarget;
10
+ updateId?: number;
11
+ };
12
+ export type AbsoluteAndroidRouteCheck = {
13
+ bodyText: string;
14
+ hmrConnected: boolean;
15
+ lastApply?: AbsoluteAndroidHmrApply;
16
+ nativeTarget: string;
17
+ overlayVisible: boolean;
18
+ route: string;
19
+ title: string;
20
+ url: string;
21
+ };
22
+ export declare const absoluteAndroidDevelopmentUrl: (port: number, route: string, https?: boolean) => string;
23
+ export declare const inspectAbsoluteAndroidRoute: (session: AbsoluteAndroidWebViewSession, options: {
24
+ https?: boolean;
25
+ port: number;
26
+ route: string;
27
+ timeoutMs?: number;
28
+ }) => Promise<{
29
+ route: string;
30
+ title: string;
31
+ url: string;
32
+ bodyText: string;
33
+ hmrConnected: boolean;
34
+ lastApply?: AbsoluteAndroidHmrApply | undefined;
35
+ nativeTarget: string;
36
+ overlayVisible: boolean;
37
+ }>;
38
+ export declare const waitForAbsoluteAndroidHmrApply: (session: AbsoluteAndroidWebViewSession, options: {
39
+ afterUpdateId?: number;
40
+ kind?: HMRApplyKind;
41
+ timeoutMs?: number;
42
+ }) => Promise<AbsoluteAndroidHmrApply>;
@@ -0,0 +1,100 @@
1
+ import { type AbsoluteMobileHost } from './emulatorDoctor';
2
+ import type { NormalizedAbsoluteMobileConfig } from './config';
3
+ export type AbsoluteAndroidCommandOptions = {
4
+ cwd?: string;
5
+ env?: Record<string, string | undefined>;
6
+ signal?: AbortSignal;
7
+ };
8
+ export type AbsoluteAndroidCommandResult = {
9
+ exitCode: number;
10
+ stderr: string;
11
+ stdout: string;
12
+ };
13
+ export type AbsoluteAndroidDevState = 'booting' | 'building' | 'closed' | 'closing' | 'configuring' | 'connecting' | 'failed' | 'forwarding' | 'installing' | 'checking-native' | 'launching' | 'ready' | 'streaming-logs' | 'syncing';
14
+ export type AbsoluteAndroidNativeLogEntry = {
15
+ level: 'debug' | 'error' | 'fatal' | 'info' | 'verbose' | 'warn';
16
+ message: string;
17
+ tag: string;
18
+ };
19
+ type AbsoluteAndroidLogStream = {
20
+ close: () => Promise<void>;
21
+ };
22
+ export type AbsoluteAndroidDevProject = {
23
+ adb: string;
24
+ androidRoot: string;
25
+ cap: string;
26
+ config: NormalizedAbsoluteMobileConfig;
27
+ emulator: string;
28
+ host: AbsoluteMobileHost;
29
+ nativeDirectory: string;
30
+ projectRoot: string;
31
+ };
32
+ export type AbsoluteAndroidDevSession = {
33
+ close: () => Promise<void>;
34
+ nativeCacheHit: boolean;
35
+ rebuild: () => Promise<AbsoluteAndroidDevSession>;
36
+ relaunch: () => Promise<void>;
37
+ serial: string;
38
+ state: AbsoluteAndroidDevState;
39
+ startedEmulator: boolean;
40
+ timings: Record<string, number>;
41
+ };
42
+ export type AbsoluteAndroidDevPhaseTiming = {
43
+ durationMs: number;
44
+ phase: AbsoluteAndroidDevState;
45
+ totalMs: number;
46
+ };
47
+ export type PrepareAbsoluteAndroidDevOptions = {
48
+ createNativeProject: boolean;
49
+ projectRoot: string;
50
+ run?: (command: string[], options?: AbsoluteAndroidCommandOptions) => Promise<number>;
51
+ };
52
+ export type StartAbsoluteAndroidDevOptions = {
53
+ capture?: (command: string[], options?: AbsoluteAndroidCommandOptions) => AbsoluteAndroidCommandResult;
54
+ log?: (message: string) => void;
55
+ nativeLog?: (entry: AbsoluteAndroidNativeLogEntry) => void;
56
+ onPhaseTiming?: (timing: AbsoluteAndroidDevPhaseTiming) => void;
57
+ onStateChange?: (state: AbsoluteAndroidDevState) => void;
58
+ https?: boolean;
59
+ port: number;
60
+ project: AbsoluteAndroidDevProject;
61
+ run?: (command: string[], options?: AbsoluteAndroidCommandOptions) => Promise<number>;
62
+ signal?: AbortSignal;
63
+ sleep?: (milliseconds: number) => Promise<void>;
64
+ spawn?: (command: string[], options?: AbsoluteAndroidCommandOptions) => void;
65
+ startNativeLogs?: (command: string[], options: AbsoluteAndroidCommandOptions, onLine: (line: string) => void) => AbsoluteAndroidLogStream;
66
+ };
67
+ export declare const redactAbsoluteAndroidLog: (value: string) => string;
68
+ export declare const isIgnorableAbsoluteAndroidLog: (entry: AbsoluteAndroidNativeLogEntry) => boolean;
69
+ export declare const parseAbsoluteAndroidLogLine: (line: string) => AbsoluteAndroidNativeLogEntry | null;
70
+ export declare const fingerprintAbsoluteAndroidNativeProject: (project: Pick<AbsoluteAndroidDevProject, "nativeDirectory">) => Promise<string>;
71
+ export declare const repairAbsoluteAndroidDevSession: (projectRoot: string) => Promise<boolean>;
72
+ export declare const parseAdbDevices: (output: string) => string[];
73
+ export type AbsoluteAndroidGradleTask = 'assembleDebug' | 'assembleRelease' | 'bundleRelease';
74
+ export type BuildAbsoluteAndroidGradleOptions = {
75
+ capture?: NonNullable<StartAbsoluteAndroidDevOptions['capture']>;
76
+ env?: Record<string, string | undefined>;
77
+ gradleArguments?: readonly string[];
78
+ project: Pick<AbsoluteAndroidDevProject, 'androidRoot' | 'config' | 'host' | 'nativeDirectory' | 'projectRoot'>;
79
+ run?: NonNullable<StartAbsoluteAndroidDevOptions['run']>;
80
+ signal?: AbortSignal;
81
+ task: AbsoluteAndroidGradleTask;
82
+ };
83
+ export declare const buildAbsoluteAndroidGradleArtifact: (options: BuildAbsoluteAndroidGradleOptions) => Promise<{
84
+ artifactPath: string;
85
+ installPath: string;
86
+ }>;
87
+ export declare const prepareAbsoluteAndroidDevProject: (config: NormalizedAbsoluteMobileConfig, options: PrepareAbsoluteAndroidDevOptions) => Promise<AbsoluteAndroidDevProject>;
88
+ export declare const startAbsoluteAndroidDevSession: (options: StartAbsoluteAndroidDevOptions) => Promise<{
89
+ close: () => Promise<void>;
90
+ nativeCacheHit: boolean;
91
+ serial: string;
92
+ startedEmulator: boolean;
93
+ timings: {
94
+ [x: string]: number;
95
+ };
96
+ rebuild: () => Promise</*elided*/ any>;
97
+ relaunch: () => Promise<void>;
98
+ readonly state: AbsoluteAndroidDevState;
99
+ }>;
100
+ export {};
@@ -0,0 +1,19 @@
1
+ import { type AbsoluteAndroidDevProject } from './androidEmulatorController';
2
+ export type AbsoluteAndroidNativeChange = {
3
+ afterFingerprint: string;
4
+ beforeFingerprint: string;
5
+ paths: string[];
6
+ rootInputChanged: boolean;
7
+ };
8
+ export type AbsoluteAndroidNativeWatcher = {
9
+ close: () => void;
10
+ };
11
+ export type AbsoluteAndroidNativeWatcherOptions = {
12
+ debounceMs?: number;
13
+ onChange: (change: AbsoluteAndroidNativeChange) => Promise<void>;
14
+ onError?: (error: unknown) => void;
15
+ project: AbsoluteAndroidDevProject;
16
+ signal?: AbortSignal;
17
+ };
18
+ export declare const createAbsoluteAndroidNativeWatcher: (options: AbsoluteAndroidNativeWatcherOptions) => Promise<AbsoluteAndroidNativeWatcher>;
19
+ export declare const isAbsoluteAndroidNativeRootInput: (path: string) => boolean;
@@ -0,0 +1,51 @@
1
+ import { type AbsoluteMobileHost } from './emulatorDoctor';
2
+ import { type AbsoluteAndroidCommandOptions, type AbsoluteAndroidCommandResult } from './androidEmulatorController';
3
+ import type { NormalizedAbsoluteMobileConfig } from './config';
4
+ export declare const ABSOLUTE_ANDROID_RELEASE_FORMAT: 1;
5
+ export type AbsoluteAndroidReleaseMetadata = {
6
+ appBuild: string;
7
+ appId: string;
8
+ artifact: string;
9
+ bytes: number;
10
+ engine: 'capacitor';
11
+ format: typeof ABSOLUTE_ANDROID_RELEASE_FORMAT;
12
+ platform: 'android';
13
+ releaseId: string;
14
+ runtime: string;
15
+ sha256: string;
16
+ signed: boolean;
17
+ type: 'aab';
18
+ versionCode?: number;
19
+ };
20
+ export type BuildAbsoluteAndroidReleaseOptions = {
21
+ allowUnsigned?: boolean;
22
+ androidRoot?: string;
23
+ capture?: (command: string[], options?: AbsoluteAndroidCommandOptions) => AbsoluteAndroidCommandResult;
24
+ config: NormalizedAbsoluteMobileConfig;
25
+ host?: AbsoluteMobileHost;
26
+ jarsigner?: string | null;
27
+ outputDirectory?: string;
28
+ projectRoot: string;
29
+ run?: (command: string[], options?: AbsoluteAndroidCommandOptions) => Promise<number>;
30
+ prepareVersionCode?: (buildIdentity: string) => Promise<number>;
31
+ versionCode?: number;
32
+ };
33
+ export declare const buildAbsoluteAndroidRelease: (options: BuildAbsoluteAndroidReleaseOptions) => Promise<{
34
+ artifactPath: string;
35
+ metadata: {
36
+ artifact: string;
37
+ sha256: string;
38
+ type: "aab";
39
+ format: typeof ABSOLUTE_ANDROID_RELEASE_FORMAT;
40
+ bytes: number;
41
+ runtime: string;
42
+ releaseId: string;
43
+ appBuild: string;
44
+ appId: string;
45
+ platform: "android";
46
+ engine: "capacitor";
47
+ signed: boolean;
48
+ versionCode?: number | undefined;
49
+ };
50
+ releaseRoot: string;
51
+ }>;
@@ -0,0 +1,46 @@
1
+ type AndroidCommandResult = {
2
+ exitCode: number;
3
+ stderr: string;
4
+ stdout: string;
5
+ };
6
+ type AndroidCommandCapture = (command: string[]) => AndroidCommandResult;
7
+ type CdpTarget = {
8
+ description?: string;
9
+ title?: string;
10
+ type?: string;
11
+ url?: string;
12
+ webSocketDebuggerUrl?: string;
13
+ };
14
+ export type AbsoluteAndroidWebViewDiagnostic = {
15
+ level: 'error' | 'info' | 'warning';
16
+ message: string;
17
+ source: 'console' | 'exception' | 'log';
18
+ };
19
+ export type AbsoluteAndroidWebViewSession = {
20
+ close: () => Promise<void>;
21
+ diagnostics: readonly AbsoluteAndroidWebViewDiagnostic[];
22
+ evaluate: <T>(expression: string) => Promise<T>;
23
+ hostPort: number;
24
+ navigate: (url: string) => Promise<void>;
25
+ screenshot: (path: string) => Promise<string>;
26
+ serial: string;
27
+ socket: string;
28
+ target: CdpTarget;
29
+ waitFor: <T>(expression: string, options?: {
30
+ timeoutMs?: number;
31
+ }) => Promise<T>;
32
+ };
33
+ export type AttachAbsoluteAndroidWebViewOptions = {
34
+ adb: string;
35
+ appId: string;
36
+ capture?: AndroidCommandCapture;
37
+ fetch?: typeof fetch;
38
+ serial: string;
39
+ timeoutMs?: number;
40
+ };
41
+ export declare const parseAndroidWebViewDevtoolsSockets: (output: string, options: {
42
+ appId: string;
43
+ pids: readonly string[];
44
+ }) => string[];
45
+ export declare const attachAbsoluteAndroidWebView: (options: AttachAbsoluteAndroidWebViewOptions) => Promise<AbsoluteAndroidWebViewSession>;
46
+ export {};
@@ -0,0 +1,49 @@
1
+ import { Elysia } from 'elysia';
2
+ import type { MobileConfig } from '../../types/build';
3
+ import { type NormalizedAbsoluteMobileConfig } from './config';
4
+ export type AbsoluteAssociationRequest = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
5
+ export declare const ANDROID_ASSOCIATION_PATH = "/.well-known/assetlinks.json";
6
+ export declare const APPLE_ASSOCIATION_PATH = "/.well-known/apple-app-site-association";
7
+ export type AbsoluteMobileAssociationDocuments = {
8
+ android?: readonly [
9
+ {
10
+ relation: readonly ['delegate_permission/common.handle_all_urls'];
11
+ target: {
12
+ namespace: 'android_app';
13
+ package_name: string;
14
+ sha256_cert_fingerprints: string[];
15
+ };
16
+ }
17
+ ];
18
+ apple?: {
19
+ applinks: {
20
+ details: readonly [
21
+ {
22
+ appIDs: readonly [string];
23
+ components: readonly [{
24
+ '/': '/*';
25
+ }];
26
+ }
27
+ ];
28
+ };
29
+ };
30
+ };
31
+ export declare const createAbsoluteMobileAssociationDocuments: (config: NormalizedAbsoluteMobileConfig, options?: {
32
+ requireAll?: boolean;
33
+ }) => AbsoluteMobileAssociationDocuments;
34
+ export declare const createAbsoluteMobileAssociationPlugin: (mobile: MobileConfig | undefined, projectRoot: string, options?: {
35
+ requireAll?: boolean;
36
+ }) => Elysia<"", "local", import("elysia/types").DefaultSingleton, {
37
+ typebox: {};
38
+ error: [];
39
+ }, import("elysia/types").DefaultMetadata, {}, import("elysia/types").DefaultEphemeral, import("elysia/types").DefaultEphemeral>;
40
+ export declare const materializeAbsoluteMobileAssociationFiles: (config: NormalizedAbsoluteMobileConfig, outputDirectory: string) => Promise<{
41
+ root: string;
42
+ written: string[];
43
+ }>;
44
+ export declare const verifyAbsoluteMobileAssociationFiles: (config: NormalizedAbsoluteMobileConfig, request?: AbsoluteAssociationRequest) => Promise<{
45
+ results: {
46
+ platform: string;
47
+ url: string;
48
+ }[];
49
+ }>;
@@ -0,0 +1,10 @@
1
+ import type { AbsoluteMobilePageFramework } from './pageProtocol';
2
+ export declare const ABSOLUTE_MOBILE_ROUTE_DETAIL: "x-absolute-mobile";
3
+ export type AbsoluteMobileBuildPageMetadata = {
4
+ bundleKey: string;
5
+ contract: string;
6
+ framework: AbsoluteMobilePageFramework;
7
+ pageId: string;
8
+ propsSchemaHash: string;
9
+ };
10
+ export declare const parseAbsoluteMobileBuildPageMetadata: (value: unknown) => AbsoluteMobileBuildPageMetadata | undefined;
@@ -0,0 +1,8 @@
1
+ import type { MobileConfig } from '../../types/build';
2
+ export type FinalizeAbsoluteMobileBuildOptions = {
3
+ buildDirectory: string;
4
+ mobile: MobileConfig;
5
+ producerPath: string;
6
+ projectRoot: string;
7
+ };
8
+ export declare const finalizeAbsoluteMobileCompatibilityBuild: (options: FinalizeAbsoluteMobileBuildOptions) => Promise<import("./releaseArtifact").AbsoluteMobileCompatibilityArtifact>;
@@ -0,0 +1,24 @@
1
+ import type { Elysia } from 'elysia';
2
+ import { type AbsoluteMobileBuildPageMetadata } from './buildMetadata';
3
+ import { type AbsoluteMobileCompatibilityArtifact } from './releaseArtifact';
4
+ import type { AbsoluteMobileStoredCompatibilityRelease } from './artifactStore';
5
+ export type AbsoluteMobileBuildReleaseOptions = {
6
+ app: Pick<Elysia, 'compile' | 'modules' | 'routes'>;
7
+ appId: string;
8
+ buildDirectory: string;
9
+ manifest: Record<string, string>;
10
+ previousArtifacts?: readonly AbsoluteMobileCompatibilityArtifact[];
11
+ producerExport?: string;
12
+ producerModule?: string;
13
+ producerPath: string;
14
+ runtime: string;
15
+ };
16
+ export declare const buildAbsoluteMobileCompatibilityRelease: (options: AbsoluteMobileBuildReleaseOptions) => Promise<AbsoluteMobileStoredCompatibilityRelease>;
17
+ export declare const captureAbsoluteMobileRouteGraph: (app: Pick<Elysia, "compile" | "modules" | "routes">) => Promise<{
18
+ metadata: AbsoluteMobileBuildPageMetadata;
19
+ route: {
20
+ method: "GET" | "HEAD";
21
+ pageId: string;
22
+ pattern: string;
23
+ };
24
+ }[]>;
@@ -0,0 +1,28 @@
1
+ import type { NormalizedAbsoluteMobileConfig } from './config';
2
+ import type { AbsoluteMobileCompatibilityArtifact } from './releaseArtifact';
3
+ export type AbsoluteCapacitorBundleOptions = {
4
+ artifact: AbsoluteMobileCompatibilityArtifact;
5
+ buildDirectory: string;
6
+ config: NormalizedAbsoluteMobileConfig;
7
+ };
8
+ export declare const materializeAbsoluteCapacitorWebBundle: (options: AbsoluteCapacitorBundleOptions) => Promise<{
9
+ appBuild: string;
10
+ appId: string;
11
+ appName: string;
12
+ deepLinkHosts: string[];
13
+ deepLinkScheme: string | undefined;
14
+ entry: string;
15
+ format: 1;
16
+ pages: {
17
+ localBundlePath: string;
18
+ bundleHash: string;
19
+ bundlePath: string;
20
+ contract: string;
21
+ framework: import("./pageProtocol").AbsoluteMobilePageFramework;
22
+ pageId: string;
23
+ propsSchemaHash: string;
24
+ }[];
25
+ productionOrigin: string;
26
+ routes: import("./releaseArtifact").AbsoluteMobileCompatibilityRoute[];
27
+ runtime: string;
28
+ }>;
@@ -0,0 +1,9 @@
1
+ import type { NormalizedAbsoluteMobileConfig } from './config';
2
+ export type WriteAbsoluteCapacitorConfigOptions = {
3
+ force?: boolean;
4
+ projectRoot: string;
5
+ };
6
+ export declare const writeAbsoluteCapacitorConfig: (config: NormalizedAbsoluteMobileConfig, options: WriteAbsoluteCapacitorConfigOptions) => Promise<{
7
+ changed: boolean;
8
+ path: string;
9
+ }>;
@@ -12,7 +12,7 @@ export type AbsoluteMobilePageActivation = {
12
12
  contract: string;
13
13
  pageId: string;
14
14
  } | AbsoluteMobileUpgradeRequiredResult;
15
- type AbsoluteMobilePageActivationOptions = {
15
+ export type AbsoluteMobilePageActivationOptions = {
16
16
  loadPage: AbsoluteMobilePageLoader;
17
17
  target?: AbsoluteMobileClientTarget;
18
18
  };
@@ -0,0 +1,17 @@
1
+ import type { MobileConfig, MobilePlatform } from '../../types/build';
2
+ export type NormalizedAbsoluteMobileConfig = {
3
+ appId: string;
4
+ appName: string;
5
+ androidCertificateFingerprints: string[];
6
+ appleAppIdPrefix?: string;
7
+ bundleDirectory: string;
8
+ deepLinkHosts: string[];
9
+ deepLinkScheme?: string;
10
+ engine: 'capacitor';
11
+ entry: string;
12
+ iosVersion?: string;
13
+ nativeProjectDirectory: string;
14
+ platforms: MobilePlatform[];
15
+ productionOrigin: string;
16
+ };
17
+ export declare const normalizeAbsoluteMobileConfig: (config: MobileConfig, projectRoot: string) => NormalizedAbsoluteMobileConfig;
@@ -0,0 +1,25 @@
1
+ export type AbsoluteMobileHost = 'macos' | 'windows' | 'linux' | 'wsl';
2
+ export type AbsoluteMobileDoctorStatus = 'pass' | 'warn' | 'fail' | 'skip';
3
+ export declare const ABSOLUTE_ANDROID_AVD_NAME = "AbsoluteJS_API_36";
4
+ export type AbsoluteMobileDoctorCheck = {
5
+ id: string;
6
+ label: string;
7
+ path?: string;
8
+ platform: 'host' | 'android' | 'ios';
9
+ remediation?: string;
10
+ status: AbsoluteMobileDoctorStatus;
11
+ };
12
+ export type InspectAbsoluteMobileToolchainOptions = {
13
+ androidRoot?: string | null;
14
+ capture?: (command: string[]) => {
15
+ exitCode: number;
16
+ stdout: string;
17
+ };
18
+ env?: Record<string, string | undefined>;
19
+ exists?: (path: string) => Promise<boolean>;
20
+ host?: AbsoluteMobileHost;
21
+ which?: (command: string) => string | null;
22
+ };
23
+ export declare const absoluteManagedAndroidSdkRoot: (host: AbsoluteMobileHost, env?: Record<string, string | undefined>) => string;
24
+ export declare const detectAbsoluteMobileHost: (platform?: NodeJS.Platform, wsl?: boolean) => "linux" | "macos" | "windows" | "wsl";
25
+ export declare const inspectAbsoluteMobileToolchain: (input?: InspectAbsoluteMobileToolchainOptions) => Promise<AbsoluteMobileDoctorCheck[]>;
@@ -0,0 +1,41 @@
1
+ import { type AbsoluteMobileDoctorCheck, type AbsoluteMobileHost } from './emulatorDoctor';
2
+ export type AbsoluteMobileInstallStep = {
3
+ detail: string;
4
+ id: string;
5
+ label: string;
6
+ };
7
+ export type AbsoluteMobileInstallPlan = {
8
+ androidRoot: string;
9
+ host: AbsoluteMobileHost;
10
+ platform: 'android' | 'ios';
11
+ steps: AbsoluteMobileInstallStep[];
12
+ };
13
+ export type AbsoluteMobileInstallResult = {
14
+ checks: AbsoluteMobileDoctorCheck[];
15
+ completed: string[];
16
+ plan: AbsoluteMobileInstallPlan;
17
+ };
18
+ type RunOptions = {
19
+ env?: Record<string, string | undefined>;
20
+ input?: string;
21
+ };
22
+ type CaptureResult = {
23
+ exitCode: number;
24
+ stdout: string;
25
+ };
26
+ type AbsoluteMobileInstallerDependencies = {
27
+ arch?: string;
28
+ capture?: (command: string[], options?: RunOptions) => CaptureResult;
29
+ download?: (url: string) => Promise<Uint8Array>;
30
+ env?: Record<string, string | undefined>;
31
+ exists?: (path: string) => Promise<boolean>;
32
+ host?: AbsoluteMobileHost;
33
+ log?: (message: string) => void;
34
+ run?: (command: string[], options?: RunOptions) => Promise<number>;
35
+ which?: (command: string) => string | null;
36
+ };
37
+ export declare const planAbsoluteMobileEmulatorInstall: (platform: "android" | "ios", input?: AbsoluteMobileInstallerDependencies) => AbsoluteMobileInstallPlan;
38
+ export declare const fixAbsoluteMobileEmulatorToolchain: (platform: "android" | "ios", options?: AbsoluteMobileInstallerDependencies & {
39
+ acceptLicenses?: boolean;
40
+ }) => Promise<AbsoluteMobileInstallResult>;
41
+ export {};
@@ -1,7 +1,21 @@
1
1
  export * from './artifactStore';
2
+ export * from './androidRelease';
3
+ export * from './iosRelease';
4
+ export * from './associationFiles';
5
+ export * from './buildMetadata';
6
+ export * from './buildPipeline';
7
+ export * from './buildRelease';
8
+ export * from './capacitorBundle';
9
+ export * from './capacitorProject';
10
+ export * from './config';
2
11
  export * from './client';
3
12
  export * from './compatibilityDispatcher';
4
13
  export * from './materializedBundle';
14
+ export * from './nativeDeepLinks';
5
15
  export * from './pageProtocol';
6
16
  export * from './producerContext';
7
17
  export * from './releaseArtifact';
18
+ export * from './releasePublisher';
19
+ export * from './routeMetadataTransform';
20
+ export * from './routeMatcher';
21
+ export * from './transport';