@capgo/capacitor-updater 8.40.1 → 8.40.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/history.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["/*\n * Maintains navigation history across Capgo-controlled reloads when keepUrlPathAfterReload is enabled.\n */\nconst KEEP_FLAG_KEY = '__capgo_keep_url_path_after_reload';\nconst HISTORY_STORAGE_KEY = '__capgo_history_stack__';\nconst MAX_STACK_ENTRIES = 100;\nconst isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof history !== 'undefined';\nif (isBrowser) {\n const win = window;\n if (!win.__capgoHistoryPatched) {\n win.__capgoHistoryPatched = true;\n const isFeatureConfigured = () => {\n try {\n if (win.__capgoKeepUrlPathAfterReload) {\n return true;\n }\n }\n catch (err) {\n // ignore access issues\n }\n try {\n return window.localStorage.getItem(KEEP_FLAG_KEY) === '1';\n }\n catch (err) {\n return false;\n }\n };\n const readStored = () => {\n try {\n const raw = window.sessionStorage.getItem(HISTORY_STORAGE_KEY);\n if (!raw) {\n return { stack: [], index: -1 };\n }\n const parsed = JSON.parse(raw);\n if (!parsed || !Array.isArray(parsed.stack) || typeof parsed.index !== 'number') {\n return { stack: [], index: -1 };\n }\n return parsed;\n }\n catch (err) {\n return { stack: [], index: -1 };\n }\n };\n const writeStored = (stack, index) => {\n try {\n window.sessionStorage.setItem(HISTORY_STORAGE_KEY, JSON.stringify({ stack, index }));\n }\n catch (err) {\n // Storage might be unavailable; fail silently.\n }\n };\n const clearStored = () => {\n try {\n window.sessionStorage.removeItem(HISTORY_STORAGE_KEY);\n }\n catch (err) {\n // ignore\n }\n };\n const normalize = (url) => {\n try {\n const base = url !== null && url !== void 0 ? url : window.location.href;\n const parsed = new URL(base instanceof URL ? base.toString() : base, window.location.href);\n return `${parsed.pathname}${parsed.search}${parsed.hash}`;\n }\n catch (err) {\n return null;\n }\n };\n const trimStack = (stack, index) => {\n if (stack.length <= MAX_STACK_ENTRIES) {\n return { stack, index };\n }\n const start = stack.length - MAX_STACK_ENTRIES;\n const trimmed = stack.slice(start);\n const adjustedIndex = Math.max(0, index - start);\n return { stack: trimmed, index: adjustedIndex };\n };\n const runWhenReady = (fn) => {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n fn();\n }\n else {\n window.addEventListener('DOMContentLoaded', fn, { once: true });\n }\n };\n let featureActive = false;\n let isRestoring = false;\n let restoreScheduled = false;\n const ensureCurrentTracked = () => {\n if (!featureActive) {\n return;\n }\n const stored = readStored();\n const current = normalize();\n if (!current) {\n return;\n }\n if (stored.stack.length === 0) {\n stored.stack.push(current);\n stored.index = 0;\n writeStored(stored.stack, stored.index);\n return;\n }\n if (stored.index < 0 || stored.index >= stored.stack.length) {\n stored.index = stored.stack.length - 1;\n }\n if (stored.stack[stored.index] !== current) {\n stored.stack[stored.index] = current;\n writeStored(stored.stack, stored.index);\n }\n };\n const record = (url, replace) => {\n if (!featureActive || isRestoring) {\n return;\n }\n const normalized = normalize(url);\n if (!normalized) {\n return;\n }\n let { stack, index } = readStored();\n if (stack.length === 0) {\n stack.push(normalized);\n index = stack.length - 1;\n }\n else if (replace) {\n if (index < 0 || index >= stack.length) {\n index = stack.length - 1;\n }\n stack[index] = normalized;\n }\n else {\n if (index >= stack.length - 1) {\n stack.push(normalized);\n index = stack.length - 1;\n }\n else {\n stack = stack.slice(0, index + 1);\n stack.push(normalized);\n index = stack.length - 1;\n }\n }\n ({ stack, index } = trimStack(stack, index));\n writeStored(stack, index);\n };\n const restoreHistory = () => {\n if (!featureActive || isRestoring) {\n return;\n }\n const stored = readStored();\n if (stored.stack.length === 0) {\n ensureCurrentTracked();\n return;\n }\n const targetIndex = stored.index >= 0 && stored.index < stored.stack.length ? stored.index : stored.stack.length - 1;\n const normalizedCurrent = normalize();\n if (stored.stack.length === 1 && normalizedCurrent === stored.stack[0]) {\n return;\n }\n const firstEntry = stored.stack[0];\n if (!firstEntry) {\n return;\n }\n isRestoring = true;\n try {\n history.replaceState(history.state, document.title, firstEntry);\n for (let i = 1; i < stored.stack.length; i += 1) {\n history.pushState(history.state, document.title, stored.stack[i]);\n }\n }\n catch (err) {\n isRestoring = false;\n return;\n }\n isRestoring = false;\n const currentIndex = stored.stack.length - 1;\n const offset = targetIndex - currentIndex;\n if (offset !== 0) {\n history.go(offset);\n }\n else {\n history.replaceState(history.state, document.title, stored.stack[targetIndex]);\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n };\n const scheduleRestore = () => {\n if (!featureActive || restoreScheduled) {\n return;\n }\n restoreScheduled = true;\n runWhenReady(() => {\n restoreScheduled = false;\n restoreHistory();\n });\n };\n let originalPushState = null;\n let originalReplaceState = null;\n const popstateHandler = () => {\n if (!featureActive || isRestoring) {\n return;\n }\n const normalized = normalize();\n if (!normalized) {\n return;\n }\n const stored = readStored();\n const idx = stored.stack.lastIndexOf(normalized);\n if (idx >= 0) {\n stored.index = idx;\n }\n else {\n stored.stack.push(normalized);\n stored.index = stored.stack.length - 1;\n }\n const trimmed = trimStack(stored.stack, stored.index);\n writeStored(trimmed.stack, trimmed.index);\n };\n const patchHistory = () => {\n if (originalPushState && originalReplaceState) {\n return;\n }\n originalPushState = history.pushState;\n originalReplaceState = history.replaceState;\n history.pushState = function pushStatePatched(state, title, url) {\n const result = originalPushState === null || originalPushState === void 0 ? void 0 : originalPushState.call(history, state, title, url);\n record(url, false);\n return result;\n };\n history.replaceState = function replaceStatePatched(state, title, url) {\n const result = originalReplaceState === null || originalReplaceState === void 0 ? void 0 : originalReplaceState.call(history, state, title, url);\n record(url, true);\n return result;\n };\n window.addEventListener('popstate', popstateHandler);\n };\n const unpatchHistory = () => {\n if (originalPushState) {\n history.pushState = originalPushState;\n originalPushState = null;\n }\n if (originalReplaceState) {\n history.replaceState = originalReplaceState;\n originalReplaceState = null;\n }\n window.removeEventListener('popstate', popstateHandler);\n };\n const setFeatureActive = (enabled) => {\n if (featureActive === enabled) {\n if (featureActive) {\n ensureCurrentTracked();\n scheduleRestore();\n }\n return;\n }\n featureActive = enabled;\n if (featureActive) {\n patchHistory();\n ensureCurrentTracked();\n scheduleRestore();\n }\n else {\n unpatchHistory();\n clearStored();\n }\n };\n window.addEventListener('CapacitorUpdaterKeepUrlPathAfterReload', (event) => {\n var _a;\n const evt = event;\n const enabled = (_a = evt === null || evt === void 0 ? void 0 : evt.detail) === null || _a === void 0 ? void 0 : _a.enabled;\n if (typeof enabled === 'boolean') {\n win.__capgoKeepUrlPathAfterReload = enabled;\n setFeatureActive(enabled);\n }\n else {\n win.__capgoKeepUrlPathAfterReload = true;\n setFeatureActive(true);\n }\n });\n setFeatureActive(isFeatureConfigured());\n }\n}\nexport {};\n//# sourceMappingURL=history.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/**\n * Update availability status.\n *\n * @since 8.0.0\n */\nexport var AppUpdateAvailability;\n(function (AppUpdateAvailability) {\n /**\n * Update availability is unknown.\n * This typically means the check hasn't completed or failed.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n /**\n * No update is available.\n * The installed version is the latest.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UPDATE_NOT_AVAILABLE\"] = 1] = \"UPDATE_NOT_AVAILABLE\";\n /**\n * An update is available for download.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UPDATE_AVAILABLE\"] = 2] = \"UPDATE_AVAILABLE\";\n /**\n * An update is currently being downloaded or installed.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UPDATE_IN_PROGRESS\"] = 3] = \"UPDATE_IN_PROGRESS\";\n})(AppUpdateAvailability || (AppUpdateAvailability = {}));\n/**\n * Installation status for flexible updates (Android only).\n *\n * @since 8.0.0\n */\nexport var FlexibleUpdateInstallStatus;\n(function (FlexibleUpdateInstallStatus) {\n /**\n * Unknown install status.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n /**\n * Download is pending and will start soon.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"PENDING\"] = 1] = \"PENDING\";\n /**\n * Download is in progress.\n * Check `bytesDownloaded` and `totalBytesToDownload` for progress.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"DOWNLOADING\"] = 2] = \"DOWNLOADING\";\n /**\n * The update is being installed.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"INSTALLING\"] = 3] = \"INSTALLING\";\n /**\n * The update has been installed.\n * The app needs to be restarted to use the new version.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"INSTALLED\"] = 4] = \"INSTALLED\";\n /**\n * The update failed to download or install.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"FAILED\"] = 5] = \"FAILED\";\n /**\n * The update was canceled by the user.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"CANCELED\"] = 6] = \"CANCELED\";\n /**\n * The update has been downloaded and is ready to install.\n * Call {@link CapacitorUpdaterPlugin.completeFlexibleUpdate} to install.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"DOWNLOADED\"] = 11] = \"DOWNLOADED\";\n})(FlexibleUpdateInstallStatus || (FlexibleUpdateInstallStatus = {}));\n/**\n * Result codes for app update operations.\n *\n * @since 8.0.0\n */\nexport var AppUpdateResultCode;\n(function (AppUpdateResultCode) {\n /**\n * The update completed successfully.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"OK\"] = 0] = \"OK\";\n /**\n * The user canceled the update.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"CANCELED\"] = 1] = \"CANCELED\";\n /**\n * The update failed.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"FAILED\"] = 2] = \"FAILED\";\n /**\n * No update is available.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"NOT_AVAILABLE\"] = 3] = \"NOT_AVAILABLE\";\n /**\n * The requested update type is not allowed.\n * For example, trying to perform an immediate update when only flexible is allowed.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"NOT_ALLOWED\"] = 4] = \"NOT_ALLOWED\";\n /**\n * Required information is missing.\n * This can happen if {@link CapacitorUpdaterPlugin.getAppUpdateInfo} wasn't called first.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"INFO_MISSING\"] = 5] = \"INFO_MISSING\";\n})(AppUpdateResultCode || (AppUpdateResultCode = {}));\n//# sourceMappingURL=definitions.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport 'capacitor-cli.d.ts';\nimport { registerPlugin } from '@capacitor/core';\nimport './history';\nconst CapacitorUpdater = registerPlugin('CapacitorUpdater', {\n web: () => import('./web').then((m) => new m.CapacitorUpdaterWeb()),\n});\nexport * from './definitions';\nexport { CapacitorUpdater };\n//# sourceMappingURL=index.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { WebPlugin } from '@capacitor/core';\nimport { AppUpdateAvailability } from './definitions';\nconst BUNDLE_BUILTIN = {\n status: 'success',\n version: '',\n downloaded: '1970-01-01T00:00:00.000Z',\n id: 'builtin',\n checksum: '',\n};\nexport class CapacitorUpdaterWeb extends WebPlugin {\n async setStatsUrl(options) {\n console.warn('Cannot setStatsUrl in web', options);\n return;\n }\n async setUpdateUrl(options) {\n console.warn('Cannot setUpdateUrl in web', options);\n return;\n }\n async setChannelUrl(options) {\n console.warn('Cannot setChannelUrl in web', options);\n return;\n }\n async download(options) {\n console.warn('Cannot download version in web', options);\n return BUNDLE_BUILTIN;\n }\n async next(options) {\n console.warn('Cannot set next version in web', options);\n return BUNDLE_BUILTIN;\n }\n async isAutoUpdateEnabled() {\n console.warn('Cannot get isAutoUpdateEnabled in web');\n return { enabled: false };\n }\n async set(options) {\n console.warn('Cannot set active bundle in web', options);\n return;\n }\n async getDeviceId() {\n console.warn('Cannot get ID in web');\n return { deviceId: 'default' };\n }\n async getBuiltinVersion() {\n console.warn('Cannot get version in web');\n return { version: 'default' };\n }\n async getPluginVersion() {\n console.warn('Cannot get plugin version in web');\n return { version: 'default' };\n }\n async delete(options) {\n console.warn('Cannot delete bundle in web', options);\n }\n async setBundleError(options) {\n console.warn('Cannot setBundleError in web', options);\n return BUNDLE_BUILTIN;\n }\n async list() {\n console.warn('Cannot list bundles in web');\n return { bundles: [] };\n }\n async reset(options) {\n console.warn('Cannot reset version in web', options);\n }\n async current() {\n console.warn('Cannot get current bundle in web');\n return { bundle: BUNDLE_BUILTIN, native: '0.0.0' };\n }\n async reload() {\n console.warn('Cannot reload current bundle in web');\n return;\n }\n async getLatest() {\n console.warn('Cannot getLatest current bundle in web');\n return {\n version: '0.0.0',\n message: 'Cannot getLatest current bundle in web',\n };\n }\n async setChannel(options) {\n console.warn('Cannot setChannel in web', options);\n return {\n status: 'error',\n error: 'Cannot setChannel in web',\n };\n }\n async unsetChannel(options) {\n console.warn('Cannot unsetChannel in web', options);\n return;\n }\n async setCustomId(options) {\n console.warn('Cannot setCustomId in web', options);\n return;\n }\n async getChannel() {\n console.warn('Cannot getChannel in web');\n return {\n status: 'error',\n error: 'Cannot getChannel in web',\n };\n }\n async listChannels() {\n console.warn('Cannot listChannels in web');\n throw {\n message: 'Cannot listChannels in web',\n error: 'platform_not_supported',\n };\n }\n async notifyAppReady() {\n return { bundle: BUNDLE_BUILTIN };\n }\n async setMultiDelay(options) {\n console.warn('Cannot setMultiDelay in web', options === null || options === void 0 ? void 0 : options.delayConditions);\n return;\n }\n async setDelay(option) {\n console.warn('Cannot setDelay in web', option);\n return;\n }\n async cancelDelay() {\n console.warn('Cannot cancelDelay in web');\n return;\n }\n async isAutoUpdateAvailable() {\n console.warn('Cannot isAutoUpdateAvailable in web');\n return { available: false };\n }\n async getCurrentBundle() {\n console.warn('Cannot get current bundle in web');\n return BUNDLE_BUILTIN;\n }\n async getNextBundle() {\n return Promise.resolve(null);\n }\n async getFailedUpdate() {\n console.warn('Cannot getFailedUpdate in web');\n return null;\n }\n async setShakeMenu(_options) {\n throw this.unimplemented('Shake menu not available on web platform');\n }\n async isShakeMenuEnabled() {\n return Promise.resolve({ enabled: false });\n }\n async getAppId() {\n console.warn('Cannot getAppId in web');\n return { appId: 'default' };\n }\n async setAppId(options) {\n console.warn('Cannot setAppId in web', options);\n return;\n }\n // ============================================================================\n // App Store / Play Store Update Methods (Web stubs)\n // ============================================================================\n async getAppUpdateInfo(_options) {\n console.warn('getAppUpdateInfo is not available on web platform');\n return {\n currentVersionName: '0.0.0',\n currentVersionCode: '0',\n updateAvailability: AppUpdateAvailability.UNKNOWN,\n };\n }\n async openAppStore(_options) {\n throw this.unimplemented('openAppStore is not available on web platform');\n }\n async performImmediateUpdate() {\n throw this.unimplemented('performImmediateUpdate is only available on Android');\n }\n async startFlexibleUpdate() {\n throw this.unimplemented('startFlexibleUpdate is only available on Android');\n }\n async completeFlexibleUpdate() {\n throw this.unimplemented('completeFlexibleUpdate is only available on Android');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["AppUpdateAvailability","FlexibleUpdateInstallStatus","AppUpdateResultCode","registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/history.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["/*\n * Maintains navigation history across Capgo-controlled reloads when keepUrlPathAfterReload is enabled.\n */\nconst KEEP_FLAG_KEY = '__capgo_keep_url_path_after_reload';\nconst HISTORY_STORAGE_KEY = '__capgo_history_stack__';\nconst MAX_STACK_ENTRIES = 100;\nconst isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof history !== 'undefined';\nif (isBrowser) {\n const win = window;\n if (!win.__capgoHistoryPatched) {\n win.__capgoHistoryPatched = true;\n const isFeatureConfigured = () => {\n try {\n if (win.__capgoKeepUrlPathAfterReload) {\n return true;\n }\n }\n catch (err) {\n // ignore access issues\n }\n try {\n return window.localStorage.getItem(KEEP_FLAG_KEY) === '1';\n }\n catch (err) {\n return false;\n }\n };\n const readStored = () => {\n try {\n const raw = window.sessionStorage.getItem(HISTORY_STORAGE_KEY);\n if (!raw) {\n return { stack: [], index: -1 };\n }\n const parsed = JSON.parse(raw);\n if (!parsed || !Array.isArray(parsed.stack) || typeof parsed.index !== 'number') {\n return { stack: [], index: -1 };\n }\n return parsed;\n }\n catch (err) {\n return { stack: [], index: -1 };\n }\n };\n const writeStored = (stack, index) => {\n try {\n window.sessionStorage.setItem(HISTORY_STORAGE_KEY, JSON.stringify({ stack, index }));\n }\n catch (err) {\n // Storage might be unavailable; fail silently.\n }\n };\n const clearStored = () => {\n try {\n window.sessionStorage.removeItem(HISTORY_STORAGE_KEY);\n }\n catch (err) {\n // ignore\n }\n };\n const normalize = (url) => {\n try {\n const base = url !== null && url !== void 0 ? url : window.location.href;\n const parsed = new URL(base instanceof URL ? base.toString() : base, window.location.href);\n return `${parsed.pathname}${parsed.search}${parsed.hash}`;\n }\n catch (err) {\n return null;\n }\n };\n const trimStack = (stack, index) => {\n if (stack.length <= MAX_STACK_ENTRIES) {\n return { stack, index };\n }\n const start = stack.length - MAX_STACK_ENTRIES;\n const trimmed = stack.slice(start);\n const adjustedIndex = Math.max(0, index - start);\n return { stack: trimmed, index: adjustedIndex };\n };\n const runWhenReady = (fn) => {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n fn();\n }\n else {\n window.addEventListener('DOMContentLoaded', fn, { once: true });\n }\n };\n let featureActive = false;\n let isRestoring = false;\n let restoreScheduled = false;\n const ensureCurrentTracked = () => {\n if (!featureActive) {\n return;\n }\n const stored = readStored();\n const current = normalize();\n if (!current) {\n return;\n }\n if (stored.stack.length === 0) {\n stored.stack.push(current);\n stored.index = 0;\n writeStored(stored.stack, stored.index);\n return;\n }\n if (stored.index < 0 || stored.index >= stored.stack.length) {\n stored.index = stored.stack.length - 1;\n }\n if (stored.stack[stored.index] !== current) {\n stored.stack[stored.index] = current;\n writeStored(stored.stack, stored.index);\n }\n };\n const record = (url, replace) => {\n if (!featureActive || isRestoring) {\n return;\n }\n const normalized = normalize(url);\n if (!normalized) {\n return;\n }\n let { stack, index } = readStored();\n if (stack.length === 0) {\n stack.push(normalized);\n index = stack.length - 1;\n }\n else if (replace) {\n if (index < 0 || index >= stack.length) {\n index = stack.length - 1;\n }\n stack[index] = normalized;\n }\n else {\n if (index >= stack.length - 1) {\n stack.push(normalized);\n index = stack.length - 1;\n }\n else {\n stack = stack.slice(0, index + 1);\n stack.push(normalized);\n index = stack.length - 1;\n }\n }\n ({ stack, index } = trimStack(stack, index));\n writeStored(stack, index);\n };\n const restoreHistory = () => {\n if (!featureActive || isRestoring) {\n return;\n }\n const stored = readStored();\n if (stored.stack.length === 0) {\n ensureCurrentTracked();\n return;\n }\n const targetIndex = stored.index >= 0 && stored.index < stored.stack.length ? stored.index : stored.stack.length - 1;\n const normalizedCurrent = normalize();\n if (stored.stack.length === 1 && normalizedCurrent === stored.stack[0]) {\n return;\n }\n const firstEntry = stored.stack[0];\n if (!firstEntry) {\n return;\n }\n isRestoring = true;\n try {\n history.replaceState(history.state, document.title, firstEntry);\n for (let i = 1; i < stored.stack.length; i += 1) {\n history.pushState(history.state, document.title, stored.stack[i]);\n }\n }\n catch (err) {\n isRestoring = false;\n return;\n }\n isRestoring = false;\n const currentIndex = stored.stack.length - 1;\n const offset = targetIndex - currentIndex;\n if (offset !== 0) {\n history.go(offset);\n }\n else {\n history.replaceState(history.state, document.title, stored.stack[targetIndex]);\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n };\n const scheduleRestore = () => {\n if (!featureActive || restoreScheduled) {\n return;\n }\n restoreScheduled = true;\n runWhenReady(() => {\n restoreScheduled = false;\n restoreHistory();\n });\n };\n let originalPushState = null;\n let originalReplaceState = null;\n const popstateHandler = () => {\n if (!featureActive || isRestoring) {\n return;\n }\n const normalized = normalize();\n if (!normalized) {\n return;\n }\n const stored = readStored();\n const idx = stored.stack.lastIndexOf(normalized);\n if (idx >= 0) {\n stored.index = idx;\n }\n else {\n stored.stack.push(normalized);\n stored.index = stored.stack.length - 1;\n }\n const trimmed = trimStack(stored.stack, stored.index);\n writeStored(trimmed.stack, trimmed.index);\n };\n const patchHistory = () => {\n if (originalPushState && originalReplaceState) {\n return;\n }\n originalPushState = history.pushState;\n originalReplaceState = history.replaceState;\n history.pushState = function pushStatePatched(state, title, url) {\n const result = originalPushState === null || originalPushState === void 0 ? void 0 : originalPushState.call(history, state, title, url);\n record(url, false);\n return result;\n };\n history.replaceState = function replaceStatePatched(state, title, url) {\n const result = originalReplaceState === null || originalReplaceState === void 0 ? void 0 : originalReplaceState.call(history, state, title, url);\n record(url, true);\n return result;\n };\n window.addEventListener('popstate', popstateHandler);\n };\n const unpatchHistory = () => {\n if (originalPushState) {\n history.pushState = originalPushState;\n originalPushState = null;\n }\n if (originalReplaceState) {\n history.replaceState = originalReplaceState;\n originalReplaceState = null;\n }\n window.removeEventListener('popstate', popstateHandler);\n };\n const setFeatureActive = (enabled) => {\n if (featureActive === enabled) {\n if (featureActive) {\n ensureCurrentTracked();\n scheduleRestore();\n }\n return;\n }\n featureActive = enabled;\n if (featureActive) {\n patchHistory();\n ensureCurrentTracked();\n scheduleRestore();\n }\n else {\n unpatchHistory();\n clearStored();\n }\n };\n window.addEventListener('CapacitorUpdaterKeepUrlPathAfterReload', (event) => {\n var _a;\n const evt = event;\n const enabled = (_a = evt === null || evt === void 0 ? void 0 : evt.detail) === null || _a === void 0 ? void 0 : _a.enabled;\n if (typeof enabled === 'boolean') {\n win.__capgoKeepUrlPathAfterReload = enabled;\n setFeatureActive(enabled);\n }\n else {\n win.__capgoKeepUrlPathAfterReload = true;\n setFeatureActive(true);\n }\n });\n setFeatureActive(isFeatureConfigured());\n }\n}\nexport {};\n//# sourceMappingURL=history.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/**\n * Update availability status.\n *\n * @since 8.0.0\n */\nexport var AppUpdateAvailability;\n(function (AppUpdateAvailability) {\n /**\n * Update availability is unknown.\n * This typically means the check hasn't completed or failed.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n /**\n * No update is available.\n * The installed version is the latest.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UPDATE_NOT_AVAILABLE\"] = 1] = \"UPDATE_NOT_AVAILABLE\";\n /**\n * An update is available for download.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UPDATE_AVAILABLE\"] = 2] = \"UPDATE_AVAILABLE\";\n /**\n * An update is currently being downloaded or installed.\n */\n AppUpdateAvailability[AppUpdateAvailability[\"UPDATE_IN_PROGRESS\"] = 3] = \"UPDATE_IN_PROGRESS\";\n})(AppUpdateAvailability || (AppUpdateAvailability = {}));\n/**\n * Installation status for flexible updates (Android only).\n *\n * @since 8.0.0\n */\nexport var FlexibleUpdateInstallStatus;\n(function (FlexibleUpdateInstallStatus) {\n /**\n * Unknown install status.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n /**\n * Download is pending and will start soon.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"PENDING\"] = 1] = \"PENDING\";\n /**\n * Download is in progress.\n * Check `bytesDownloaded` and `totalBytesToDownload` for progress.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"DOWNLOADING\"] = 2] = \"DOWNLOADING\";\n /**\n * The update is being installed.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"INSTALLING\"] = 3] = \"INSTALLING\";\n /**\n * The update has been installed.\n * The app needs to be restarted to use the new version.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"INSTALLED\"] = 4] = \"INSTALLED\";\n /**\n * The update failed to download or install.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"FAILED\"] = 5] = \"FAILED\";\n /**\n * The update was canceled by the user.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"CANCELED\"] = 6] = \"CANCELED\";\n /**\n * The update has been downloaded and is ready to install.\n * Call {@link CapacitorUpdaterPlugin.completeFlexibleUpdate} to install.\n */\n FlexibleUpdateInstallStatus[FlexibleUpdateInstallStatus[\"DOWNLOADED\"] = 11] = \"DOWNLOADED\";\n})(FlexibleUpdateInstallStatus || (FlexibleUpdateInstallStatus = {}));\n/**\n * Result codes for app update operations.\n *\n * @since 8.0.0\n */\nexport var AppUpdateResultCode;\n(function (AppUpdateResultCode) {\n /**\n * The update completed successfully.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"OK\"] = 0] = \"OK\";\n /**\n * The user canceled the update.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"CANCELED\"] = 1] = \"CANCELED\";\n /**\n * The update failed.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"FAILED\"] = 2] = \"FAILED\";\n /**\n * No update is available.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"NOT_AVAILABLE\"] = 3] = \"NOT_AVAILABLE\";\n /**\n * The requested update type is not allowed.\n * For example, trying to perform an immediate update when only flexible is allowed.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"NOT_ALLOWED\"] = 4] = \"NOT_ALLOWED\";\n /**\n * Required information is missing.\n * This can happen if {@link CapacitorUpdaterPlugin.getAppUpdateInfo} wasn't called first.\n */\n AppUpdateResultCode[AppUpdateResultCode[\"INFO_MISSING\"] = 5] = \"INFO_MISSING\";\n})(AppUpdateResultCode || (AppUpdateResultCode = {}));\n//# sourceMappingURL=definitions.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { registerPlugin } from '@capacitor/core';\nimport './history';\nconst CapacitorUpdater = registerPlugin('CapacitorUpdater', {\n web: () => import('./web').then((m) => new m.CapacitorUpdaterWeb()),\n});\nexport * from './definitions';\nexport { CapacitorUpdater };\n//# sourceMappingURL=index.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { WebPlugin } from '@capacitor/core';\nimport { AppUpdateAvailability } from './definitions';\nconst BUNDLE_BUILTIN = {\n status: 'success',\n version: '',\n downloaded: '1970-01-01T00:00:00.000Z',\n id: 'builtin',\n checksum: '',\n};\nexport class CapacitorUpdaterWeb extends WebPlugin {\n async setStatsUrl(options) {\n console.warn('Cannot setStatsUrl in web', options);\n return;\n }\n async setUpdateUrl(options) {\n console.warn('Cannot setUpdateUrl in web', options);\n return;\n }\n async setChannelUrl(options) {\n console.warn('Cannot setChannelUrl in web', options);\n return;\n }\n async download(options) {\n console.warn('Cannot download version in web', options);\n return BUNDLE_BUILTIN;\n }\n async next(options) {\n console.warn('Cannot set next version in web', options);\n return BUNDLE_BUILTIN;\n }\n async isAutoUpdateEnabled() {\n console.warn('Cannot get isAutoUpdateEnabled in web');\n return { enabled: false };\n }\n async set(options) {\n console.warn('Cannot set active bundle in web', options);\n return;\n }\n async getDeviceId() {\n console.warn('Cannot get ID in web');\n return { deviceId: 'default' };\n }\n async getBuiltinVersion() {\n console.warn('Cannot get version in web');\n return { version: 'default' };\n }\n async getPluginVersion() {\n console.warn('Cannot get plugin version in web');\n return { version: 'default' };\n }\n async delete(options) {\n console.warn('Cannot delete bundle in web', options);\n }\n async setBundleError(options) {\n console.warn('Cannot setBundleError in web', options);\n return BUNDLE_BUILTIN;\n }\n async list() {\n console.warn('Cannot list bundles in web');\n return { bundles: [] };\n }\n async reset(options) {\n console.warn('Cannot reset version in web', options);\n }\n async current() {\n console.warn('Cannot get current bundle in web');\n return { bundle: BUNDLE_BUILTIN, native: '0.0.0' };\n }\n async reload() {\n console.warn('Cannot reload current bundle in web');\n return;\n }\n async getLatest() {\n console.warn('Cannot getLatest current bundle in web');\n return {\n version: '0.0.0',\n message: 'Cannot getLatest current bundle in web',\n };\n }\n async setChannel(options) {\n console.warn('Cannot setChannel in web', options);\n return {\n status: 'error',\n error: 'Cannot setChannel in web',\n };\n }\n async unsetChannel(options) {\n console.warn('Cannot unsetChannel in web', options);\n return;\n }\n async setCustomId(options) {\n console.warn('Cannot setCustomId in web', options);\n return;\n }\n async getChannel() {\n console.warn('Cannot getChannel in web');\n return {\n status: 'error',\n error: 'Cannot getChannel in web',\n };\n }\n async listChannels() {\n console.warn('Cannot listChannels in web');\n throw {\n message: 'Cannot listChannels in web',\n error: 'platform_not_supported',\n };\n }\n async notifyAppReady() {\n return { bundle: BUNDLE_BUILTIN };\n }\n async setMultiDelay(options) {\n console.warn('Cannot setMultiDelay in web', options === null || options === void 0 ? void 0 : options.delayConditions);\n return;\n }\n async setDelay(option) {\n console.warn('Cannot setDelay in web', option);\n return;\n }\n async cancelDelay() {\n console.warn('Cannot cancelDelay in web');\n return;\n }\n async isAutoUpdateAvailable() {\n console.warn('Cannot isAutoUpdateAvailable in web');\n return { available: false };\n }\n async getCurrentBundle() {\n console.warn('Cannot get current bundle in web');\n return BUNDLE_BUILTIN;\n }\n async getNextBundle() {\n return Promise.resolve(null);\n }\n async getFailedUpdate() {\n console.warn('Cannot getFailedUpdate in web');\n return null;\n }\n async setShakeMenu(_options) {\n throw this.unimplemented('Shake menu not available on web platform');\n }\n async isShakeMenuEnabled() {\n return Promise.resolve({ enabled: false });\n }\n async getAppId() {\n console.warn('Cannot getAppId in web');\n return { appId: 'default' };\n }\n async setAppId(options) {\n console.warn('Cannot setAppId in web', options);\n return;\n }\n // ============================================================================\n // App Store / Play Store Update Methods (Web stubs)\n // ============================================================================\n async getAppUpdateInfo(_options) {\n console.warn('getAppUpdateInfo is not available on web platform');\n return {\n currentVersionName: '0.0.0',\n currentVersionCode: '0',\n updateAvailability: AppUpdateAvailability.UNKNOWN,\n };\n }\n async openAppStore(_options) {\n throw this.unimplemented('openAppStore is not available on web platform');\n }\n async performImmediateUpdate() {\n throw this.unimplemented('performImmediateUpdate is only available on Android');\n }\n async startFlexibleUpdate() {\n throw this.unimplemented('startFlexibleUpdate is only available on Android');\n }\n async completeFlexibleUpdate() {\n throw this.unimplemented('completeFlexibleUpdate is only available on Android');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["AppUpdateAvailability","FlexibleUpdateInstallStatus","AppUpdateResultCode","registerPlugin","WebPlugin"],"mappings":"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"}
@@ -60,7 +60,7 @@ public class CapacitorUpdaterPlugin: CAPPlugin, CAPBridgedPlugin {
60
60
  CAPPluginMethod(name: "completeFlexibleUpdate", returnType: CAPPluginReturnPromise)
61
61
  ]
62
62
  public var implementation = CapgoUpdater()
63
- private let pluginVersion: String = "8.40.1"
63
+ private let pluginVersion: String = "8.40.3"
64
64
  static let updateUrlDefault = "https://plugin.capgo.app/updates"
65
65
  static let statsUrlDefault = "https://plugin.capgo.app/stats"
66
66
  static let channelUrlDefault = "https://plugin.capgo.app/channel_self"
@@ -155,7 +155,8 @@ import UIKit
155
155
  case .success:
156
156
  self.logger.info("Rate limit statistic sent")
157
157
  case let .failure(error):
158
- self.logger.error("Error sending rate limit statistic: \(error.localizedDescription)")
158
+ self.logger.error("Error sending rate limit statistic")
159
+ self.logger.debug("Error: \(error.localizedDescription)")
159
160
  }
160
161
  semaphore.signal()
161
162
  }
