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
package/dist/esm/plugin.js
CHANGED
|
@@ -2,6 +2,7 @@ import { registerPlugin } from '@capacitor/core';
|
|
|
2
2
|
import { SyncStatus, BundleStatus, UpdateErrorCode } from './definitions';
|
|
3
3
|
import { PluginManager } from './core/plugin-manager';
|
|
4
4
|
import { NativeUpdateError, ErrorCode } from './core/errors';
|
|
5
|
+
import { CryptoUtils } from './security/crypto';
|
|
5
6
|
/**
|
|
6
7
|
* Web implementation of the Native Update Plugin
|
|
7
8
|
*/
|
|
@@ -65,16 +66,119 @@ class NativeUpdatePluginWeb {
|
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
68
|
// LiveUpdatePlugin methods
|
|
68
|
-
async sync(
|
|
69
|
+
async sync(options) {
|
|
69
70
|
const bundleManager = this.pluginManager.getBundleManager();
|
|
71
|
+
const configManager = this.pluginManager.getConfigManager();
|
|
72
|
+
const downloadManager = this.pluginManager.getDownloadManager();
|
|
73
|
+
const eventEmitter = this.pluginManager.getEventEmitter();
|
|
70
74
|
try {
|
|
71
|
-
//
|
|
75
|
+
// Get current version
|
|
72
76
|
const currentBundle = await bundleManager.getActiveBundle();
|
|
73
77
|
const currentVersion = (currentBundle === null || currentBundle === void 0 ? void 0 : currentBundle.version) || '1.0.0';
|
|
74
|
-
//
|
|
78
|
+
// Get base URL from config
|
|
79
|
+
const baseUrl = configManager.get('baseUrl');
|
|
80
|
+
if (!baseUrl) {
|
|
81
|
+
return {
|
|
82
|
+
status: SyncStatus.UP_TO_DATE,
|
|
83
|
+
version: currentVersion,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Check for updates from server
|
|
87
|
+
const channel = (options === null || options === void 0 ? void 0 : options.channel) || configManager.get('channel') || 'production';
|
|
88
|
+
let updateInfo = null;
|
|
89
|
+
try {
|
|
90
|
+
const response = await fetch(`${baseUrl}/updates/latest`, {
|
|
91
|
+
method: 'GET',
|
|
92
|
+
headers: {
|
|
93
|
+
'Content-Type': 'application/json',
|
|
94
|
+
'X-Current-Version': currentVersion,
|
|
95
|
+
'X-Channel': channel,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
if (response.ok) {
|
|
99
|
+
const data = await response.json();
|
|
100
|
+
const latestVersion = data.version || data.latestVersion;
|
|
101
|
+
if (latestVersion && this.compareVersions(currentVersion, latestVersion) < 0) {
|
|
102
|
+
updateInfo = {
|
|
103
|
+
version: latestVersion,
|
|
104
|
+
url: data.url || data.downloadUrl,
|
|
105
|
+
mandatory: data.mandatory,
|
|
106
|
+
notes: data.notes || data.releaseNotes,
|
|
107
|
+
checksum: data.checksum,
|
|
108
|
+
signature: data.signature,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (_a) {
|
|
114
|
+
// Server check failed, continue with UP_TO_DATE
|
|
115
|
+
return {
|
|
116
|
+
status: SyncStatus.UP_TO_DATE,
|
|
117
|
+
version: currentVersion,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// If no update available, return up-to-date
|
|
121
|
+
if (!updateInfo) {
|
|
122
|
+
return {
|
|
123
|
+
status: SyncStatus.UP_TO_DATE,
|
|
124
|
+
version: currentVersion,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// If update mode is IMMEDIATE, download and apply automatically
|
|
128
|
+
if ((options === null || options === void 0 ? void 0 : options.updateMode) === 'immediate' || (options === null || options === void 0 ? void 0 : options.updateMode) === undefined) {
|
|
129
|
+
// Emit update available event
|
|
130
|
+
eventEmitter.emit('updateStateChanged', {
|
|
131
|
+
status: BundleStatus.DOWNLOADING,
|
|
132
|
+
bundleId: updateInfo.version,
|
|
133
|
+
version: updateInfo.version,
|
|
134
|
+
});
|
|
135
|
+
// Download the update
|
|
136
|
+
const onProgress = (event) => {
|
|
137
|
+
eventEmitter.emit('downloadProgress', event);
|
|
138
|
+
};
|
|
139
|
+
const blob = await downloadManager.downloadWithRetry(updateInfo.url, updateInfo.version, onProgress);
|
|
140
|
+
// Get ArrayBuffer for decryption and validation
|
|
141
|
+
let bundleData = await blob.arrayBuffer();
|
|
142
|
+
// Decrypt if encryption is enabled
|
|
143
|
+
bundleData = await this.decryptBundleIfNeeded(bundleData);
|
|
144
|
+
// Validate checksum and signature before saving
|
|
145
|
+
await this.validateBundleData(bundleData, updateInfo.checksum, updateInfo.signature);
|
|
146
|
+
// Convert back to Blob for storage
|
|
147
|
+
const validatedBlob = new Blob([bundleData], { type: blob.type });
|
|
148
|
+
const path = await downloadManager.saveBlob(updateInfo.version, validatedBlob);
|
|
149
|
+
// Create bundle info
|
|
150
|
+
const bundleInfo = {
|
|
151
|
+
bundleId: updateInfo.version,
|
|
152
|
+
version: updateInfo.version,
|
|
153
|
+
path,
|
|
154
|
+
downloadTime: Date.now(),
|
|
155
|
+
size: validatedBlob.size,
|
|
156
|
+
status: BundleStatus.READY,
|
|
157
|
+
checksum: updateInfo.checksum || '',
|
|
158
|
+
verified: true, // Validated before saving
|
|
159
|
+
};
|
|
160
|
+
// Save bundle
|
|
161
|
+
await bundleManager.saveBundleInfo(bundleInfo);
|
|
162
|
+
// Set as active and reload if immediate
|
|
163
|
+
await bundleManager.setActiveBundle(updateInfo.version);
|
|
164
|
+
eventEmitter.emit('updateStateChanged', {
|
|
165
|
+
status: BundleStatus.ACTIVE,
|
|
166
|
+
bundleId: updateInfo.version,
|
|
167
|
+
version: updateInfo.version,
|
|
168
|
+
});
|
|
169
|
+
return {
|
|
170
|
+
status: SyncStatus.UPDATE_INSTALLED,
|
|
171
|
+
version: updateInfo.version,
|
|
172
|
+
description: updateInfo.notes,
|
|
173
|
+
mandatory: updateInfo.mandatory,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// Return update available for manual handling
|
|
75
177
|
return {
|
|
76
|
-
status: SyncStatus.
|
|
77
|
-
version:
|
|
178
|
+
status: SyncStatus.UPDATE_AVAILABLE,
|
|
179
|
+
version: updateInfo.version,
|
|
180
|
+
description: updateInfo.notes,
|
|
181
|
+
mandatory: updateInfo.mandatory,
|
|
78
182
|
};
|
|
79
183
|
}
|
|
80
184
|
catch (error) {
|
|
@@ -196,6 +300,265 @@ class NativeUpdatePluginWeb {
|
|
|
196
300
|
};
|
|
197
301
|
}
|
|
198
302
|
}
|
|
303
|
+
// ============================================
|
|
304
|
+
// Convenience Methods (Aliases)
|
|
305
|
+
// ============================================
|
|
306
|
+
/**
|
|
307
|
+
* Check for available updates (convenience wrapper around getLatest + current version)
|
|
308
|
+
*/
|
|
309
|
+
async checkForUpdate() {
|
|
310
|
+
const bundleManager = this.pluginManager.getBundleManager();
|
|
311
|
+
const configManager = this.pluginManager.getConfigManager();
|
|
312
|
+
try {
|
|
313
|
+
// Get current version
|
|
314
|
+
const currentBundle = await bundleManager.getActiveBundle();
|
|
315
|
+
const currentVersion = (currentBundle === null || currentBundle === void 0 ? void 0 : currentBundle.version) || '1.0.0';
|
|
316
|
+
// Check for latest from server
|
|
317
|
+
const baseUrl = configManager.get('baseUrl');
|
|
318
|
+
if (!baseUrl) {
|
|
319
|
+
return {
|
|
320
|
+
available: false,
|
|
321
|
+
currentVersion,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
// Fetch latest version info from server
|
|
325
|
+
try {
|
|
326
|
+
const response = await fetch(`${baseUrl}/updates/latest`, {
|
|
327
|
+
method: 'GET',
|
|
328
|
+
headers: {
|
|
329
|
+
'Content-Type': 'application/json',
|
|
330
|
+
'X-Current-Version': currentVersion,
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
if (!response.ok) {
|
|
334
|
+
return {
|
|
335
|
+
available: false,
|
|
336
|
+
currentVersion,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
const data = await response.json();
|
|
340
|
+
const latestVersion = data.version || data.latestVersion;
|
|
341
|
+
const isNewer = this.compareVersions(currentVersion, latestVersion) < 0;
|
|
342
|
+
return {
|
|
343
|
+
available: isNewer,
|
|
344
|
+
currentVersion,
|
|
345
|
+
latestVersion: isNewer ? latestVersion : undefined,
|
|
346
|
+
url: isNewer ? data.url : undefined,
|
|
347
|
+
mandatory: data.mandatory,
|
|
348
|
+
notes: data.notes || data.releaseNotes,
|
|
349
|
+
size: data.size,
|
|
350
|
+
checksum: data.checksum,
|
|
351
|
+
signature: data.signature,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
catch (_a) {
|
|
355
|
+
// Server check failed, return not available
|
|
356
|
+
return {
|
|
357
|
+
available: false,
|
|
358
|
+
currentVersion,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
throw new NativeUpdateError(ErrorCode.NETWORK_ERROR, error instanceof Error ? error.message : 'Failed to check for updates');
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Download the latest available update
|
|
368
|
+
*/
|
|
369
|
+
async downloadUpdate(options) {
|
|
370
|
+
const downloadManager = this.pluginManager.getDownloadManager();
|
|
371
|
+
const bundleManager = this.pluginManager.getBundleManager();
|
|
372
|
+
const eventEmitter = this.pluginManager.getEventEmitter();
|
|
373
|
+
// If no options provided, check for update first
|
|
374
|
+
let updateInfo;
|
|
375
|
+
if (!(options === null || options === void 0 ? void 0 : options.url) || !(options === null || options === void 0 ? void 0 : options.version)) {
|
|
376
|
+
updateInfo = await this.checkForUpdate();
|
|
377
|
+
if (!updateInfo.available || !updateInfo.url) {
|
|
378
|
+
throw new NativeUpdateError(ErrorCode.UPDATE_NOT_AVAILABLE, 'No update available to download');
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
const url = (options === null || options === void 0 ? void 0 : options.url) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.url) || '';
|
|
382
|
+
const version = (options === null || options === void 0 ? void 0 : options.version) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.latestVersion) || '';
|
|
383
|
+
const checksum = (options === null || options === void 0 ? void 0 : options.checksum) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.checksum) || '';
|
|
384
|
+
const signature = (options === null || options === void 0 ? void 0 : options.signature) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.signature) || '';
|
|
385
|
+
if (!url || !version) {
|
|
386
|
+
throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'URL and version are required for download');
|
|
387
|
+
}
|
|
388
|
+
// Create progress callback that emits events
|
|
389
|
+
const onProgress = (event) => {
|
|
390
|
+
eventEmitter.emit('downloadProgress', event);
|
|
391
|
+
if (options === null || options === void 0 ? void 0 : options.onProgress) {
|
|
392
|
+
options.onProgress(event);
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
// Download the bundle
|
|
396
|
+
const blob = await downloadManager.downloadWithRetry(url, version, onProgress);
|
|
397
|
+
// Get ArrayBuffer for decryption and validation
|
|
398
|
+
let bundleData = await blob.arrayBuffer();
|
|
399
|
+
// Decrypt if encryption is enabled
|
|
400
|
+
bundleData = await this.decryptBundleIfNeeded(bundleData);
|
|
401
|
+
// Validate checksum and signature before saving
|
|
402
|
+
await this.validateBundleData(bundleData, checksum, signature || undefined);
|
|
403
|
+
// Convert back to Blob for storage
|
|
404
|
+
const validatedBlob = new Blob([bundleData], { type: blob.type });
|
|
405
|
+
const path = await downloadManager.saveBlob(version, validatedBlob);
|
|
406
|
+
// Create bundle info
|
|
407
|
+
const bundleInfo = {
|
|
408
|
+
bundleId: version,
|
|
409
|
+
version,
|
|
410
|
+
path,
|
|
411
|
+
downloadTime: Date.now(),
|
|
412
|
+
size: validatedBlob.size,
|
|
413
|
+
status: BundleStatus.READY,
|
|
414
|
+
checksum,
|
|
415
|
+
verified: true, // Validated before saving
|
|
416
|
+
};
|
|
417
|
+
// Save bundle info
|
|
418
|
+
await bundleManager.saveBundleInfo(bundleInfo);
|
|
419
|
+
return bundleInfo;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Apply a downloaded update and reload the app
|
|
423
|
+
*/
|
|
424
|
+
async applyUpdate(bundleId) {
|
|
425
|
+
const bundleManager = this.pluginManager.getBundleManager();
|
|
426
|
+
// If bundleId not provided, find the most recent ready bundle
|
|
427
|
+
let targetBundleId = bundleId;
|
|
428
|
+
if (!targetBundleId) {
|
|
429
|
+
const bundles = await bundleManager.getAllBundles();
|
|
430
|
+
const readyBundles = bundles
|
|
431
|
+
.filter(b => b.status === BundleStatus.READY)
|
|
432
|
+
.sort((a, b) => b.downloadTime - a.downloadTime);
|
|
433
|
+
if (readyBundles.length === 0) {
|
|
434
|
+
throw new NativeUpdateError(ErrorCode.FILE_NOT_FOUND, 'No ready bundle found to apply');
|
|
435
|
+
}
|
|
436
|
+
targetBundleId = readyBundles[0].bundleId;
|
|
437
|
+
}
|
|
438
|
+
// Get the bundle
|
|
439
|
+
const bundle = await bundleManager.getBundle(targetBundleId);
|
|
440
|
+
if (!bundle) {
|
|
441
|
+
throw new NativeUpdateError(ErrorCode.FILE_NOT_FOUND, `Bundle ${targetBundleId} not found`);
|
|
442
|
+
}
|
|
443
|
+
// Set as active and reload
|
|
444
|
+
await this.set(bundle);
|
|
445
|
+
await this.reload();
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Cancel an active download
|
|
449
|
+
*/
|
|
450
|
+
async cancelDownload(bundleId) {
|
|
451
|
+
const downloadManager = this.pluginManager.getDownloadManager();
|
|
452
|
+
downloadManager.cancelDownload(bundleId);
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Cancel all active downloads
|
|
456
|
+
*/
|
|
457
|
+
async cancelAllDownloads() {
|
|
458
|
+
const downloadManager = this.pluginManager.getDownloadManager();
|
|
459
|
+
downloadManager.cancelAllDownloads();
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Check if a download is currently active
|
|
463
|
+
*/
|
|
464
|
+
async isDownloading(bundleId) {
|
|
465
|
+
const downloadManager = this.pluginManager.getDownloadManager();
|
|
466
|
+
return downloadManager.isDownloading(bundleId);
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Get the count of active downloads
|
|
470
|
+
*/
|
|
471
|
+
async getActiveDownloadCount() {
|
|
472
|
+
const downloadManager = this.pluginManager.getDownloadManager();
|
|
473
|
+
return downloadManager.getActiveDownloadCount();
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Compare two semantic versions
|
|
477
|
+
* Returns: -1 if v1 < v2, 0 if equal, 1 if v1 > v2
|
|
478
|
+
*/
|
|
479
|
+
compareVersions(v1, v2) {
|
|
480
|
+
const parts1 = v1.split('.').map(Number);
|
|
481
|
+
const parts2 = v2.split('.').map(Number);
|
|
482
|
+
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
|
483
|
+
const p1 = parts1[i] || 0;
|
|
484
|
+
const p2 = parts2[i] || 0;
|
|
485
|
+
if (p1 < p2)
|
|
486
|
+
return -1;
|
|
487
|
+
if (p1 > p2)
|
|
488
|
+
return 1;
|
|
489
|
+
}
|
|
490
|
+
return 0;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Decrypt bundle data if encryption is enabled
|
|
494
|
+
* Returns the decrypted data or the original data if encryption is not enabled
|
|
495
|
+
*/
|
|
496
|
+
async decryptBundleIfNeeded(bundleData) {
|
|
497
|
+
const configManager = this.pluginManager.getConfigManager();
|
|
498
|
+
const enableEncryption = configManager.get('enableEncryption');
|
|
499
|
+
const encryptionKey = configManager.get('encryptionKey');
|
|
500
|
+
const encryptionSalt = configManager.get('encryptionSalt');
|
|
501
|
+
if (!enableEncryption) {
|
|
502
|
+
return bundleData;
|
|
503
|
+
}
|
|
504
|
+
// Validate encryption configuration
|
|
505
|
+
if (!encryptionKey) {
|
|
506
|
+
throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'Encryption is enabled but encryptionKey is not configured');
|
|
507
|
+
}
|
|
508
|
+
if (!encryptionSalt) {
|
|
509
|
+
throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'Encryption is enabled but encryptionSalt is not configured');
|
|
510
|
+
}
|
|
511
|
+
try {
|
|
512
|
+
// Try to parse as encrypted bundle JSON
|
|
513
|
+
const decoder = new TextDecoder();
|
|
514
|
+
const jsonString = decoder.decode(bundleData);
|
|
515
|
+
const encryptedBundle = JSON.parse(jsonString);
|
|
516
|
+
// Verify it's an encrypted bundle
|
|
517
|
+
if (!CryptoUtils.isEncryptedBundle(encryptedBundle)) {
|
|
518
|
+
throw new NativeUpdateError(ErrorCode.VALIDATION_ERROR, 'Encryption is enabled but bundle is not encrypted');
|
|
519
|
+
}
|
|
520
|
+
// Decrypt the bundle
|
|
521
|
+
const decryptedData = await CryptoUtils.decryptBundle(encryptedBundle, encryptionKey, encryptionSalt);
|
|
522
|
+
return decryptedData;
|
|
523
|
+
}
|
|
524
|
+
catch (error) {
|
|
525
|
+
if (error instanceof NativeUpdateError) {
|
|
526
|
+
throw error;
|
|
527
|
+
}
|
|
528
|
+
throw new NativeUpdateError(ErrorCode.VALIDATION_ERROR, `Failed to decrypt bundle: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Validate bundle data using SecurityValidator
|
|
533
|
+
* Returns true if valid, throws error if invalid
|
|
534
|
+
*/
|
|
535
|
+
async validateBundleData(bundleData, expectedChecksum, signature) {
|
|
536
|
+
const securityValidator = this.pluginManager.getSecurityValidator();
|
|
537
|
+
const configManager = this.pluginManager.getConfigManager();
|
|
538
|
+
// Verify checksum if provided
|
|
539
|
+
if (expectedChecksum) {
|
|
540
|
+
const isValidChecksum = await securityValidator.verifyChecksum(bundleData, expectedChecksum);
|
|
541
|
+
if (!isValidChecksum) {
|
|
542
|
+
throw new NativeUpdateError(ErrorCode.CHECKSUM_MISMATCH, 'Bundle checksum verification failed');
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
// Verify signature if requireSignature is enabled
|
|
546
|
+
const requireSignature = configManager.get('requireSignature');
|
|
547
|
+
const publicKey = configManager.get('publicKey');
|
|
548
|
+
if (requireSignature) {
|
|
549
|
+
if (!publicKey) {
|
|
550
|
+
throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'Signature verification required but publicKey is not configured');
|
|
551
|
+
}
|
|
552
|
+
if (!signature) {
|
|
553
|
+
throw new NativeUpdateError(ErrorCode.SIGNATURE_INVALID, 'Signature verification required but no signature provided');
|
|
554
|
+
}
|
|
555
|
+
const isValidSignature = await securityValidator.verifySignature(bundleData, signature);
|
|
556
|
+
if (!isValidSignature) {
|
|
557
|
+
throw new NativeUpdateError(ErrorCode.SIGNATURE_INVALID, 'Bundle signature verification failed');
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return true;
|
|
561
|
+
}
|
|
199
562
|
// AppUpdatePlugin methods
|
|
200
563
|
async getAppUpdateInfo() {
|
|
201
564
|
const appUpdateManager = this.pluginManager.getAppUpdateManager();
|
|
@@ -232,7 +595,10 @@ class NativeUpdatePluginWeb {
|
|
|
232
595
|
}
|
|
233
596
|
// BackgroundUpdatePlugin methods
|
|
234
597
|
async enableBackgroundUpdates(config) {
|
|
235
|
-
//
|
|
598
|
+
// Configure the background scheduler
|
|
599
|
+
const scheduler = this.pluginManager.getBackgroundScheduler();
|
|
600
|
+
scheduler.configure(config);
|
|
601
|
+
// Store the configuration in preferences for persistence
|
|
236
602
|
const preferences = this.pluginManager
|
|
237
603
|
.getConfigManager()
|
|
238
604
|
.get('preferences');
|
|
@@ -244,6 +610,14 @@ class NativeUpdatePluginWeb {
|
|
|
244
610
|
}
|
|
245
611
|
}
|
|
246
612
|
async disableBackgroundUpdates() {
|
|
613
|
+
// Disable the scheduler
|
|
614
|
+
const scheduler = this.pluginManager.getBackgroundScheduler();
|
|
615
|
+
scheduler.configure({
|
|
616
|
+
enabled: false,
|
|
617
|
+
checkInterval: 0,
|
|
618
|
+
updateTypes: [],
|
|
619
|
+
});
|
|
620
|
+
// Remove the configuration from preferences
|
|
247
621
|
const preferences = this.pluginManager
|
|
248
622
|
.getConfigManager()
|
|
249
623
|
.get('preferences');
|
|
@@ -252,27 +626,16 @@ class NativeUpdatePluginWeb {
|
|
|
252
626
|
}
|
|
253
627
|
}
|
|
254
628
|
async getBackgroundUpdateStatus() {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
isRunning: false,
|
|
258
|
-
checkCount: 0,
|
|
259
|
-
failureCount: 0,
|
|
260
|
-
};
|
|
629
|
+
const scheduler = this.pluginManager.getBackgroundScheduler();
|
|
630
|
+
return scheduler.getStatus();
|
|
261
631
|
}
|
|
262
632
|
async scheduleBackgroundCheck(_interval) {
|
|
263
633
|
// Not supported on web
|
|
264
634
|
throw new NativeUpdateError(ErrorCode.PLATFORM_NOT_SUPPORTED, 'Background updates are not supported on web');
|
|
265
635
|
}
|
|
266
636
|
async triggerBackgroundCheck() {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
updatesFound: false,
|
|
270
|
-
notificationSent: false,
|
|
271
|
-
error: {
|
|
272
|
-
code: UpdateErrorCode.PLATFORM_NOT_SUPPORTED,
|
|
273
|
-
message: 'Background updates are not supported on web',
|
|
274
|
-
},
|
|
275
|
-
};
|
|
637
|
+
const scheduler = this.pluginManager.getBackgroundScheduler();
|
|
638
|
+
return scheduler.performCheck();
|
|
276
639
|
}
|
|
277
640
|
async setNotificationPreferences(preferences) {
|
|
278
641
|
// Store preferences but notifications aren't supported on web
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cryptographic utilities for bundle verification
|
|
2
|
+
* Cryptographic utilities for bundle verification and encryption
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for bundle encryption
|
|
6
|
+
*/
|
|
7
|
+
export interface EncryptionConfig {
|
|
8
|
+
algorithm: 'AES-GCM';
|
|
9
|
+
keyLength: 128 | 192 | 256;
|
|
10
|
+
ivLength: number;
|
|
11
|
+
tagLength: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Encrypted bundle structure
|
|
15
|
+
*/
|
|
16
|
+
export interface EncryptedBundle {
|
|
17
|
+
iv: string;
|
|
18
|
+
data: string;
|
|
19
|
+
tag?: string;
|
|
20
|
+
algorithm: string;
|
|
21
|
+
keyId?: string;
|
|
22
|
+
}
|
|
4
23
|
export declare class CryptoUtils {
|
|
5
24
|
/**
|
|
6
25
|
* Calculate SHA-256 checksum of data
|
|
@@ -22,4 +41,48 @@ export declare class CryptoUtils {
|
|
|
22
41
|
* Validate checksum format
|
|
23
42
|
*/
|
|
24
43
|
static isValidChecksum(checksum: string, algorithm?: 'SHA-256' | 'SHA-512'): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Derive an encryption key from a password/secret
|
|
46
|
+
* Uses PBKDF2 for secure key derivation
|
|
47
|
+
*/
|
|
48
|
+
static deriveKey(password: string, salt: ArrayBuffer, keyLength?: 128 | 192 | 256): Promise<CryptoKey>;
|
|
49
|
+
/**
|
|
50
|
+
* Import a raw encryption key
|
|
51
|
+
*/
|
|
52
|
+
static importKey(keyData: ArrayBuffer | string, keyLength?: 128 | 192 | 256): Promise<CryptoKey>;
|
|
53
|
+
/**
|
|
54
|
+
* Encrypt data using AES-256-GCM
|
|
55
|
+
*/
|
|
56
|
+
static encrypt(data: ArrayBuffer | Uint8Array, key: CryptoKey, config?: Partial<EncryptionConfig>): Promise<EncryptedBundle>;
|
|
57
|
+
/**
|
|
58
|
+
* Decrypt data using AES-256-GCM
|
|
59
|
+
*/
|
|
60
|
+
static decrypt(encryptedBundle: EncryptedBundle, key: CryptoKey, config?: Partial<EncryptionConfig>): Promise<ArrayBuffer>;
|
|
61
|
+
/**
|
|
62
|
+
* Encrypt a bundle file (convenience method for typical use case)
|
|
63
|
+
*/
|
|
64
|
+
static encryptBundle(bundleData: ArrayBuffer, encryptionKey: string, salt?: ArrayBuffer): Promise<{
|
|
65
|
+
encrypted: EncryptedBundle;
|
|
66
|
+
salt: string;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Decrypt a bundle file (convenience method for typical use case)
|
|
70
|
+
*/
|
|
71
|
+
static decryptBundle(encryptedBundle: EncryptedBundle, encryptionKey: string, salt: string): Promise<ArrayBuffer>;
|
|
72
|
+
/**
|
|
73
|
+
* Check if a bundle is encrypted
|
|
74
|
+
*/
|
|
75
|
+
static isEncryptedBundle(data: unknown): data is EncryptedBundle;
|
|
76
|
+
/**
|
|
77
|
+
* Generate a random encryption key
|
|
78
|
+
*/
|
|
79
|
+
static generateEncryptionKey(length?: 128 | 192 | 256): string;
|
|
80
|
+
/**
|
|
81
|
+
* Generate a random salt
|
|
82
|
+
*/
|
|
83
|
+
static generateSalt(length?: number): string;
|
|
84
|
+
/**
|
|
85
|
+
* Convert ArrayBuffer to base64 string
|
|
86
|
+
*/
|
|
87
|
+
static arrayBufferToBase64(buffer: ArrayBuffer): string;
|
|
25
88
|
}
|