@absolutejs/absolute 0.20.0-beta.63 → 0.20.0-beta.65

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.
@@ -28,6 +28,12 @@ export declare const materializeAbsoluteCapacitorWebBundle: (options: AbsoluteCa
28
28
  channel: string;
29
29
  manifestUrl: string;
30
30
  publicKeys: Record<string, string>;
31
+ expoCodeSigning?: {
32
+ algorithm: "rsa-v1_5-sha256";
33
+ certificatePem: string;
34
+ certificateSha256: string;
35
+ keyId: string;
36
+ };
31
37
  } | undefined;
32
38
  appId: string;
33
39
  appName: string;
@@ -21,6 +21,12 @@ export type NormalizedAbsoluteMobileConfig = {
21
21
  channel: string;
22
22
  manifestUrl: string;
23
23
  publicKeys: Record<string, string>;
24
+ expoCodeSigning?: {
25
+ algorithm: 'rsa-v1_5-sha256';
26
+ certificatePem: string;
27
+ certificateSha256: string;
28
+ keyId: string;
29
+ };
24
30
  };
25
31
  };
26
32
  export declare const normalizeAbsoluteMobileConfig: (config: MobileConfig, projectRoot: string) => NormalizedAbsoluteMobileConfig;
@@ -0,0 +1,14 @@
1
+ export type GenerateAbsoluteExpoCodeSigningOptions = {
2
+ certificatePath: string;
3
+ commonName: string;
4
+ privateKeyPath: string;
5
+ projectRoot: string;
6
+ publicKeyPath?: string;
7
+ validityYears?: number;
8
+ };
9
+ export declare const generateAbsoluteExpoCodeSigning: (options: GenerateAbsoluteExpoCodeSigningOptions) => Promise<{
10
+ certificatePath: string;
11
+ privateKeyPath: string;
12
+ publicKeyPath: string;
13
+ validityNotAfter: string;
14
+ }>;
@@ -0,0 +1,27 @@
1
+ export declare const ABSOLUTE_EXPO_UPDATE_DESCRIPTOR: "_absolute/expo-update.json";
2
+ export declare const ABSOLUTE_EXPO_UPDATE_FORMAT: 1;
3
+ export type AbsoluteExpoUpdateAsset = {
4
+ extension?: string;
5
+ path: string;
6
+ };
7
+ export type AbsoluteExpoUpdatePlatform = {
8
+ assets: AbsoluteExpoUpdateAsset[];
9
+ launchAsset: AbsoluteExpoUpdateAsset;
10
+ };
11
+ export type AbsoluteExpoUpdateDescriptor = {
12
+ engine: 'expo';
13
+ expoConfig: Record<string, unknown>;
14
+ format: typeof ABSOLUTE_EXPO_UPDATE_FORMAT;
15
+ platforms: Partial<Record<'android' | 'ios', AbsoluteExpoUpdatePlatform>>;
16
+ runtimeVersion: string;
17
+ };
18
+ declare const parseAbsoluteExpoUpdateDescriptor: (value: unknown) => AbsoluteExpoUpdateDescriptor;
19
+ declare const finalizeAbsoluteExpoUpdateExport: (options: {
20
+ expoConfig: Record<string, unknown>;
21
+ exportDirectory: string;
22
+ runtimeVersion: string;
23
+ }) => Promise<{
24
+ descriptor: AbsoluteExpoUpdateDescriptor;
25
+ path: string;
26
+ }>;
27
+ export { finalizeAbsoluteExpoUpdateExport, parseAbsoluteExpoUpdateDescriptor };
@@ -18,8 +18,10 @@ export * from './syncSchema';
18
18
  export * from './syncRemediation';
19
19
  export * from './deviceCapabilities';
20
20
  export * from './expoBridge';
21
+ export * from './expoCodeSigning';
21
22
  export * from './expoDevController';
22
23
  export * from './expoProject';
24
+ export * from './expoUpdate';
23
25
  export * from './capacitorProject';
24
26
  export * from './config';
25
27
  export * from './client';
