@absolutejs/absolute 0.20.0-beta.3 → 0.20.0-beta.30

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 (78) hide show
  1. package/README.md +167 -0
  2. package/dist/angular/browser.js +15 -1
  3. package/dist/angular/browser.js.map +3 -3
  4. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  5. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  6. package/dist/angular/index.js +341 -22
  7. package/dist/angular/index.js.map +8 -5
  8. package/dist/angular/server.js +341 -22
  9. package/dist/angular/server.js.map +8 -5
  10. package/dist/build.js +2058 -1105
  11. package/dist/build.js.map +17 -13
  12. package/dist/cli/index.js +4077 -1139
  13. package/dist/dev/client/cssUtils.ts +16 -2
  14. package/dist/dev/client/handlers/rebuild.ts +11 -1
  15. package/dist/dev/client/hmrClient.ts +32 -3
  16. package/dist/dev/client/hmrTiming.ts +14 -7
  17. package/dist/dev/client/syncDevtools.ts +237 -0
  18. package/dist/index.js +2483 -1367
  19. package/dist/index.js.map +27 -22
  20. package/dist/mobile/browser.js +123 -1
  21. package/dist/mobile/browser.js.map +6 -4
  22. package/dist/mobile/index.js +2663 -247
  23. package/dist/mobile/index.js.map +25 -13
  24. package/dist/mobile/remoteMacAgentEntry.js +29 -0
  25. package/dist/mobile/shellAuth.js +36 -0
  26. package/dist/mobile/shellBootstrap.js +601 -0
  27. package/dist/mobile/shellSync.js +173 -0
  28. package/dist/src/angular/pageHandler.d.ts +3 -0
  29. package/dist/src/build/pwa.d.ts +16 -0
  30. package/dist/src/cli/config/server.d.ts +1 -1
  31. package/dist/src/core/devBuild.d.ts +1 -0
  32. package/dist/src/core/pageHandlers.d.ts +11 -2
  33. package/dist/src/core/prepare.d.ts +24 -0
  34. package/dist/src/mobile/androidEmulatorController.d.ts +6 -1
  35. package/dist/src/mobile/androidTestReport.d.ts +14 -0
  36. package/dist/src/mobile/androidUpgradeConformance.d.ts +47 -0
  37. package/dist/src/mobile/androidWebView.d.ts +1 -0
  38. package/dist/src/mobile/browser.d.ts +1 -0
  39. package/dist/src/mobile/buildPipeline.d.ts +1 -0
  40. package/dist/src/mobile/capacitorBundle.d.ts +22 -1
  41. package/dist/src/mobile/client.d.ts +4 -0
  42. package/dist/src/mobile/config.d.ts +1 -0
  43. package/dist/src/mobile/devDeviceAdapter.d.ts +3 -0
  44. package/dist/src/mobile/deviceCapabilities.d.ts +46 -0
  45. package/dist/src/mobile/index.d.ts +7 -0
  46. package/dist/src/mobile/iosTestReport.d.ts +23 -0
  47. package/dist/src/mobile/nativeAuth.d.ts +17 -0
  48. package/dist/src/mobile/nativeBackgroundSync.d.ts +4 -0
  49. package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
  50. package/dist/src/mobile/nativeTestReport.d.ts +85 -0
  51. package/dist/src/mobile/releaseArtifact.d.ts +2 -0
  52. package/dist/src/mobile/remoteMacAgent.d.ts +2 -0
  53. package/dist/src/mobile/remoteMacAgentEntry.d.ts +1 -0
  54. package/dist/src/mobile/remoteMacProtocol.d.ts +114 -0
  55. package/dist/src/mobile/remoteMacWire.d.ts +2 -0
  56. package/dist/src/mobile/shellAuth.d.ts +15 -0
  57. package/dist/src/mobile/shellBootstrap.d.ts +22 -1
  58. package/dist/src/mobile/shellPush.d.ts +11 -0
  59. package/dist/src/mobile/shellSync.d.ts +47 -0
  60. package/dist/src/mobile/staticDocument.d.ts +5 -0
  61. package/dist/src/mobile/syncRemediation.d.ts +10 -0
  62. package/dist/src/mobile/syncSchema.d.ts +9 -0
  63. package/dist/src/mobile/transport.d.ts +16 -1
  64. package/dist/src/plugins/imageOptimizer.d.ts +1 -1
  65. package/dist/src/svelte/pageHandler.d.ts +3 -0
  66. package/dist/src/utils/imageProcessing.d.ts +3 -0
  67. package/dist/src/utils/loadConfig.d.ts +1 -0
  68. package/dist/src/vue/pageHandler.d.ts +3 -0
  69. package/dist/svelte/index.js +312 -23
  70. package/dist/svelte/index.js.map +7 -4
  71. package/dist/svelte/server.js +307 -18
  72. package/dist/svelte/server.js.map +7 -4
  73. package/dist/types/build.d.ts +29 -0
  74. package/dist/vue/index.js +312 -23
  75. package/dist/vue/index.js.map +7 -4
  76. package/dist/vue/server.js +307 -18
  77. package/dist/vue/server.js.map +7 -4
  78. package/package.json +37 -10