@@ -201,7 +202,8 @@ import UIKit
201
202
  do {
202
203
  try FileManager.default.createDirectory(atPath: source.path, withIntermediateDirectories: true, attributes: nil)
203
204
  } catch {
204
- logger.error("Cannot createDirectory \(source.path)")
205
+ logger.error("Cannot create directory")
206
+ logger.debug("Directory path: \(source.path)")
205
207
  throw CustomError.cannotCreateDirectory
206
208
  }
207
209
  }
@@ -211,7 +213,8 @@ import UIKit
211
213
  do {
212
214
  try FileManager.default.removeItem(atPath: source.path)
213
215
  } catch {
214
- logger.error("File not removed. \(source.path)")
216
+ logger.error("File not removed")
217
+ logger.debug("Path: \(source.path)")
215
218
  throw CustomError.cannotDeleteDirectory
216
219
  }
217
220
  }
@@ -228,7 +231,8 @@ import UIKit
228
231
  return false
229
232
  }
230
233
  } catch {
231
- logger.error("File not moved. source: \(source.path) dest: \(dest.path)")
234
+ logger.error("File not moved")
235
+ logger.debug("Source: \(source.path), Dest: \(dest.path)")
232
236
  throw CustomError.cannotUnflat
233
237
  }
234
238
  }