@@ -1,6 +1,6 @@
1
- import type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';
1
+ import { type AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';
2
2
  import type { NormalizedAbsoluteMobileConfig } from './config';
3
- import type { AbsoluteMobileAuthManifest } from './nativeAuth';
3
+ import { type AbsoluteMobileAuthManifest } from './nativeAuth';
4
4
  import type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';
5
5
  export declare const ABSOLUTE_MOBILE_SHELL_ABI: 2;
6
6
  export declare const ABSOLUTE_MOBILE_UPDATE_RUNTIME_FORMAT: 1;
@@ -25,3 +25,13 @@ export declare const createAbsoluteMobileUpdateRuntimeDescriptor: (options: {
25
25
  syncSchema?: SyncLocalStoreSchemaBundle;
26
26
  }) => AbsoluteMobileUpdateRuntimeDescriptor;
27
27
  export declare const fingerprintAbsoluteMobileUpdateRuntime: (descriptor: AbsoluteMobileUpdateRuntimeDescriptor) => string;
28
+ /** Resolve the complete native contract once so store builds and OTA exports
29
+ * can never disagree about runtime compatibility. */
30
+ export declare const resolveAbsoluteMobileUpdateRuntime: (config: NormalizedAbsoluteMobileConfig, projectRoot: string) => {
31
+ auth: AbsoluteMobileAuthManifest | undefined;
32
+ descriptor: AbsoluteMobileUpdateRuntimeDescriptor;
33
+ deviceCapabilities: AbsoluteDeviceCapabilityPlan;
34
+ fingerprint: string;
35
+ sync: boolean;
36
+ syncSchema: import("./syncSchema").AbsoluteSyncSchemaDiscovery | undefined;
37
+ };
@@ -65,6 +65,13 @@ type MobileSharedConfig = {
65
65
  manifestUrl?: string;
66
66
  /** ECDSA P-256 SPKI public keys, encoded as base64 DER and keyed by rotation ID. */
67
67
  publicKeys: Readonly<Record<string, string>>;
68
+ /** Expo's native end-to-end manifest verification. The public certificate is embedded in store builds; its private key stays on the trusted update server. */
69
+ expoCodeSigning?: {
70
+ /** Project-relative PEM X.509 root certificate path. */
71
+ certificatePath: string;
72
+ /** Rotation identity. Defaults to `main`. */
73
+ keyId?: string;
74
+ };
68
75
  };
69
76
  /** Capacitor webDir output. Defaults to `.absolutejs/mobile/web`. */
70
77
  bundleDirectory?: string;
package/package.json CHANGED
@@ -21,6 +21,7 @@
21
21
  "@elysia/openapi": "2.0.0-beta.1",
22
22
  "@elysia/server-timing": "2.0.0-beta.1",
23
23
  "@elysia/static": "2.0.0-beta.2",
24
+ "@expo/code-signing-certificates": "0.0.6",
24
25
  "@tailwindcss/oxide": "^4.1.0",
25
26
  "exact-mirror": "1.2.4",
26
27
  "typebox": "1.3.16",
@@ -293,12 +294,12 @@
293
294
  "main": "./dist/index.js",
294
295
  "name": "@absolutejs/absolute",
295
296
  "optionalDependencies": {
296
- "@absolutejs/native-darwin-arm64": "0.20.0-beta.63",
297
- "@absolutejs/native-darwin-x64": "0.20.0-beta.63",
298
- "@absolutejs/native-linux-arm64": "0.20.0-beta.63",
299
- "@absolutejs/native-linux-x64": "0.20.0-beta.63",
300
- "@absolutejs/native-windows-arm64": "0.20.0-beta.63",
301
- "@absolutejs/native-windows-x64": "0.20.0-beta.63"
297
+ "@absolutejs/native-darwin-arm64": "0.20.0-beta.65",
298
+ "@absolutejs/native-darwin-x64": "0.20.0-beta.65",
299
+ "@absolutejs/native-linux-arm64": "0.20.0-beta.65",
300
+ "@absolutejs/native-linux-x64": "0.20.0-beta.65",
301
+ "@absolutejs/native-windows-arm64": "0.20.0-beta.65",
302
+ "@absolutejs/native-windows-x64": "0.20.0-beta.65"
302
303
  },
303
304
  "overrides": {
304
305
  "@sinclair/typebox": "0.34.52",
@@ -516,7 +517,7 @@
516
517
  ]
517
518
  }
518
519
  },
519
- "version": "0.20.0-beta.63",
520
+ "version": "0.20.0-beta.65",
520
521
  "workspaces": [
521
522
  "tests/fixtures/*",
522
523
  "tests/fixtures/_packages/*"