@@ -0,0 +1,85 @@
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
+ durationMs: number;
37
+ error?: string;
38
+ hmr?: AbsoluteNativeHmrResult;
39
+ hmrConnected: boolean;
40
+ platform: 'android' | 'ios';
41
+ port: number;
42
+ routes?: string[];
43
+ screenshot?: string;
44
+ status: 'fail' | 'pass';
45
+ syncMigration?: AbsoluteNativeSyncMigrationResult;
46
+ targetId: string;
47
+ targetKind: 'device' | 'emulator' | 'simulator';
48
+ upgrade?: AbsoluteAndroidUpgradeConformanceResult;
49
+ };
50
+ export type AbsoluteNativeTestReport = {
51
+ automatedChecks: AbsoluteNativeReportCheck[];
52
+ generatedAt: string;
53
+ manualChecks: AbsoluteNativeReportCheck[];
54
+ metadata: Record<string, string> & {
55
+ absolutejsVersion: string;
56
+ bunVersion: string;
57
+ provider: 'capacitor';
58
+ };
59
+ overallResult: 'FAIL' | 'INCOMPLETE';
60
+ platform: 'android' | 'ios';
61
+ reportVersion: 1;
62
+ run: AbsoluteNativeAutomatedRun;
63
+ };
64
+ export type AbsoluteNativeManualCheckDefinition = readonly [
65
+ id: string,
66
+ details: string
67
+ ];
68
+ type CreateAbsoluteNativeTestReportOptions = {
69
+ automatedChecks?: AbsoluteNativeReportCheck[];
70
+ generatedAt?: string;
71
+ manualChecks: readonly AbsoluteNativeManualCheckDefinition[];
72
+ metadata: AbsoluteNativeTestReport['metadata'];
73
+ run: AbsoluteNativeAutomatedRun;
74
+ };
75
+ export declare const sanitizeNativeReportText: (value: string) => string;
76
+ export declare const createAbsoluteNativeAutomatedChecks: (run: AbsoluteNativeAutomatedRun) => AbsoluteNativeReportCheck[];
77
+ export declare const createAbsoluteNativeTestReport: (options: CreateAbsoluteNativeTestReportOptions) => AbsoluteNativeTestReport;
78
+ export declare const readPackageVersionForNativeReport: (packageJsonPath: string) => Promise<string>;
79
+ export declare const renderAbsoluteNativeTestReport: (report: AbsoluteNativeTestReport) => string;
80
+ export declare const writeAbsoluteNativeTestReport: (directory: string, report: AbsoluteNativeTestReport) => Promise<{
81
+ directory: string;
82
+ jsonPath: string;
83
+ markdownPath: string;
84
+ }>;
85
+ export {};
@@ -8,6 +8,8 @@ export type AbsoluteMobileCompatibilityPage = {
8
8
  framework: AbsoluteMobilePageFramework;
9
9
  pageId: string;
10
10
  propsSchemaHash: string;
11
+ styleBundleHash?: string;
12
+ styleBundlePath?: string;
11
13
  };