@@ -236,7 +240,8 @@ import UIKit
236
240
  private func validateZipEntry(path: String, destUnZip: URL) throws {
237
241
  // Check for Windows paths
238
242
  if path.contains("\\") {
239
- logger.error("unzip: Windows path is not supported, please use unix path as required by zip RFC: \(path)")
243
+ logger.error("Unzip failed: Windows path not supported")
244
+ logger.debug("Invalid path: \(path)")
240
245
  self.sendStats(action: "windows_path_fail")
241
246
  throw CustomError.cannotUnzip
242
247
  }
@@ -318,7 +323,8 @@ import UIKit
318
323
  try FileManager.default.removeItem(at: sourceZip)
319
324
  }
320
325
  } catch {
321
- logger.error("Could not delete source zip at \(sourceZip.path): \(error)")
326
+ logger.error("Could not delete source zip")
327
+ logger.debug("Path: \(sourceZip.path), Error: \(error)")
322
328
  }
323
329
  }
324
330
 
@@ -393,8 +399,9 @@ import UIKit
393
399
  latest.comment = comment
394
400
  }
395
401
  case let .failure(error):
396
- self.logger.error("Error getting Latest \(response.value.debugDescription) \(error)")
397
- latest.message = "Error getting Latest \(String(describing: response.value))"
402
+ self.logger.error("Error getting latest version")
403
+ self.logger.debug("Response: \(response.value.debugDescription), Error: \(error)")
404
+ latest.message = "Error getting Latest"
398
405
  latest.error = "response_error"
