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
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { BackgroundUpdateType, UpdateErrorCode } from '../definitions';
|
|
2
|
+
import { Logger } from '../core/logger';
|
|
3
|
+
import { ConfigManager } from '../core/config';
|
|
2
4
|
export class BackgroundScheduler {
|
|
3
5
|
constructor() {
|
|
4
6
|
this.config = null;
|
|
@@ -8,6 +10,15 @@ export class BackgroundScheduler {
|
|
|
8
10
|
checkCount: 0,
|
|
9
11
|
failureCount: 0,
|
|
10
12
|
};
|
|
13
|
+
this.deps = {};
|
|
14
|
+
this.logger = Logger.getInstance();
|
|
15
|
+
this.configManager = ConfigManager.getInstance();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Set dependencies for the scheduler
|
|
19
|
+
*/
|
|
20
|
+
setDependencies(deps) {
|
|
21
|
+
this.deps = deps;
|
|
11
22
|
}
|
|
12
23
|
configure(config) {
|
|
13
24
|
this.config = config;
|
|
@@ -87,80 +98,179 @@ export class BackgroundScheduler {
|
|
|
87
98
|
};
|
|
88
99
|
}
|
|
89
100
|
async checkAppUpdate() {
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
updateAvailable,
|
|
100
|
-
currentVersion,
|
|
101
|
-
availableVersion,
|
|
102
|
-
updatePriority: updateAvailable ? 3 : undefined, // 3 = MEDIUM priority
|
|
103
|
-
// releaseNotes: updateAvailable
|
|
104
|
-
// ? 'Bug fixes and performance improvements'
|
|
105
|
-
// : undefined,
|
|
106
|
-
};
|
|
101
|
+
// Use AppUpdateManager if available
|
|
102
|
+
if (this.deps.appUpdateManager) {
|
|
103
|
+
try {
|
|
104
|
+
return await this.deps.appUpdateManager.getAppUpdateInfo();
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
this.logger.error('Failed to check app update via manager', error);
|
|
108
|
+
}
|
|
107
109
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
110
|
+
// Fallback: Check via server if configured
|
|
111
|
+
const serverUrl = this.configManager.get('baseUrl') || this.configManager.get('serverUrl');
|
|
112
|
+
if (serverUrl) {
|
|
113
|
+
try {
|
|
114
|
+
const currentVersion = await this.getCurrentAppVersion();
|
|
115
|
+
const response = await fetch(`${serverUrl}/app-version`, {
|
|
116
|
+
method: 'GET',
|
|
117
|
+
headers: {
|
|
118
|
+
'Content-Type': 'application/json',
|
|
119
|
+
'X-Current-Version': currentVersion,
|
|
120
|
+
'X-Platform': this.getPlatform(),
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
if (response.ok) {
|
|
124
|
+
const data = await response.json();
|
|
125
|
+
const availableVersion = data.version || data.latestVersion;
|
|
126
|
+
const updateAvailable = availableVersion &&
|
|
127
|
+
this.compareVersions(currentVersion, availableVersion) < 0;
|
|
128
|
+
return {
|
|
129
|
+
updateAvailable,
|
|
130
|
+
currentVersion,
|
|
131
|
+
availableVersion: updateAvailable ? availableVersion : undefined,
|
|
132
|
+
updatePriority: data.priority,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
this.logger.error('Failed to check app update via server', error);
|
|
138
|
+
}
|
|
111
139
|
}
|
|
140
|
+
// No update info available
|
|
141
|
+
const currentVersion = await this.getCurrentAppVersion();
|
|
142
|
+
return {
|
|
143
|
+
updateAvailable: false,
|
|
144
|
+
currentVersion,
|
|
145
|
+
};
|
|
112
146
|
}
|
|
113
147
|
async checkLiveUpdate() {
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
};
|
|
127
|
-
// Store checksum separately if needed
|
|
128
|
-
result.checksum = updateAvailable ? 'abc123def456' : undefined;
|
|
129
|
-
return result;
|
|
148
|
+
// Get current bundle version
|
|
149
|
+
let currentVersion = '1.0.0';
|
|
150
|
+
if (this.deps.bundleManager) {
|
|
151
|
+
try {
|
|
152
|
+
const activeBundle = await this.deps.bundleManager.getActiveBundle();
|
|
153
|
+
if (activeBundle) {
|
|
154
|
+
currentVersion = activeBundle.version;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (_a) {
|
|
158
|
+
// Use default version
|
|
159
|
+
}
|
|
130
160
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
161
|
+
// Use VersionManager if available
|
|
162
|
+
if (this.deps.versionManager) {
|
|
163
|
+
try {
|
|
164
|
+
const serverUrl = this.configManager.get('serverUrl');
|
|
165
|
+
const channel = this.configManager.get('channel') || 'production';
|
|
166
|
+
const appId = this.configManager.get('appId');
|
|
167
|
+
if (serverUrl && appId) {
|
|
168
|
+
const result = await this.deps.versionManager.checkForUpdates(serverUrl, channel, currentVersion, appId);
|
|
169
|
+
if (result) {
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
this.logger.error('Failed to check live update via VersionManager', error);
|
|
176
|
+
}
|
|
134
177
|
}
|
|
178
|
+
// Fallback: Check via server if configured
|
|
179
|
+
const serverUrl = this.configManager.get('baseUrl') || this.configManager.get('serverUrl');
|
|
180
|
+
if (serverUrl) {
|
|
181
|
+
try {
|
|
182
|
+
const response = await fetch(`${serverUrl}/updates/latest`, {
|
|
183
|
+
method: 'GET',
|
|
184
|
+
headers: {
|
|
185
|
+
'Content-Type': 'application/json',
|
|
186
|
+
'X-Current-Version': currentVersion,
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
if (response.ok) {
|
|
190
|
+
const data = await response.json();
|
|
191
|
+
const latestVersion = data.version || data.latestVersion;
|
|
192
|
+
const updateAvailable = latestVersion &&
|
|
193
|
+
this.compareVersions(currentVersion, latestVersion) < 0;
|
|
194
|
+
return {
|
|
195
|
+
available: updateAvailable,
|
|
196
|
+
version: latestVersion,
|
|
197
|
+
url: updateAvailable ? data.url : undefined,
|
|
198
|
+
notes: data.notes || data.releaseNotes,
|
|
199
|
+
size: data.size,
|
|
200
|
+
checksum: data.checksum,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
this.logger.error('Failed to check live update via server', error);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// No update available
|
|
209
|
+
return {
|
|
210
|
+
available: false,
|
|
211
|
+
};
|
|
135
212
|
}
|
|
136
213
|
async sendNotification(appUpdate, liveUpdate) {
|
|
137
214
|
var _a;
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
215
|
+
// Check if notifications are enabled in config
|
|
216
|
+
if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.notificationPreferences)) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
const prefs = this.config.notificationPreferences;
|
|
220
|
+
let title = prefs.title || 'Update Available';
|
|
221
|
+
let body = prefs.description || '';
|
|
222
|
+
if (appUpdate === null || appUpdate === void 0 ? void 0 : appUpdate.updateAvailable) {
|
|
223
|
+
title = 'App Update Available';
|
|
224
|
+
body = `Version ${appUpdate.availableVersion} is ready to install.`;
|
|
225
|
+
}
|
|
226
|
+
else if (liveUpdate === null || liveUpdate === void 0 ? void 0 : liveUpdate.available) {
|
|
227
|
+
title = 'New Update Available';
|
|
228
|
+
body = `Version ${liveUpdate.version} is ready to download. ${liveUpdate.notes || ''}`;
|
|
229
|
+
}
|
|
230
|
+
// Use Web Notifications API in browser
|
|
231
|
+
if (typeof window !== 'undefined' && 'Notification' in window) {
|
|
232
|
+
try {
|
|
233
|
+
if (Notification.permission === 'granted') {
|
|
234
|
+
new Notification(title, { body });
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
150
237
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
body = `Version ${liveUpdate.version} is ready to download. ${liveUpdate.notes || ''}`;
|
|
238
|
+
catch (error) {
|
|
239
|
+
this.logger.error('Failed to send notification', error);
|
|
154
240
|
}
|
|
155
|
-
// In real implementation, this would use native notification APIs
|
|
156
|
-
console.log('Sending notification:', { title, body });
|
|
157
|
-
// Simulate notification sent
|
|
158
|
-
return true;
|
|
159
241
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
242
|
+
// Log notification for debugging
|
|
243
|
+
this.logger.info('Background update notification', { title, body });
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get current app version
|
|
248
|
+
*/
|
|
249
|
+
async getCurrentAppVersion() {
|
|
250
|
+
// Try to get version from @capacitor/app if available
|
|
251
|
+
try {
|
|
252
|
+
// Dynamic import to avoid hard dependency
|
|
253
|
+
const { App } = await import('@capacitor/app');
|
|
254
|
+
const info = await App.getInfo();
|
|
255
|
+
return info.version;
|
|
163
256
|
}
|
|
257
|
+
catch (_a) {
|
|
258
|
+
// Fallback to baseUrl config to extract app version or use default
|
|
259
|
+
return '1.0.0';
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get current platform
|
|
264
|
+
*/
|
|
265
|
+
getPlatform() {
|
|
266
|
+
if (typeof window !== 'undefined') {
|
|
267
|
+
const userAgent = window.navigator.userAgent;
|
|
268
|
+
if (/android/i.test(userAgent))
|
|
269
|
+
return 'android';
|
|
270
|
+
if (/iPad|iPhone|iPod/.test(userAgent))
|
|
271
|
+
return 'ios';
|
|
272
|
+
}
|
|
273
|
+
return 'web';
|
|
164
274
|
}
|
|
165
275
|
calculateNextCheckTime() {
|
|
166
276
|
var _a;
|
|
@@ -173,9 +283,14 @@ export class BackgroundScheduler {
|
|
|
173
283
|
return (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.respectBatteryOptimization) !== null && _b !== void 0 ? _b : true;
|
|
174
284
|
}
|
|
175
285
|
isNetworkConditionMet() {
|
|
286
|
+
// Check network connectivity
|
|
287
|
+
if (typeof navigator !== 'undefined' && 'onLine' in navigator) {
|
|
288
|
+
return navigator.onLine;
|
|
289
|
+
}
|
|
176
290
|
return true;
|
|
177
291
|
}
|
|
178
292
|
isBatteryLevelSufficient() {
|
|
293
|
+
// Battery API is deprecated in most browsers, return true by default
|
|
179
294
|
return true;
|
|
180
295
|
}
|
|
181
296
|
compareVersions(version1, version2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-scheduler.js","sourceRoot":"","sources":["../../../src/background-update/background-scheduler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"background-scheduler.js","sourceRoot":"","sources":["../../../src/background-update/background-scheduler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAW/C,MAAM,OAAO,mBAAmB;IAY9B;QAXQ,WAAM,GAAkC,IAAI,CAAC;QAC7C,WAAM,GAA2B;YACvC,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;QAGM,SAAI,GAA4B,EAAE,CAAC;QAGzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAA6B;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACvC,CAAC;IAED,SAAS;QACP,yBAAY,IAAI,CAAC,MAAM,EAAG;IAC5B,CAAC;IAED,KAAK,CAAC,YAAY;;QAChB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,OAAO,CAAA,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,KAAK;gBACvB,KAAK,EAAE;oBACL,IAAI,EAAE,eAAe,CAAC,cAAc;oBACpC,OAAO,EAAE,gCAAgC;iBAC1C;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAElC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;gBACtB,IAAI,EAAE,eAAe,CAAC,aAAa;gBACnC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,KAAK;gBACvB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;;QAC3B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,IAAI,SAAoC,CAAC;QACzC,IAAI,UAAqC,CAAC;QAE1C,IACE,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC;aAClE,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA,EAC5D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,IACE,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC;aACnE,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA,EAC5D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,CAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAK,WAAW,EAAE,CAAC;YACvC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAsB,CAAC;QAChD,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAK,WAAW,EAAE,CAAC;YACvC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAsB,CAAC;QACjD,CAAC;QAED,MAAM,YAAY,GAChB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,MAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAA,IAAI,KAAK,CAAC;QAC/D,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,SAAS;YACT,UAAU;YACV,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,oCAAoC;QACpC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3F,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,cAAc,EAAE;oBACvD,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,mBAAmB,EAAE,cAAc;wBACnC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;qBACjC;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC;oBAC5D,MAAM,eAAe,GAAG,gBAAgB;wBACtC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAE7D,OAAO;wBACL,eAAe;wBACf,cAAc;wBACd,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;wBAChE,cAAc,EAAE,IAAI,CAAC,QAAQ;qBAC9B,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACzD,OAAO;YACL,eAAe,EAAE,KAAK;YACtB,cAAc;SACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,6BAA6B;QAC7B,IAAI,cAAc,GAAG,OAAO,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;gBACrE,IAAI,YAAY,EAAE,CAAC;oBACjB,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,WAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAW,IAAI,YAAY,CAAC;gBAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAW,CAAC;gBAExD,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;oBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAC3D,SAAS,EACT,OAAO,EACP,cAAc,EACd,KAAK,CACN,CAAC;oBAEF,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3F,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,iBAAiB,EAAE;oBAC1D,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,mBAAmB,EAAE,cAAc;qBACpC;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC;oBACzD,MAAM,eAAe,GAAG,aAAa;wBACnC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;oBAE1D,OAAO;wBACL,SAAS,EAAE,eAAe;wBAC1B,OAAO,EAAE,aAAa;wBACtB,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;wBAC3C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;wBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,OAAO;YACL,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,SAAyB,EACzB,UAA0B;;QAE1B,+CAA+C;QAC/C,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,uBAAuB,CAAA,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC;QAClD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,kBAAkB,CAAC;QAC9C,IAAI,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAEnC,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,EAAE,CAAC;YAC/B,KAAK,GAAG,sBAAsB,CAAC;YAC/B,IAAI,GAAG,WAAW,SAAS,CAAC,gBAAgB,uBAAuB,CAAC;QACtE,CAAC;aAAM,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE,CAAC;YACjC,KAAK,GAAG,sBAAsB,CAAC;YAC/B,IAAI,GAAG,WAAW,UAAU,CAAC,OAAO,0BAA0B,UAAU,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACzF,CAAC;QAED,uCAAuC;QACvC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC1C,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAChC,sDAAsD;QACtD,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAAC,WAAM,CAAC;YACP,mEAAmE;YACnE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;YACjD,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;QACvD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,sBAAsB;;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,aAAa,KAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB;QACvF,OAAO,GAAG,GAAG,QAAQ,CAAC;IACxB,CAAC;IAES,gCAAgC;;QACxC,OAAO,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,0BAA0B,mCAAI,IAAI,CAAC;IACzD,CAAC;IAES,qBAAqB;QAC7B,6BAA6B;QAC7B,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC9D,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,wBAAwB;QAChC,qEAAqE;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,QAAgB,EAAE,QAAgB;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE/B,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
|
|
@@ -58,6 +58,21 @@ export interface PluginConfig {
|
|
|
58
58
|
* Allows gradual deployment to a percentage of users
|
|
59
59
|
*/
|
|
60
60
|
enableStagedRollouts?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Enable bundle encryption (AES-256-GCM)
|
|
63
|
+
* When enabled, downloaded bundles will be decrypted before validation
|
|
64
|
+
*/
|
|
65
|
+
enableEncryption?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Encryption key for decrypting bundles
|
|
68
|
+
* Should be stored securely and not hardcoded in production
|
|
69
|
+
*/
|
|
70
|
+
encryptionKey?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Salt for key derivation (base64 encoded)
|
|
73
|
+
* Required when using password-based encryption
|
|
74
|
+
*/
|
|
75
|
+
encryptionSalt?: string;
|
|
61
76
|
}
|
|
62
77
|
export declare class ConfigManager {
|
|
63
78
|
private static instance;
|
package/dist/esm/core/config.js
CHANGED
|
@@ -53,6 +53,10 @@ export class ConfigManager {
|
|
|
53
53
|
firestore: null,
|
|
54
54
|
enableDeltaUpdates: true,
|
|
55
55
|
enableStagedRollouts: true,
|
|
56
|
+
// Encryption configuration
|
|
57
|
+
enableEncryption: false,
|
|
58
|
+
encryptionKey: '',
|
|
59
|
+
encryptionSalt: '',
|
|
56
60
|
};
|
|
57
61
|
}
|
|
58
62
|
configure(config) {
|
|
@@ -60,6 +64,10 @@ export class ConfigManager {
|
|
|
60
64
|
this.validateConfig();
|
|
61
65
|
}
|
|
62
66
|
validateConfig() {
|
|
67
|
+
// Validate HTTPS for baseUrl (security requirement)
|
|
68
|
+
if (this.config.baseUrl && !this.config.baseUrl.startsWith('https://')) {
|
|
69
|
+
throw new Error('baseUrl must use HTTPS protocol for security');
|
|
70
|
+
}
|
|
63
71
|
if (this.config.maxBundleSize <= 0) {
|
|
64
72
|
throw new Error('maxBundleSize must be greater than 0');
|
|
65
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ export declare enum ErrorCode {
|
|
|
2
2
|
NOT_CONFIGURED = "NOT_CONFIGURED",
|
|
3
3
|
INVALID_CONFIG = "INVALID_CONFIG",
|
|
4
4
|
MISSING_DEPENDENCY = "MISSING_DEPENDENCY",
|
|
5
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
6
|
+
SERVER_ERROR = "SERVER_ERROR",
|
|
5
7
|
DOWNLOAD_FAILED = "DOWNLOAD_FAILED",
|
|
6
8
|
DOWNLOAD_TIMEOUT = "DOWNLOAD_TIMEOUT",
|
|
7
9
|
INVALID_URL = "INVALID_URL",
|
|
@@ -11,12 +13,14 @@ export declare enum ErrorCode {
|
|
|
11
13
|
SIGNATURE_INVALID = "SIGNATURE_INVALID",
|
|
12
14
|
VERSION_DOWNGRADE = "VERSION_DOWNGRADE",
|
|
13
15
|
INVALID_BUNDLE_FORMAT = "INVALID_BUNDLE_FORMAT",
|
|
16
|
+
VALIDATION_ERROR = "VALIDATION_ERROR",
|
|
14
17
|
STORAGE_FULL = "STORAGE_FULL",
|
|
15
18
|
FILE_NOT_FOUND = "FILE_NOT_FOUND",
|
|
16
19
|
PERMISSION_DENIED = "PERMISSION_DENIED",
|
|
17
20
|
UPDATE_FAILED = "UPDATE_FAILED",
|
|
18
21
|
ROLLBACK_FAILED = "ROLLBACK_FAILED",
|
|
19
22
|
BUNDLE_NOT_READY = "BUNDLE_NOT_READY",
|
|
23
|
+
UPDATE_NOT_AVAILABLE = "UPDATE_NOT_AVAILABLE",
|
|
20
24
|
PLATFORM_NOT_SUPPORTED = "PLATFORM_NOT_SUPPORTED",
|
|
21
25
|
NATIVE_ERROR = "NATIVE_ERROR"
|
|
22
26
|
}
|
package/dist/esm/core/errors.js
CHANGED
|
@@ -4,6 +4,9 @@ export var ErrorCode;
|
|
|
4
4
|
ErrorCode["NOT_CONFIGURED"] = "NOT_CONFIGURED";
|
|
5
5
|
ErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
|
|
6
6
|
ErrorCode["MISSING_DEPENDENCY"] = "MISSING_DEPENDENCY";
|
|
7
|
+
// Network errors
|
|
8
|
+
ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
9
|
+
ErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
|
|
7
10
|
// Download errors
|
|
8
11
|
ErrorCode["DOWNLOAD_FAILED"] = "DOWNLOAD_FAILED";
|
|
9
12
|
ErrorCode["DOWNLOAD_TIMEOUT"] = "DOWNLOAD_TIMEOUT";
|
|
@@ -15,6 +18,7 @@ export var ErrorCode;
|
|
|
15
18
|
ErrorCode["SIGNATURE_INVALID"] = "SIGNATURE_INVALID";
|
|
16
19
|
ErrorCode["VERSION_DOWNGRADE"] = "VERSION_DOWNGRADE";
|
|
17
20
|
ErrorCode["INVALID_BUNDLE_FORMAT"] = "INVALID_BUNDLE_FORMAT";
|
|
21
|
+
ErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
18
22
|
// Storage errors
|
|
19
23
|
ErrorCode["STORAGE_FULL"] = "STORAGE_FULL";
|
|
20
24
|
ErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
|
|
@@ -23,6 +27,7 @@ export var ErrorCode;
|
|
|
23
27
|
ErrorCode["UPDATE_FAILED"] = "UPDATE_FAILED";
|
|
24
28
|
ErrorCode["ROLLBACK_FAILED"] = "ROLLBACK_FAILED";
|
|
25
29
|
ErrorCode["BUNDLE_NOT_READY"] = "BUNDLE_NOT_READY";
|
|
30
|
+
ErrorCode["UPDATE_NOT_AVAILABLE"] = "UPDATE_NOT_AVAILABLE";
|
|
26
31
|
// Platform errors
|
|
27
32
|
ErrorCode["PLATFORM_NOT_SUPPORTED"] = "PLATFORM_NOT_SUPPORTED";
|
|
28
33
|
ErrorCode["NATIVE_ERROR"] = "NATIVE_ERROR";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { BundleManager } from '../live-update/bundle-manager';
|
|
|
5
5
|
import { DownloadManager } from '../live-update/download-manager';
|
|
6
6
|
import { VersionManager } from '../live-update/version-manager';
|
|
7
7
|
import { AppUpdateManager } from '../app-update/app-update-manager';
|
|
8
|
+
import { BackgroundScheduler } from '../background-update/background-scheduler';
|
|
8
9
|
import { EventEmitter } from './event-emitter';
|
|
9
10
|
import { PluginInitConfig } from '../definitions';
|
|
10
11
|
/**
|
|
@@ -20,6 +21,7 @@ export declare class PluginManager {
|
|
|
20
21
|
private downloadManager;
|
|
21
22
|
private versionManager;
|
|
22
23
|
private appUpdateManager;
|
|
24
|
+
private backgroundScheduler;
|
|
23
25
|
private initialized;
|
|
24
26
|
private constructor();
|
|
25
27
|
static getInstance(): PluginManager;
|
|
@@ -67,6 +69,10 @@ export declare class PluginManager {
|
|
|
67
69
|
* Get event emitter
|
|
68
70
|
*/
|
|
69
71
|
getEventEmitter(): EventEmitter;
|
|
72
|
+
/**
|
|
73
|
+
* Get background scheduler
|
|
74
|
+
*/
|
|
75
|
+
getBackgroundScheduler(): BackgroundScheduler;
|
|
70
76
|
/**
|
|
71
77
|
* Reset plugin state
|
|
72
78
|
*/
|
|
@@ -7,6 +7,7 @@ import { BundleManager } from '../live-update/bundle-manager';
|
|
|
7
7
|
import { DownloadManager } from '../live-update/download-manager';
|
|
8
8
|
import { VersionManager } from '../live-update/version-manager';
|
|
9
9
|
import { AppUpdateManager } from '../app-update/app-update-manager';
|
|
10
|
+
import { BackgroundScheduler } from '../background-update/background-scheduler';
|
|
10
11
|
import { EventEmitter } from './event-emitter';
|
|
11
12
|
import { NativeUpdateError, ErrorCode } from './errors';
|
|
12
13
|
/**
|
|
@@ -18,6 +19,7 @@ export class PluginManager {
|
|
|
18
19
|
this.downloadManager = null;
|
|
19
20
|
this.versionManager = null;
|
|
20
21
|
this.appUpdateManager = null;
|
|
22
|
+
this.backgroundScheduler = null;
|
|
21
23
|
this.initialized = false;
|
|
22
24
|
this.configManager = ConfigManager.getInstance();
|
|
23
25
|
this.logger = Logger.getInstance();
|
|
@@ -70,6 +72,13 @@ export class PluginManager {
|
|
|
70
72
|
});
|
|
71
73
|
// Wire up app update manager events to central event emitter
|
|
72
74
|
this.setupAppUpdateEventBridge();
|
|
75
|
+
// Initialize background scheduler with dependencies
|
|
76
|
+
this.backgroundScheduler = new BackgroundScheduler();
|
|
77
|
+
this.backgroundScheduler.setDependencies({
|
|
78
|
+
appUpdateManager: this.appUpdateManager,
|
|
79
|
+
versionManager: this.versionManager,
|
|
80
|
+
bundleManager: this.bundleManager,
|
|
81
|
+
});
|
|
73
82
|
this.initialized = true;
|
|
74
83
|
this.logger.info('Plugin initialized successfully');
|
|
75
84
|
}
|
|
@@ -144,6 +153,13 @@ export class PluginManager {
|
|
|
144
153
|
getEventEmitter() {
|
|
145
154
|
return this.eventEmitter;
|
|
146
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Get background scheduler
|
|
158
|
+
*/
|
|
159
|
+
getBackgroundScheduler() {
|
|
160
|
+
this.ensureInitialized();
|
|
161
|
+
return this.backgroundScheduler;
|
|
162
|
+
}
|
|
147
163
|
/**
|
|
148
164
|
* Reset plugin state
|
|
149
165
|
*/
|
|
@@ -164,6 +180,7 @@ export class PluginManager {
|
|
|
164
180
|
this.downloadManager = null;
|
|
165
181
|
this.versionManager = null;
|
|
166
182
|
this.appUpdateManager = null;
|
|
183
|
+
this.backgroundScheduler = null;
|
|
167
184
|
this.initialized = false;
|
|
168
185
|
// Clear all event listeners
|
|
169
186
|
this.eventEmitter.removeAllListeners();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../../src/core/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGxD;;GAEG;AACH,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../../src/core/plugin-manager.ts"],"names":[],"mappings":"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"}
|