12
14
  export type AbsoluteMobileCompatibilityRoute = {
13
15
  method: 'GET' | 'HEAD';
@@ -0,0 +1,2 @@
1
+ export declare const runAbsoluteRemoteMacAgent: (args: string[]) => Promise<void>;
2
+ export declare const runAbsoluteRemoteMacAgentSafely: (args: string[]) => Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,114 @@
1
+ import type { FileSink } from 'bun';
2
+ import type { NormalizedAbsoluteMobileConfig } from './config';
3
+ import type { AbsoluteIosDevPhaseTiming, AbsoluteIosDevSession, AbsoluteIosDevState, AbsoluteIosNativeLogEntry } from './iosSimulatorController';
4
+ export { ABSOLUTE_REMOTE_MAC_EVENT_PREFIX, ABSOLUTE_REMOTE_MAC_PROTOCOL_VERSION } from './remoteMacWire';
5
+ export type AbsoluteRemoteMacProfile = {
6
+ bunPath: string;
7
+ createdAt: string;
8
+ destination: string;
9
+ name: string;
10
+ port?: number;
11
+ workspaceRoot: string;
12
+ xcodeVersion: string;
13
+ };
14
+ export type AbsoluteRemoteMacInspection = {
15
+ bunPath: string;
16
+ home: string;
17
+ os: string;
18
+ xcodeVersion: string;
19
+ };
20
+ export type AbsoluteRemoteIosDevProject = {
21
+ cap: string;
22
+ config: NormalizedAbsoluteMobileConfig;
23
+ nativeDirectory: string;
24
+ projectRoot: string;
25
+ profile: AbsoluteRemoteMacProfile;
26
+ remoteProjectRoot: string;
27
+ remote: true;
28
+ xcodebuild: string;
29
+ xcrun: string;
30
+ };
31
+ export type AbsoluteIosDevelopmentProject = AbsoluteRemoteIosDevProject | (import('./iosSimulatorController').AbsoluteIosDevProject & {
32
+ remote?: false;
33
+ });
34
+ export type AbsoluteRemoteMacCommandResult = {
35
+ exitCode: number;
36
+ stderr: string;
37
+ stdout: string;
38
+ };
39
+ export type AbsoluteRemoteMacTransport = {
40
+ capture: (command: string[]) => Promise<AbsoluteRemoteMacCommandResult>;
41
+ spawn: (command: string[], options: {
42
+ signal?: AbortSignal;
43
+ }) => {
44
+ exited: Promise<number>;
45
+ kill: () => void;
46
+ stderr: ReadableStream<Uint8Array>;
47
+ stdin: FileSink;
48
+ stdout: ReadableStream<Uint8Array>;
49
+ };
50
+ };
51
+ export type AbsoluteRemoteIosOptions = {
52
+ https?: boolean;
53
+ log?: (message: string) => void;
54
+ nativeLog?: (entry: AbsoluteIosNativeLogEntry) => void;
55
+ onPhaseTiming?: (timing: AbsoluteIosDevPhaseTiming) => void;
56
+ onStateChange?: (state: AbsoluteIosDevState) => void;
57
+ port: number;
58
+ project: AbsoluteRemoteIosDevProject;
59
+ signal?: AbortSignal;
60
+ installAgent?: (project: AbsoluteRemoteIosDevProject) => Promise<{
61
+ remotePath: string;
62
+ uploaded?: boolean;
63
+ }>;
64
+ syncProject?: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
65
+ transport?: AbsoluteRemoteMacTransport;
66
+ };
67
+ export declare const validateAbsoluteRemoteMacProfileName: (name: string) => string;
68
+ export declare const validateAbsoluteSshDestination: (destination: string) => string;
69
+ export declare const absoluteRemoteMacSshBase: (profile: Pick<AbsoluteRemoteMacProfile, "destination" | "port">, options?: {
70
+ acceptNew?: boolean;
71
+ }) => string[];
72
+ export declare const getAbsoluteRemoteMacProfile: (name?: string, profilePath?: string) => Promise<AbsoluteRemoteMacProfile | undefined>;
73
+ export declare const inspectAbsoluteRemoteMac: (destination: string, options?: {
74
+ acceptNew?: boolean;
75
+ port?: number;
76
+ transport?: Pick<AbsoluteRemoteMacTransport, "capture">;
77
+ }) => Promise<{
78
+ bunPath: string;
79
+ home: string;
80
+ os: string;
81
+ xcodeVersion: string;
82
+ }>;
83
+ export declare const listAbsoluteRemoteMacProfiles: (profilePath?: string) => Promise<{
84
+ defaultProfile: string | undefined;
85
+ profiles: AbsoluteRemoteMacProfile[];
86
+ }>;
87
+ export declare const pairAbsoluteRemoteMac: (options: {
88
+ destination: string;
89
+ name: string;
90
+ port?: number;
91
+ profilePath?: string;
92
+ transport?: Pick<AbsoluteRemoteMacTransport, "capture">;
93
+ workspaceRoot?: string;
94
+ }) => Promise<AbsoluteRemoteMacProfile>;
95
+ export declare const removeAbsoluteRemoteMacProfile: (name: string, profilePath?: string) => Promise<boolean>;
96
+ export declare const createAbsoluteRemoteIosDevProject: (config: NormalizedAbsoluteMobileConfig, projectRoot: string, profile: AbsoluteRemoteMacProfile) => AbsoluteRemoteIosDevProject;
97
+ export declare const installAbsoluteRemoteMacAgent: (project: AbsoluteRemoteIosDevProject) => Promise<{
98
+ remotePath: string;
99
+ uploaded: boolean;
100
+ bytes: number;
101
+ path: string;
102
+ sha256: string;
103
+ }>;
104
+ export declare const materializeAbsoluteRemoteMacAgent: (projectRoot: string) => Promise<{
105
+ bytes: number;
106
+ path: string;
107
+ sha256: string;
108
+ }>;
109
+ export declare const absoluteRemoteProjectSyncCommands: (project: AbsoluteRemoteIosDevProject) => {
110
+ remote: string[];
111
+ tar: string[];
112
+ };
113
+ export declare const syncAbsoluteRemoteMacProject: (project: AbsoluteRemoteIosDevProject) => Promise<void>;
114
+ export declare const startAbsoluteRemoteIosDevSession: (options: AbsoluteRemoteIosOptions) => Promise<AbsoluteIosDevSession>;
@@ -0,0 +1,2 @@
1
+ export declare const ABSOLUTE_REMOTE_MAC_EVENT_PREFIX = "ABSOLUTE_REMOTE_MAC\t";
2
+ export declare const ABSOLUTE_REMOTE_MAC_PROTOCOL_VERSION = 1;
@@ -0,0 +1,15 @@
1
+ import { type MobileAuthPrincipal } from '@absolutejs/auth/client/mobile';
2
+ import type { AbsoluteMobileAuthManifest } from './nativeAuth';
3
+ import type { AbsoluteMobileFetch } from './transport';
4
+ export type AbsoluteMobileShellAuth = {
5
+ clientId: string;
6
+ fetch: AbsoluteMobileFetch;
7
+ onPrincipalChange: (listener: (principal: MobileAuthPrincipal | null) => void) => () => void;
8
+ principal: MobileAuthPrincipal | null;
9
+ redirectUri: string;
10
+ issuer: string;
11
+ socketTicket: (audience?: string) => Promise<string>;
12
+ };
13
+ export declare const createAbsoluteMobileShellAuth: (config: AbsoluteMobileAuthManifest, options?: {
14
+ beforeSignOut?: () => Promise<void> | void;
15
+ }) => Promise<AbsoluteMobileShellAuth>;
@@ -1 +1,22 @@
1
- export declare const startAbsoluteMobileShell: () => Promise<void>;
1
+ import { type AbsoluteMobileFetch, type AbsoluteMobileClientManifest } from './transport';
2
+ export type AbsoluteMobileShellAuthRuntime = {
3
+ clientId: string;
4
+ fetch: AbsoluteMobileFetch;
5
+ onPrincipalChange: (listener: (principal: AbsoluteMobileShellPrincipal | null) => void) => () => void;
6
+ principal: AbsoluteMobileShellPrincipal | null;
7
+ redirectUri: string;
8
+ issuer: string;
9
+ socketTicket: (audience?: string) => Promise<string>;
10
+ };
11
+ export type AbsoluteMobileShellPrincipal = {
12
+ namespace: string;
13
+ };
14
+ export type AbsoluteMobileShellOptions = {
15
+ createAuth?: (config: NonNullable<AbsoluteMobileClientManifest['auth']>, options?: {
16
+ beforeSignOut?: () => Promise<void> | void;
17
+ }) => Promise<AbsoluteMobileShellAuthRuntime>;
18
+ beforeSignOut?: () => Promise<void> | void;
19
+ connectPush?: (auth: AbsoluteMobileShellAuthRuntime) => void;
20
+ installSync?: (auth: AbsoluteMobileShellAuthRuntime, config: NonNullable<AbsoluteMobileClientManifest['sync']>) => void | (() => void);
21
+ };
22
+ export declare const startAbsoluteMobileShell: (options?: AbsoluteMobileShellOptions) => Promise<void>;
@@ -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
+ };
@@ -0,0 +1,47 @@
1
+ import { configureCapacitorBackgroundSync, type CapacitorSyncLifecycleOptions, type CapacitorSyncLocalStoreOptions } from '@absolutejs/sync-capacitor';
2
+ import type { SyncClientStatus, SyncLocalStore, SyncLocalStoreSchemaStatus } from '@absolutejs/sync/client';
3
+ import type { AbsoluteMobileShellAuthRuntime } from './shellBootstrap';
4
+ import type { AbsoluteMobileClientManifest } from './transport';
5
+ export type AbsoluteMobileShellSyncOptions = {
6
+ createStore?: (options?: CapacitorSyncLocalStoreOptions) => SyncLocalStore;
7
+ installLifecycle?: (options: CapacitorSyncLifecycleOptions) => Promise<() => void>;
8
+ reload?: () => void;
9
+ reportStatus?: (status: SyncClientStatus) => void;
10
+ reportSchemaState?: (state: AbsoluteMobileSyncSchemaState) => void;
11
+ configureBackground?: typeof configureCapacitorBackgroundSync;
12
+ clearBackground?: () => Promise<void>;
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;
42
+ /**
43
+ * Provisions unchanged Sync clients with native durability, Auth isolation, and
44
+ * foreground/connectivity reconnects. An identity change reloads the shell so
45
+ * no page-held client can retain the previous account's in-memory rows.
46
+ */
47
+ export declare const installAbsoluteMobileShellSync: (auth: AbsoluteMobileShellAuthRuntime, config?: NonNullable<AbsoluteMobileClientManifest["sync"]>, options?: AbsoluteMobileShellSyncOptions) => () => void;
@@ -0,0 +1,5 @@
1
+ import type { AbsoluteMobileClientManifest, AbsoluteMobileClientPage } from './transport';
2
+ export declare const hashAbsoluteMobileStaticDocument: (source: string) => Promise<string>;
3
+ export declare const rewriteAbsoluteMobileHtmxRequests: (source: string, productionOrigin: string) => string;
4
+ export declare const sanitizeAbsoluteMobileHtmxFragment: (source: string, productionOrigin: string, parse?: (source: string) => Document) => string;
5
+ export declare const installAbsoluteMobileStaticDocument: (manifest: AbsoluteMobileClientManifest, page: AbsoluteMobileClientPage, localUrl: string) => 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;
@@ -0,0 +1,9 @@
1
+ import { type SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';
2
+ export type AbsoluteSyncSchemaDiscovery = {
3
+ components: SyncLocalStoreSchemaBundle['components'];
4
+ sources: {
5
+ id: string;
6
+ manifestPath: string;
7
+ }[];
8
+ };
9
+ export declare const discoverAbsoluteSyncSchema: (projectRoot: string) => AbsoluteSyncSchemaDiscovery;
@@ -1,24 +1,38 @@
1
1
  import { type AbsoluteMobilePageActivationOptions } from './client';
2
2
  import type { AbsoluteMobileCompatibilityPage, AbsoluteMobileCompatibilityRoute } from './releaseArtifact';
3
+ import type { AbsoluteMobileAuthManifest } from './nativeAuth';
4
+ import type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';
3
5
  export declare const ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT: 1;
6
+ export type AbsoluteMobileFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
4
7
  export type AbsoluteMobileClientPage = AbsoluteMobileCompatibilityPage & {
5
8
  localBundlePath: string;
9
+ localStylePath?: string;
6
10
  };
7
11
  export type AbsoluteMobileClientManifest = {
12
+ auth?: AbsoluteMobileAuthManifest;
8
13
  appBuild: string;
9
14
  appId: string;
10
15
  appName: string;
11
16
  deepLinkHosts: string[];
12
17
  deepLinkScheme?: string;
18
+ deviceCapabilities: string[];
13
19
  entry: string;
14
20
  format: typeof ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT;
15
21
  pages: AbsoluteMobileClientPage[];
16
22
  productionOrigin: string;
17
23
  routes: AbsoluteMobileCompatibilityRoute[];
18
24
  runtime: string;
25
+ sync?: {
26
+ socketTickets: true;
27
+ background: {
28
+ endpoint: string;
29
+ intervalMinutes: number;
30
+ };
31
+ storageSchema: SyncLocalStoreSchemaBundle;
32
+ };
19
33
  };
20
34
  export type AbsoluteMobileTransportOptions = {
21
- fetch?: typeof globalThis.fetch;
35
+ fetch?: AbsoluteMobileFetch;
22
36
  headers?: HeadersInit;
23
37
  };
24
38
  export declare const createAbsoluteMobilePageRequest: (manifest: AbsoluteMobileClientManifest, path: string, options?: AbsoluteMobileTransportOptions) => Request;
@@ -29,3 +43,4 @@ export declare const navigateAbsoluteMobilePage: (manifest: AbsoluteMobileClient
29
43
  pageId: string;
30
44
  }>;
31
45
  export declare const resolveAbsoluteMobileDeepLink: (manifest: AbsoluteMobileClientManifest, value: string) => string;
46
+ export declare const resolveAbsoluteMobileNavigation: (manifest: AbsoluteMobileClientManifest, value: string, localOrigin: string) => string | undefined;
@@ -19,7 +19,7 @@ export declare const imageOptimizer: (config: ImageConfig | undefined, buildDir:
19
19
  status?: number | keyof import("elysia").StatusMap;
20
20
  cookie?: Record<string, import("elysia").BaseCookie>;
21
21
  };
22
- status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 500 | 100 | 200 | 400 | 404 | 300 | 304 | 426 | 302 | 101 | 102 | 103 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 301 | 303 | 307 | 308 | 401 | 402 | 403 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 428 | 429 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
22
+ status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 500 | 100 | 200 | 400 | 404 | 300 | 304 | 426 | 204 | 302 | 101 | 102 | 103 | 201 | 202 | 203 | 205 | 206 | 207 | 208 | 301 | 303 | 307 | 308 | 401 | 402 | 403 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 428 | 429 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
23
23
  readonly 100: "Continue";
24
24
  readonly 101: "Switching Protocols";
25
25
  readonly 102: "Processing";
@@ -1,5 +1,6 @@
1
1
  import type { Component as SvelteComponent } from 'svelte';
2
2
  import type { SveltePropsOf } from '../../types/svelte';
3
+ import type { AbsoluteMobileBuildPageMetadata } from '../mobile/buildMetadata';
3
4
  import { type StreamingSlotEnhancerOptions } from '../core/responseEnhancers';
4
5
  export type SveltePageRenderOptions = {
5
6
  collectStreamingSlots?: boolean;
@@ -13,6 +14,8 @@ export type SveltePageRenderOptions = {
13
14
  } & StreamingSlotEnhancerOptions;
14
15
  type HasNoSvelteProps<Props> = [Props] extends [never] ? true : keyof Props extends never ? true : false;
15
16
  export type SveltePageRequestInput<Component extends SvelteComponent<never> = SvelteComponent<Record<never, never>>> = SveltePageRenderOptions & {
17
+ /** @internal Build-generated mobile identity. Application code must not set this. */
18
+ __absoluteMobile?: AbsoluteMobileBuildPageMetadata;
16
19
  indexPath: string;
17
20
  pagePath: string;
18
21
  /** The incoming Elysia request. When provided, the request's pathname
@@ -24,6 +24,9 @@ export declare const getCacheKey: (url: string, width: number, quality: number,
24
24
  export declare const isCacheStale: (meta: CacheMeta) => boolean;
25
25
  export declare const matchRemotePattern: (urlString: string, patterns: RemotePattern[]) => boolean;
26
26
  export declare const negotiateFormat: (acceptHeader: string, configuredFormats: ImageFormat[]) => ImageFormat;
27
+ /** The MIME type an image buffer actually is, from its magic bytes — used
28
+ * when optimization fails and the original must be served as itself. */
29
+ export declare const sniffImageMime: (buffer: Buffer) => "image/avif" | "image/gif" | "image/jpeg" | "image/png" | "image/webp" | null;
27
30
  export declare const optimizeImage: (buffer: Buffer | ArrayBuffer, width: number, quality: number, format: ImageFormat) => Promise<Buffer<ArrayBufferLike>>;
28
31
  export declare const readFromCache: (cacheDir: string, cacheKey: string) => {
29
32
  buffer: NonSharedBuffer;
@@ -21,6 +21,7 @@ export declare const loadConfig: (configPath?: string) => Promise<{
21
21
  htmlDirectory?: string;
22
22
  htmxDirectory?: string;
23
23
  mobile?: import("..").MobileConfig;
24
+ pwa?: import("..").PwaConfig;
24
25
  stylesConfig?: string | import("..").StylesConfig;
25
26
  stylePreprocessors?: import("..").StylePreprocessorConfig;
26
27
  postcss?: import("..").PostCSSConfig;
@@ -1,5 +1,6 @@
1
1
  import type { Component as VueComponent } from 'vue';
2
2
  import type { VuePropsOf } from '../../types/vue';
3
+ import type { AbsoluteMobileBuildPageMetadata } from '../mobile/buildMetadata';
3
4
  import { type StreamingSlotEnhancerOptions } from '../core/responseEnhancers';
4
5
  type VuePageRenderOptions = StreamingSlotEnhancerOptions & {
5
6
  collectStreamingSlots?: boolean;
@@ -29,6 +30,8 @@ type VuePageClientMode = {
29
30
  indexPath: string;
30
31
  };
31
32
  export type VuePageRequestInput<Component extends VueComponent> = VuePageRenderOptions & VuePageClientMode & {
33
+ /** @internal Build-generated mobile identity. Application code must not set this. */
34
+ __absoluteMobile?: AbsoluteMobileBuildPageMetadata;
32
35
  headTag?: `<head>${string}</head>`;
33
36
  pagePath: string;
34
37
  Page?: Component;