@absolutejs/absolute 0.20.0-beta.59 → 0.20.0-beta.60
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/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/index.js +828 -254
- package/dist/index.js +54 -4
- package/dist/index.js.map +3 -3
- package/dist/mobile/index.js +656 -17
- package/dist/mobile/index.js.map +16 -9
- package/dist/mobile/remoteMacAgentEntry.js +204 -204
- package/dist/mobile/shellBootstrap.js +1 -0
- package/dist/mobile/shellUpdate.js +456 -0
- package/dist/src/mobile/capacitorBundle.d.ts +7 -0
- package/dist/src/mobile/config.d.ts +5 -0
- package/dist/src/mobile/index.d.ts +7 -0
- package/dist/src/mobile/mobileBundleInspection.d.ts +8 -0
- package/dist/src/mobile/mobileInspect.d.ts +6 -0
- package/dist/src/mobile/nativeUpdates.d.ts +4 -0
- package/dist/src/mobile/shellBootstrap.d.ts +1 -0
- package/dist/src/mobile/shellUpdate.d.ts +2 -0
- package/dist/src/mobile/transport.d.ts +6 -0
- package/dist/src/mobile/updateClient.d.ts +40 -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 +27 -0
- package/dist/src/mobile/updateSigning.d.ts +20 -0
- package/dist/types/build.d.ts +9 -0
- package/package.json +8 -8
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type AbsoluteMobileUpdateFile, type AbsoluteMobileUpdateManifest } from './updateProtocol';
|
|
2
|
+
export type AbsoluteMobileUpdateClientConfig = {
|
|
3
|
+
appId: string;
|
|
4
|
+
channel: string;
|
|
5
|
+
currentReleaseId: string;
|
|
6
|
+
installationId: string;
|
|
7
|
+
manifestUrl: string;
|
|
8
|
+
runtimeFingerprint: string;
|
|
9
|
+
};
|
|
10
|
+
export type AbsoluteMobileUpdateStore = {
|
|
11
|
+
abort(releaseId: string): Promise<void>;
|
|
12
|
+
activate(releaseId: string): Promise<void>;
|
|
13
|
+
begin(manifest: AbsoluteMobileUpdateManifest): Promise<void>;
|
|
14
|
+
commit(manifest: AbsoluteMobileUpdateManifest): Promise<void>;
|
|
15
|
+
write(file: AbsoluteMobileUpdateFile, contents: Uint8Array): Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
export type AbsoluteMobileUpdateVerifier = {
|
|
18
|
+
digest(contents: Uint8Array): Promise<string>;
|
|
19
|
+
verify(manifest: AbsoluteMobileUpdateManifest): Promise<boolean>;
|
|
20
|
+
};
|
|
21
|
+
export type AbsoluteMobileUpdateClientOptions = {
|
|
22
|
+
config: AbsoluteMobileUpdateClientConfig;
|
|
23
|
+
fetch?: typeof globalThis.fetch;
|
|
24
|
+
store: AbsoluteMobileUpdateStore;
|
|
25
|
+
verifier: AbsoluteMobileUpdateVerifier;
|
|
26
|
+
};
|
|
27
|
+
export type AbsoluteMobileUpdateCheckResult = {
|
|
28
|
+
kind: 'current';
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'downloaded';
|
|
31
|
+
manifest: AbsoluteMobileUpdateManifest;
|
|
32
|
+
} | {
|
|
33
|
+
kind: 'update-available';
|
|
34
|
+
manifest: AbsoluteMobileUpdateManifest;
|
|
35
|
+
};
|
|
36
|
+
export declare const createAbsoluteMobileUpdateClient: (options: AbsoluteMobileUpdateClientOptions) => {
|
|
37
|
+
check: (download?: boolean) => Promise<AbsoluteMobileUpdateCheckResult>;
|
|
38
|
+
activate: (releaseId: string) => Promise<void>;
|
|
39
|
+
download: () => Promise<AbsoluteMobileUpdateCheckResult>;
|
|
40
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export declare const ABSOLUTE_MOBILE_UPDATE_FORMAT: 1;
|
|
2
|
+
export declare const ABSOLUTE_MOBILE_UPDATE_MAX_FILE_BYTES: number;
|
|
3
|
+
export declare const ABSOLUTE_MOBILE_UPDATE_MAX_FILES = 10000;
|
|
4
|
+
export declare const ABSOLUTE_MOBILE_UPDATE_MAX_TOTAL_BYTES: number;
|
|
5
|
+
export declare const ABSOLUTE_MOBILE_UPDATE_SIGNATURE_ALGORITHM: "ecdsa-p256-sha256";
|
|
6
|
+
export type AbsoluteMobileUpdateClassification = 'bug-fix' | 'content' | 'security';
|
|
7
|
+
export type AbsoluteMobileUpdateFile = {
|
|
8
|
+
bytes: number;
|
|
9
|
+
path: string;
|
|
10
|
+
sha256: string;
|
|
11
|
+
};
|
|
12
|
+
export type AbsoluteMobileUnsignedUpdateManifest = {
|
|
13
|
+
appId: string;
|
|
14
|
+
channel: string;
|
|
15
|
+
classification: AbsoluteMobileUpdateClassification;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
files: AbsoluteMobileUpdateFile[];
|
|
18
|
+
format: typeof ABSOLUTE_MOBILE_UPDATE_FORMAT;
|
|
19
|
+
/** A content identity for the complete update, excluding its signature. */
|
|
20
|
+
releaseId: string;
|
|
21
|
+
/** Locks an update to the native plugins, bridge, Auth, and local-data ABI. */
|
|
22
|
+
runtimeFingerprint: string;
|
|
23
|
+
/** Store-policy attestation. Feature/primary-purpose changes require a store build. */
|
|
24
|
+
withinSubmittedPurpose: true;
|
|
25
|
+
};
|
|
26
|
+
export type AbsoluteMobileUpdateManifest = AbsoluteMobileUnsignedUpdateManifest & {
|
|
27
|
+
signature: {
|
|
28
|
+
algorithm: typeof ABSOLUTE_MOBILE_UPDATE_SIGNATURE_ALGORITHM;
|
|
29
|
+
keyId: string;
|
|
30
|
+
value: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export declare const absoluteMobileUpdateSigningPayload: (manifest: AbsoluteMobileUnsignedUpdateManifest) => Uint8Array<ArrayBuffer>;
|
|
34
|
+
export declare const canonicalizeAbsoluteMobileUpdate: (value: unknown) => string;
|
|
35
|
+
export declare const normalizeAbsoluteMobileUpdatePath: (value: unknown) => string;
|
|
36
|
+
export declare const parseAbsoluteMobileUnsignedUpdateManifest: (value: unknown) => AbsoluteMobileUnsignedUpdateManifest;
|
|
37
|
+
export declare const parseAbsoluteMobileUpdateManifest: (value: unknown) => AbsoluteMobileUpdateManifest;
|
|
38
|
+
export declare const unsignedAbsoluteMobileUpdate: (manifest: AbsoluteMobileUpdateManifest) => {
|
|
39
|
+
appId: string;
|
|
40
|
+
channel: string;
|
|
41
|
+
classification: AbsoluteMobileUpdateClassification;
|
|
42
|
+
createdAt: string;
|
|
43
|
+
files: AbsoluteMobileUpdateFile[];
|
|
44
|
+
format: typeof ABSOLUTE_MOBILE_UPDATE_FORMAT;
|
|
45
|
+
/** A content identity for the complete update, excluding its signature. */
|
|
46
|
+
releaseId: string;
|
|
47
|
+
/** Locks an update to the native plugins, bridge, Auth, and local-data ABI. */
|
|
48
|
+
runtimeFingerprint: string;
|
|
49
|
+
/** Store-policy attestation. Feature/primary-purpose changes require a store build. */
|
|
50
|
+
withinSubmittedPurpose: true;
|
|
51
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { readAbsoluteMobileUpdate } from './updateSigning';
|
|
2
|
+
export type AbsoluteMobileUpdatePublication = {
|
|
3
|
+
appId: string;
|
|
4
|
+
channel: string;
|
|
5
|
+
releaseId: string;
|
|
6
|
+
reused: boolean;
|
|
7
|
+
rollout: number;
|
|
8
|
+
stage: 'published';
|
|
9
|
+
};
|
|
10
|
+
export type AbsoluteMobileUpdatePromotion = {
|
|
11
|
+
appId: string;
|
|
12
|
+
channel: string;
|
|
13
|
+
releaseId: string;
|
|
14
|
+
rollout: number;
|
|
15
|
+
stage: 'promoted';
|
|
16
|
+
};
|
|
17
|
+
export type AbsoluteMobileUpdateRollback = {
|
|
18
|
+
appId: string;
|
|
19
|
+
channel: string;
|
|
20
|
+
releaseId?: string;
|
|
21
|
+
stage: 'rolled-back';
|
|
22
|
+
};
|
|
23
|
+
export type AbsoluteMobileUpdatePublisher = {
|
|
24
|
+
publishUpdate(options: {
|
|
25
|
+
manifest: Awaited<ReturnType<typeof readAbsoluteMobileUpdate>>;
|
|
26
|
+
releaseDirectory: string;
|
|
27
|
+
rollout: number;
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
}): Promise<AbsoluteMobileUpdatePublication>;
|
|
30
|
+
promoteUpdate(options: {
|
|
31
|
+
appId: string;
|
|
32
|
+
channel: string;
|
|
33
|
+
releaseId: string;
|
|
34
|
+
rollout: number;
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
}): Promise<AbsoluteMobileUpdatePromotion>;
|
|
37
|
+
rollbackUpdate(options: {
|
|
38
|
+
appId: string;
|
|
39
|
+
channel: string;
|
|
40
|
+
releaseId?: string;
|
|
41
|
+
signal?: AbortSignal;
|
|
42
|
+
}): Promise<AbsoluteMobileUpdateRollback>;
|
|
43
|
+
};
|
|
44
|
+
export declare const loadAbsoluteMobileUpdatePublisher: (projectRoot: string, requestedModulePath: string) => Promise<AbsoluteMobileUpdatePublisher>;
|
|
45
|
+
export declare const promoteAbsoluteMobileUpdate: (options: {
|
|
46
|
+
appId: string;
|
|
47
|
+
channel: string;
|
|
48
|
+
publisher: AbsoluteMobileUpdatePublisher;
|
|
49
|
+
releaseId: string;
|
|
50
|
+
rollout: number;
|
|
51
|
+
signal?: AbortSignal;
|
|
52
|
+
}) => Promise<AbsoluteMobileUpdatePromotion>;
|
|
53
|
+
export declare const publishAbsoluteMobileUpdate: (options: {
|
|
54
|
+
projectRoot: string;
|
|
55
|
+
publisher: AbsoluteMobileUpdatePublisher;
|
|
56
|
+
releaseDirectory: string;
|
|
57
|
+
rollout: number;
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
}) => Promise<AbsoluteMobileUpdatePublication>;
|
|
60
|
+
export declare const rollbackAbsoluteMobileUpdate: (options: {
|
|
61
|
+
appId: string;
|
|
62
|
+
channel: string;
|
|
63
|
+
publisher: AbsoluteMobileUpdatePublisher;
|
|
64
|
+
releaseId?: string;
|
|
65
|
+
signal?: AbortSignal;
|
|
66
|
+
}) => Promise<AbsoluteMobileUpdateRollback>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type AbsoluteMobileUpdateRequestIdentity = {
|
|
2
|
+
appId: string;
|
|
3
|
+
channel: string;
|
|
4
|
+
currentReleaseId: string;
|
|
5
|
+
installationId: string;
|
|
6
|
+
runtimeFingerprint: string;
|
|
7
|
+
};
|
|
8
|
+
export type AbsoluteMobileUpdateRolloutOptions = {
|
|
9
|
+
appId: string;
|
|
10
|
+
channel: string;
|
|
11
|
+
installationId: string;
|
|
12
|
+
releaseId: string;
|
|
13
|
+
rollout: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const isAbsoluteMobileUpdateRolloutMember: (options: AbsoluteMobileUpdateRolloutOptions) => boolean;
|
|
16
|
+
export declare const parseAbsoluteMobileUpdateRequest: (request: Request) => AbsoluteMobileUpdateRequestIdentity;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';
|
|
2
|
+
import type { NormalizedAbsoluteMobileConfig } from './config';
|
|
3
|
+
import type { AbsoluteMobileAuthManifest } from './nativeAuth';
|
|
4
|
+
import type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';
|
|
5
|
+
export declare const ABSOLUTE_MOBILE_SHELL_ABI: 1;
|
|
6
|
+
export declare const ABSOLUTE_MOBILE_UPDATE_RUNTIME_FORMAT: 1;
|
|
7
|
+
export type AbsoluteMobileUpdateRuntimeDescriptor = {
|
|
8
|
+
appId: string;
|
|
9
|
+
auth: AbsoluteMobileAuthManifest | null;
|
|
10
|
+
deepLinks: {
|
|
11
|
+
hosts: string[];
|
|
12
|
+
scheme?: string;
|
|
13
|
+
};
|
|
14
|
+
deviceCapabilities: AbsoluteDeviceCapabilityPlan;
|
|
15
|
+
engine: 'capacitor' | 'expo';
|
|
16
|
+
format: typeof ABSOLUTE_MOBILE_UPDATE_RUNTIME_FORMAT;
|
|
17
|
+
shellAbi: typeof ABSOLUTE_MOBILE_SHELL_ABI;
|
|
18
|
+
syncSchema: SyncLocalStoreSchemaBundle | null;
|
|
19
|
+
updates: NormalizedAbsoluteMobileConfig['updates'] | null;
|
|
20
|
+
};
|
|
21
|
+
export declare const createAbsoluteMobileUpdateRuntimeDescriptor: (options: {
|
|
22
|
+
auth?: AbsoluteMobileAuthManifest;
|
|
23
|
+
config: NormalizedAbsoluteMobileConfig;
|
|
24
|
+
deviceCapabilities: AbsoluteDeviceCapabilityPlan;
|
|
25
|
+
syncSchema?: SyncLocalStoreSchemaBundle;
|
|
26
|
+
}) => AbsoluteMobileUpdateRuntimeDescriptor;
|
|
27
|
+
export declare const fingerprintAbsoluteMobileUpdateRuntime: (descriptor: AbsoluteMobileUpdateRuntimeDescriptor) => string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type AbsoluteMobileUpdateClassification } from './updateProtocol';
|
|
2
|
+
export type BuildAbsoluteMobileUpdateOptions = {
|
|
3
|
+
appId: string;
|
|
4
|
+
bundleDirectory: string;
|
|
5
|
+
channel: string;
|
|
6
|
+
classification: AbsoluteMobileUpdateClassification;
|
|
7
|
+
createdAt?: Date;
|
|
8
|
+
keyId: string;
|
|
9
|
+
outputDirectory: string;
|
|
10
|
+
privateKey: string | Buffer;
|
|
11
|
+
runtimeFingerprint: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const buildAbsoluteMobileUpdate: (options: BuildAbsoluteMobileUpdateOptions) => Promise<{
|
|
14
|
+
manifest: import("./updateProtocol").AbsoluteMobileUpdateManifest;
|
|
15
|
+
manifestPath: string;
|
|
16
|
+
outputDirectory: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const copyAbsoluteMobileUpdateFile: (updateDirectory: string, path: string, destination: string) => Promise<void>;
|
|
19
|
+
export declare const readAbsoluteMobileUpdate: (directory: string) => Promise<import("./updateProtocol").AbsoluteMobileUpdateManifest>;
|
|
20
|
+
export declare const verifyAbsoluteMobileUpdateSignature: (manifestValue: unknown, publicKey: string | Buffer) => import("./updateProtocol").AbsoluteMobileUpdateManifest;
|
package/dist/types/build.d.ts
CHANGED
|
@@ -55,6 +55,15 @@ type MobileSharedConfig = {
|
|
|
55
55
|
/** Deployed AbsoluteJS origin used for page envelopes and API calls. */
|
|
56
56
|
productionOrigin: string;
|
|
57
57
|
};
|
|
58
|
+
/** Signed over-the-air web-bundle updates. Native capability changes still require a store build. */
|
|
59
|
+
updates?: {
|
|
60
|
+
/** Release channel. Defaults to `production`. */
|
|
61
|
+
channel?: string;
|
|
62
|
+
/** Exact signed-manifest URL. Defaults to the AbsoluteJS production origin. */
|
|
63
|
+
manifestUrl?: string;
|
|
64
|
+
/** ECDSA P-256 SPKI public keys, encoded as base64 DER and keyed by rotation ID. */
|
|
65
|
+
publicKeys: Readonly<Record<string, string>>;
|
|
66
|
+
};
|
|
58
67
|
/** Capacitor webDir output. Defaults to `.absolutejs/mobile/web`. */
|
|
59
68
|
bundleDirectory?: string;
|
|
60
69
|
nativeProject?: {
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"@absolutejs/http": "0.0.1",
|
|
15
15
|
"@absolutejs/pwa": "0.14.0",
|
|
16
16
|
"@capacitor/browser": "8.0.4",
|
|
17
|
+
"@capacitor/filesystem": "8.1.3",
|
|
17
18
|
"@capacitor/keyboard": "8.0.5",
|
|
18
19
|
"@capacitor/network": "8.0.1",
|
|
19
20
|
"@capacitor/preferences": "8.0.1",
|
|
@@ -54,7 +55,6 @@
|
|
|
54
55
|
"@capacitor/clipboard": "8.0.1",
|
|
55
56
|
"@capacitor/core": "8.5.0",
|
|
56
57
|
"@capacitor/file-viewer": "2.0.2",
|
|
57
|
-
"@capacitor/filesystem": "8.1.3",
|
|
58
58
|
"@capacitor/geolocation": "8.2.2",
|
|
59
59
|
"@capacitor/haptics": "8.0.2",
|
|
60
60
|
"@capacitor/ios": "8.5.0",
|
|
@@ -293,12 +293,12 @@
|
|
|
293
293
|
"main": "./dist/index.js",
|
|
294
294
|
"name": "@absolutejs/absolute",
|
|
295
295
|
"optionalDependencies": {
|
|
296
|
-
"@absolutejs/native-darwin-arm64": "0.20.0-beta.
|
|
297
|
-
"@absolutejs/native-darwin-x64": "0.20.0-beta.
|
|
298
|
-
"@absolutejs/native-linux-arm64": "0.20.0-beta.
|
|
299
|
-
"@absolutejs/native-linux-x64": "0.20.0-beta.
|
|
300
|
-
"@absolutejs/native-windows-arm64": "0.20.0-beta.
|
|
301
|
-
"@absolutejs/native-windows-x64": "0.20.0-beta.
|
|
296
|
+
"@absolutejs/native-darwin-arm64": "0.20.0-beta.60",
|
|
297
|
+
"@absolutejs/native-darwin-x64": "0.20.0-beta.60",
|
|
298
|
+
"@absolutejs/native-linux-arm64": "0.20.0-beta.60",
|
|
299
|
+
"@absolutejs/native-linux-x64": "0.20.0-beta.60",
|
|
300
|
+
"@absolutejs/native-windows-arm64": "0.20.0-beta.60",
|
|
301
|
+
"@absolutejs/native-windows-x64": "0.20.0-beta.60"
|
|
302
302
|
},
|
|
303
303
|
"overrides": {
|
|
304
304
|
"@sinclair/typebox": "0.34.52",
|
|
@@ -514,7 +514,7 @@
|
|
|
514
514
|
]
|
|
515
515
|
}
|
|
516
516
|
},
|
|
517
|
-
"version": "0.20.0-beta.
|
|
517
|
+
"version": "0.20.0-beta.60",
|
|
518
518
|
"workspaces": [
|
|
519
519
|
"tests/fixtures/*",
|
|
520
520
|
"tests/fixtures/_packages/*"
|