native-update 1.0.0

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 (184) hide show
  1. package/CapacitorNativeUpdate.podspec +18 -0
  2. package/LICENSE +21 -0
  3. package/Readme.md +451 -0
  4. package/android/build.gradle +92 -0
  5. package/android/gradle/wrapper/gradle-wrapper.properties +8 -0
  6. package/android/gradle.properties +17 -0
  7. package/android/proguard-rules.pro +29 -0
  8. package/android/settings.gradle +2 -0
  9. package/android/src/main/AndroidManifest.xml +34 -0
  10. package/android/src/main/java/com/aoneahsan/nativeupdate/AppReviewPlugin.kt +153 -0
  11. package/android/src/main/java/com/aoneahsan/nativeupdate/AppUpdatePlugin.kt +275 -0
  12. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundNotificationManager.kt +390 -0
  13. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdateManager.kt +46 -0
  14. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdatePlugin.kt +333 -0
  15. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdateWorker.kt +251 -0
  16. package/android/src/main/java/com/aoneahsan/nativeupdate/CapacitorNativeUpdatePlugin.kt +265 -0
  17. package/android/src/main/java/com/aoneahsan/nativeupdate/LiveUpdatePlugin.kt +526 -0
  18. package/android/src/main/java/com/aoneahsan/nativeupdate/NotificationActionReceiver.kt +99 -0
  19. package/android/src/main/java/com/aoneahsan/nativeupdate/SecurityManager.kt +249 -0
  20. package/dist/esm/__tests__/bundle-manager.test.d.ts +1 -0
  21. package/dist/esm/__tests__/bundle-manager.test.js +123 -0
  22. package/dist/esm/__tests__/bundle-manager.test.js.map +1 -0
  23. package/dist/esm/__tests__/config.test.d.ts +1 -0
  24. package/dist/esm/__tests__/config.test.js +69 -0
  25. package/dist/esm/__tests__/config.test.js.map +1 -0
  26. package/dist/esm/__tests__/integration.test.d.ts +1 -0
  27. package/dist/esm/__tests__/integration.test.js +78 -0
  28. package/dist/esm/__tests__/integration.test.js.map +1 -0
  29. package/dist/esm/__tests__/security.test.d.ts +1 -0
  30. package/dist/esm/__tests__/security.test.js +54 -0
  31. package/dist/esm/__tests__/security.test.js.map +1 -0
  32. package/dist/esm/__tests__/version-manager.test.d.ts +1 -0
  33. package/dist/esm/__tests__/version-manager.test.js +45 -0
  34. package/dist/esm/__tests__/version-manager.test.js.map +1 -0
  35. package/dist/esm/app-review/app-review-manager.d.ts +24 -0
  36. package/dist/esm/app-review/app-review-manager.js +195 -0
  37. package/dist/esm/app-review/app-review-manager.js.map +1 -0
  38. package/dist/esm/app-review/index.d.ts +5 -0
  39. package/dist/esm/app-review/index.js +6 -0
  40. package/dist/esm/app-review/index.js.map +1 -0
  41. package/dist/esm/app-review/platform-review-handler.d.ts +20 -0
  42. package/dist/esm/app-review/platform-review-handler.js +138 -0
  43. package/dist/esm/app-review/platform-review-handler.js.map +1 -0
  44. package/dist/esm/app-review/review-conditions-checker.d.ts +22 -0
  45. package/dist/esm/app-review/review-conditions-checker.js +155 -0
  46. package/dist/esm/app-review/review-conditions-checker.js.map +1 -0
  47. package/dist/esm/app-review/review-rate-limiter.d.ts +23 -0
  48. package/dist/esm/app-review/review-rate-limiter.js +164 -0
  49. package/dist/esm/app-review/review-rate-limiter.js.map +1 -0
  50. package/dist/esm/app-review/types.d.ts +41 -0
  51. package/dist/esm/app-review/types.js +2 -0
  52. package/dist/esm/app-review/types.js.map +1 -0
  53. package/dist/esm/app-update/app-update-checker.d.ts +13 -0
  54. package/dist/esm/app-update/app-update-checker.js +104 -0
  55. package/dist/esm/app-update/app-update-checker.js.map +1 -0
  56. package/dist/esm/app-update/app-update-installer.d.ts +19 -0
  57. package/dist/esm/app-update/app-update-installer.js +123 -0
  58. package/dist/esm/app-update/app-update-installer.js.map +1 -0
  59. package/dist/esm/app-update/app-update-manager.d.ts +28 -0
  60. package/dist/esm/app-update/app-update-manager.js +199 -0
  61. package/dist/esm/app-update/app-update-manager.js.map +1 -0
  62. package/dist/esm/app-update/app-update-notifier.d.ts +14 -0
  63. package/dist/esm/app-update/app-update-notifier.js +100 -0
  64. package/dist/esm/app-update/app-update-notifier.js.map +1 -0
  65. package/dist/esm/app-update/index.d.ts +6 -0
  66. package/dist/esm/app-update/index.js +7 -0
  67. package/dist/esm/app-update/index.js.map +1 -0
  68. package/dist/esm/app-update/platform-app-update.d.ts +19 -0
  69. package/dist/esm/app-update/platform-app-update.js +129 -0
  70. package/dist/esm/app-update/platform-app-update.js.map +1 -0
  71. package/dist/esm/app-update/types.d.ts +58 -0
  72. package/dist/esm/app-update/types.js +12 -0
  73. package/dist/esm/app-update/types.js.map +1 -0
  74. package/dist/esm/background-update/background-scheduler.d.ts +17 -0
  75. package/dist/esm/background-update/background-scheduler.js +195 -0
  76. package/dist/esm/background-update/background-scheduler.js.map +1 -0
  77. package/dist/esm/background-update/index.d.ts +3 -0
  78. package/dist/esm/background-update/index.js +3 -0
  79. package/dist/esm/background-update/index.js.map +1 -0
  80. package/dist/esm/background-update/notification-manager.d.ts +29 -0
  81. package/dist/esm/background-update/notification-manager.js +89 -0
  82. package/dist/esm/background-update/notification-manager.js.map +1 -0
  83. package/dist/esm/core/analytics.d.ts +70 -0
  84. package/dist/esm/core/analytics.js +137 -0
  85. package/dist/esm/core/analytics.js.map +1 -0
  86. package/dist/esm/core/cache-manager.d.ts +72 -0
  87. package/dist/esm/core/cache-manager.js +275 -0
  88. package/dist/esm/core/cache-manager.js.map +1 -0
  89. package/dist/esm/core/config.d.ts +48 -0
  90. package/dist/esm/core/config.js +83 -0
  91. package/dist/esm/core/config.js.map +1 -0
  92. package/dist/esm/core/errors.d.ts +51 -0
  93. package/dist/esm/core/errors.js +80 -0
  94. package/dist/esm/core/errors.js.map +1 -0
  95. package/dist/esm/core/logger.d.ts +21 -0
  96. package/dist/esm/core/logger.js +109 -0
  97. package/dist/esm/core/logger.js.map +1 -0
  98. package/dist/esm/core/performance.d.ts +53 -0
  99. package/dist/esm/core/performance.js +140 -0
  100. package/dist/esm/core/performance.js.map +1 -0
  101. package/dist/esm/core/plugin-manager.d.ts +66 -0
  102. package/dist/esm/core/plugin-manager.js +148 -0
  103. package/dist/esm/core/plugin-manager.js.map +1 -0
  104. package/dist/esm/core/security.d.ts +93 -0
  105. package/dist/esm/core/security.js +315 -0
  106. package/dist/esm/core/security.js.map +1 -0
  107. package/dist/esm/definitions.d.ts +639 -0
  108. package/dist/esm/definitions.js +103 -0
  109. package/dist/esm/definitions.js.map +1 -0
  110. package/dist/esm/index.d.ts +12 -0
  111. package/dist/esm/index.js +16 -0
  112. package/dist/esm/index.js.map +1 -0
  113. package/dist/esm/live-update/bundle-manager.d.ts +94 -0
  114. package/dist/esm/live-update/bundle-manager.js +310 -0
  115. package/dist/esm/live-update/bundle-manager.js.map +1 -0
  116. package/dist/esm/live-update/certificate-pinning.d.ts +38 -0
  117. package/dist/esm/live-update/certificate-pinning.js +78 -0
  118. package/dist/esm/live-update/certificate-pinning.js.map +1 -0
  119. package/dist/esm/live-update/download-manager.d.ts +67 -0
  120. package/dist/esm/live-update/download-manager.js +319 -0
  121. package/dist/esm/live-update/download-manager.js.map +1 -0
  122. package/dist/esm/live-update/update-manager.d.ts +52 -0
  123. package/dist/esm/live-update/update-manager.js +294 -0
  124. package/dist/esm/live-update/update-manager.js.map +1 -0
  125. package/dist/esm/live-update/version-manager.d.ts +84 -0
  126. package/dist/esm/live-update/version-manager.js +335 -0
  127. package/dist/esm/live-update/version-manager.js.map +1 -0
  128. package/dist/esm/plugin.d.ts +6 -0
  129. package/dist/esm/plugin.js +283 -0
  130. package/dist/esm/plugin.js.map +1 -0
  131. package/dist/esm/security/crypto.d.ts +25 -0
  132. package/dist/esm/security/crypto.js +70 -0
  133. package/dist/esm/security/crypto.js.map +1 -0
  134. package/dist/esm/security/validator.d.ts +60 -0
  135. package/dist/esm/security/validator.js +143 -0
  136. package/dist/esm/security/validator.js.map +1 -0
  137. package/dist/esm/web.d.ts +74 -0
  138. package/dist/esm/web.js +595 -0
  139. package/dist/esm/web.js.map +1 -0
  140. package/dist/plugin.cjs.js +2 -0
  141. package/dist/plugin.cjs.js.map +1 -0
  142. package/dist/plugin.esm.js +2 -0
  143. package/dist/plugin.esm.js.map +1 -0
  144. package/dist/plugin.js +3 -0
  145. package/dist/plugin.js.map +1 -0
  146. package/docs/APP_REVIEW_GUIDE.md +768 -0
  147. package/docs/BUNDLE_SIGNING.md +264 -0
  148. package/docs/LIVE_UPDATES_GUIDE.md +650 -0
  149. package/docs/MIGRATION.md +192 -0
  150. package/docs/NATIVE_UPDATES_GUIDE.md +694 -0
  151. package/docs/QUICK_START.md +606 -0
  152. package/docs/README.md +111 -0
  153. package/docs/REMAINING_FEATURES.md +139 -0
  154. package/docs/api/app-review-api.md +259 -0
  155. package/docs/api/app-update-api.md +238 -0
  156. package/docs/api/events-api.md +451 -0
  157. package/docs/api/live-update-api.md +265 -0
  158. package/docs/background-updates.md +392 -0
  159. package/docs/examples/advanced-scenarios.md +410 -0
  160. package/docs/examples/basic-usage.md +185 -0
  161. package/docs/features/app-reviews.md +975 -0
  162. package/docs/features/app-updates.md +785 -0
  163. package/docs/features/live-updates.md +633 -0
  164. package/docs/getting-started/configuration.md +468 -0
  165. package/docs/getting-started/installation.md +209 -0
  166. package/docs/getting-started/quick-start.md +379 -0
  167. package/docs/guides/deployment-guide.md +333 -0
  168. package/docs/guides/migration-from-codepush.md +142 -0
  169. package/docs/guides/security-best-practices.md +1057 -0
  170. package/docs/guides/testing-guide.md +373 -0
  171. package/docs/production-readiness.md +478 -0
  172. package/docs/security/certificate-pinning.md +122 -0
  173. package/docs/server-requirements.md +147 -0
  174. package/ios/Plugin/AppReview/AppReviewPlugin.swift +158 -0
  175. package/ios/Plugin/AppUpdate/AppUpdatePlugin.swift +234 -0
  176. package/ios/Plugin/BackgroundUpdate/BackgroundNotificationManager.swift +329 -0
  177. package/ios/Plugin/BackgroundUpdate/BackgroundUpdatePlugin.swift +396 -0
  178. package/ios/Plugin/CapacitorNativeUpdatePlugin.m +45 -0
  179. package/ios/Plugin/CapacitorNativeUpdatePlugin.swift +190 -0
  180. package/ios/Plugin/Info.plist +43 -0
  181. package/ios/Plugin/LiveUpdate/LiveUpdatePlugin.swift +689 -0
  182. package/ios/Plugin/LiveUpdate/WebViewConfiguration.swift +45 -0
  183. package/ios/Plugin/Security/SecurityManager.swift +289 -0
  184. package/package.json +90 -0