399
406
  latest.statusCode = response.response?.statusCode ?? 0
400
407
  }
@@ -461,7 +468,8 @@ import UIKit
461
468
  fileHash = try CryptoCipher.decryptChecksum(checksum: fileHash, publicKey: self.publicKey)
462
469
  } catch {
463
470
  downloadError = error
464
- logger.error("CryptoCipher.decryptChecksum error \(id) \(fileName) error: \(error)")
471
+ logger.error("Checksum decryption failed")
472
+ logger.debug("Bundle: \(id), File: \(fileName), Error: \(error)")
465
473
  }
466
474
  }
467
475
 
@@ -490,7 +498,8 @@ import UIKit
490
498
  self.notifyDownload(id: id, percent: self.calcTotalPercent(percent: Int((Double(completedFiles) / Double(totalFiles)) * 100), min: 10, max: 70))
491
499
  } catch {
492
500
  downloadError = error
493
- logger.error("Failed to copy builtin file \(fileName): \(error.localizedDescription)")
501
+ logger.error("Failed to copy builtin file")
502
+ logger.debug("File: \(fileName), Error: \(error.localizedDescription)")
494
503
  }
495
504
  dispatchGroup.leave()
496
505
  } else if self.tryCopyFromCache(from: cacheFilePath, to: destFilePath, expectedHash: fileHash) {
@@ -562,15 +571,18 @@ import UIKit
562
571
 
563
572
  completedFiles += 1
564
573
  self.notifyDownload(id: id, percent: self.calcTotalPercent(percent: Int((Double(completedFiles) / Double(totalFiles)) * 100), min: 10, max: 70))
565
- self.logger.info("downloadManifest \(id) \(fileName) downloaded\(isBrotli ? ", decompressed" : "")\(!self.publicKey.isEmpty && !sessionKey.isEmpty ? ", decrypted" : ""), and cached")
574
+ self.logger.info("Manifest file downloaded and cached")
575
+ self.logger.debug("Bundle: \(id), File: \(fileName), Brotli: \(isBrotli), Encrypted: \(!self.publicKey.isEmpty && !sessionKey.isEmpty)")
566
576
  } catch {
567
577
  downloadError = error
568
- self.logger.error("downloadManifest \(id) \(fileName) error: \(error.localizedDescription)")
578
+ self.logger.error("Manifest file download failed")
579
+ self.logger.debug("Bundle: \(id), File: \(fileName), Error: \(error.localizedDescription)")
569
580
  }
