@rs-native-kit/version-check 0.1.2

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 (371) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +256 -0
  3. package/VersionCheck.podspec +20 -0
  4. package/android/build.gradle +56 -0
  5. package/android/src/main/AndroidManifest.xml +9 -0
  6. package/android/src/main/java/com/rsnativekit/versioncheck/SecureStorageCipher.kt +57 -0
  7. package/android/src/main/java/com/rsnativekit/versioncheck/VersionCheckHeadlessTaskService.kt +31 -0
  8. package/android/src/main/java/com/rsnativekit/versioncheck/VersionCheckModule.kt +215 -0
  9. package/android/src/main/java/com/rsnativekit/versioncheck/VersionCheckPackage.kt +31 -0
  10. package/android/src/main/java/com/rsnativekit/versioncheck/VersionCheckWorker.kt +29 -0
  11. package/ios/PlatformBridge/Ed25519Verifier.swift +19 -0
  12. package/ios/VersionCheck.h +5 -0
  13. package/ios/VersionCheck.mm +278 -0
  14. package/lib/module/data/cache/MemoryCacheStore.js +30 -0
  15. package/lib/module/data/cache/MemoryCacheStore.js.map +1 -0
  16. package/lib/module/data/cache/PersistentCacheStore.js +56 -0
  17. package/lib/module/data/cache/PersistentCacheStore.js.map +1 -0
  18. package/lib/module/data/config/ConfigCache.js +29 -0
  19. package/lib/module/data/config/ConfigCache.js.map +1 -0
  20. package/lib/module/data/config/ConfigDocumentValidator.js +185 -0
  21. package/lib/module/data/config/ConfigDocumentValidator.js.map +1 -0
  22. package/lib/module/data/config/ConfigLoader.js +82 -0
  23. package/lib/module/data/config/ConfigLoader.js.map +1 -0
  24. package/lib/module/data/config/ConfigProvider.js +58 -0
  25. package/lib/module/data/config/ConfigProvider.js.map +1 -0
  26. package/lib/module/data/config/ConfigResolutionPipeline.js +268 -0
  27. package/lib/module/data/config/ConfigResolutionPipeline.js.map +1 -0
  28. package/lib/module/data/config/ConfigValidator.js +69 -0
  29. package/lib/module/data/config/ConfigValidator.js.map +1 -0
  30. package/lib/module/data/config/SignatureVerifier.js +80 -0
  31. package/lib/module/data/config/SignatureVerifier.js.map +1 -0
  32. package/lib/module/data/config/canonicalize.js +88 -0
  33. package/lib/module/data/config/canonicalize.js.map +1 -0
  34. package/lib/module/data/config/sources/EnvironmentOverrideSource.js +20 -0
  35. package/lib/module/data/config/sources/EnvironmentOverrideSource.js.map +1 -0
  36. package/lib/module/data/config/sources/LocalConfigSource.js +22 -0
  37. package/lib/module/data/config/sources/LocalConfigSource.js.map +1 -0
  38. package/lib/module/data/config/sources/RemoteConfigSource.js +38 -0
  39. package/lib/module/data/config/sources/RemoteConfigSource.js.map +1 -0
  40. package/lib/module/data/providers/amazon/AmazonAppstoreProvider.js +13 -0
  41. package/lib/module/data/providers/amazon/AmazonAppstoreProvider.js.map +1 -0
  42. package/lib/module/data/providers/apple/AppleStoreProvider.js +67 -0
  43. package/lib/module/data/providers/apple/AppleStoreProvider.js.map +1 -0
  44. package/lib/module/data/providers/custom-api/CustomApiProvider.js +51 -0
  45. package/lib/module/data/providers/custom-api/CustomApiProvider.js.map +1 -0
  46. package/lib/module/data/providers/firebase-remote-config/FirebaseRemoteConfigProvider.js +13 -0
  47. package/lib/module/data/providers/firebase-remote-config/FirebaseRemoteConfigProvider.js.map +1 -0
  48. package/lib/module/data/providers/google-play/GooglePlayProvider.js +62 -0
  49. package/lib/module/data/providers/google-play/GooglePlayProvider.js.map +1 -0
  50. package/lib/module/data/providers/huawei/HuaweiAppGalleryProvider.js +18 -0
  51. package/lib/module/data/providers/huawei/HuaweiAppGalleryProvider.js.map +1 -0
  52. package/lib/module/data/repositories/VersionRepositoryImpl.js +69 -0
  53. package/lib/module/data/repositories/VersionRepositoryImpl.js.map +1 -0
  54. package/lib/module/di/container.js +80 -0
  55. package/lib/module/di/container.js.map +1 -0
  56. package/lib/module/domain/IVersionManagerCore.js +4 -0
  57. package/lib/module/domain/IVersionManagerCore.js.map +1 -0
  58. package/lib/module/domain/VersionManagerCore.js +276 -0
  59. package/lib/module/domain/VersionManagerCore.js.map +1 -0
  60. package/lib/module/domain/engines/decision/DecisionEngine.js +40 -0
  61. package/lib/module/domain/engines/decision/DecisionEngine.js.map +1 -0
  62. package/lib/module/domain/engines/policy/IUpdatePolicyEngine.js +4 -0
  63. package/lib/module/domain/engines/policy/IUpdatePolicyEngine.js.map +1 -0
  64. package/lib/module/domain/engines/policy/PolicyEngine.js +42 -0
  65. package/lib/module/domain/engines/policy/PolicyEngine.js.map +1 -0
  66. package/lib/module/domain/engines/semver/IVersionComparator.js +4 -0
  67. package/lib/module/domain/engines/semver/IVersionComparator.js.map +1 -0
  68. package/lib/module/domain/engines/semver/SemVerEngine.js +176 -0
  69. package/lib/module/domain/engines/semver/SemVerEngine.js.map +1 -0
  70. package/lib/module/domain/errors/VersionManagerException.js +104 -0
  71. package/lib/module/domain/errors/VersionManagerException.js.map +1 -0
  72. package/lib/module/domain/models/ActionPlan.js +9 -0
  73. package/lib/module/domain/models/ActionPlan.js.map +1 -0
  74. package/lib/module/domain/models/ConfigDocument.js +4 -0
  75. package/lib/module/domain/models/ConfigDocument.js.map +1 -0
  76. package/lib/module/domain/models/Events.js +4 -0
  77. package/lib/module/domain/models/Events.js.map +1 -0
  78. package/lib/module/domain/models/LifecycleState.js +29 -0
  79. package/lib/module/domain/models/LifecycleState.js.map +1 -0
  80. package/lib/module/domain/models/ParsedVersion.js +2 -0
  81. package/lib/module/domain/models/ParsedVersion.js.map +1 -0
  82. package/lib/module/domain/models/PlatformId.js +2 -0
  83. package/lib/module/domain/models/PlatformId.js.map +1 -0
  84. package/lib/module/domain/models/PublicApiOptions.js +2 -0
  85. package/lib/module/domain/models/PublicApiOptions.js.map +1 -0
  86. package/lib/module/domain/models/RemoteVersionInfo.js +4 -0
  87. package/lib/module/domain/models/RemoteVersionInfo.js.map +1 -0
  88. package/lib/module/domain/models/StoreLookup.js +2 -0
  89. package/lib/module/domain/models/StoreLookup.js.map +1 -0
  90. package/lib/module/domain/models/Unsubscribe.js +2 -0
  91. package/lib/module/domain/models/Unsubscribe.js.map +1 -0
  92. package/lib/module/domain/models/UpdateInfo.js +4 -0
  93. package/lib/module/domain/models/UpdateInfo.js.map +1 -0
  94. package/lib/module/domain/models/VersionManagerOptions.js +4 -0
  95. package/lib/module/domain/models/VersionManagerOptions.js.map +1 -0
  96. package/lib/module/domain/ports/ICacheStore.js +2 -0
  97. package/lib/module/domain/ports/ICacheStore.js.map +1 -0
  98. package/lib/module/domain/ports/IClock.js +2 -0
  99. package/lib/module/domain/ports/IClock.js.map +1 -0
  100. package/lib/module/domain/ports/IConfigProvider.js +4 -0
  101. package/lib/module/domain/ports/IConfigProvider.js.map +1 -0
  102. package/lib/module/domain/ports/IConfigSources.js +4 -0
  103. package/lib/module/domain/ports/IConfigSources.js.map +1 -0
  104. package/lib/module/domain/ports/IPlatformBridge.js +4 -0
  105. package/lib/module/domain/ports/IPlatformBridge.js.map +1 -0
  106. package/lib/module/domain/ports/IStoreProvider.js +4 -0
  107. package/lib/module/domain/ports/IStoreProvider.js.map +1 -0
  108. package/lib/module/domain/ports/IVersionRepository.js +4 -0
  109. package/lib/module/domain/ports/IVersionRepository.js.map +1 -0
  110. package/lib/module/domain/statemachine/LifecycleStateMachine.js +55 -0
  111. package/lib/module/domain/statemachine/LifecycleStateMachine.js.map +1 -0
  112. package/lib/module/domain/usecases/CheckForUpdatesUseCase.js +31 -0
  113. package/lib/module/domain/usecases/CheckForUpdatesUseCase.js.map +1 -0
  114. package/lib/module/domain/usecases/ForceTriggerUpdateUseCase.js +20 -0
  115. package/lib/module/domain/usecases/ForceTriggerUpdateUseCase.js.map +1 -0
  116. package/lib/module/domain/usecases/ResetIgnoredVersionsUseCase.js +24 -0
  117. package/lib/module/domain/usecases/ResetIgnoredVersionsUseCase.js.map +1 -0
  118. package/lib/module/index.js +10 -0
  119. package/lib/module/index.js.map +1 -0
  120. package/lib/module/package.json +1 -0
  121. package/lib/module/platform/contracts/IPlatformBridge.js +2 -0
  122. package/lib/module/platform/contracts/IPlatformBridge.js.map +1 -0
  123. package/lib/module/platform/createPlatformBridge.js +17 -0
  124. package/lib/module/platform/createPlatformBridge.js.map +1 -0
  125. package/lib/module/platform/createPlatformBridge.native.js +9 -0
  126. package/lib/module/platform/createPlatformBridge.native.js.map +1 -0
  127. package/lib/module/platform/native/NativePlatformBridge.js +143 -0
  128. package/lib/module/platform/native/NativePlatformBridge.js.map +1 -0
  129. package/lib/module/platform/native/NativeVersionCheck.js +33 -0
  130. package/lib/module/platform/native/NativeVersionCheck.js.map +1 -0
  131. package/lib/module/platform/web/WebPlatformBridge.js +228 -0
  132. package/lib/module/platform/web/WebPlatformBridge.js.map +1 -0
  133. package/lib/module/presentation/components/ForceUpdateScreen.js +68 -0
  134. package/lib/module/presentation/components/ForceUpdateScreen.js.map +1 -0
  135. package/lib/module/presentation/components/OptionalUpdateBanner.js +69 -0
  136. package/lib/module/presentation/components/OptionalUpdateBanner.js.map +1 -0
  137. package/lib/module/presentation/components/SoftUpdateDialog.js +101 -0
  138. package/lib/module/presentation/components/SoftUpdateDialog.js.map +1 -0
  139. package/lib/module/presentation/hooks/VersionManagerProvider.js +18 -0
  140. package/lib/module/presentation/hooks/VersionManagerProvider.js.map +1 -0
  141. package/lib/module/presentation/hooks/context.js +5 -0
  142. package/lib/module/presentation/hooks/context.js.map +1 -0
  143. package/lib/module/presentation/hooks/useUpdateState.js +26 -0
  144. package/lib/module/presentation/hooks/useUpdateState.js.map +1 -0
  145. package/lib/module/presentation/hooks/useVersionManager.js +33 -0
  146. package/lib/module/presentation/hooks/useVersionManager.js.map +1 -0
  147. package/lib/module/presentation/state/VersionManagerStore.js +47 -0
  148. package/lib/module/presentation/state/VersionManagerStore.js.map +1 -0
  149. package/lib/module/publicApi.js +114 -0
  150. package/lib/module/publicApi.js.map +1 -0
  151. package/lib/module/shared/eventbus/EventBus.js +34 -0
  152. package/lib/module/shared/eventbus/EventBus.js.map +1 -0
  153. package/lib/module/shared/logging/Logger.js +56 -0
  154. package/lib/module/shared/logging/Logger.js.map +1 -0
  155. package/lib/module/ui.js +13 -0
  156. package/lib/module/ui.js.map +1 -0
  157. package/lib/typescript/package.json +1 -0
  158. package/lib/typescript/src/data/cache/MemoryCacheStore.d.ts +12 -0
  159. package/lib/typescript/src/data/cache/MemoryCacheStore.d.ts.map +1 -0
  160. package/lib/typescript/src/data/cache/PersistentCacheStore.d.ts +14 -0
  161. package/lib/typescript/src/data/cache/PersistentCacheStore.d.ts.map +1 -0
  162. package/lib/typescript/src/data/config/ConfigCache.d.ts +15 -0
  163. package/lib/typescript/src/data/config/ConfigCache.d.ts.map +1 -0
  164. package/lib/typescript/src/data/config/ConfigDocumentValidator.d.ts +20 -0
  165. package/lib/typescript/src/data/config/ConfigDocumentValidator.d.ts.map +1 -0
  166. package/lib/typescript/src/data/config/ConfigLoader.d.ts +28 -0
  167. package/lib/typescript/src/data/config/ConfigLoader.d.ts.map +1 -0
  168. package/lib/typescript/src/data/config/ConfigProvider.d.ts +30 -0
  169. package/lib/typescript/src/data/config/ConfigProvider.d.ts.map +1 -0
  170. package/lib/typescript/src/data/config/ConfigResolutionPipeline.d.ts +49 -0
  171. package/lib/typescript/src/data/config/ConfigResolutionPipeline.d.ts.map +1 -0
  172. package/lib/typescript/src/data/config/ConfigValidator.d.ts +10 -0
  173. package/lib/typescript/src/data/config/ConfigValidator.d.ts.map +1 -0
  174. package/lib/typescript/src/data/config/SignatureVerifier.d.ts +16 -0
  175. package/lib/typescript/src/data/config/SignatureVerifier.d.ts.map +1 -0
  176. package/lib/typescript/src/data/config/canonicalize.d.ts +13 -0
  177. package/lib/typescript/src/data/config/canonicalize.d.ts.map +1 -0
  178. package/lib/typescript/src/data/config/sources/EnvironmentOverrideSource.d.ts +17 -0
  179. package/lib/typescript/src/data/config/sources/EnvironmentOverrideSource.d.ts.map +1 -0
  180. package/lib/typescript/src/data/config/sources/LocalConfigSource.d.ts +19 -0
  181. package/lib/typescript/src/data/config/sources/LocalConfigSource.d.ts.map +1 -0
  182. package/lib/typescript/src/data/config/sources/RemoteConfigSource.d.ts +10 -0
  183. package/lib/typescript/src/data/config/sources/RemoteConfigSource.d.ts.map +1 -0
  184. package/lib/typescript/src/data/providers/amazon/AmazonAppstoreProvider.d.ts +9 -0
  185. package/lib/typescript/src/data/providers/amazon/AmazonAppstoreProvider.d.ts.map +1 -0
  186. package/lib/typescript/src/data/providers/apple/AppleStoreProvider.d.ts +19 -0
  187. package/lib/typescript/src/data/providers/apple/AppleStoreProvider.d.ts.map +1 -0
  188. package/lib/typescript/src/data/providers/custom-api/CustomApiProvider.d.ts +14 -0
  189. package/lib/typescript/src/data/providers/custom-api/CustomApiProvider.d.ts.map +1 -0
  190. package/lib/typescript/src/data/providers/firebase-remote-config/FirebaseRemoteConfigProvider.d.ts +9 -0
  191. package/lib/typescript/src/data/providers/firebase-remote-config/FirebaseRemoteConfigProvider.d.ts.map +1 -0
  192. package/lib/typescript/src/data/providers/google-play/GooglePlayProvider.d.ts +22 -0
  193. package/lib/typescript/src/data/providers/google-play/GooglePlayProvider.d.ts.map +1 -0
  194. package/lib/typescript/src/data/providers/huawei/HuaweiAppGalleryProvider.d.ts +14 -0
  195. package/lib/typescript/src/data/providers/huawei/HuaweiAppGalleryProvider.d.ts.map +1 -0
  196. package/lib/typescript/src/data/repositories/VersionRepositoryImpl.d.ts +23 -0
  197. package/lib/typescript/src/data/repositories/VersionRepositoryImpl.d.ts.map +1 -0
  198. package/lib/typescript/src/di/container.d.ts +12 -0
  199. package/lib/typescript/src/di/container.d.ts.map +1 -0
  200. package/lib/typescript/src/domain/IVersionManagerCore.d.ts +30 -0
  201. package/lib/typescript/src/domain/IVersionManagerCore.d.ts.map +1 -0
  202. package/lib/typescript/src/domain/VersionManagerCore.d.ts +94 -0
  203. package/lib/typescript/src/domain/VersionManagerCore.d.ts.map +1 -0
  204. package/lib/typescript/src/domain/engines/decision/DecisionEngine.d.ts +16 -0
  205. package/lib/typescript/src/domain/engines/decision/DecisionEngine.d.ts.map +1 -0
  206. package/lib/typescript/src/domain/engines/policy/IUpdatePolicyEngine.d.ts +17 -0
  207. package/lib/typescript/src/domain/engines/policy/IUpdatePolicyEngine.d.ts.map +1 -0
  208. package/lib/typescript/src/domain/engines/policy/PolicyEngine.d.ts +16 -0
  209. package/lib/typescript/src/domain/engines/policy/PolicyEngine.d.ts.map +1 -0
  210. package/lib/typescript/src/domain/engines/semver/IVersionComparator.d.ts +7 -0
  211. package/lib/typescript/src/domain/engines/semver/IVersionComparator.d.ts.map +1 -0
  212. package/lib/typescript/src/domain/engines/semver/SemVerEngine.d.ts +11 -0
  213. package/lib/typescript/src/domain/engines/semver/SemVerEngine.d.ts.map +1 -0
  214. package/lib/typescript/src/domain/errors/VersionManagerException.d.ts +97 -0
  215. package/lib/typescript/src/domain/errors/VersionManagerException.d.ts.map +1 -0
  216. package/lib/typescript/src/domain/models/ActionPlan.d.ts +15 -0
  217. package/lib/typescript/src/domain/models/ActionPlan.d.ts.map +1 -0
  218. package/lib/typescript/src/domain/models/ConfigDocument.d.ts +86 -0
  219. package/lib/typescript/src/domain/models/ConfigDocument.d.ts.map +1 -0
  220. package/lib/typescript/src/domain/models/Events.d.ts +39 -0
  221. package/lib/typescript/src/domain/models/Events.d.ts.map +1 -0
  222. package/lib/typescript/src/domain/models/LifecycleState.d.ts +18 -0
  223. package/lib/typescript/src/domain/models/LifecycleState.d.ts.map +1 -0
  224. package/lib/typescript/src/domain/models/ParsedVersion.d.ts +9 -0
  225. package/lib/typescript/src/domain/models/ParsedVersion.d.ts.map +1 -0
  226. package/lib/typescript/src/domain/models/PlatformId.d.ts +3 -0
  227. package/lib/typescript/src/domain/models/PlatformId.d.ts.map +1 -0
  228. package/lib/typescript/src/domain/models/PublicApiOptions.d.ts +13 -0
  229. package/lib/typescript/src/domain/models/PublicApiOptions.d.ts.map +1 -0
  230. package/lib/typescript/src/domain/models/RemoteVersionInfo.d.ts +21 -0
  231. package/lib/typescript/src/domain/models/RemoteVersionInfo.d.ts.map +1 -0
  232. package/lib/typescript/src/domain/models/StoreLookup.d.ts +12 -0
  233. package/lib/typescript/src/domain/models/StoreLookup.d.ts.map +1 -0
  234. package/lib/typescript/src/domain/models/Unsubscribe.d.ts +2 -0
  235. package/lib/typescript/src/domain/models/Unsubscribe.d.ts.map +1 -0
  236. package/lib/typescript/src/domain/models/UpdateInfo.d.ts +11 -0
  237. package/lib/typescript/src/domain/models/UpdateInfo.d.ts.map +1 -0
  238. package/lib/typescript/src/domain/models/VersionManagerOptions.d.ts +149 -0
  239. package/lib/typescript/src/domain/models/VersionManagerOptions.d.ts.map +1 -0
  240. package/lib/typescript/src/domain/ports/ICacheStore.d.ts +6 -0
  241. package/lib/typescript/src/domain/ports/ICacheStore.d.ts.map +1 -0
  242. package/lib/typescript/src/domain/ports/IClock.d.ts +4 -0
  243. package/lib/typescript/src/domain/ports/IClock.d.ts.map +1 -0
  244. package/lib/typescript/src/domain/ports/IConfigProvider.d.ts +11 -0
  245. package/lib/typescript/src/domain/ports/IConfigProvider.d.ts.map +1 -0
  246. package/lib/typescript/src/domain/ports/IConfigSources.d.ts +25 -0
  247. package/lib/typescript/src/domain/ports/IConfigSources.d.ts.map +1 -0
  248. package/lib/typescript/src/domain/ports/IPlatformBridge.d.ts +77 -0
  249. package/lib/typescript/src/domain/ports/IPlatformBridge.d.ts.map +1 -0
  250. package/lib/typescript/src/domain/ports/IStoreProvider.d.ts +7 -0
  251. package/lib/typescript/src/domain/ports/IStoreProvider.d.ts.map +1 -0
  252. package/lib/typescript/src/domain/ports/IVersionRepository.d.ts +8 -0
  253. package/lib/typescript/src/domain/ports/IVersionRepository.d.ts.map +1 -0
  254. package/lib/typescript/src/domain/statemachine/LifecycleStateMachine.d.ts +25 -0
  255. package/lib/typescript/src/domain/statemachine/LifecycleStateMachine.d.ts.map +1 -0
  256. package/lib/typescript/src/domain/usecases/CheckForUpdatesUseCase.d.ts +30 -0
  257. package/lib/typescript/src/domain/usecases/CheckForUpdatesUseCase.d.ts.map +1 -0
  258. package/lib/typescript/src/domain/usecases/ForceTriggerUpdateUseCase.d.ts +17 -0
  259. package/lib/typescript/src/domain/usecases/ForceTriggerUpdateUseCase.d.ts.map +1 -0
  260. package/lib/typescript/src/domain/usecases/ResetIgnoredVersionsUseCase.d.ts +7 -0
  261. package/lib/typescript/src/domain/usecases/ResetIgnoredVersionsUseCase.d.ts.map +1 -0
  262. package/lib/typescript/src/index.d.ts +17 -0
  263. package/lib/typescript/src/index.d.ts.map +1 -0
  264. package/lib/typescript/src/platform/contracts/IPlatformBridge.d.ts +2 -0
  265. package/lib/typescript/src/platform/contracts/IPlatformBridge.d.ts.map +1 -0
  266. package/lib/typescript/src/platform/createPlatformBridge.d.ts +12 -0
  267. package/lib/typescript/src/platform/createPlatformBridge.d.ts.map +1 -0
  268. package/lib/typescript/src/platform/createPlatformBridge.native.d.ts +4 -0
  269. package/lib/typescript/src/platform/createPlatformBridge.native.d.ts.map +1 -0
  270. package/lib/typescript/src/platform/native/NativePlatformBridge.d.ts +17 -0
  271. package/lib/typescript/src/platform/native/NativePlatformBridge.d.ts.map +1 -0
  272. package/lib/typescript/src/platform/native/NativeVersionCheck.d.ts +45 -0
  273. package/lib/typescript/src/platform/native/NativeVersionCheck.d.ts.map +1 -0
  274. package/lib/typescript/src/platform/web/WebPlatformBridge.d.ts +17 -0
  275. package/lib/typescript/src/platform/web/WebPlatformBridge.d.ts.map +1 -0
  276. package/lib/typescript/src/presentation/components/ForceUpdateScreen.d.ts +12 -0
  277. package/lib/typescript/src/presentation/components/ForceUpdateScreen.d.ts.map +1 -0
  278. package/lib/typescript/src/presentation/components/OptionalUpdateBanner.d.ts +12 -0
  279. package/lib/typescript/src/presentation/components/OptionalUpdateBanner.d.ts.map +1 -0
  280. package/lib/typescript/src/presentation/components/SoftUpdateDialog.d.ts +14 -0
  281. package/lib/typescript/src/presentation/components/SoftUpdateDialog.d.ts.map +1 -0
  282. package/lib/typescript/src/presentation/hooks/VersionManagerProvider.d.ts +9 -0
  283. package/lib/typescript/src/presentation/hooks/VersionManagerProvider.d.ts.map +1 -0
  284. package/lib/typescript/src/presentation/hooks/context.d.ts +3 -0
  285. package/lib/typescript/src/presentation/hooks/context.d.ts.map +1 -0
  286. package/lib/typescript/src/presentation/hooks/useUpdateState.d.ts +17 -0
  287. package/lib/typescript/src/presentation/hooks/useUpdateState.d.ts.map +1 -0
  288. package/lib/typescript/src/presentation/hooks/useVersionManager.d.ts +22 -0
  289. package/lib/typescript/src/presentation/hooks/useVersionManager.d.ts.map +1 -0
  290. package/lib/typescript/src/presentation/state/VersionManagerStore.d.ts +28 -0
  291. package/lib/typescript/src/presentation/state/VersionManagerStore.d.ts.map +1 -0
  292. package/lib/typescript/src/publicApi.d.ts +24 -0
  293. package/lib/typescript/src/publicApi.d.ts.map +1 -0
  294. package/lib/typescript/src/shared/eventbus/EventBus.d.ts +21 -0
  295. package/lib/typescript/src/shared/eventbus/EventBus.d.ts.map +1 -0
  296. package/lib/typescript/src/shared/logging/Logger.d.ts +17 -0
  297. package/lib/typescript/src/shared/logging/Logger.d.ts.map +1 -0
  298. package/lib/typescript/src/ui.d.ts +15 -0
  299. package/lib/typescript/src/ui.d.ts.map +1 -0
  300. package/package.json +192 -0
  301. package/src/data/cache/MemoryCacheStore.ts +36 -0
  302. package/src/data/cache/PersistentCacheStore.ts +63 -0
  303. package/src/data/config/ConfigCache.ts +30 -0
  304. package/src/data/config/ConfigDocumentValidator.ts +309 -0
  305. package/src/data/config/ConfigLoader.ts +105 -0
  306. package/src/data/config/ConfigProvider.ts +84 -0
  307. package/src/data/config/ConfigResolutionPipeline.ts +424 -0
  308. package/src/data/config/ConfigValidator.ts +79 -0
  309. package/src/data/config/SignatureVerifier.ts +90 -0
  310. package/src/data/config/canonicalize.ts +111 -0
  311. package/src/data/config/sources/EnvironmentOverrideSource.ts +22 -0
  312. package/src/data/config/sources/LocalConfigSource.ts +24 -0
  313. package/src/data/config/sources/RemoteConfigSource.ts +41 -0
  314. package/src/data/providers/amazon/AmazonAppstoreProvider.ts +16 -0
  315. package/src/data/providers/apple/AppleStoreProvider.ts +94 -0
  316. package/src/data/providers/custom-api/CustomApiProvider.ts +75 -0
  317. package/src/data/providers/firebase-remote-config/FirebaseRemoteConfigProvider.ts +16 -0
  318. package/src/data/providers/google-play/GooglePlayProvider.ts +75 -0
  319. package/src/data/providers/huawei/HuaweiAppGalleryProvider.ts +21 -0
  320. package/src/data/repositories/VersionRepositoryImpl.ts +90 -0
  321. package/src/di/container.ts +128 -0
  322. package/src/domain/IVersionManagerCore.ts +54 -0
  323. package/src/domain/VersionManagerCore.ts +425 -0
  324. package/src/domain/engines/decision/DecisionEngine.ts +47 -0
  325. package/src/domain/engines/policy/IUpdatePolicyEngine.ts +18 -0
  326. package/src/domain/engines/policy/PolicyEngine.ts +60 -0
  327. package/src/domain/engines/semver/IVersionComparator.ts +7 -0
  328. package/src/domain/engines/semver/SemVerEngine.ts +200 -0
  329. package/src/domain/errors/VersionManagerException.ts +166 -0
  330. package/src/domain/models/ActionPlan.ts +17 -0
  331. package/src/domain/models/ConfigDocument.ts +97 -0
  332. package/src/domain/models/Events.ts +48 -0
  333. package/src/domain/models/LifecycleState.ts +50 -0
  334. package/src/domain/models/ParsedVersion.ts +8 -0
  335. package/src/domain/models/PlatformId.ts +9 -0
  336. package/src/domain/models/PublicApiOptions.ts +14 -0
  337. package/src/domain/models/RemoteVersionInfo.ts +23 -0
  338. package/src/domain/models/StoreLookup.ts +12 -0
  339. package/src/domain/models/Unsubscribe.ts +1 -0
  340. package/src/domain/models/UpdateInfo.ts +11 -0
  341. package/src/domain/models/VersionManagerOptions.ts +150 -0
  342. package/src/domain/ports/ICacheStore.ts +5 -0
  343. package/src/domain/ports/IClock.ts +3 -0
  344. package/src/domain/ports/IConfigProvider.ts +18 -0
  345. package/src/domain/ports/IConfigSources.ts +44 -0
  346. package/src/domain/ports/IPlatformBridge.ts +97 -0
  347. package/src/domain/ports/IStoreProvider.ts +12 -0
  348. package/src/domain/ports/IVersionRepository.ts +14 -0
  349. package/src/domain/statemachine/LifecycleStateMachine.ts +76 -0
  350. package/src/domain/usecases/CheckForUpdatesUseCase.ts +63 -0
  351. package/src/domain/usecases/ForceTriggerUpdateUseCase.ts +35 -0
  352. package/src/domain/usecases/ResetIgnoredVersionsUseCase.ts +26 -0
  353. package/src/index.tsx +84 -0
  354. package/src/platform/contracts/IPlatformBridge.ts +14 -0
  355. package/src/platform/createPlatformBridge.native.ts +7 -0
  356. package/src/platform/createPlatformBridge.ts +15 -0
  357. package/src/platform/native/NativePlatformBridge.ts +179 -0
  358. package/src/platform/native/NativeVersionCheck.ts +64 -0
  359. package/src/platform/web/WebPlatformBridge.ts +347 -0
  360. package/src/presentation/components/ForceUpdateScreen.tsx +64 -0
  361. package/src/presentation/components/OptionalUpdateBanner.tsx +53 -0
  362. package/src/presentation/components/SoftUpdateDialog.tsx +84 -0
  363. package/src/presentation/hooks/VersionManagerProvider.tsx +23 -0
  364. package/src/presentation/hooks/context.ts +6 -0
  365. package/src/presentation/hooks/useUpdateState.ts +50 -0
  366. package/src/presentation/hooks/useVersionManager.ts +68 -0
  367. package/src/presentation/state/VersionManagerStore.ts +72 -0
  368. package/src/publicApi.ts +126 -0
  369. package/src/shared/eventbus/EventBus.ts +56 -0
  370. package/src/shared/logging/Logger.ts +70 -0
  371. package/src/ui.tsx +19 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecisionEngine.d.ts","sourceRoot":"","sources":["../../../../../../src/domain/engines/decision/DecisionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;;;;GAKG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAE1C,eAAe,CACb,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAC/B,UAAU;CA2Bd"}