@@ -0,0 +1,275 @@
1
+ import { ConfigManager } from './config';
2
+ import { Logger } from './logger';
3
+ import { Directory, Encoding } from '@capacitor/filesystem';
4
+ /**
5
+ * Manages caching with expiration for various data types
6
+ */
7
+ export class CacheManager {
8
+ constructor() {
9
+ this.filesystem = null;
10
+ this.memoryCache = new Map();
11
+ this.CACHE_DIR = 'cache';
12
+ this.logger = Logger.getInstance();
13
+ this.configManager = ConfigManager.getInstance();
14
+ }
15
+ /**
16
+ * Initialize cache manager
17
+ */
18
+ async initialize() {
19
+ this.filesystem = this.configManager.get('filesystem');
20
+ if (!this.filesystem) {
21
+ throw new Error('Filesystem not configured');
22
+ }
23
+ // Create cache directory if it doesn't exist
24
+ try {
25
+ await this.filesystem.mkdir({
26
+ path: this.CACHE_DIR,
27
+ directory: Directory.Data,
28
+ recursive: true,
29
+ });
30
+ }
31
+ catch (error) {
32
+ this.logger.debug('Cache directory may already exist', error);
33
+ }
34
+ // Clean expired cache on initialization
35
+ await this.cleanExpiredCache();
36
+ }
37
+ /**
38
+ * Set cache entry with expiration
39
+ */
40
+ async set(key, data, ttlMs) {
41
+ const expiry = Date.now() + (ttlMs || this.configManager.get('cacheExpiration'));
42
+ const entry = {
43
+ data,
44
+ timestamp: Date.now(),
45
+ expiry,
46
+ };
47
+ // Update memory cache
48
+ this.memoryCache.set(key, entry);
49
+ // Persist to filesystem for larger data
50
+ if (this.shouldPersist(data)) {
51
+ await this.persistToFile(key, entry);
52
+ }
53
+ this.logger.debug('Cache entry set', { key, expiry: new Date(expiry) });
54
+ }
55
+ /**
56
+ * Get cache entry
57
+ */
58
+ async get(key) {
59
+ // Check memory cache first
60
+ const memEntry = this.memoryCache.get(key);
61
+ if (memEntry) {
62
+ if (Date.now() < memEntry.expiry) {
63
+ return memEntry.data;
64
+ }
65
+ else {
66
+ // Expired - remove from memory
67
+ this.memoryCache.delete(key);
68
+ }
69
+ }
70
+ // Check filesystem cache
71
+ const fileEntry = await this.loadFromFile(key);
72
+ if (fileEntry) {
73
+ if (Date.now() < fileEntry.expiry) {
74
+ // Update memory cache
75
+ this.memoryCache.set(key, fileEntry);
76
+ return fileEntry.data;
77
+ }
78
+ else {
79
+ // Expired - remove file
80
+ await this.removeFile(key);
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ /**
86
+ * Check if cache entry exists and is valid
87
+ */
88
+ async has(key) {
89
+ const value = await this.get(key);
90
+ return value !== null;
91
+ }
92
+ /**
93
+ * Remove cache entry
94
+ */
95
+ async remove(key) {
96
+ this.memoryCache.delete(key);
97
+ await this.removeFile(key);
98
+ this.logger.debug('Cache entry removed', { key });
99
+ }
100
+ /**
101
+ * Clear all cache
102
+ */
103
+ async clear() {
104
+ this.memoryCache.clear();
105
+ // Remove cache directory
106
+ try {
107
+ await this.filesystem.rmdir({
108
+ path: this.CACHE_DIR,
109
+ directory: Directory.Data,
110
+ recursive: true,
111
+ });
112
+ // Recreate empty cache directory
113
+ await this.filesystem.mkdir({
114
+ path: this.CACHE_DIR,
115
+ directory: Directory.Data,
116
+ recursive: true,
117
+ });
118
+ }
119
+ catch (error) {
120
+ this.logger.warn('Failed to clear cache directory', error);
121
+ }
122
+ this.logger.info('Cache cleared');
123
+ }
124
+ /**
125
+ * Clean expired cache entries
126
+ */
127
+ async cleanExpiredCache() {
128
+ const now = Date.now();
129
+ let cleanedCount = 0;
130
+ // Clean memory cache
131
+ for (const [key, entry] of this.memoryCache) {
132
+ if (now >= entry.expiry) {
133
+ this.memoryCache.delete(key);
134
+ cleanedCount++;
135
+ }
136
+ }
137
+ // Clean filesystem cache
138
+ try {
139
+ const files = await this.filesystem.readdir({
140
+ path: this.CACHE_DIR,
141
+ directory: Directory.Data,
142
+ });
143
+ for (const file of files.files) {
144
+ const key = file.name.replace('.json', '');
145
+ const entry = await this.loadFromFile(key);
146
+ if (!entry || now >= entry.expiry) {
147
+ await this.removeFile(key);
148
+ cleanedCount++;
149
+ }
150
+ }
151
+ }
152
+ catch (error) {
153
+ this.logger.debug('Failed to clean filesystem cache', error);
154
+ }
155
+ if (cleanedCount > 0) {
156
+ this.logger.info('Cleaned expired cache entries', {
157
+ count: cleanedCount,
158
+ });
159
+ }
160
+ }
161
+ /**
162
+ * Get cache statistics
163
+ */
164
+ async getStats() {
165
+ let fileEntries = 0;
166
+ let totalSize = 0;
167
+ try {
168
+ const files = await this.filesystem.readdir({
169
+ path: this.CACHE_DIR,
170
+ directory: Directory.Data,
171
+ });
172
+ fileEntries = files.files.length;
173
+ // Estimate size (this is approximate)
174
+ for (const file of files.files) {
175
+ const stat = await this.filesystem.stat({
176
+ path: `${this.CACHE_DIR}/${file.name}`,
177
+ directory: Directory.Data,
178
+ });
179
+ totalSize += stat.size || 0;
180
+ }
181
+ }
182
+ catch (error) {
183
+ this.logger.debug('Failed to get cache stats', error);
184
+ }
185
+ return {
186
+ memoryEntries: this.memoryCache.size,
187
+ fileEntries,
188
+ totalSize,
189
+ };
190
+ }
191
+ /**
192
+ * Cache bundle metadata
193
+ */
194
+ async cacheBundleMetadata(bundle) {
195
+ const key = `bundle_meta_${bundle.bundleId}`;
196
+ await this.set(key, bundle, 24 * 60 * 60 * 1000); // 24 hours
197
+ }
198
+ /**
199
+ * Get cached bundle metadata
200
+ */
201
+ async getCachedBundleMetadata(bundleId) {
202
+ const key = `bundle_meta_${bundleId}`;
203
+ return this.get(key);
204
+ }
205
+ /**
206
+ * Check if data should be persisted to filesystem
207
+ */
208
+ shouldPersist(data) {
209
+ // Persist objects and large strings
210
+ if (typeof data === 'object')
211
+ return true;
212
+ if (typeof data === 'string' && data.length > 1024)
213
+ return true;
214
+ return false;
215
+ }
216
+ /**
217
+ * Persist cache entry to file
218
+ */
219
+ async persistToFile(key, entry) {
220
+ if (!this.filesystem)
221
+ return;
222
+ try {
223
+ const path = `${this.CACHE_DIR}/${key}.json`;
224
+ const data = JSON.stringify(entry);
225
+ await this.filesystem.writeFile({
226
+ path,
227
+ data,
228
+ directory: Directory.Data,
229
+ encoding: Encoding.UTF8,
230
+ });
231
+ }
232
+ catch (error) {
233
+ this.logger.warn('Failed to persist cache to file', { key, error });
234
+ }
235
+ }
236
+ /**
237
+ * Load cache entry from file
238
+ */
239
+ async loadFromFile(key) {
240
+ if (!this.filesystem)
241
+ return null;
242
+ try {
243
+ const path = `${this.CACHE_DIR}/${key}.json`;
244
+ const result = await this.filesystem.readFile({
245
+ path,
246
+ directory: Directory.Data,
247
+ encoding: Encoding.UTF8,
248
+ });
249
+ return JSON.parse(result.data);
250
+ }
251
+ catch (_a) {
252
+ // File doesn't exist or is corrupted
253
+ return null;
254
+ }
255
+ }
256
+ /**
257
+ * Remove cache file
258
+ */
259
+ async removeFile(key) {
260
+ if (!this.filesystem)
261
+ return;
262
+ try {
263
+ const path = `${this.CACHE_DIR}/${key}.json`;
264
+ await this.filesystem.deleteFile({
265
+ path,
266
+ directory: Directory.Data,
267
+ });
268
+ }
269
+ catch (error) {
270
+ // File may not exist
271
+ this.logger.debug('Failed to remove cache file', { key, error });
272
+ }
273
+ }
274
+ }
275
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../../src/core/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAS5D;;GAEG;AACH,MAAM,OAAO,YAAY;IAOvB;QAJQ,eAAU,GAA6B,IAAI,CAAC;QAC5C,gBAAW,GAAqC,IAAI,GAAG,EAAE,CAAC;QACjD,cAAS,GAAG,OAAO,CAAC;QAGnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,6CAA6C;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,wCAAwC;QACxC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,IAAO,EAAE,KAAc;QAC/C,MAAM,MAAM,GACV,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAkB;YAC3B,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM;SACP,CAAC;QAEF,sBAAsB;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjC,wCAAwC;QACxC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,QAAQ,CAAC,IAAS,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAI,GAAG,CAAC,CAAC;QAClD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAClC,sBAAsB;gBACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACrC,OAAO,SAAS,CAAC,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEzB,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC;gBAC3B,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,iCAAiC;YACjC,MAAM,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC;gBAC3B,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,qBAAqB;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAW,CAAC,OAAO,CAAC;gBAC3C,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,SAAS,EAAE,SAAS,CAAC,IAAI;aAC1B,CAAC,CAAC;YAEH,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAE3C,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC3B,YAAY,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAChD,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QAKZ,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAW,CAAC,OAAO,CAAC;gBAC3C,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,SAAS,EAAE,SAAS,CAAC,IAAI;aAC1B,CAAC,CAAC;YACH,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAEjC,sCAAsC;YACtC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAW,CAAC,IAAI,CAAC;oBACvC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;oBACtC,SAAS,EAAE,SAAS,CAAC,IAAI;iBAC1B,CAAC,CAAC;gBACH,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACpC,WAAW;YACX,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,MAAkB;QAC1C,MAAM,GAAG,GAAG,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,QAAgB;QAC5C,MAAM,GAAG,GAAG,eAAe,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAa,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAa;QACjC,oCAAoC;QACpC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,GAAW,EACX,KAAoB;QAEpB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,OAAO,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEnC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC9B,IAAI;gBACJ,IAAI;gBACJ,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,QAAQ,EAAE,QAAQ,CAAC,IAAI;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAI,GAAW;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,OAAO,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC5C,IAAI;gBACJ,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,QAAQ,EAAE,QAAQ,CAAC,IAAI;aACxB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAc,CAAkB,CAAC;QAC5D,CAAC;QAAC,WAAM,CAAC;YACP,qCAAqC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,GAAW;QAClC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,OAAO,CAAC;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC/B,IAAI;gBACJ,SAAS,EAAE,SAAS,CAAC,IAAI;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,48 @@
1
+ import type { Filesystem } from '@capacitor/filesystem';
2
+ import type { Preferences } from '@capacitor/preferences';
3
+ import type { UpdateStrategy, ChecksumAlgorithm, SecurityConfig } from '../definitions';
4
+ export interface PluginConfig {
5
+ filesystem?: typeof Filesystem;
6
+ preferences?: typeof Preferences;
7
+ baseUrl?: string;
8
+ allowedHosts?: string[];
9
+ maxBundleSize?: number;
10
+ downloadTimeout?: number;
11
+ retryAttempts?: number;
12
+ retryDelay?: number;
13
+ enableSignatureValidation?: boolean;
14
+ publicKey?: string;
15
+ cacheExpiration?: number;
16
+ enableLogging?: boolean;
17
+ serverUrl?: string;
18
+ channel?: string;
19
+ autoCheck?: boolean;
20
+ autoUpdate?: boolean;
21
+ updateStrategy?: UpdateStrategy;
22
+ requireSignature?: boolean;
23
+ checksumAlgorithm?: ChecksumAlgorithm;
24
+ checkInterval?: number;
25
+ security?: SecurityConfig;
26
+ promptAfterPositiveEvents?: boolean;
27
+ maxPromptsPerVersion?: number;
28
+ minimumDaysSinceLastPrompt?: number;
29
+ isPremiumUser?: boolean;
30
+ appStoreId?: string;
31
+ iosAppId?: string;
32
+ packageName?: string;
33
+ webReviewUrl?: string;
34
+ minimumVersion?: string;
35
+ }
36
+ export declare class ConfigManager {
37
+ private static instance;
38
+ private config;
39
+ private constructor();
40
+ static getInstance(): ConfigManager;
41
+ private getDefaultConfig;
42
+ configure(config: PluginConfig): void;
43
+ private validateConfig;
44
+ get<K extends keyof Required<PluginConfig>>(key: K): Required<PluginConfig>[K];
45
+ set<K extends keyof Required<PluginConfig>>(key: K, value: Required<PluginConfig>[K]): void;
46
+ getAll(): Required<PluginConfig>;
47
+ isConfigured(): boolean;
48
+ }
@@ -0,0 +1,83 @@
1
+ export class ConfigManager {
2
+ constructor() {
3
+ this.config = this.getDefaultConfig();
4
+ }
5
+ static getInstance() {
6
+ if (!ConfigManager.instance) {
7
+ ConfigManager.instance = new ConfigManager();
8
+ }
9
+ return ConfigManager.instance;
10
+ }
11
+ getDefaultConfig() {
12
+ return {
13
+ filesystem: null,
14
+ preferences: null,
15
+ baseUrl: '',
16
+ allowedHosts: [],
17
+ maxBundleSize: 100 * 1024 * 1024, // 100MB
18
+ downloadTimeout: 30000, // 30 seconds
19
+ retryAttempts: 3,
20
+ retryDelay: 1000, // 1 second
21
+ enableSignatureValidation: true,
22
+ publicKey: '',
23
+ cacheExpiration: 24 * 60 * 60 * 1000, // 24 hours
24
+ enableLogging: false,
25
+ serverUrl: '',
26
+ channel: 'production',
27
+ autoCheck: true,
28
+ autoUpdate: false,
29
+ updateStrategy: 'background',
30
+ requireSignature: true,
31
+ checksumAlgorithm: 'SHA-256',
32
+ checkInterval: 24 * 60 * 60 * 1000, // 24 hours
33
+ security: {
34
+ enforceHttps: true,
35
+ validateInputs: true,
36
+ secureStorage: true,
37
+ logSecurityEvents: false,
38
+ },
39
+ // App review config
40
+ promptAfterPositiveEvents: false,
41
+ maxPromptsPerVersion: 1,
42
+ minimumDaysSinceLastPrompt: 7,
43
+ isPremiumUser: false,
44
+ // Platform-specific config
45
+ appStoreId: '',
46
+ iosAppId: '',
47
+ packageName: '',
48
+ webReviewUrl: '',
49
+ minimumVersion: '1.0.0',
50
+ };
51
+ }
52
+ configure(config) {
53
+ this.config = Object.assign(Object.assign({}, this.config), config);
54
+ this.validateConfig();
55
+ }
56
+ validateConfig() {
57
+ if (this.config.maxBundleSize <= 0) {
58
+ throw new Error('maxBundleSize must be greater than 0');
59
+ }
60
+ if (this.config.downloadTimeout <= 0) {
61
+ throw new Error('downloadTimeout must be greater than 0');
62
+ }
63
+ if (this.config.retryAttempts < 0) {
64
+ throw new Error('retryAttempts must be non-negative');
65
+ }
66
+ if (this.config.retryDelay < 0) {
67
+ throw new Error('retryDelay must be non-negative');
68
+ }
69
+ }
70
+ get(key) {
71
+ return this.config[key];
72
+ }
73
+ set(key, value) {
74
+ this.config[key] = value;
75
+ }
76
+ getAll() {
77
+ return Object.assign({}, this.config);
78
+ }
79
+ isConfigured() {
80
+ return !!(this.config.filesystem && this.config.preferences);
81
+ }
82
+ }
83
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export declare enum ErrorCode {
2
+ NOT_CONFIGURED = "NOT_CONFIGURED",
3
+ INVALID_CONFIG = "INVALID_CONFIG",
4
+ MISSING_DEPENDENCY = "MISSING_DEPENDENCY",
5
+ DOWNLOAD_FAILED = "DOWNLOAD_FAILED",
6
+ DOWNLOAD_TIMEOUT = "DOWNLOAD_TIMEOUT",
7
+ INVALID_URL = "INVALID_URL",
8
+ UNAUTHORIZED_HOST = "UNAUTHORIZED_HOST",
9
+ BUNDLE_TOO_LARGE = "BUNDLE_TOO_LARGE",
10
+ CHECKSUM_MISMATCH = "CHECKSUM_MISMATCH",
11
+ SIGNATURE_INVALID = "SIGNATURE_INVALID",
12
+ VERSION_DOWNGRADE = "VERSION_DOWNGRADE",
13
+ INVALID_BUNDLE_FORMAT = "INVALID_BUNDLE_FORMAT",
14
+ STORAGE_FULL = "STORAGE_FULL",
15
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
16
+ PERMISSION_DENIED = "PERMISSION_DENIED",
17
+ UPDATE_FAILED = "UPDATE_FAILED",
18
+ ROLLBACK_FAILED = "ROLLBACK_FAILED",
19
+ BUNDLE_NOT_READY = "BUNDLE_NOT_READY",
20
+ PLATFORM_NOT_SUPPORTED = "PLATFORM_NOT_SUPPORTED",
21
+ NATIVE_ERROR = "NATIVE_ERROR"
22
+ }
23
+ export declare class CapacitorNativeUpdateError extends Error {
24
+ code: ErrorCode;
25
+ message: string;
26
+ details?: unknown | undefined;
27
+ originalError?: Error | undefined;
28
+ constructor(code: ErrorCode, message: string, details?: unknown | undefined, originalError?: Error | undefined);
29
+ toJSON(): {
30
+ name: string;
31
+ code: ErrorCode;
32
+ message: string;
33
+ details: unknown;
34
+ stack: string | undefined;
35
+ };
36
+ }
37
+ export declare class ConfigurationError extends CapacitorNativeUpdateError {
38
+ constructor(message: string, details?: unknown);
39
+ }
40
+ export declare class DownloadError extends CapacitorNativeUpdateError {
41
+ constructor(code: ErrorCode, message: string, details?: unknown, originalError?: Error);
42
+ }
43
+ export declare class ValidationError extends CapacitorNativeUpdateError {
44
+ constructor(code: ErrorCode, message: string, details?: unknown);
45
+ }
46
+ export declare class StorageError extends CapacitorNativeUpdateError {
47
+ constructor(code: ErrorCode, message: string, details?: unknown, originalError?: Error);
48
+ }
49
+ export declare class UpdateError extends CapacitorNativeUpdateError {
50
+ constructor(code: ErrorCode, message: string, details?: unknown, originalError?: Error);
51
+ }
@@ -0,0 +1,80 @@
1
+ export var ErrorCode;
2
+ (function (ErrorCode) {
3
+ // Configuration errors
4
+ ErrorCode["NOT_CONFIGURED"] = "NOT_CONFIGURED";
5
+ ErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
6
+ ErrorCode["MISSING_DEPENDENCY"] = "MISSING_DEPENDENCY";
7
+ // Download errors
8
+ ErrorCode["DOWNLOAD_FAILED"] = "DOWNLOAD_FAILED";
9
+ ErrorCode["DOWNLOAD_TIMEOUT"] = "DOWNLOAD_TIMEOUT";
10
+ ErrorCode["INVALID_URL"] = "INVALID_URL";
11
+ ErrorCode["UNAUTHORIZED_HOST"] = "UNAUTHORIZED_HOST";
12
+ ErrorCode["BUNDLE_TOO_LARGE"] = "BUNDLE_TOO_LARGE";
13
+ // Validation errors
14
+ ErrorCode["CHECKSUM_MISMATCH"] = "CHECKSUM_MISMATCH";
15
+ ErrorCode["SIGNATURE_INVALID"] = "SIGNATURE_INVALID";
16
+ ErrorCode["VERSION_DOWNGRADE"] = "VERSION_DOWNGRADE";
17
+ ErrorCode["INVALID_BUNDLE_FORMAT"] = "INVALID_BUNDLE_FORMAT";
18
+ // Storage errors
19
+ ErrorCode["STORAGE_FULL"] = "STORAGE_FULL";
20
+ ErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
21
+ ErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
22
+ // Update errors
23
+ ErrorCode["UPDATE_FAILED"] = "UPDATE_FAILED";
24
+ ErrorCode["ROLLBACK_FAILED"] = "ROLLBACK_FAILED";
25
+ ErrorCode["BUNDLE_NOT_READY"] = "BUNDLE_NOT_READY";
26
+ // Platform errors
27
+ ErrorCode["PLATFORM_NOT_SUPPORTED"] = "PLATFORM_NOT_SUPPORTED";
28
+ ErrorCode["NATIVE_ERROR"] = "NATIVE_ERROR";
29
+ })(ErrorCode || (ErrorCode = {}));
30
+ export class CapacitorNativeUpdateError extends Error {
31
+ constructor(code, message, details, originalError) {
32
+ super(message);
33
+ this.code = code;
34
+ this.message = message;
35
+ this.details = details;
36
+ this.originalError = originalError;
37
+ this.name = 'CapacitorNativeUpdateError';
38
+ Object.setPrototypeOf(this, CapacitorNativeUpdateError.prototype);
39
+ }
40
+ toJSON() {
41
+ return {
42
+ name: this.name,
43
+ code: this.code,
44
+ message: this.message,
45
+ details: this.details,
46
+ stack: this.stack,
47
+ };
48
+ }
49
+ }
50
+ export class ConfigurationError extends CapacitorNativeUpdateError {
51
+ constructor(message, details) {
52
+ super(ErrorCode.INVALID_CONFIG, message, details);
53
+ this.name = 'ConfigurationError';
54
+ }
55
+ }
56
+ export class DownloadError extends CapacitorNativeUpdateError {
57
+ constructor(code, message, details, originalError) {
58
+ super(code, message, details, originalError);
59
+ this.name = 'DownloadError';
60
+ }
61
+ }
62
+ export class ValidationError extends CapacitorNativeUpdateError {
63
+ constructor(code, message, details) {
64
+ super(code, message, details);
65
+ this.name = 'ValidationError';
66
+ }
67
+ }
68
+ export class StorageError extends CapacitorNativeUpdateError {
69
+ constructor(code, message, details, originalError) {
70
+ super(code, message, details, originalError);
71
+ this.name = 'StorageError';
72
+ }
73
+ }
74
+ export class UpdateError extends CapacitorNativeUpdateError {
75
+ constructor(code, message, details, originalError) {
76
+ super(code, message, details, originalError);
77
+ this.name = 'UpdateError';
78
+ }
79
+ }
80
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAgCX;AAhCD,WAAY,SAAS;IACnB,uBAAuB;IACvB,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,sDAAyC,CAAA;IAEzC,kBAAkB;IAClB,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IACrC,wCAA2B,CAAA;IAC3B,oDAAuC,CAAA;IACvC,kDAAqC,CAAA;IAErC,oBAAoB;IACpB,oDAAuC,CAAA;IACvC,oDAAuC,CAAA;IACvC,oDAAuC,CAAA;IACvC,4DAA+C,CAAA;IAE/C,iBAAiB;IACjB,0CAA6B,CAAA;IAC7B,8CAAiC,CAAA;IACjC,oDAAuC,CAAA;IAEvC,gBAAgB;IAChB,4CAA+B,CAAA;IAC/B,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IAErC,kBAAkB;IAClB,8DAAiD,CAAA;IACjD,0CAA6B,CAAA;AAC/B,CAAC,EAhCW,SAAS,KAAT,SAAS,QAgCpB;AAED,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YACS,IAAe,EACf,OAAe,EACf,OAAiB,EACjB,aAAqB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QALR,SAAI,GAAJ,IAAI,CAAW;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAU;QACjB,kBAAa,GAAb,aAAa,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,0BAA0B;IAChE,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,0BAA0B;IAC3D,YACE,IAAe,EACf,OAAe,EACf,OAAiB,EACjB,aAAqB;QAErB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,0BAA0B;IAC7D,YAAY,IAAe,EAAE,OAAe,EAAE,OAAiB;QAC7D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,0BAA0B;IAC1D,YACE,IAAe,EACf,OAAe,EACf,OAAiB,EACjB,aAAqB;QAErB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,0BAA0B;IACzD,YACE,IAAe,EACf,OAAe,EACf,OAAiB,EACjB,aAAqB;QAErB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ export declare enum LogLevel {
2
+ DEBUG = 0,
3
+ INFO = 1,
4
+ WARN = 2,
5
+ ERROR = 3
6
+ }
7
+ export declare class Logger {
8
+ private static instance;
9
+ private configManager;
10
+ private context;
11
+ constructor(context?: string);
12
+ static getInstance(): Logger;
13
+ private shouldLog;
14
+ private sanitize;
15
+ log(message: string, data?: unknown): void;
16
+ private logWithLevel;
17
+ debug(message: string, data?: unknown): void;
18
+ info(message: string, data?: unknown): void;
19
+ warn(message: string, data?: unknown): void;
20
+ error(message: string, error?: Error | unknown): void;
21
+ }