570
581
  case .failure(let error):
571
582
  downloadError = error
572
583
  self.sendStats(action: "download_manifest_file_fail", versionName: "\(version):\(fileName)")
573
- self.logger.error("downloadManifest \(id) \(fileName) download error: \(error.localizedDescription). Debug response: \(response.debugDescription).")
584
+ self.logger.error("Manifest file download network error")
585
+ self.logger.debug("Bundle: \(id), File: \(fileName), Error: \(error.localizedDescription), Response: \(response.debugDescription)")
574
586
  }
575
587
  }
576
588
  }
@@ -658,7 +670,8 @@ import UIKit
658
670
  var status = compression_stream_init(streamPointer, COMPRESSION_STREAM_DECODE, COMPRESSION_BROTLI)
659
671
 
660
672
  guard status != COMPRESSION_STATUS_ERROR else {
661
- logger.error("Error: Failed to initialize Brotli stream for \(fileName). Status: \(status)")
673
+ logger.error("Failed to initialize Brotli stream")
674
+ logger.debug("File: \(fileName), Status: \(status)")
662
675
  return nil
663
676
  }
664
677
 
@@ -680,7 +693,8 @@ import UIKit
680
693
  if let baseAddress = rawBufferPointer.baseAddress {
681
694
  streamPointer.pointee.src_ptr = baseAddress.assumingMemoryBound(to: UInt8.self)
682
695
  } else {
683
- logger.error("Error: Failed to get base address for \(fileName)")
696
+ logger.error("Failed to get base address for Brotli decompression")
697
+ logger.debug("File: \(fileName)")
684
698
  status = COMPRESSION_STATUS_ERROR
685
699
  return
686
700
  }