@@ -0,0 +1,17 @@
1
+ import type { ActionType } from '../../models/ActionPlan';
2
+ import type { ParsedVersion } from '../../models/ParsedVersion';
3
+ import type { UserVersionDecision } from '../../models/RemoteVersionInfo';
4
+ export interface PolicyEvaluationContext {
5
+ readonly currentVersion: ParsedVersion;
6
+ readonly remoteVersion: ParsedVersion;
7
+ readonly forceUpdateBelow: ParsedVersion | null;
8
+ readonly userDecision: UserVersionDecision | null;
9
+ readonly now: number;
10
+ readonly rolloutPercentage: number;
11
+ /** Precomputed 0-99 bucket for this device (Prompt 18 rollout hashing — deferred, see PolicyEngine). */
12
+ readonly rolloutBucket: number;
13
+ }
14
+ export interface IUpdatePolicyEngine {
15
+ evaluate(context: PolicyEvaluationContext): ActionType;
16
+ }
17
+ //# sourceMappingURL=IUpdatePolicyEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IUpdatePolicyEngine.d.ts","sourceRoot":"","sources":["../../../../../../src/domain/engines/policy/IUpdatePolicyEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,wGAAwG;IACxG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CAAC;CACxD"}
@@ -0,0 +1,16 @@
1
+ import { ActionType } from '../../models/ActionPlan';
2
+ import type { IVersionComparator } from '../semver/IVersionComparator';
3
+ import type { IUpdatePolicyEngine, PolicyEvaluationContext } from './IUpdatePolicyEngine';
4
+ /**
5
+ * Minimal rule evaluator: threshold-based force-update classification, ignore-list and
6
+ * remind-later suppression, and rollout-percentage gating. This intentionally covers a
7
+ * subset of the full Rule DSL described for Prompt 6 (conflict resolution across
8
+ * security/force/grace-period/optional tiers) — that richer precedence table is future
9
+ * scope; this engine implements the linear precedence documented inline below.
10
+ */
11
+ export declare class PolicyEngine implements IUpdatePolicyEngine {
12
+ private readonly comparator;
13
+ constructor(comparator: IVersionComparator);
14
+ evaluate(context: PolicyEvaluationContext): ActionType;
15
+ }
16
+ //# sourceMappingURL=PolicyEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyEngine.d.ts","sourceRoot":"","sources":["../../../../../../src/domain/engines/policy/PolicyEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;GAMG;AACH,qBAAa,YAAa,YAAW,mBAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,kBAAkB;IAE3D,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU;CA0CvD"}
@@ -0,0 +1,7 @@
1
+ import type { ParsedVersion } from '../../models/ParsedVersion';
2
+ export interface IVersionComparator {
3
+ parse(raw: string): ParsedVersion;
4
+ compare(a: ParsedVersion, b: ParsedVersion): -1 | 0 | 1;
5
+ satisfies(version: ParsedVersion, range: string): boolean;
6
+ }
7
+ //# sourceMappingURL=IVersionComparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IVersionComparator.d.ts","sourceRoot":"","sources":["../../../../../../src/domain/engines/semver/IVersionComparator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxD,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3D"}
@@ -0,0 +1,11 @@
1
+ import type { ParsedVersion } from '../../models/ParsedVersion';
2
+ import type { IVersionComparator } from './IVersionComparator';
3
+ export declare function parseVersion(raw: string): ParsedVersion;
4
+ export declare function compareVersions(a: ParsedVersion, b: ParsedVersion): -1 | 0 | 1;
5
+ export declare function satisfiesRange(version: ParsedVersion, range: string): boolean;
6
+ export declare class SemVerEngine implements IVersionComparator {
7
+ parse(raw: string): ParsedVersion;
8
+ compare(a: ParsedVersion, b: ParsedVersion): -1 | 0 | 1;
9
+ satisfies(version: ParsedVersion, range: string): boolean;
10
+ }
11
+ //# sourceMappingURL=SemVerEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemVerEngine.d.ts","sourceRoot":"","sources":["../../../../../../src/domain/engines/semver/SemVerEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAuB/D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAuCvD;AA4BD,wBAAgB,eAAe,CAC7B,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,GACf,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAKZ;AAiFD,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI7E;AAED,qBAAa,YAAa,YAAW,kBAAkB;IACrD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAIjC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAIvD,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAG1D"}
@@ -0,0 +1,97 @@
1
+ export type VersionManagerErrorCode = 'VM-1001' | 'VM-1002' | 'VM-1003' | 'VM-1004' | 'VM-1005' | 'VM-1006' | 'VM-1007' | 'VM-1008' | 'VM-1009' | 'VM-2001' | 'VM-2002' | 'VM-2003' | 'VM-2004' | 'VM-3001' | 'VM-3002' | 'VM-3003' | 'VM-3004' | 'VM-4001' | 'VM-5001' | 'VM-6001' | 'VM-6002' | 'VM-7001' | 'VM-9999';
2
+ export interface VersionManagerExceptionInit {
3
+ message: string;
4
+ cause?: unknown;
5
+ metadata?: Record<string, unknown>;
6
+ retryable?: boolean;
7
+ }
8
+ export declare abstract class VersionManagerException extends Error {
9
+ abstract readonly code: VersionManagerErrorCode;
10
+ readonly cause: unknown;
11
+ readonly metadata: Readonly<Record<string, unknown>>;
12
+ readonly retryable: boolean;
13
+ readonly timestamp: number;
14
+ constructor(init: VersionManagerExceptionInit);
15
+ }
16
+ export declare class InvalidConfigException extends VersionManagerException {
17
+ readonly code: "VM-1001";
18
+ }
19
+ export declare class NotInitializedException extends VersionManagerException {
20
+ readonly code: "VM-1002";
21
+ }
22
+ export declare class NotReadyException extends VersionManagerException {
23
+ readonly code: "VM-1003";
24
+ }
25
+ export declare class SchemaValidationException extends VersionManagerException {
26
+ readonly code: "VM-1004";
27
+ }
28
+ export declare class BoundaryValidationException extends VersionManagerException {
29
+ readonly code: "VM-1005";
30
+ }
31
+ export declare class SignatureVerificationException extends VersionManagerException {
32
+ readonly code: "VM-1006";
33
+ }
34
+ export declare class ConfigSizeLimitExceededException extends VersionManagerException {
35
+ readonly code: "VM-1007";
36
+ }
37
+ export declare class UntrustedKeyIdException extends VersionManagerException {
38
+ readonly code: "VM-1008";
39
+ }
40
+ export declare class EnvironmentOverrideConflictException extends VersionManagerException {
41
+ readonly code: "VM-1009";
42
+ }
43
+ export declare abstract class NetworkException extends VersionManagerException {
44
+ }
45
+ export declare class RequestTimeoutException extends NetworkException {
46
+ readonly code: "VM-2001";
47
+ readonly retryable = true;
48
+ }
49
+ export declare class RateLimitException extends NetworkException {
50
+ readonly code: "VM-2002";
51
+ readonly retryable = true;
52
+ }
53
+ export declare class OfflineException extends NetworkException {
54
+ readonly code: "VM-2003";
55
+ readonly retryable = true;
56
+ }
57
+ export declare class TlsHandshakeException extends NetworkException {
58
+ readonly code: "VM-2004";
59
+ }
60
+ export declare abstract class StoreProviderException extends VersionManagerException {
61
+ }
62
+ export declare class AppNotFoundException extends StoreProviderException {
63
+ readonly code: "VM-3001";
64
+ }
65
+ export declare class StorePermissionException extends StoreProviderException {
66
+ readonly code: "VM-3002";
67
+ }
68
+ export declare class UnsupportedStoreException extends StoreProviderException {
69
+ readonly code: "VM-3003";
70
+ }
71
+ export declare class StoreResponseParseException extends StoreProviderException {
72
+ readonly code: "VM-3004";
73
+ }
74
+ export declare class InvalidVersionFormatException extends VersionManagerException {
75
+ readonly code: "VM-4001";
76
+ }
77
+ export declare class PolicyEvaluationException extends VersionManagerException {
78
+ readonly code: "VM-5001";
79
+ }
80
+ export declare abstract class CacheException extends VersionManagerException {
81
+ }
82
+ export declare class CacheCorruptionException extends CacheException {
83
+ readonly code: "VM-6001";
84
+ }
85
+ export declare class CacheWriteException extends CacheException {
86
+ readonly code: "VM-6002";
87
+ readonly retryable = true;
88
+ }
89
+ export declare class PlatformBridgeException extends VersionManagerException {
90
+ readonly code: "VM-7001";
91
+ }
92
+ export declare class UnknownVersionManagerException extends VersionManagerException {
93
+ readonly code: "VM-9999";
94
+ }
95
+ export declare function toVersionManagerException(error: unknown): VersionManagerException;
96
+ export declare function isConfigTierException(error: unknown): error is VersionManagerException;
97
+ //# sourceMappingURL=VersionManagerException.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionManagerException.d.ts","sourceRoot":"","sources":["../../../../../src/domain/errors/VersionManagerException.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,8BAAsB,uBAAwB,SAAQ,KAAK;IACzD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,IAAI,EAAE,2BAA2B;CAQ9C;AAED,qBAAa,sBAAuB,SAAQ,uBAAuB;IACjE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,uBAAwB,SAAQ,uBAAuB;IAClE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,iBAAkB,SAAQ,uBAAuB;IAC5D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,yBAA0B,SAAQ,uBAAuB;IACpE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,2BAA4B,SAAQ,uBAAuB;IACtE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,8BAA+B,SAAQ,uBAAuB;IACzE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,gCAAiC,SAAQ,uBAAuB;IAC3E,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,uBAAwB,SAAQ,uBAAuB;IAClE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,oCAAqC,SAAQ,uBAAuB;IAC/E,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,8BAAsB,gBAAiB,SAAQ,uBAAuB;CAAG;AAEzE,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,SAAkB,SAAS,QAAQ;CACpC;AAED,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,SAAkB,SAAS,QAAQ;CACpC;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,SAAkB,SAAS,QAAQ;CACpC;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,8BAAsB,sBAAuB,SAAQ,uBAAuB;CAAG;AAE/E,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,yBAA0B,SAAQ,sBAAsB;IACnE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,2BAA4B,SAAQ,sBAAsB;IACrE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,6BAA8B,SAAQ,uBAAuB;IACxE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,yBAA0B,SAAQ,uBAAuB;IACpE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,8BAAsB,cAAe,SAAQ,uBAAuB;CAAG;AAEvE,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,SAAkB,SAAS,QAAQ;CACpC;AAED,qBAAa,uBAAwB,SAAQ,uBAAuB;IAClE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,qBAAa,8BAA+B,SAAQ,uBAAuB;IACzE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;CACpC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,uBAAuB,CAIzB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,uBAAuB,CAIlC"}
@@ -0,0 +1,15 @@
1
+ import type { UpdateInfo } from './UpdateInfo';
2
+ export declare const ActionType: {
3
+ readonly NO_ACTION: "NO_ACTION";
4
+ readonly FORCE_UPDATE: "FORCE_UPDATE";
5
+ readonly SOFT_UPDATE: "SOFT_UPDATE";
6
+ readonly OPTIONAL_REMINDER: "OPTIONAL_REMINDER";
7
+ };
8
+ export type ActionType = (typeof ActionType)[keyof typeof ActionType];
9
+ export interface ActionPlan {
10
+ readonly type: ActionType;
11
+ readonly updateInfo: UpdateInfo | null;
12
+ readonly reason: string;
13
+ readonly decidedAt: number;
14
+ }
15
+ //# sourceMappingURL=ActionPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionPlan.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/ActionPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,86 @@
1
+ import type { StoreLinksOptions } from './VersionManagerOptions';
2
+ /** Doc 03 §1.1 — the loadable configuration document (payload of a SignedConfigEnvelope). */
3
+ export interface VersionManagerConfigDocument {
4
+ readonly localVersionIdentifier?: string;
5
+ readonly remoteConfigUrl?: string;
6
+ readonly cache?: {
7
+ readonly ttlMs?: number;
8
+ readonly storage?: 'memory' | 'persistent';
9
+ };
10
+ readonly network?: {
11
+ readonly requestTimeoutMs?: number;
12
+ readonly retry?: {
13
+ readonly maxAttempts?: number;
14
+ readonly backoff?: 'fixed' | 'exponential-jitter';
15
+ readonly baseDelayMs?: number;
16
+ };
17
+ };
18
+ readonly alerts?: {
19
+ readonly forceUpdateBelow?: string;
20
+ readonly reminderDelayMs?: number;
21
+ readonly customUiHookIds?: readonly string[];
22
+ };
23
+ readonly stores?: StoreLinksOptions;
24
+ /**
25
+ * Only ever read from tier 4 (configure()) per §4.2 — a document cannot alter the
26
+ * rules used to verify documents. Present in the type for schema-shape completeness
27
+ * (an incoming document that includes it is structurally valid but this field is
28
+ * always ignored by the precedence merge — see ConfigResolutionPipeline).
29
+ */
30
+ readonly security?: {
31
+ readonly signatureAlgorithm?: 'ed25519' | 'hmac-sha256' | 'none';
32
+ readonly trustedKeyIds?: readonly string[];
33
+ };
34
+ readonly schemaVersion?: string;
35
+ }
36
+ export type SignatureAlgorithm = 'ed25519' | 'hmac-sha256' | 'none';
37
+ /** Doc 03 §3.1 — envelope wrapping every local/remote config document. */
38
+ export interface SignedConfigEnvelope {
39
+ readonly schemaVersion: string;
40
+ readonly payload: VersionManagerConfigDocument;
41
+ readonly signature: {
42
+ readonly algorithm: SignatureAlgorithm;
43
+ readonly keyId: string;
44
+ readonly value: string;
45
+ readonly signedAt: string;
46
+ };
47
+ }
48
+ /** Opaque raw bytes/JSON before schema validation has proven its shape. */
49
+ export type RawConfigDocument = unknown;
50
+ export interface ConfigLoadRequest {
51
+ readonly defaults: import('./VersionManagerOptions').VersionManagerOptions;
52
+ }
53
+ export interface FetchOptions {
54
+ readonly timeoutMs: number;
55
+ readonly headers?: Readonly<Record<string, string>>;
56
+ }
57
+ export interface TrustedKeySet {
58
+ readonly algorithm: SignatureAlgorithm;
59
+ /**
60
+ * Trusted keyIds only — per doc 03 §3.4, actual key material (public keys / HMAC
61
+ * secrets) is embedded at build time on the native side (Info.plist/BuildConfig), not
62
+ * shipped through JS. JS only needs to confirm the envelope's keyId is one this app
63
+ * trusts, then hand the keyId to ICryptoProvider, which resolves it to key material
64
+ * natively.
65
+ */
66
+ readonly keys: ReadonlySet<string>;
67
+ }
68
+ export type ConfigTier = 'env' | 'remote' | 'local' | 'default';
69
+ export interface SchemaValidationResult {
70
+ readonly valid: boolean;
71
+ readonly errors: readonly string[];
72
+ }
73
+ export interface BoundaryValidationResult {
74
+ readonly valid: boolean;
75
+ /** Field-path -> reason, so the pipeline can drop only the offending fields (§7.3). */
76
+ readonly fieldErrors: ReadonlyMap<string, string>;
77
+ }
78
+ export interface SignatureVerificationResult {
79
+ readonly valid: boolean;
80
+ readonly reason?: string;
81
+ }
82
+ export interface ResolvedConfigWithProvenance {
83
+ readonly config: import('./VersionManagerOptions').ResolvedVersionManagerConfig;
84
+ readonly tier: ConfigTier;
85
+ }
86
+ //# sourceMappingURL=ConfigDocument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigDocument.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/ConfigDocument.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { VersionManagerException } from '../errors/VersionManagerException';
2
+ import type { ActionPlan } from './ActionPlan';
3
+ import type { LifecycleState } from './LifecycleState';
4
+ import type { UpdateInfo } from './UpdateInfo';
5
+ export interface StateChangedEvent {
6
+ readonly from: LifecycleState;
7
+ readonly to: LifecycleState;
8
+ readonly timestamp: number;
9
+ }
10
+ export interface UpdateDetectedEvent {
11
+ readonly updateInfo: UpdateInfo;
12
+ readonly actionPlan: ActionPlan;
13
+ readonly timestamp: number;
14
+ }
15
+ export interface UpdateNotAvailableEvent {
16
+ readonly currentVersion: string;
17
+ readonly checkedAt: number;
18
+ }
19
+ export type UserActionType = 'update_clicked' | 'later_clicked' | 'ignore_clicked' | 'dismiss_clicked';
20
+ export interface UserActionEvent {
21
+ readonly action: UserActionType;
22
+ readonly updateInfo: UpdateInfo;
23
+ readonly timestamp: number;
24
+ }
25
+ export type ErrorPhase = 'config' | 'check' | 'policy' | 'presentation';
26
+ export interface VersionManagerErrorEvent {
27
+ readonly error: VersionManagerException;
28
+ readonly phase: ErrorPhase;
29
+ readonly timestamp: number;
30
+ }
31
+ export interface VersionManagerEventMap {
32
+ stateChanged: StateChangedEvent;
33
+ updateDetected: UpdateDetectedEvent;
34
+ updateNotAvailable: UpdateNotAvailableEvent;
35
+ userAction: UserActionEvent;
36
+ error: VersionManagerErrorEvent;
37
+ }
38
+ export type VersionManagerEventType = keyof VersionManagerEventMap;
39
+ //# sourceMappingURL=Events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/Events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,cAAc,GACxB,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;AAExE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,iBAAiB,CAAC;IAChC,cAAc,EAAE,mBAAmB,CAAC;IACpC,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,wBAAwB,CAAC;CACjC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare const LifecycleState: {
2
+ readonly UNINITIALIZED: "UNINITIALIZED";
3
+ readonly CONFIG_LOADING: "CONFIG_LOADING";
4
+ readonly IDLE: "IDLE";
5
+ readonly VERSION_CHECKING: "VERSION_CHECKING";
6
+ readonly DECIDING: "DECIDING";
7
+ readonly FORCE_UPDATE_DISPLAYED: "FORCE_UPDATE_DISPLAYED";
8
+ readonly SOFT_UPDATE_DISPLAYED: "SOFT_UPDATE_DISPLAYED";
9
+ readonly REJECTED_WAITING_REMINDER: "REJECTED_WAITING_REMINDER";
10
+ readonly TERMINATED: "TERMINATED";
11
+ };
12
+ export type LifecycleState = (typeof LifecycleState)[keyof typeof LifecycleState];
13
+ /**
14
+ * Allowed transitions. Anything not listed here is invalid and
15
+ * ILifecycleStateMachine.transition() must reject it.
16
+ */
17
+ export declare const LIFECYCLE_TRANSITIONS: Readonly<Record<LifecycleState, readonly LifecycleState[]>>;
18
+ //# sourceMappingURL=LifecycleState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleState.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/LifecycleState.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;;;;CAUjB,CAAC;AAEX,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,MAAM,CAAC,cAAc,EAAE,SAAS,cAAc,EAAE,CAAC,CA6BlD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface ParsedVersion {
2
+ readonly raw: string;
3
+ readonly major: number;
4
+ readonly minor: number;
5
+ readonly patch: number;
6
+ readonly prerelease: readonly (string | number)[];
7
+ readonly build: readonly string[];
8
+ }
9
+ //# sourceMappingURL=ParsedVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParsedVersion.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/ParsedVersion.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ export type PlatformId = 'ios' | 'android' | 'web';
2
+ export type StoreProviderId = 'apple' | 'google-play' | 'huawei' | 'amazon' | 'custom' | 'firebase-remote-config';
3
+ //# sourceMappingURL=PlatformId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformId.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/PlatformId.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,wBAAwB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface CheckForUpdatesOptions {
2
+ bypassCache?: boolean;
3
+ silent?: boolean;
4
+ timeoutMs?: number;
5
+ context?: Record<string, unknown>;
6
+ }
7
+ export interface ForceTriggerOptions {
8
+ reason?: string;
9
+ }
10
+ export interface ResetIgnoredVersionsOptions {
11
+ versions?: string[];
12
+ }
13
+ //# sourceMappingURL=PublicApiOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicApiOptions.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/PublicApiOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,21 @@
1
+ import type { PlatformId, StoreProviderId } from './PlatformId';
2
+ export interface RemoteVersionInfo {
3
+ readonly latestVersion: string;
4
+ readonly storeUrl: string;
5
+ readonly releaseNotes: string | null;
6
+ readonly minimumOsVersion: string | null;
7
+ readonly fetchedAt: number;
8
+ readonly provider: StoreProviderId;
9
+ }
10
+ export interface VersionCheckRequest {
11
+ readonly currentVersion: string;
12
+ readonly bundleId: string;
13
+ readonly platform: PlatformId;
14
+ readonly bypassCache: boolean;
15
+ readonly timeoutMs: number;
16
+ }
17
+ export interface UserVersionDecision {
18
+ readonly ignoredVersions: readonly string[];
19
+ readonly remindMeLaterUntil: number | null;
20
+ }
21
+ //# sourceMappingURL=RemoteVersionInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteVersionInfo.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/RemoteVersionInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C"}
@@ -0,0 +1,12 @@
1
+ export interface StoreLookupRequest {
2
+ readonly bundleId: string;
3
+ readonly region: string | null;
4
+ readonly timeoutMs: number;
5
+ }
6
+ export interface StoreLookupResult {
7
+ readonly latestVersion: string;
8
+ readonly storeUrl: string;
9
+ readonly releaseNotes: string | null;
10
+ readonly minimumOsVersion: string | null;
11
+ }
12
+ //# sourceMappingURL=StoreLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreLookup.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/StoreLookup.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export type Unsubscribe = () => void;
2
+ //# sourceMappingURL=Unsubscribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unsubscribe.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/Unsubscribe.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { StoreProviderId } from './PlatformId';
2
+ export interface UpdateInfo {
3
+ readonly currentVersion: string;
4
+ readonly latestVersion: string;
5
+ readonly storeUrl: string;
6
+ readonly releaseNotes: string | null;
7
+ readonly isForceUpdate: boolean;
8
+ readonly provider: StoreProviderId;
9
+ readonly fetchedAt: number;
10
+ }
11
+ //# sourceMappingURL=UpdateInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateInfo.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/UpdateInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,149 @@
1
+ import type { IPlatformBridge } from '../ports/IPlatformBridge';
2
+ import type { SignatureAlgorithm, VersionManagerConfigDocument } from './ConfigDocument';
3
+ import type { RemoteVersionInfo } from './RemoteVersionInfo';
4
+ export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug' | 'verbose';
5
+ export interface LogEntry {
6
+ readonly level: LogLevel;
7
+ readonly message: string;
8
+ readonly timestamp: number;
9
+ readonly metadata?: Readonly<Record<string, unknown>>;
10
+ }
11
+ export interface ILogSink {
12
+ write(entry: LogEntry): void;
13
+ }
14
+ export interface LoggingOptions {
15
+ level?: LogLevel;
16
+ sink?: ILogSink;
17
+ }
18
+ export interface CacheOptions {
19
+ ttlMs?: number;
20
+ storage?: 'memory' | 'persistent';
21
+ bustOnManualCheck?: boolean;
22
+ }
23
+ export interface RetryOptions {
24
+ maxAttempts?: number;
25
+ backoff?: 'fixed' | 'exponential-jitter';
26
+ baseDelayMs?: number;
27
+ }
28
+ export interface FallbackOptions {
29
+ onNetworkError?: 'useCache' | 'useDefaultConfig' | 'noAction';
30
+ defaultConfig?: RemoteVersionInfo;
31
+ requestTimeoutMs?: number;
32
+ retry?: RetryOptions;
33
+ }
34
+ export interface StoreLinksOptions {
35
+ /**
36
+ * appStoreId is optional — when omitted, the App Store lookup falls back to the
37
+ * running app's bundle id (IAppInfoProvider.getBundleId(), read at check time)
38
+ * instead of the numeric App Store Connect id.
39
+ */
40
+ ios?: {
41
+ appStoreId?: string;
42
+ region?: string;
43
+ };
44
+ /**
45
+ * packageName is optional — when omitted, the Google Play lookup falls back to the
46
+ * running app's bundle id (which *is* the Android package name) at check time.
47
+ */
48
+ android?: {
49
+ packageName?: string;
50
+ };
51
+ huawei?: {
52
+ appId: string;
53
+ };
54
+ amazon?: {
55
+ asin: string;
56
+ };
57
+ custom?: {
58
+ url: string;
59
+ headers?: Record<string, string>;
60
+ };
61
+ }
62
+ export interface PolicyOptions {
63
+ forceUpdateBelow?: string;
64
+ reminderIntervalMs?: number;
65
+ rolloutPercentage?: number;
66
+ }
67
+ /** Doc 03 §1.1 Security field group — fixed by the app developer, tier-4 only. */
68
+ export interface SecurityOptions {
69
+ signatureAlgorithm?: SignatureAlgorithm;
70
+ trustedKeyIds?: string[];
71
+ }
72
+ /**
73
+ * Doc 03 §0/§4 — optional loadable-config-document extension points layered on top of
74
+ * the VersionManagerOptions "default fallback" tier. All optional; an app that supplies
75
+ * none of these still works, driven entirely by configure() options (tier 4 only).
76
+ */
77
+ export interface ConfigSourcesOptions {
78
+ /**
79
+ * Bundled local config envelope. Metro/webpack natively supports JSON imports
80
+ * (`import localConfig from './vm-config.json'`), which already avoids the
81
+ * double-buffer-copy §5.1 is concerned about for a <=64KB document without requiring
82
+ * a dedicated native mmap reader — pass the imported envelope object directly.
83
+ */
84
+ local?: import('./ConfigDocument').SignedConfigEnvelope;
85
+ /** Extra headers/timeout for the remote fetch beyond FallbackOptions.requestTimeoutMs. */
86
+ remoteFetchHeaders?: Record<string, string>;
87
+ /** Explicit runtime overrides — highest-precedence tier (§4.2 tier 1). */
88
+ envOverrides?: Partial<VersionManagerConfigDocument>;
89
+ /** Registered customUiHookIds -> handler ids that a config document is allowed to activate (§1.2, §7.1 VM-1009). */
90
+ registeredUiHookIds?: string[];
91
+ }
92
+ export interface VersionManagerOptions {
93
+ appVersion?: string;
94
+ logging?: LoggingOptions;
95
+ cache?: CacheOptions;
96
+ fallback?: FallbackOptions;
97
+ stores: StoreLinksOptions;
98
+ policy?: PolicyOptions;
99
+ /** DI override, advanced/testing use only (Prompt 2 §1.1). */
100
+ platformBridge?: IPlatformBridge;
101
+ strictReadiness?: boolean;
102
+ /** Doc 03 §1.1 — if absent, the SDK operates in local-file/default-only mode. */
103
+ remoteConfigUrl?: string;
104
+ security?: SecurityOptions;
105
+ configSources?: ConfigSourcesOptions;
106
+ }
107
+ /**
108
+ * Fully-defaulted, immutable configuration actually consumed at runtime, produced by
109
+ * IConfigProvider.resolve() from a VersionManagerOptions "default fallback" tier
110
+ * (Prompt 3 §4.2). Local-file/remote/env overlay tiers are extension points on
111
+ * IConfigProvider, not yet wired into a signed-envelope pipeline in this pass —
112
+ * see docs/architecture/03-configuration-system.md §3 for that follow-up scope.
113
+ */
114
+ export interface ResolvedVersionManagerConfig {
115
+ readonly appVersion: string | null;
116
+ readonly logging: {
117
+ readonly level: LogLevel;
118
+ readonly sink: ILogSink;
119
+ };
120
+ readonly cache: {
121
+ readonly ttlMs: number;
122
+ readonly storage: 'memory' | 'persistent';
123
+ readonly bustOnManualCheck: boolean;
124
+ };
125
+ readonly fallback: {
126
+ readonly onNetworkError: 'useCache' | 'useDefaultConfig' | 'noAction';
127
+ readonly defaultConfig: RemoteVersionInfo | null;
128
+ readonly requestTimeoutMs: number;
129
+ readonly retry: {
130
+ readonly maxAttempts: number;
131
+ readonly backoff: 'fixed' | 'exponential-jitter';
132
+ readonly baseDelayMs: number;
133
+ };
134
+ };
135
+ readonly stores: StoreLinksOptions;
136
+ readonly policy: {
137
+ readonly forceUpdateBelow: string | null;
138
+ readonly reminderIntervalMs: number;
139
+ readonly rolloutPercentage: number;
140
+ };
141
+ readonly strictReadiness: boolean;
142
+ readonly remoteConfigUrl: string | null;
143
+ readonly security: {
144
+ readonly signatureAlgorithm: SignatureAlgorithm;
145
+ readonly trustedKeyIds: readonly string[];
146
+ };
147
+ readonly schemaVersion: string;
148
+ }
149
+ //# sourceMappingURL=VersionManagerOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionManagerOptions.d.ts","sourceRoot":"","sources":["../../../../../src/domain/models/VersionManagerOptions.ts"],"names":[],"mappings":"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"}