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.
Files changed (59) hide show
  1. package/AI-INTEGRATION-GUIDE.md +4 -4
  2. package/Readme.md +33 -33
  3. package/android/src/main/AndroidManifest.xml +2 -3
  4. package/dist/esm/__tests__/bundle-manager.test.js +49 -22
  5. package/dist/esm/__tests__/bundle-manager.test.js.map +1 -1
  6. package/dist/esm/app-update/app-update-checker.d.ts +27 -1
  7. package/dist/esm/app-update/app-update-checker.js +109 -4
  8. package/dist/esm/app-update/app-update-checker.js.map +1 -1
  9. package/dist/esm/background-update/background-scheduler.d.ts +25 -0
  10. package/dist/esm/background-update/background-scheduler.js +176 -61
  11. package/dist/esm/background-update/background-scheduler.js.map +1 -1
  12. package/dist/esm/core/config.d.ts +15 -0
  13. package/dist/esm/core/config.js +8 -0
  14. package/dist/esm/core/config.js.map +1 -1
  15. package/dist/esm/core/errors.d.ts +4 -0
  16. package/dist/esm/core/errors.js +5 -0
  17. package/dist/esm/core/errors.js.map +1 -1
  18. package/dist/esm/core/plugin-manager.d.ts +6 -0
  19. package/dist/esm/core/plugin-manager.js +17 -0
  20. package/dist/esm/core/plugin-manager.js.map +1 -1
  21. package/dist/esm/definitions.d.ts +82 -0
  22. package/dist/esm/definitions.js +1 -0
  23. package/dist/esm/definitions.js.map +1 -1
  24. package/dist/esm/firestore/schema.d.ts +1 -0
  25. package/dist/esm/firestore/schema.js +5 -1
  26. package/dist/esm/firestore/schema.js.map +1 -1
  27. package/dist/esm/index.d.ts +3 -1
  28. package/dist/esm/index.js +2 -0
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/live-update/delta-processor.d.ts +7 -3
  31. package/dist/esm/live-update/delta-processor.js +100 -13
  32. package/dist/esm/live-update/delta-processor.js.map +1 -1
  33. package/dist/esm/plugin.js +384 -21
  34. package/dist/esm/plugin.js.map +1 -1
  35. package/dist/esm/security/crypto.d.ts +64 -1
  36. package/dist/esm/security/crypto.js +158 -1
  37. package/dist/esm/security/crypto.js.map +1 -1
  38. package/dist/esm/web.d.ts +40 -1
  39. package/dist/esm/web.js +317 -23
  40. package/dist/esm/web.js.map +1 -1
  41. package/dist/plugin.cjs.js +1 -1
  42. package/dist/plugin.cjs.js.map +1 -1
  43. package/dist/plugin.esm.js +1 -1
  44. package/dist/plugin.esm.js.map +1 -1
  45. package/dist/plugin.js +2 -2
  46. package/dist/plugin.js.map +1 -1
  47. package/docs/CHANGELOG.md +13 -0
  48. package/docs/KNOWN_LIMITATIONS.md +54 -69
  49. package/docs/REMAINING_FEATURES.md +14 -13
  50. package/docs/features/live-updates.md +7 -7
  51. package/docs/production-readiness.md +20 -23
  52. package/docs/reports/CLAUDE-CODE-COMPLETION-PROMPT.md +403 -0
  53. package/docs/reports/CLAUDE_CODE_PROMPT.md +29 -0
  54. package/docs/reports/CODEBASE_STATUS_REPORT.md +272 -0
  55. package/docs/reports/COMPREHENSIVE-PROJECT-AUDIT-2026-02-24.md +747 -0
  56. package/docs/reports/claude-completion.json +241 -0
  57. package/docs/tracking/capacitor-rollout-note-2026-03-01.md +21 -0
  58. package/docs/tracking/completion-tracker-2026-02-24.json +174 -0
  59. 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
@@ -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;AAqcrE;;GAEG;AACH,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,iDAAyB,CAAA;IACzB,mDAA2B,CAAA;IAC3B,qCAAa,CAAA;AACf,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,mCAAW,CAAA;IACX,mCAAW,CAAA;IACX,2CAAmB,CAAA;IACnB,qCAAa,CAAA;IACb,mCAAW,CAAA;AACb,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;IACzB,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,qCAAuB,CAAA;IACvB,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;AACnC,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,kDAAmC,CAAA;IACnC,gDAAiC,CAAA;AACnC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,uCAAkB,CAAA;IAClB,uCAAkB,CAAA;AACpB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,mDAAqC,CAAA;IACrC,mDAAqC,CAAA;IACrC,6BAAe,CAAA;AACjB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAED,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,2CAA2B,CAAA;IAC3B,+BAAe,CAAA;IACf,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;AACnB,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,4CAA2B,CAAA;IAC3B,0CAAyB,CAAA;IACzB,0CAAyB,CAAA;IACzB,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACvB,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,MAAM,CAAN,IAAY,eAyCX;AAzCD,WAAY,eAAe;IACzB,iBAAiB;IACjB,kDAA+B,CAAA;IAC/B,gDAA6B,CAAA;IAC7B,kDAA+B,CAAA;IAE/B,kBAAkB;IAClB,oDAAiC,CAAA;IACjC,kDAA+B,CAAA;IAC/B,8DAA2C,CAAA;IAE3C,kBAAkB;IAClB,4DAAyC,CAAA;IACzC,oDAAiC,CAAA;IACjC,sDAAmC,CAAA;IACnC,gDAA6B,CAAA;IAC7B,8DAA2C,CAAA;IAC3C,oDAAiC,CAAA;IAEjC,sBAAsB;IACtB,kDAA+B,CAAA;IAC/B,oDAAiC,CAAA;IACjC,wDAAqC,CAAA;IAErC,oBAAoB;IACpB,0DAAuC,CAAA;IAEvC,oBAAoB;IACpB,gEAA6C,CAAA;IAC7C,4DAAyC,CAAA;IACzC,wDAAqC,CAAA;IACrC,oEAAiD,CAAA;IAEjD,gBAAgB;IAChB,gEAA6C,CAAA;IAC7C,oDAAiC,CAAA;IACjC,4DAAyC,CAAA;IAEzC,iBAAiB;IACjB,oDAAiC,CAAA;IACjC,kDAA+B,CAAA;AACjC,CAAC,EAzCW,eAAe,KAAf,eAAe,QAyC1B"}
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
- return new Date(timestamp.seconds * 1000 + timestamp.nanoseconds / 1000000);
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;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAA6B;IAC3D,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;AAC9E,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"}
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"}
@@ -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';
@@ -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;AAoFxC,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,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"}
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 (bsdiff format)
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(_currentBundle, _patch) {
168
- // This would require JSZip on the client side
169
- // For now, throw an error to fall back to full download
170
- this.logger.debug('File-level patch not supported in plugin, falling back');
171
- throw new Error('File-level patch not supported in plugin');
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 (bsdiff format)
175
- *
176
- * NOTE: This is a placeholder. For production, use WASM-compiled bspatch.
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
- async applyBinaryPatch(_currentBundle, _patchData) {
179
- // Binary patching requires WASM implementation
180
- // For now, throw an error to fall back to full download
181
- this.logger.debug('Binary patch requires WASM module, falling back');
182
- throw new Error('Binary patch not supported without WASM module');
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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"}