@@ -690,7 +704,8 @@ import UIKit
690
704
  if status == COMPRESSION_STATUS_ERROR {
691
705
  let maxBytes = min(32, data.count)
692
706
  let hexDump = data.prefix(maxBytes).map { String(format: "%02x", $0) }.joined(separator: " ")
693
- logger.error("Error: Brotli decompression failed for \(fileName). First \(maxBytes) bytes: \(hexDump)")
707
+ logger.error("Brotli decompression failed")
708
+ logger.debug("File: \(fileName), First \(maxBytes) bytes: \(hexDump)")
694
709
  break
695
710
  }
696
711
 
@@ -704,18 +719,19 @@ import UIKit
704
719
  if status == COMPRESSION_STATUS_END {
705
720
  break
706
721
  } else if status == COMPRESSION_STATUS_ERROR {
707
- logger.error("Error: Brotli process failed for \(fileName). Status: \(status)")
722
+ logger.error("Brotli process failed")
723
+ logger.debug("File: \(fileName), Status: \(status)")
708
724
  if let text = String(data: data, encoding: .utf8) {
709
725
  let asciiCount = text.unicodeScalars.filter { $0.isASCII }.count
710
726
  let totalCount = text.unicodeScalars.count
711
727
  if totalCount > 0 && Double(asciiCount) / Double(totalCount) >= 0.8 {
712
- logger.error("Error: Input appears to be plain text: \(text)")
728
+ logger.debug("Input appears to be plain text: \(text)")
713
729
  }
714
730
  }
715
731
 
716
732
  let maxBytes = min(32, data.count)
717
733
  let hexDump = data.prefix(maxBytes).map { String(format: "%02x", $0) }.joined(separator: " ")
718
- logger.error("Error: Raw data (\(fileName)): \(hexDump)")
734
+ logger.debug("Raw data: \(hexDump)")
719
735
 
720
736
  return nil
721
737
  }
@@ -726,7 +742,8 @@ import UIKit
726
742
  }
727
743
 
