native-update 1.4.4 → 1.4.6
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/AI-INTEGRATION-GUIDE.md +4 -4
- package/Readme.md +33 -33
- package/android/src/main/AndroidManifest.xml +2 -3
- package/dist/esm/__tests__/bundle-manager.test.js +49 -22
- package/dist/esm/__tests__/bundle-manager.test.js.map +1 -1
- package/dist/esm/app-update/app-update-checker.d.ts +27 -1
- package/dist/esm/app-update/app-update-checker.js +109 -4
- package/dist/esm/app-update/app-update-checker.js.map +1 -1
- package/dist/esm/background-update/background-scheduler.d.ts +25 -0
- package/dist/esm/background-update/background-scheduler.js +176 -61
- package/dist/esm/background-update/background-scheduler.js.map +1 -1
- package/dist/esm/core/config.d.ts +15 -0
- package/dist/esm/core/config.js +8 -0
- package/dist/esm/core/config.js.map +1 -1
- package/dist/esm/core/errors.d.ts +4 -0
- package/dist/esm/core/errors.js +5 -0
- package/dist/esm/core/errors.js.map +1 -1
- package/dist/esm/core/plugin-manager.d.ts +6 -0
- package/dist/esm/core/plugin-manager.js +17 -0
- package/dist/esm/core/plugin-manager.js.map +1 -1
- package/dist/esm/definitions.d.ts +82 -0
- package/dist/esm/definitions.js +1 -0
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/firestore/schema.d.ts +1 -0
- package/dist/esm/firestore/schema.js +5 -1
- package/dist/esm/firestore/schema.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/live-update/delta-processor.d.ts +7 -3
- package/dist/esm/live-update/delta-processor.js +100 -13
- package/dist/esm/live-update/delta-processor.js.map +1 -1
- package/dist/esm/plugin.js +384 -21
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/security/crypto.d.ts +64 -1
- package/dist/esm/security/crypto.js +158 -1
- package/dist/esm/security/crypto.js.map +1 -1
- package/dist/esm/web.d.ts +40 -1
- package/dist/esm/web.js +317 -23
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +1 -1
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.esm.js +1 -1
- package/dist/plugin.esm.js.map +1 -1
- package/dist/plugin.js +2 -2
- package/dist/plugin.js.map +1 -1
- package/docs/CHANGELOG.md +13 -0
- package/docs/KNOWN_LIMITATIONS.md +54 -69
- package/docs/REMAINING_FEATURES.md +14 -13
- package/docs/features/live-updates.md +7 -7
- package/docs/production-readiness.md +20 -23
- package/docs/reports/CLAUDE-CODE-COMPLETION-PROMPT.md +403 -0
- package/docs/reports/CLAUDE_CODE_PROMPT.md +29 -0
- package/docs/reports/CODEBASE_STATUS_REPORT.md +272 -0
- package/docs/reports/COMPREHENSIVE-PROJECT-AUDIT-2026-02-24.md +747 -0
- package/docs/reports/claude-completion.json +241 -0
- package/docs/tracking/capacitor-rollout-note-2026-03-01.md +21 -0
- package/docs/tracking/completion-tracker-2026-02-24.json +174 -0
- package/package.json +10 -10
|
@@ -54,6 +54,34 @@ export interface LiveUpdatePlugin {
|
|
|
54
54
|
* Validate an update bundle
|
|
55
55
|
*/
|
|
56
56
|
validateUpdate(options: ValidateOptions): Promise<ValidationResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Check for available updates (alias for getLatest)
|
|
59
|
+
*/
|
|
60
|
+
checkForUpdate(): Promise<CheckForUpdateResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Download the latest available update
|
|
63
|
+
*/
|
|
64
|
+
downloadUpdate(options?: DownloadUpdateOptions): Promise<BundleInfo>;
|
|
65
|
+
/**
|
|
66
|
+
* Apply a downloaded update and reload the app
|
|
67
|
+
*/
|
|
68
|
+
applyUpdate(bundleId?: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Cancel an active download
|
|
71
|
+
*/
|
|
72
|
+
cancelDownload(bundleId: string): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Cancel all active downloads
|
|
75
|
+
*/
|
|
76
|
+
cancelAllDownloads(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a download is currently active
|
|
79
|
+
*/
|
|
80
|
+
isDownloading(bundleId: string): Promise<boolean>;
|
|
81
|
+
/**
|
|
82
|
+
* Get the count of active downloads
|
|
83
|
+
*/
|
|
84
|
+
getActiveDownloadCount(): Promise<number>;
|
|
57
85
|
}
|
|
58
86
|
/**
|
|
59
87
|
* App Update Plugin Interface
|
|
@@ -182,6 +210,20 @@ export interface LiveUpdateConfig {
|
|
|
182
210
|
optionalInstallMode?: InstallMode;
|
|
183
211
|
maxBundleSize?: number;
|
|
184
212
|
allowedHosts?: string[];
|
|
213
|
+
/**
|
|
214
|
+
* Enable bundle encryption (AES-256-GCM)
|
|
215
|
+
*/
|
|
216
|
+
enableEncryption?: boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Encryption key for decrypting bundles
|
|
219
|
+
* Should be stored securely and not hardcoded
|
|
220
|
+
*/
|
|
221
|
+
encryptionKey?: string;
|
|
222
|
+
/**
|
|
223
|
+
* Salt for key derivation (base64 encoded)
|
|
224
|
+
* Required when enableEncryption is true
|
|
225
|
+
*/
|
|
226
|
+
encryptionSalt?: string;
|
|
185
227
|
}
|
|
186
228
|
export interface AppUpdateConfig {
|
|
187
229
|
minimumVersion?: string;
|
|
@@ -280,6 +322,31 @@ export interface LatestVersion {
|
|
|
280
322
|
mandatory?: boolean;
|
|
281
323
|
notes?: string;
|
|
282
324
|
size?: number;
|
|
325
|
+
checksum?: string;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Result from checkForUpdate convenience method
|
|
329
|
+
*/
|
|
330
|
+
export interface CheckForUpdateResult {
|
|
331
|
+
available: boolean;
|
|
332
|
+
latestVersion?: string;
|
|
333
|
+
currentVersion: string;
|
|
334
|
+
url?: string;
|
|
335
|
+
mandatory?: boolean;
|
|
336
|
+
notes?: string;
|
|
337
|
+
size?: number;
|
|
338
|
+
checksum?: string;
|
|
339
|
+
signature?: string;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Options for downloadUpdate convenience method
|
|
343
|
+
*/
|
|
344
|
+
export interface DownloadUpdateOptions {
|
|
345
|
+
version?: string;
|
|
346
|
+
url?: string;
|
|
347
|
+
checksum?: string;
|
|
348
|
+
signature?: string;
|
|
349
|
+
onProgress?: (event: DownloadProgressEvent) => void;
|
|
283
350
|
}
|
|
284
351
|
export interface ValidateOptions {
|
|
285
352
|
bundlePath: string;
|
|
@@ -469,6 +536,7 @@ export declare enum UpdateErrorCode {
|
|
|
469
536
|
QUOTA_EXCEEDED = "QUOTA_EXCEEDED",
|
|
470
537
|
CONDITIONS_NOT_MET = "CONDITIONS_NOT_MET",
|
|
471
538
|
INVALID_CONFIG = "INVALID_CONFIG",
|
|
539
|
+
NOT_CONFIGURED = "NOT_CONFIGURED",
|
|
472
540
|
UNKNOWN_ERROR = "UNKNOWN_ERROR"
|
|
473
541
|
}
|
|
474
542
|
/**
|
|
@@ -672,6 +740,20 @@ export interface PluginInitConfig {
|
|
|
672
740
|
* Security configuration
|
|
673
741
|
*/
|
|
674
742
|
security?: SecurityConfig;
|
|
743
|
+
/**
|
|
744
|
+
* Enable bundle encryption (AES-256-GCM)
|
|
745
|
+
*/
|
|
746
|
+
enableEncryption?: boolean;
|
|
747
|
+
/**
|
|
748
|
+
* Encryption key for decrypting bundles
|
|
749
|
+
* Should be stored securely and not hardcoded
|
|
750
|
+
*/
|
|
751
|
+
encryptionKey?: string;
|
|
752
|
+
/**
|
|
753
|
+
* Salt for key derivation (base64 encoded)
|
|
754
|
+
* Required when enableEncryption is true
|
|
755
|
+
*/
|
|
756
|
+
encryptionSalt?: string;
|
|
675
757
|
}
|
|
676
758
|
/**
|
|
677
759
|
* Main plugin interface with initialization
|
package/dist/esm/definitions.js
CHANGED
|
@@ -99,6 +99,7 @@ export var UpdateErrorCode;
|
|
|
99
99
|
UpdateErrorCode["CONDITIONS_NOT_MET"] = "CONDITIONS_NOT_MET";
|
|
100
100
|
// General errors
|
|
101
101
|
UpdateErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
|
|
102
|
+
UpdateErrorCode["NOT_CONFIGURED"] = "NOT_CONFIGURED";
|
|
102
103
|
UpdateErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
103
104
|
})(UpdateErrorCode || (UpdateErrorCode = {}));
|
|
104
105
|
//# sourceMappingURL=definitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAAA,qEAAqE;
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export interface FirestoreTimestamp {
|
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Convert FirestoreTimestamp to JavaScript Date
|
|
23
|
+
* Note: Nanosecond precision is truncated to milliseconds (Date limitation)
|
|
23
24
|
*/
|
|
24
25
|
export declare function timestampToDate(timestamp: FirestoreTimestamp): Date;
|
|
25
26
|
/**
|
|
@@ -13,9 +13,13 @@
|
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
15
|
* Convert FirestoreTimestamp to JavaScript Date
|
|
16
|
+
* Note: Nanosecond precision is truncated to milliseconds (Date limitation)
|
|
16
17
|
*/
|
|
17
18
|
export function timestampToDate(timestamp) {
|
|
18
|
-
|
|
19
|
+
// Use Math.floor to ensure we don't exceed the intended milliseconds
|
|
20
|
+
// 999999999 nanoseconds = 999.999999 ms, which should truncate to 999ms
|
|
21
|
+
const milliseconds = Math.floor(timestamp.nanoseconds / 1000000);
|
|
22
|
+
return new Date(timestamp.seconds * 1000 + milliseconds);
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* Convert JavaScript Date to FirestoreTimestamp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/firestore/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/firestore/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAA6B;IAC3D,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;IACjE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;QAC9B,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO;KACnC,CAAC;AACJ,CAAC;AAknBD,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,iBAAiB;IAClC,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;CACN,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,OAAe;IAEf,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,WAAmB,EACnB,SAAiB;IAEjB,OAAO,GAAG,KAAK,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { NativeUpdate } from './plugin';
|
|
2
|
-
export type { NativeUpdatePlugin, NativeUpdateCombinedPlugin, NativeUpdateListeners, LiveUpdatePlugin, AppUpdatePlugin, AppReviewPlugin, PluginConfig, UpdateConfig, LiveUpdateConfig, AppUpdateConfig, AppReviewConfig, BundleInfo, BundleStatus, UpdateStrategy, InstallMode, DownloadOptions, DownloadProgressEvent, SyncOptions, SyncResult, DeleteOptions, LatestVersion, ValidateOptions, ValidationResult, AppUpdateInfo, OpenAppStoreOptions, ReviewResult, CanRequestReviewResult, UpdateStateChangedEvent, AppUpdateStateChangedEvent, AppUpdateProgressEvent, AppUpdateAvailableEvent, AppUpdateReadyEvent, AppUpdateFailedEvent, AppUpdateNotificationClickedEvent, AppUpdateInstallClickedEvent, BackgroundUpdateProgressEvent, BackgroundUpdateNotificationEvent, UpdateError, UpdateErrorCode, BackgroundUpdatePlugin, BackgroundUpdateConfig, BackgroundUpdateStatus, BackgroundCheckResult, BackgroundUpdateType, NotificationPreferences, NotificationPermissionStatus, NotificationPriority, SecurityConfig, SecurityInfo, CertificatePinning, CertificatePin, PluginInitConfig, PluginListenerHandle, SyncStatus, InstallStatus, UpdateMode, ChecksumAlgorithm, } from './definitions';
|
|
2
|
+
export type { NativeUpdatePlugin, NativeUpdateCombinedPlugin, NativeUpdateListeners, LiveUpdatePlugin, AppUpdatePlugin, AppReviewPlugin, PluginConfig, UpdateConfig, LiveUpdateConfig, AppUpdateConfig, AppReviewConfig, BundleInfo, BundleStatus, UpdateStrategy, InstallMode, DownloadOptions, DownloadProgressEvent, SyncOptions, SyncResult, DeleteOptions, LatestVersion, ValidateOptions, ValidationResult, CheckForUpdateResult, DownloadUpdateOptions, AppUpdateInfo, OpenAppStoreOptions, ReviewResult, CanRequestReviewResult, UpdateStateChangedEvent, AppUpdateStateChangedEvent, AppUpdateProgressEvent, AppUpdateAvailableEvent, AppUpdateReadyEvent, AppUpdateFailedEvent, AppUpdateNotificationClickedEvent, AppUpdateInstallClickedEvent, BackgroundUpdateProgressEvent, BackgroundUpdateNotificationEvent, UpdateError, UpdateErrorCode, BackgroundUpdatePlugin, BackgroundUpdateConfig, BackgroundUpdateStatus, BackgroundCheckResult, BackgroundUpdateType, NotificationPreferences, NotificationPermissionStatus, NotificationPriority, SecurityConfig, SecurityInfo, CertificatePinning, CertificatePin, PluginInitConfig, PluginListenerHandle, SyncStatus, InstallStatus, UpdateMode, ChecksumAlgorithm, } from './definitions';
|
|
3
3
|
export { ErrorCode, NativeUpdateError, ConfigurationError, DownloadError, ValidationError, StorageError, UpdateError as UpdateErrorClass, } from './core/errors';
|
|
4
4
|
export { ConfigManager } from './core/config';
|
|
5
5
|
export { Logger, LogLevel } from './core/logger';
|
|
6
6
|
export { SecurityValidator } from './core/security';
|
|
7
7
|
export { PluginManager } from './core/plugin-manager';
|
|
8
8
|
export { CacheManager } from './core/cache-manager';
|
|
9
|
+
export { CryptoUtils } from './security/crypto';
|
|
10
|
+
export type { EncryptionConfig, EncryptedBundle } from './security/crypto';
|
|
9
11
|
export { BundleManager } from './live-update/bundle-manager';
|
|
10
12
|
export { DownloadManager } from './live-update/download-manager';
|
|
11
13
|
export { VersionManager } from './live-update/version-manager';
|
package/dist/esm/index.js
CHANGED
|
@@ -8,6 +8,8 @@ export { Logger, LogLevel } from './core/logger';
|
|
|
8
8
|
export { SecurityValidator } from './core/security';
|
|
9
9
|
export { PluginManager } from './core/plugin-manager';
|
|
10
10
|
export { CacheManager } from './core/cache-manager';
|
|
11
|
+
// Security/Crypto exports
|
|
12
|
+
export { CryptoUtils } from './security/crypto';
|
|
11
13
|
// Manager exports for advanced users
|
|
12
14
|
export { BundleManager } from './live-update/bundle-manager';
|
|
13
15
|
export { DownloadManager } from './live-update/download-manager';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsFxC,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,IAAI,gBAAgB,GAChC,MAAM,eAAe,CAAC;AAEvB,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,qCAAqC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -67,14 +67,18 @@ export declare class DeltaProcessor {
|
|
|
67
67
|
private applyPatch;
|
|
68
68
|
/**
|
|
69
69
|
* Apply file-level patch (JSON format)
|
|
70
|
+
* Supports adding, modifying, and removing files from the bundle
|
|
70
71
|
*/
|
|
71
72
|
private applyFileLevelPatch;
|
|
72
73
|
/**
|
|
73
|
-
* Apply binary patch
|
|
74
|
-
*
|
|
75
|
-
* NOTE: This is a placeholder. For production, use WASM-compiled bspatch.
|
|
74
|
+
* Apply binary patch using a simplified approach
|
|
75
|
+
* For production with large files, consider integrating a WASM bsdiff library
|
|
76
76
|
*/
|
|
77
77
|
private applyBinaryPatch;
|
|
78
|
+
/**
|
|
79
|
+
* Decode base64 string to UTF-8 string
|
|
80
|
+
*/
|
|
81
|
+
private decodeBase64;
|
|
78
82
|
/**
|
|
79
83
|
* Calculate SHA-256 checksum
|
|
80
84
|
*/
|
|
@@ -163,23 +163,110 @@ export class DeltaProcessor {
|
|
|
163
163
|
}
|
|
164
164
|
/**
|
|
165
165
|
* Apply file-level patch (JSON format)
|
|
166
|
+
* Supports adding, modifying, and removing files from the bundle
|
|
166
167
|
*/
|
|
167
|
-
async applyFileLevelPatch(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
async applyFileLevelPatch(currentBundle, patch) {
|
|
169
|
+
this.logger.debug('Applying file-level patch', {
|
|
170
|
+
fromVersion: patch.fromVersion,
|
|
171
|
+
toVersion: patch.toVersion,
|
|
172
|
+
added: patch.changes.added.length,
|
|
173
|
+
modified: patch.changes.modified.length,
|
|
174
|
+
removed: patch.changes.removed.length,
|
|
175
|
+
});
|
|
176
|
+
// Parse current bundle as a simple file map (JSON-based bundle format)
|
|
177
|
+
// This is a lightweight implementation that works without heavy dependencies
|
|
178
|
+
let bundleData;
|
|
179
|
+
try {
|
|
180
|
+
const bundleText = new TextDecoder().decode(currentBundle);
|
|
181
|
+
bundleData = JSON.parse(bundleText);
|
|
182
|
+
}
|
|
183
|
+
catch (_a) {
|
|
184
|
+
// If current bundle is not JSON, treat it as a single-file bundle
|
|
185
|
+
bundleData = { 'bundle.js': new TextDecoder().decode(currentBundle) };
|
|
186
|
+
}
|
|
187
|
+
// Apply removals
|
|
188
|
+
for (const path of patch.changes.removed) {
|
|
189
|
+
delete bundleData[path];
|
|
190
|
+
this.logger.debug(`Removed file: ${path}`);
|
|
191
|
+
}
|
|
192
|
+
// Apply additions
|
|
193
|
+
for (const file of patch.changes.added) {
|
|
194
|
+
// Decode base64 data
|
|
195
|
+
const content = this.decodeBase64(file.data);
|
|
196
|
+
bundleData[file.path] = content;
|
|
197
|
+
this.logger.debug(`Added file: ${file.path}`);
|
|
198
|
+
}
|
|
199
|
+
// Apply modifications
|
|
200
|
+
for (const file of patch.changes.modified) {
|
|
201
|
+
// Decode base64 data
|
|
202
|
+
const content = this.decodeBase64(file.data);
|
|
203
|
+
bundleData[file.path] = content;
|
|
204
|
+
this.logger.debug(`Modified file: ${file.path}`);
|
|
205
|
+
}
|
|
206
|
+
// Convert back to ArrayBuffer
|
|
207
|
+
const resultText = JSON.stringify(bundleData);
|
|
208
|
+
return new TextEncoder().encode(resultText).buffer;
|
|
172
209
|
}
|
|
173
210
|
/**
|
|
174
|
-
* Apply binary patch
|
|
175
|
-
*
|
|
176
|
-
|
|
211
|
+
* Apply binary patch using a simplified approach
|
|
212
|
+
* For production with large files, consider integrating a WASM bsdiff library
|
|
213
|
+
*/
|
|
214
|
+
async applyBinaryPatch(currentBundle, patchData) {
|
|
215
|
+
this.logger.debug('Applying binary patch', {
|
|
216
|
+
currentSize: currentBundle.byteLength,
|
|
217
|
+
patchSize: patchData.byteLength,
|
|
218
|
+
});
|
|
219
|
+
// Parse patch as JSON instructions (simplified binary diff format)
|
|
220
|
+
try {
|
|
221
|
+
const patchText = new TextDecoder().decode(patchData);
|
|
222
|
+
const patchInstructions = JSON.parse(patchText);
|
|
223
|
+
if (patchInstructions.type !== 'binary-diff') {
|
|
224
|
+
throw new Error('Invalid binary patch format');
|
|
225
|
+
}
|
|
226
|
+
const currentView = new Uint8Array(currentBundle);
|
|
227
|
+
const resultChunks = [];
|
|
228
|
+
// Apply patch operations
|
|
229
|
+
for (const op of patchInstructions.operations) {
|
|
230
|
+
if (op.type === 'copy' && op.sourceOffset !== undefined && op.length !== undefined) {
|
|
231
|
+
// Copy from original bundle
|
|
232
|
+
const chunk = currentView.slice(op.sourceOffset, op.sourceOffset + op.length);
|
|
233
|
+
resultChunks.push(chunk);
|
|
234
|
+
}
|
|
235
|
+
else if (op.type === 'insert' && op.data) {
|
|
236
|
+
// Insert new data (base64 encoded)
|
|
237
|
+
const decoded = Uint8Array.from(atob(op.data), c => c.charCodeAt(0));
|
|
238
|
+
resultChunks.push(decoded);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Combine all chunks
|
|
242
|
+
const totalLength = resultChunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
243
|
+
const result = new Uint8Array(totalLength);
|
|
244
|
+
let offset = 0;
|
|
245
|
+
for (const chunk of resultChunks) {
|
|
246
|
+
result.set(chunk, offset);
|
|
247
|
+
offset += chunk.length;
|
|
248
|
+
}
|
|
249
|
+
this.logger.debug('Binary patch applied successfully', {
|
|
250
|
+
resultSize: result.byteLength,
|
|
251
|
+
});
|
|
252
|
+
return result.buffer;
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
this.logger.warn('Binary patch parsing failed, falling back to full download', { error });
|
|
256
|
+
throw new Error('Binary patch format not recognized');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Decode base64 string to UTF-8 string
|
|
177
261
|
*/
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
262
|
+
decodeBase64(base64) {
|
|
263
|
+
try {
|
|
264
|
+
return atob(base64);
|
|
265
|
+
}
|
|
266
|
+
catch (_a) {
|
|
267
|
+
// If not valid base64, return as-is
|
|
268
|
+
return base64;
|
|
269
|
+
}
|
|
183
270
|
}
|
|
184
271
|
/**
|
|
185
272
|
* Calculate SHA-256 checksum
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta-processor.js","sourceRoot":"","sources":["../../../src/live-update/delta-processor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"delta-processor.js","sourceRoot":"","sources":["../../../src/live-update/delta-processor.ts"],"names":[],"mappings":"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"}
|