728
744
  if input.count == 0 {
729
- logger.error("Error: Zero input size for \(fileName)")
745
+ logger.error("Zero input size for Brotli decompression")
746
+ logger.debug("File: \(fileName)")
730
747
  break
731
748
  }
732
749
  }
@@ -818,7 +835,8 @@ import UIKit
818
835
  reachabilityManager?.stopListening()
819
836
 
820
837
  if mainError != nil {
821
- logger.error("Failed to download: \(String(describing: mainError))")
838
+ logger.error("Failed to download bundle")
839
+ logger.debug("Error: \(String(describing: mainError))")
822
840
  self.saveBundleInfo(id: id, bundle: BundleInfo(id: id, version: version, status: BundleStatus.ERROR, downloaded: Date(), checksum: checksum, link: link, comment: comment))
823
841
  throw mainError!
824
842
  }
@@ -828,7 +846,8 @@ import UIKit
828
846
  try CryptoCipher.decryptFile(filePath: tempDataPath, publicKey: self.publicKey, sessionKey: sessionKey, version: version)
829
847
  try FileManager.default.moveItem(at: tempDataPath, to: finalPath)
830
848
  } catch {
831
- logger.error("Failed decrypt file : \(error)")
849
+ logger.error("Failed to decrypt file")
850
+ logger.debug("Error: \(error)")
832
851
  self.saveBundleInfo(id: id, bundle: BundleInfo(id: id, version: version, status: BundleStatus.ERROR, downloaded: Date(), checksum: checksum, link: link, comment: comment))
833
852
  cleanDownloadData()
834
853
  throw error
@@ -841,7 +860,8 @@ import UIKit
841
860
  try self.saveDownloaded(sourceZip: finalPath, id: id, base: self.libraryDir.appendingPathComponent(self.bundleDirectory), notify: true)
842
861
 
843
862
  } catch {
844
- logger.error("Failed to unzip file: \(error)")
863
+ logger.error("Failed to unzip file")
864
+ logger.debug("Error: \(error)")
845
865
  self.saveBundleInfo(id: id, bundle: BundleInfo(id: id, version: version, status: BundleStatus.ERROR, downloaded: Date(), checksum: checksum, link: link, comment: comment))
846
866
  // Best-effort cleanup of the decrypted zip file when unzip fails
847
867
  do {
@@ -849,7 +869,8 @@ import UIKit
849
869
  try FileManager.default.removeItem(at: finalPath)
850
870
  }
851
871
  } catch {
852
- logger.error("Could not delete failed zip at \(finalPath.path): \(error)")
872
+ logger.error("Could not delete failed zip")
873
+ logger.debug("Path: \(finalPath.path), Error: \(error)")
853
874
  }
854
875
  cleanDownloadData()
855
876
  throw error
@@ -872,13 +893,15 @@ import UIKit
872
893
  let fileManager = FileManager.default
873
894
  if !fileManager.fileExists(atPath: tempDataPath.path) {
874
895
  if !fileManager.createFile(atPath: tempDataPath.path, contents: Data()) {
875
- logger.error("Cannot ensure that a file at \(tempDataPath.path) exists")
896
+ logger.error("Cannot ensure temp data file exists")
897
+ logger.debug("Path: \(tempDataPath.path)")
876
898
  }
877
899
  }
878
900
 
879
901
  if !fileManager.fileExists(atPath: updateInfo.path) {
880
902
  if !fileManager.createFile(atPath: updateInfo.path, contents: Data()) {
881
- logger.error("Cannot ensure that a file at \(updateInfo.path) exists")
903
+ logger.error("Cannot ensure update info file exists")
904
+ logger.debug("Path: \(updateInfo.path)")
882
905
  }
883
906
  }
884
907
  }
@@ -890,7 +913,8 @@ import UIKit
890
913
  do {
891
914
  try fileManager.removeItem(at: tempDataPath)
892
915
  } catch {
893
- logger.error("Could not delete file at \(tempDataPath): \(error)")
916
+ logger.error("Could not delete temp data file")
917
+ logger.debug("Path: \(tempDataPath), Error: \(error)")
894
918
  }
895
919
  }
896
920
  // Deleting update.dat
@@ -898,7 +922,8 @@ import UIKit
898
922
  do {
899
923
  try fileManager.removeItem(at: updateInfo)
900
924
  } catch {
901
- logger.error("Could not delete file at \(updateInfo): \(error)")
925
+ logger.error("Could not delete update info file")
926
+ logger.debug("Path: \(updateInfo), Error: \(error)")
902
927
  }
903
928
  }
904
929
  }
@@ -917,7 +942,8 @@ import UIKit
917
942
  fileHandle.closeFile()
918
943
  }
919
944
  } catch {
920
- logger.error("Failed to write data starting at byte \(byteOffset): \(error)")
945
+ logger.error("Failed to write partial data")
946
+ logger.debug("Byte offset: \(byteOffset), Error: \(error)")
921
947
  }
922
948
  self.tempData.removeAll() // Clearing tempData to avoid writing the same data multiple times
923
949
  }
@@ -926,7 +952,8 @@ import UIKit
926
952
  do {
927
953
  try "\(version)".write(to: updateInfo, atomically: true, encoding: .utf8)
928
954
  } catch {
929
- logger.error("Failed to save progress: \(error)")
955
+ logger.error("Failed to save download progress")
956
+ logger.debug("Error: \(error)")
930
957
  }
931
958
  }
932
959
  private func getLocalUpdateVersion() -> String { // Return the version that was tried to be downloaded on last download attempt
@@ -948,7 +975,8 @@ import UIKit
948
975
  return fileSize.int64Value
949
976
  }
950
977
  } catch {
951
- logger.error("Could not retrieve already downloaded data size : \(error)")
978
+ logger.error("Could not retrieve download progress size")
979
+ logger.debug("Error: \(error)")
952
980
  }
953
981
  return 0
954
982
  }
@@ -992,7 +1020,8 @@ import UIKit
992
1020
  public func delete(id: String, removeInfo: Bool) -> Bool {
993
1021
  let deleted: BundleInfo = self.getBundleInfo(id: id)
994
1022
  if deleted.isBuiltin() || self.getCurrentBundleId() == id {
995
- logger.info("Cannot delete \(id)")
1023
+ logger.info("Cannot delete current or builtin bundle")
1024
+ logger.debug("Bundle ID: \(id)")
996
1025
  return false
997
1026
  }
998
1027
 
@@ -1001,7 +1030,8 @@ import UIKit
1001
1030
  !next.isDeleted() &&
1002
1031
  !next.isErrorStatus() &&
1003
1032
  next.getId() == id {
1004
- logger.info("Cannot delete the next bundle \(id)")
1033
+ logger.info("Cannot delete the next bundle")
1034
+ logger.debug("Bundle ID: \(id)")
1005
1035
  return false
1006
1036
  }
1007
1037
 
@@ -1009,7 +1039,8 @@ import UIKit
1009
1039
  do {
1010
1040
  try FileManager.default.removeItem(atPath: destPersist.path)
1011
1041
  } catch {
1012
- logger.error("Folder \(destPersist.path), not removed.")
1042
+ logger.error("Bundle folder not removed")
1043
+ logger.debug("Path: \(destPersist.path)")
1013
1044
  // even if, we don;t care. Android doesn't care
1014
1045
  if removeInfo {
1015
1046
  self.removeBundleInfo(id: id)
@@ -1022,7 +1053,8 @@ import UIKit
1022
1053
  } else {
1023
1054
  self.saveBundleInfo(id: id, bundle: deleted.setStatus(status: BundleStatus.DELETED.localizedString))
1024
1055
  }
1025
- logger.info("bundle delete \(deleted.getVersionName())")
1056
+ logger.info("Bundle deleted successfully")
1057
+ logger.debug("Version: \(deleted.getVersionName())")
1026
1058
  self.sendStats(action: "delete", versionName: deleted.getVersionName())
1027
1059
  return true
1028
1060
  }
@@ -1050,7 +1082,8 @@ import UIKit
1050
1082
  try fileManager.removeItem(at: cacheFolder)
1051
1083
  logger.info("Cleaned up delta cache folder")
1052
1084
  } catch {
1053
- logger.error("Failed to cleanup delta cache: \(error.localizedDescription)")
1085
+ logger.error("Failed to cleanup delta cache")
1086
+ logger.debug("Error: \(error.localizedDescription)")
1054
1087
  }
1055
1088
  }
1056
1089
 
@@ -1090,13 +1123,16 @@ import UIKit
1090
1123
  do {
1091
1124
  try fileManager.removeItem(at: url)
1092
1125
  self.removeBundleInfo(id: id)
1093
- logger.info("Deleted orphan bundle directory: \(id)")
1126
+ logger.info("Deleted orphan bundle directory")
1127
+ logger.debug("Bundle ID: \(id)")
1094
1128
  } catch {
1095
- logger.error("Failed to delete orphan bundle directory: \(id) \(error.localizedDescription)")
1129
+ logger.error("Failed to delete orphan bundle directory")
1130
+ logger.debug("Bundle ID: \(id), Error: \(error.localizedDescription)")
1096
1131
  }
1097
1132
  }
1098
1133
  } catch {
1099
- logger.error("Failed to enumerate bundle directory for cleanup: \(error.localizedDescription)")
1134
+ logger.error("Failed to enumerate bundle directory for cleanup")
1135
+ logger.debug("Error: \(error.localizedDescription)")
1100
1136
  }
1101
1137
  }
1102
1138
 
@@ -1127,13 +1163,16 @@ import UIKit
1127
1163
 
1128
1164
  do {
1129
1165
  try fileManager.removeItem(at: url)
1130
- logger.info("Deleted orphaned temp unzip folder: \(folderName)")
1166
+ logger.info("Deleted orphaned temp unzip folder")
1167
+ logger.debug("Folder: \(folderName)")
1131
1168
  } catch {
1132
- logger.error("Failed to delete orphaned temp folder: \(folderName) \(error.localizedDescription)")
1169
+ logger.error("Failed to delete orphaned temp folder")
1170
+ logger.debug("Folder: \(folderName), Error: \(error.localizedDescription)")
1133
1171
  }
1134
1172
  }
1135
1173
  } catch {
1136
- logger.error("Failed to enumerate library directory for temp folder cleanup: \(error.localizedDescription)")
1174
+ logger.error("Failed to enumerate library directory for temp folder cleanup")
1175
+ logger.debug("Error: \(error.localizedDescription)")
1137
1176
  }
1138
1177
  }
1139
1178
 
@@ -1209,9 +1248,11 @@ import UIKit
1209
1248
  if autoDeletePrevious && !fallback.isBuiltin() && fallback.getId() != bundle.getId() {
1210
1249
  let res = self.delete(id: fallback.getId())
1211
1250
  if res {
1212
- logger.info("Deleted previous bundle: \(fallback.toString())")
1251
+ logger.info("Deleted previous bundle")
1252
+ logger.debug("Bundle: \(fallback.toString())")
1213
1253
  } else {
1214
- logger.error("Failed to delete previous bundle: \(fallback.toString())")
1254
+ logger.error("Failed to delete previous bundle")
1255
+ logger.debug("Bundle: \(fallback.toString())")
1215
1256
  }
1216
1257
  }
1217
1258
  self.setFallbackBundle(fallback: bundle)
@@ -1292,7 +1333,8 @@ import UIKit
1292
1333
  }
1293
1334
  }
1294
1335
  case let .failure(error):
1295
- self.logger.error("Error set Channel \(error)")
1336
+ self.logger.error("Error setting channel")
1337
+ self.logger.debug("Error: \(error)")
1296
1338
  setChannel.error = "Request failed: \(error.localizedDescription)"
1297
1339
  }
1298
1340
  semaphore.signal()
@@ -1355,7 +1397,8 @@ import UIKit
1355
1397
  }
1356
1398
  }
1357
1399
 
1358
- self.logger.error("Error get Channel \(error)")
1400
+ self.logger.error("Error getting channel")
1401
+ self.logger.debug("Error: \(error)")
1359
1402
  getChannel.error = "Request failed: \(error.localizedDescription)"
1360
1403
  }
1361
1404
  }
@@ -1445,7 +1488,8 @@ import UIKit
1445
1488
  }
1446
1489
  }
1447
1490
  case let .failure(error):
1448
- self.logger.error("Error list channels \(error)")
1491
+ self.logger.error("Error listing channels")
1492
+ self.logger.debug("Error: \(error)")
1449
1493
  listChannels.error = "Request failed: \(error.localizedDescription)"
1450
1494
  }
1451
1495
  }
@@ -1491,9 +1535,11 @@ import UIKit
1491
1535
 
1492
1536
  switch response.result {
1493
1537
  case .success:
1494
- self.logger.info("Stats sent for \(action), version \(versionName)")
1538
+ self.logger.info("Stats sent successfully")
1539
+ self.logger.debug("Action: \(action), Version: \(versionName)")
1495
1540
  case let .failure(error):
1496
- self.logger.error("Error sending stats: \(response.value?.debugDescription ?? "") \(error.localizedDescription)")
1541
+ self.logger.error("Error sending stats")
1542
+ self.logger.debug("Response: \(response.value?.debugDescription ?? "nil"), Error: \(error.localizedDescription)")
1497
1543
  }
1498
1544
  semaphore.signal()
1499
1545
  }
@@ -1517,7 +1563,8 @@ import UIKit
1517
1563
  do {
1518
1564
  result = try UserDefaults.standard.getObj(forKey: "\(trueId)\(self.INFO_SUFFIX)", castTo: BundleInfo.self)
1519
1565
  } catch {
1520
- logger.error("Failed to parse info for bundle [\(trueId)] \(error.localizedDescription)")
1566
+ logger.error("Failed to parse bundle info")
1567
+ logger.debug("Bundle ID: \(trueId), Error: \(error.localizedDescription)")
1521
1568
  result = BundleInfo(id: trueId, version: "", status: BundleStatus.PENDING, checksum: "")
1522
1569
  }
1523
1570
  }
@@ -1552,7 +1599,8 @@ import UIKit
1552
1599
  do {
1553
1600
  try UserDefaults.standard.setObj(update, forKey: "\(id)\(self.INFO_SUFFIX)")
1554
1601
  } catch {
1555
- logger.error("Failed to save info for bundle [\(id)] \(error.localizedDescription)")
1602
+ logger.error("Failed to save bundle info")
1603
+ logger.debug("Bundle ID: \(id), Error: \(error.localizedDescription)")
1556
1604
  }
1557
1605
  }
1558
1606
  UserDefaults.standard.synchronize()