akanjs 3.0.0-beta.20 → 3.0.0-beta.21

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 (731) hide show
  1. package/README.ko.md +0 -1
  2. package/README.md +0 -1
  3. package/base/baseEnv.ts +40 -3
  4. package/client/cookie.ts +56 -20
  5. package/client/device.ts +47 -95
  6. package/client/frameConfig.ts +2 -2
  7. package/client/native.ts +44 -0
  8. package/client/router.ts +11 -1
  9. package/client/rscNavigation.ts +5 -0
  10. package/client/storage.ts +68 -39
  11. package/fetch/client/fetchClient.ts +13 -4
  12. package/index.ts +47 -46
  13. package/package.json +6 -87
  14. package/server/devtools/signalSerializer.ts +1 -2
  15. package/server/hmr/devHmrController.ts +29 -11
  16. package/server/resolver/signal.resolver.ts +1 -10
  17. package/server/routeTreeBuilder.ts +8 -11
  18. package/server/routing/apiRouter.ts +15 -2
  19. package/server/rscClient.tsx +1 -2
  20. package/server/ssrFromRscRenderer.tsx +2 -0
  21. package/server/webRouter.ts +1 -0
  22. package/signal/CrossSiteGuard.ts +34 -2
  23. package/signal/endpoint.ts +12 -7
  24. package/signal/endpointInfo.ts +13 -0
  25. package/signal/internal.ts +9 -5
  26. package/signal/serializer/fetch.serializer.ts +6 -3
  27. package/signal/slice.ts +34 -24
  28. package/store/baseSt.ts +0 -1
  29. package/store/storeInstance.ts +29 -17
  30. package/types/client/cookie.d.ts +6 -4
  31. package/types/client/device.d.ts +7 -10
  32. package/types/client/native.d.ts +26 -0
  33. package/types/client/rscNavigation.d.ts +4 -0
  34. package/types/client/storage.d.ts +8 -1
  35. package/types/index.d.ts +48 -44
  36. package/types/server/hmr/devHmrController.d.ts +2 -1
  37. package/types/server/resolver/signal.resolver.d.ts +0 -1
  38. package/types/server/rscClient.d.ts +0 -3
  39. package/types/signal/CrossSiteGuard.d.ts +7 -2
  40. package/types/signal/endpoint.d.ts +1 -1
  41. package/types/signal/endpointInfo.d.ts +3 -0
  42. package/types/signal/slice.d.ts +3 -2
  43. package/types/store/baseSt.d.ts +0 -13
  44. package/types/vendor/@akanjs/native/packages/cli/src/api.d.ts +182 -0
  45. package/types/vendor/@akanjs/native/packages/cli/src/commands/build.d.ts +28 -0
  46. package/types/vendor/@akanjs/native/packages/cli/src/commands/compat.d.ts +2 -0
  47. package/types/vendor/@akanjs/native/packages/cli/src/commands/dev.d.ts +2 -0
  48. package/types/vendor/@akanjs/native/packages/cli/src/commands/doctor.d.ts +37 -0
  49. package/types/vendor/@akanjs/native/packages/cli/src/commands/plugin.d.ts +2 -0
  50. package/types/vendor/@akanjs/native/packages/cli/src/commands/signing.d.ts +2 -0
  51. package/types/vendor/@akanjs/native/packages/cli/src/commands/test.d.ts +2 -0
  52. package/types/vendor/@akanjs/native/packages/cli/src/commands/toolchain.d.ts +2 -0
  53. package/types/vendor/@akanjs/native/packages/cli/src/commands/update.d.ts +2 -0
  54. package/types/vendor/@akanjs/native/packages/cli/src/config.d.ts +278 -0
  55. package/types/vendor/@akanjs/native/packages/cli/src/index.d.ts +2 -0
  56. package/types/vendor/@akanjs/native/packages/cli/src/lib/acl.d.ts +21 -0
  57. package/types/vendor/@akanjs/native/packages/cli/src/lib/apilevel.d.ts +40 -0
  58. package/types/vendor/@akanjs/native/packages/cli/src/lib/apk.d.ts +36 -0
  59. package/types/vendor/@akanjs/native/packages/cli/src/lib/args.d.ts +9 -0
  60. package/types/vendor/@akanjs/native/packages/cli/src/lib/boot.d.ts +32 -0
  61. package/types/vendor/@akanjs/native/packages/cli/src/lib/chrome.d.ts +6 -0
  62. package/types/vendor/@akanjs/native/packages/cli/src/lib/codegen.d.ts +94 -0
  63. package/types/vendor/@akanjs/native/packages/cli/src/lib/compat.d.ts +49 -0
  64. package/types/vendor/@akanjs/native/packages/cli/src/lib/configkeys.d.ts +2 -0
  65. package/types/vendor/@akanjs/native/packages/cli/src/lib/csp.d.ts +51 -0
  66. package/types/vendor/@akanjs/native/packages/cli/src/lib/env.d.ts +44 -0
  67. package/types/vendor/@akanjs/native/packages/cli/src/lib/exec.d.ts +31 -0
  68. package/types/vendor/@akanjs/native/packages/cli/src/lib/googleservices.d.ts +2 -0
  69. package/types/vendor/@akanjs/native/packages/cli/src/lib/hmr.d.ts +120 -0
  70. package/types/vendor/@akanjs/native/packages/cli/src/lib/html.d.ts +20 -0
  71. package/types/vendor/@akanjs/native/packages/cli/src/lib/icons.d.ts +44 -0
  72. package/types/vendor/@akanjs/native/packages/cli/src/lib/image.d.ts +21 -0
  73. package/types/vendor/@akanjs/native/packages/cli/src/lib/iossigning.d.ts +81 -0
  74. package/types/vendor/@akanjs/native/packages/cli/src/lib/launch.d.ts +51 -0
  75. package/types/vendor/@akanjs/native/packages/cli/src/lib/log.d.ts +42 -0
  76. package/types/vendor/@akanjs/native/packages/cli/src/lib/manifestmerge.d.ts +18 -0
  77. package/types/vendor/@akanjs/native/packages/cli/src/lib/maven.d.ts +97 -0
  78. package/types/vendor/@akanjs/native/packages/cli/src/lib/names.d.ts +45 -0
  79. package/types/vendor/@akanjs/native/packages/cli/src/lib/native-plugins.d.ts +67 -0
  80. package/types/vendor/@akanjs/native/packages/cli/src/lib/nativeconfig.d.ts +11 -0
  81. package/types/vendor/@akanjs/native/packages/cli/src/lib/permissions.d.ts +10 -0
  82. package/types/vendor/@akanjs/native/packages/cli/src/lib/plist.d.ts +11 -0
  83. package/types/vendor/@akanjs/native/packages/cli/src/lib/png.d.ts +11 -0
  84. package/types/vendor/@akanjs/native/packages/cli/src/lib/prepare.d.ts +138 -0
  85. package/types/vendor/@akanjs/native/packages/cli/src/lib/privacy.d.ts +13 -0
  86. package/types/vendor/@akanjs/native/packages/cli/src/lib/project.d.ts +208 -0
  87. package/types/vendor/@akanjs/native/packages/cli/src/lib/root.d.ts +1 -0
  88. package/types/vendor/@akanjs/native/packages/cli/src/lib/routes.d.ts +1 -0
  89. package/types/vendor/@akanjs/native/packages/cli/src/lib/serve.d.ts +17 -0
  90. package/types/vendor/@akanjs/native/packages/cli/src/lib/signing.d.ts +14 -0
  91. package/types/vendor/@akanjs/native/packages/cli/src/lib/spec.d.ts +96 -0
  92. package/types/vendor/@akanjs/native/packages/cli/src/lib/toolchains.d.ts +150 -0
  93. package/types/vendor/@akanjs/native/packages/cli/src/lib/updates.d.ts +77 -0
  94. package/types/vendor/@akanjs/native/packages/cli/src/lib/vectors.d.ts +13 -0
  95. package/types/vendor/@akanjs/native/packages/cli/src/lib/xml.d.ts +13 -0
  96. package/types/vendor/@akanjs/native/packages/cli/src/platforms/android.d.ts +57 -0
  97. package/types/vendor/@akanjs/native/packages/cli/src/platforms/desktop-update.d.ts +4 -0
  98. package/types/vendor/@akanjs/native/packages/cli/src/platforms/desktop.d.ts +40 -0
  99. package/types/vendor/@akanjs/native/packages/cli/src/platforms/index.d.ts +14 -0
  100. package/types/vendor/@akanjs/native/packages/cli/src/platforms/ios.d.ts +44 -0
  101. package/types/vendor/@akanjs/native/packages/cli/src/platforms/linux.d.ts +6 -0
  102. package/types/vendor/@akanjs/native/packages/cli/src/platforms/macos.d.ts +7 -0
  103. package/types/vendor/@akanjs/native/packages/cli/src/platforms/targets.d.ts +4 -0
  104. package/types/vendor/@akanjs/native/packages/cli/src/platforms/web-run.d.ts +15 -0
  105. package/types/vendor/@akanjs/native/packages/cli/src/platforms/web.d.ts +2 -0
  106. package/types/vendor/@akanjs/native/packages/cli/src/platforms/windows.d.ts +8 -0
  107. package/types/vendor/@akanjs/native/packages/cli/src/platforms.d.ts +1 -0
  108. package/types/vendor/@akanjs/native/packages/cli/src.d.ts +1 -0
  109. package/types/vendor/@akanjs/native/packages/core/src/acl.d.ts +97 -0
  110. package/types/vendor/@akanjs/native/packages/core/src/boot.d.ts +66 -0
  111. package/types/vendor/@akanjs/native/packages/core/src/contract.d.ts +35 -0
  112. package/types/vendor/@akanjs/native/packages/core/src/errors.d.ts +27 -0
  113. package/types/vendor/@akanjs/native/packages/core/src/files.d.ts +23 -0
  114. package/types/vendor/@akanjs/native/packages/core/src/index.d.ts +14 -0
  115. package/types/vendor/@akanjs/native/packages/core/src/kernel.d.ts +112 -0
  116. package/types/vendor/@akanjs/native/packages/core/src/live.d.ts +12 -0
  117. package/types/vendor/@akanjs/native/packages/core/src/mime.d.ts +2 -0
  118. package/types/vendor/@akanjs/native/packages/core/src/plugin.d.ts +71 -0
  119. package/types/vendor/@akanjs/native/packages/core/src/protocol.d.ts +109 -0
  120. package/types/vendor/@akanjs/native/packages/core/src/runtime.d.ts +66 -0
  121. package/types/vendor/@akanjs/native/packages/core/src/state.d.ts +28 -0
  122. package/types/vendor/@akanjs/native/packages/core/src/testing.d.ts +41 -0
  123. package/types/vendor/@akanjs/native/packages/core/src/version.d.ts +2 -0
  124. package/types/vendor/@akanjs/native/packages/core/src/veto.d.ts +17 -0
  125. package/types/vendor/@akanjs/native/packages/core/src.d.ts +1 -0
  126. package/types/vendor/@akanjs/native/packages/desktop/src/deeplinks.d.ts +24 -0
  127. package/types/vendor/@akanjs/native/packages/desktop/src/delta.d.ts +2 -0
  128. package/types/vendor/@akanjs/native/packages/desktop/src/dispatcher.d.ts +95 -0
  129. package/types/vendor/@akanjs/native/packages/desktop/src/ffi.d.ts +144 -0
  130. package/types/vendor/@akanjs/native/packages/desktop/src/host.d.ts +11 -0
  131. package/types/vendor/@akanjs/native/packages/desktop/src/lifecycle.d.ts +40 -0
  132. package/types/vendor/@akanjs/native/packages/desktop/src/main.d.ts +4 -0
  133. package/types/vendor/@akanjs/native/packages/desktop/src/page-veto.d.ts +17 -0
  134. package/types/vendor/@akanjs/native/packages/desktop/src/paths.d.ts +25 -0
  135. package/types/vendor/@akanjs/native/packages/desktop/src/plugin.d.ts +179 -0
  136. package/types/vendor/@akanjs/native/packages/react/src/index.d.ts +8 -0
  137. package/types/vendor/@akanjs/native/packages/react/src.d.ts +1 -0
  138. package/types/vendor/@akanjs/native/plugins/accessibility/src/announce.d.ts +8 -0
  139. package/types/vendor/@akanjs/native/plugins/accessibility/src/index.d.ts +47 -0
  140. package/types/vendor/@akanjs/native/plugins/accessibility/src/web.d.ts +4 -0
  141. package/types/vendor/@akanjs/native/plugins/accessibility/src.d.ts +1 -0
  142. package/types/vendor/@akanjs/native/plugins/app/src/desktop.d.ts +3 -0
  143. package/types/vendor/@akanjs/native/plugins/app/src/index.d.ts +66 -0
  144. package/types/vendor/@akanjs/native/plugins/app/src/web.d.ts +2 -0
  145. package/types/vendor/@akanjs/native/plugins/app/src.d.ts +1 -0
  146. package/types/vendor/@akanjs/native/plugins/app-state/src/index.d.ts +19 -0
  147. package/types/vendor/@akanjs/native/plugins/app-state/src/web.d.ts +2 -0
  148. package/types/vendor/@akanjs/native/plugins/app-state/src.d.ts +1 -0
  149. package/types/vendor/@akanjs/native/plugins/appearance/src/desktop.d.ts +9 -0
  150. package/types/vendor/@akanjs/native/plugins/appearance/src/index.d.ts +32 -0
  151. package/types/vendor/@akanjs/native/plugins/appearance/src/setting.d.ts +6 -0
  152. package/types/vendor/@akanjs/native/plugins/appearance/src/web.d.ts +3 -0
  153. package/types/vendor/@akanjs/native/plugins/appearance/src.d.ts +1 -0
  154. package/types/vendor/@akanjs/native/plugins/auth-session/src/args.d.ts +18 -0
  155. package/types/vendor/@akanjs/native/plugins/auth-session/src/desktop.d.ts +17 -0
  156. package/types/vendor/@akanjs/native/plugins/auth-session/src/index.d.ts +41 -0
  157. package/types/vendor/@akanjs/native/plugins/auth-session/src.d.ts +1 -0
  158. package/types/vendor/@akanjs/native/plugins/autostart/src/desktop.d.ts +44 -0
  159. package/types/vendor/@akanjs/native/plugins/autostart/src/index.d.ts +44 -0
  160. package/types/vendor/@akanjs/native/plugins/autostart/src.d.ts +1 -0
  161. package/types/vendor/@akanjs/native/plugins/badge/src/count.d.ts +4 -0
  162. package/types/vendor/@akanjs/native/plugins/badge/src/desktop.d.ts +3 -0
  163. package/types/vendor/@akanjs/native/plugins/badge/src/index.d.ts +37 -0
  164. package/types/vendor/@akanjs/native/plugins/badge/src/web.d.ts +2 -0
  165. package/types/vendor/@akanjs/native/plugins/badge/src.d.ts +1 -0
  166. package/types/vendor/@akanjs/native/plugins/biometric/src/index.d.ts +53 -0
  167. package/types/vendor/@akanjs/native/plugins/biometric/src.d.ts +1 -0
  168. package/types/vendor/@akanjs/native/plugins/browser/src/args.d.ts +8 -0
  169. package/types/vendor/@akanjs/native/plugins/browser/src/desktop.d.ts +9 -0
  170. package/types/vendor/@akanjs/native/plugins/browser/src/index.d.ts +36 -0
  171. package/types/vendor/@akanjs/native/plugins/browser/src/web.d.ts +2 -0
  172. package/types/vendor/@akanjs/native/plugins/browser/src.d.ts +1 -0
  173. package/types/vendor/@akanjs/native/plugins/camera/src/desktop.d.ts +5 -0
  174. package/types/vendor/@akanjs/native/plugins/camera/src/index.d.ts +55 -0
  175. package/types/vendor/@akanjs/native/plugins/camera/src/web.d.ts +2 -0
  176. package/types/vendor/@akanjs/native/plugins/camera/src.d.ts +1 -0
  177. package/types/vendor/@akanjs/native/plugins/clipboard/src/desktop.d.ts +8 -0
  178. package/types/vendor/@akanjs/native/plugins/clipboard/src/index.d.ts +40 -0
  179. package/types/vendor/@akanjs/native/plugins/clipboard/src/web.d.ts +2 -0
  180. package/types/vendor/@akanjs/native/plugins/clipboard/src.d.ts +1 -0
  181. package/types/vendor/@akanjs/native/plugins/device/src/desktop.d.ts +33 -0
  182. package/types/vendor/@akanjs/native/plugins/device/src/index.d.ts +55 -0
  183. package/types/vendor/@akanjs/native/plugins/device/src/web.d.ts +22 -0
  184. package/types/vendor/@akanjs/native/plugins/device/src.d.ts +1 -0
  185. package/types/vendor/@akanjs/native/plugins/dialog/src/desktop.d.ts +3 -0
  186. package/types/vendor/@akanjs/native/plugins/dialog/src/index.d.ts +60 -0
  187. package/types/vendor/@akanjs/native/plugins/dialog/src/options.d.ts +29 -0
  188. package/types/vendor/@akanjs/native/plugins/dialog/src/web.d.ts +2 -0
  189. package/types/vendor/@akanjs/native/plugins/dialog/src.d.ts +1 -0
  190. package/types/vendor/@akanjs/native/plugins/dock/src/desktop.d.ts +3 -0
  191. package/types/vendor/@akanjs/native/plugins/dock/src/index.d.ts +46 -0
  192. package/types/vendor/@akanjs/native/plugins/dock/src.d.ts +1 -0
  193. package/types/vendor/@akanjs/native/plugins/file-picker/src/common.d.ts +33 -0
  194. package/types/vendor/@akanjs/native/plugins/file-picker/src/desktop.d.ts +9 -0
  195. package/types/vendor/@akanjs/native/plugins/file-picker/src/index.d.ts +84 -0
  196. package/types/vendor/@akanjs/native/plugins/file-picker/src/web.d.ts +6 -0
  197. package/types/vendor/@akanjs/native/plugins/file-picker/src.d.ts +1 -0
  198. package/types/vendor/@akanjs/native/plugins/filesystem/src/common.d.ts +49 -0
  199. package/types/vendor/@akanjs/native/plugins/filesystem/src/desktop.d.ts +8 -0
  200. package/types/vendor/@akanjs/native/plugins/filesystem/src/index.d.ts +123 -0
  201. package/types/vendor/@akanjs/native/plugins/filesystem/src/web.d.ts +2 -0
  202. package/types/vendor/@akanjs/native/plugins/filesystem/src.d.ts +1 -0
  203. package/types/vendor/@akanjs/native/plugins/geolocation/src/index.d.ts +93 -0
  204. package/types/vendor/@akanjs/native/plugins/geolocation/src/web.d.ts +11 -0
  205. package/types/vendor/@akanjs/native/plugins/geolocation/src.d.ts +1 -0
  206. package/types/vendor/@akanjs/native/plugins/global-shortcut/src/desktop.d.ts +3 -0
  207. package/types/vendor/@akanjs/native/plugins/global-shortcut/src/index.d.ts +52 -0
  208. package/types/vendor/@akanjs/native/plugins/global-shortcut/src.d.ts +1 -0
  209. package/types/vendor/@akanjs/native/plugins/haptics/src/index.d.ts +31 -0
  210. package/types/vendor/@akanjs/native/plugins/haptics/src/web.d.ts +2 -0
  211. package/types/vendor/@akanjs/native/plugins/haptics/src.d.ts +1 -0
  212. package/types/vendor/@akanjs/native/plugins/http/src/common.d.ts +71 -0
  213. package/types/vendor/@akanjs/native/plugins/http/src/desktop.d.ts +5 -0
  214. package/types/vendor/@akanjs/native/plugins/http/src/index.d.ts +104 -0
  215. package/types/vendor/@akanjs/native/plugins/http/src/web.d.ts +2 -0
  216. package/types/vendor/@akanjs/native/plugins/http/src.d.ts +1 -0
  217. package/types/vendor/@akanjs/native/plugins/iap/src/index.d.ts +171 -0
  218. package/types/vendor/@akanjs/native/plugins/iap/src.d.ts +1 -0
  219. package/types/vendor/@akanjs/native/plugins/keep-awake/src/desktop.d.ts +15 -0
  220. package/types/vendor/@akanjs/native/plugins/keep-awake/src/index.d.ts +33 -0
  221. package/types/vendor/@akanjs/native/plugins/keep-awake/src/web.d.ts +2 -0
  222. package/types/vendor/@akanjs/native/plugins/keep-awake/src.d.ts +1 -0
  223. package/types/vendor/@akanjs/native/plugins/keyboard/src/index.d.ts +42 -0
  224. package/types/vendor/@akanjs/native/plugins/keyboard/src/web.d.ts +2 -0
  225. package/types/vendor/@akanjs/native/plugins/keyboard/src.d.ts +1 -0
  226. package/types/vendor/@akanjs/native/plugins/local-notifications/src/desktop.d.ts +29 -0
  227. package/types/vendor/@akanjs/native/plugins/local-notifications/src/index.d.ts +126 -0
  228. package/types/vendor/@akanjs/native/plugins/local-notifications/src/schedule.d.ts +38 -0
  229. package/types/vendor/@akanjs/native/plugins/local-notifications/src/timers.d.ts +25 -0
  230. package/types/vendor/@akanjs/native/plugins/local-notifications/src/web.d.ts +4 -0
  231. package/types/vendor/@akanjs/native/plugins/local-notifications/src.d.ts +1 -0
  232. package/types/vendor/@akanjs/native/plugins/menu/src/desktop.d.ts +3 -0
  233. package/types/vendor/@akanjs/native/plugins/menu/src/index.d.ts +85 -0
  234. package/types/vendor/@akanjs/native/plugins/menu/src.d.ts +1 -0
  235. package/types/vendor/@akanjs/native/plugins/network/src/index.d.ts +22 -0
  236. package/types/vendor/@akanjs/native/plugins/network/src/web.d.ts +3 -0
  237. package/types/vendor/@akanjs/native/plugins/network/src.d.ts +1 -0
  238. package/types/vendor/@akanjs/native/plugins/opener/src/desktop.d.ts +14 -0
  239. package/types/vendor/@akanjs/native/plugins/opener/src/index.d.ts +33 -0
  240. package/types/vendor/@akanjs/native/plugins/opener/src/url.d.ts +16 -0
  241. package/types/vendor/@akanjs/native/plugins/opener/src/web.d.ts +2 -0
  242. package/types/vendor/@akanjs/native/plugins/opener/src.d.ts +1 -0
  243. package/types/vendor/@akanjs/native/plugins/preferences/src/desktop.d.ts +3 -0
  244. package/types/vendor/@akanjs/native/plugins/preferences/src/index.d.ts +26 -0
  245. package/types/vendor/@akanjs/native/plugins/preferences/src/web.d.ts +2 -0
  246. package/types/vendor/@akanjs/native/plugins/preferences/src.d.ts +1 -0
  247. package/types/vendor/@akanjs/native/plugins/push/src/index.d.ts +57 -0
  248. package/types/vendor/@akanjs/native/plugins/push/src.d.ts +1 -0
  249. package/types/vendor/@akanjs/native/plugins/screen/src/desktop.d.ts +3 -0
  250. package/types/vendor/@akanjs/native/plugins/screen/src/index.d.ts +70 -0
  251. package/types/vendor/@akanjs/native/plugins/screen/src/web.d.ts +18 -0
  252. package/types/vendor/@akanjs/native/plugins/screen/src.d.ts +1 -0
  253. package/types/vendor/@akanjs/native/plugins/screen-orientation/src/index.d.ts +32 -0
  254. package/types/vendor/@akanjs/native/plugins/screen-orientation/src/types.d.ts +8 -0
  255. package/types/vendor/@akanjs/native/plugins/screen-orientation/src/web.d.ts +3 -0
  256. package/types/vendor/@akanjs/native/plugins/screen-orientation/src.d.ts +1 -0
  257. package/types/vendor/@akanjs/native/plugins/secure-storage/src/desktop.d.ts +16 -0
  258. package/types/vendor/@akanjs/native/plugins/secure-storage/src/index.d.ts +39 -0
  259. package/types/vendor/@akanjs/native/plugins/secure-storage/src.d.ts +1 -0
  260. package/types/vendor/@akanjs/native/plugins/share/src/index.d.ts +55 -0
  261. package/types/vendor/@akanjs/native/plugins/share/src/options.d.ts +6 -0
  262. package/types/vendor/@akanjs/native/plugins/share/src/web.d.ts +5 -0
  263. package/types/vendor/@akanjs/native/plugins/share/src.d.ts +1 -0
  264. package/types/vendor/@akanjs/native/plugins/single-instance/src/desktop.d.ts +8 -0
  265. package/types/vendor/@akanjs/native/plugins/single-instance/src/index.d.ts +25 -0
  266. package/types/vendor/@akanjs/native/plugins/single-instance/src/socket.d.ts +46 -0
  267. package/types/vendor/@akanjs/native/plugins/single-instance/src.d.ts +1 -0
  268. package/types/vendor/@akanjs/native/plugins/splash-screen/src/index.d.ts +19 -0
  269. package/types/vendor/@akanjs/native/plugins/splash-screen/src/web.d.ts +4 -0
  270. package/types/vendor/@akanjs/native/plugins/splash-screen/src.d.ts +1 -0
  271. package/types/vendor/@akanjs/native/plugins/sqlite/src/common.d.ts +34 -0
  272. package/types/vendor/@akanjs/native/plugins/sqlite/src/desktop.d.ts +6 -0
  273. package/types/vendor/@akanjs/native/plugins/sqlite/src/index.d.ts +115 -0
  274. package/types/vendor/@akanjs/native/plugins/sqlite/src.d.ts +1 -0
  275. package/types/vendor/@akanjs/native/plugins/toast/src/index.d.ts +30 -0
  276. package/types/vendor/@akanjs/native/plugins/toast/src/queue.d.ts +23 -0
  277. package/types/vendor/@akanjs/native/plugins/toast/src/web.d.ts +2 -0
  278. package/types/vendor/@akanjs/native/plugins/toast/src.d.ts +1 -0
  279. package/types/vendor/@akanjs/native/plugins/tray/src/desktop.d.ts +3 -0
  280. package/types/vendor/@akanjs/native/plugins/tray/src/index.d.ts +113 -0
  281. package/types/vendor/@akanjs/native/plugins/tray/src.d.ts +1 -0
  282. package/types/vendor/@akanjs/native/plugins/updates/src/desktop.d.ts +4 -0
  283. package/types/vendor/@akanjs/native/plugins/updates/src/index.d.ts +68 -0
  284. package/types/vendor/@akanjs/native/plugins/updates/src.d.ts +1 -0
  285. package/types/vendor/@akanjs/native/plugins/window/src/desktop.d.ts +6 -0
  286. package/types/vendor/@akanjs/native/plugins/window/src/index.d.ts +185 -0
  287. package/types/vendor/@akanjs/native/plugins/window/src/web.d.ts +2 -0
  288. package/types/vendor/@akanjs/native/plugins/window/src.d.ts +1 -0
  289. package/types/vendor/@akanjs/native/plugins/window-state/src/desktop.d.ts +7 -0
  290. package/types/vendor/@akanjs/native/plugins/window-state/src/index.d.ts +33 -0
  291. package/types/vendor/@akanjs/native/plugins/window-state/src/state.d.ts +39 -0
  292. package/types/vendor/@akanjs/native/plugins/window-state/src.d.ts +1 -0
  293. package/types/webkit/index.d.ts +0 -2
  294. package/types/webkit/nativeNavigation.d.ts +25 -0
  295. package/types/webkit/nativePurchase.d.ts +37 -0
  296. package/types/webkit/useCamera.d.ts +13 -15
  297. package/types/webkit/useGeoLocation.d.ts +4 -5
  298. package/types/webkit/usePurchase.d.ts +12 -16
  299. package/ui/Link/Anchor.tsx +2 -5
  300. package/ui/System/Client.tsx +2 -6
  301. package/vendor/@akanjs/native/LICENSE +21 -0
  302. package/vendor/@akanjs/native/README.ko.md +88 -0
  303. package/vendor/@akanjs/native/README.md +93 -0
  304. package/vendor/@akanjs/native/THIRD_PARTY_NOTICES.md +237 -0
  305. package/vendor/@akanjs/native/native/android/maven.lock.json +1751 -0
  306. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeAcl.kt +243 -0
  307. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeActivity.kt +936 -0
  308. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeApplication.kt +189 -0
  309. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeAssetServer.kt +225 -0
  310. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeBridge.kt +444 -0
  311. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeCompat.kt +55 -0
  312. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeContract.kt +99 -0
  313. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeEd25519.kt +100 -0
  314. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeFileProvider.kt +71 -0
  315. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeKernel.kt +324 -0
  316. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativePlugin.kt +361 -0
  317. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeSpec.kt +100 -0
  318. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeUpdates.kt +305 -0
  319. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeVectors.kt +132 -0
  320. package/vendor/@akanjs/native/native/desktop/Cargo.lock +2565 -0
  321. package/vendor/@akanjs/native/native/desktop/Cargo.toml +49 -0
  322. package/vendor/@akanjs/native/native/desktop/build.rs +19 -0
  323. package/vendor/@akanjs/native/native/desktop/rust-toolchain.toml +7 -0
  324. package/vendor/@akanjs/native/native/desktop/src/accelerator.rs +466 -0
  325. package/vendor/@akanjs/native/native/desktop/src/autostart.rs +158 -0
  326. package/vendor/@akanjs/native/native/desktop/src/camera.rs +53 -0
  327. package/vendor/@akanjs/native/native/desktop/src/chrome.rs +710 -0
  328. package/vendor/@akanjs/native/native/desktop/src/contract.rs +105 -0
  329. package/vendor/@akanjs/native/native/desktop/src/devproxy.rs +234 -0
  330. package/vendor/@akanjs/native/native/desktop/src/dialog_args.rs +189 -0
  331. package/vendor/@akanjs/native/native/desktop/src/dock.rs +209 -0
  332. package/vendor/@akanjs/native/native/desktop/src/hotkey.rs +209 -0
  333. package/vendor/@akanjs/native/native/desktop/src/js_panels.rs +125 -0
  334. package/vendor/@akanjs/native/native/desktop/src/json.rs +272 -0
  335. package/vendor/@akanjs/native/native/desktop/src/keychain.rs +151 -0
  336. package/vendor/@akanjs/native/native/desktop/src/lib.rs +2185 -0
  337. package/vendor/@akanjs/native/native/desktop/src/linux/appearance.rs +177 -0
  338. package/vendor/@akanjs/native/native/desktop/src/linux/camera.rs +11 -0
  339. package/vendor/@akanjs/native/native/desktop/src/linux/clipboard.rs +48 -0
  340. package/vendor/@akanjs/native/native/desktop/src/linux/device.rs +9 -0
  341. package/vendor/@akanjs/native/native/desktop/src/linux/dialogs.rs +348 -0
  342. package/vendor/@akanjs/native/native/desktop/src/linux/dock.rs +146 -0
  343. package/vendor/@akanjs/native/native/desktop/src/linux/hotkey.rs +228 -0
  344. package/vendor/@akanjs/native/native/desktop/src/linux/keychain.rs +243 -0
  345. package/vendor/@akanjs/native/native/desktop/src/linux/menu.rs +445 -0
  346. package/vendor/@akanjs/native/native/desktop/src/linux/mod.rs +116 -0
  347. package/vendor/@akanjs/native/native/desktop/src/linux/notify.rs +211 -0
  348. package/vendor/@akanjs/native/native/desktop/src/linux/open.rs +79 -0
  349. package/vendor/@akanjs/native/native/desktop/src/linux/power.rs +155 -0
  350. package/vendor/@akanjs/native/native/desktop/src/linux/screen.rs +158 -0
  351. package/vendor/@akanjs/native/native/desktop/src/linux/tray.rs +604 -0
  352. package/vendor/@akanjs/native/native/desktop/src/menu.rs +517 -0
  353. package/vendor/@akanjs/native/native/desktop/src/navigation.rs +381 -0
  354. package/vendor/@akanjs/native/native/desktop/src/notify.rs +411 -0
  355. package/vendor/@akanjs/native/native/desktop/src/notify_schedule.rs +382 -0
  356. package/vendor/@akanjs/native/native/desktop/src/page_menu.rs +287 -0
  357. package/vendor/@akanjs/native/native/desktop/src/panels.rs +333 -0
  358. package/vendor/@akanjs/native/native/desktop/src/placement.rs +92 -0
  359. package/vendor/@akanjs/native/native/desktop/src/routes.rs +153 -0
  360. package/vendor/@akanjs/native/native/desktop/src/screen.rs +190 -0
  361. package/vendor/@akanjs/native/native/desktop/src/tray.rs +279 -0
  362. package/vendor/@akanjs/native/native/desktop/src/vectors.rs +126 -0
  363. package/vendor/@akanjs/native/native/desktop/src/win/appearance.rs +51 -0
  364. package/vendor/@akanjs/native/native/desktop/src/win/autostart.rs +77 -0
  365. package/vendor/@akanjs/native/native/desktop/src/win/camera.rs +34 -0
  366. package/vendor/@akanjs/native/native/desktop/src/win/clipboard.rs +106 -0
  367. package/vendor/@akanjs/native/native/desktop/src/win/device.rs +80 -0
  368. package/vendor/@akanjs/native/native/desktop/src/win/dialogs.rs +917 -0
  369. package/vendor/@akanjs/native/native/desktop/src/win/dock.rs +228 -0
  370. package/vendor/@akanjs/native/native/desktop/src/win/hotkey.rs +110 -0
  371. package/vendor/@akanjs/native/native/desktop/src/win/keychain.rs +103 -0
  372. package/vendor/@akanjs/native/native/desktop/src/win/menu.rs +500 -0
  373. package/vendor/@akanjs/native/native/desktop/src/win/mod.rs +100 -0
  374. package/vendor/@akanjs/native/native/desktop/src/win/msgwin.rs +86 -0
  375. package/vendor/@akanjs/native/native/desktop/src/win/notify.rs +334 -0
  376. package/vendor/@akanjs/native/native/desktop/src/win/open.rs +127 -0
  377. package/vendor/@akanjs/native/native/desktop/src/win/power.rs +64 -0
  378. package/vendor/@akanjs/native/native/desktop/src/win/registry.rs +87 -0
  379. package/vendor/@akanjs/native/native/desktop/src/win/screen.rs +127 -0
  380. package/vendor/@akanjs/native/native/desktop/src/win/tray.rs +280 -0
  381. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeAcl.swift +241 -0
  382. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeApp.swift +285 -0
  383. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeBridge.swift +407 -0
  384. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeContract.swift +106 -0
  385. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeKernel.swift +317 -0
  386. package/vendor/@akanjs/native/native/ios/Sources/AkanNativePlugin.swift +250 -0
  387. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeSchemeHandler.swift +209 -0
  388. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeShell.swift +161 -0
  389. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeSpec.swift +143 -0
  390. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeUpdates.swift +270 -0
  391. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeVectors.swift +155 -0
  392. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeViewController.swift +371 -0
  393. package/vendor/@akanjs/native/packages/cli/src/api.ts +600 -0
  394. package/vendor/@akanjs/native/packages/cli/src/commands/build.ts +101 -0
  395. package/vendor/@akanjs/native/packages/cli/src/commands/compat.ts +53 -0
  396. package/vendor/@akanjs/native/packages/cli/src/commands/dev.ts +249 -0
  397. package/vendor/@akanjs/native/packages/cli/src/commands/doctor.ts +536 -0
  398. package/vendor/@akanjs/native/packages/cli/src/commands/plugin.ts +164 -0
  399. package/vendor/@akanjs/native/packages/cli/src/commands/signing.ts +32 -0
  400. package/vendor/@akanjs/native/packages/cli/src/commands/test.ts +130 -0
  401. package/vendor/@akanjs/native/packages/cli/src/commands/toolchain.ts +143 -0
  402. package/vendor/@akanjs/native/packages/cli/src/commands/update.ts +168 -0
  403. package/vendor/@akanjs/native/packages/cli/src/config.ts +257 -0
  404. package/vendor/@akanjs/native/packages/cli/src/index.ts +77 -0
  405. package/vendor/@akanjs/native/packages/cli/src/lib/acl.ts +420 -0
  406. package/vendor/@akanjs/native/packages/cli/src/lib/apilevel.ts +245 -0
  407. package/vendor/@akanjs/native/packages/cli/src/lib/apk.ts +203 -0
  408. package/vendor/@akanjs/native/packages/cli/src/lib/args.ts +44 -0
  409. package/vendor/@akanjs/native/packages/cli/src/lib/boot.ts +73 -0
  410. package/vendor/@akanjs/native/packages/cli/src/lib/chrome.ts +89 -0
  411. package/vendor/@akanjs/native/packages/cli/src/lib/codegen.ts +1128 -0
  412. package/vendor/@akanjs/native/packages/cli/src/lib/compat.ts +185 -0
  413. package/vendor/@akanjs/native/packages/cli/src/lib/configkeys.ts +91 -0
  414. package/vendor/@akanjs/native/packages/cli/src/lib/csp.ts +198 -0
  415. package/vendor/@akanjs/native/packages/cli/src/lib/env.ts +257 -0
  416. package/vendor/@akanjs/native/packages/cli/src/lib/exec.ts +104 -0
  417. package/vendor/@akanjs/native/packages/cli/src/lib/googleservices.ts +53 -0
  418. package/vendor/@akanjs/native/packages/cli/src/lib/hmr.ts +534 -0
  419. package/vendor/@akanjs/native/packages/cli/src/lib/html.ts +63 -0
  420. package/vendor/@akanjs/native/packages/cli/src/lib/icons.ts +316 -0
  421. package/vendor/@akanjs/native/packages/cli/src/lib/image.ts +175 -0
  422. package/vendor/@akanjs/native/packages/cli/src/lib/iossigning.ts +295 -0
  423. package/vendor/@akanjs/native/packages/cli/src/lib/launch.ts +98 -0
  424. package/vendor/@akanjs/native/packages/cli/src/lib/log.ts +105 -0
  425. package/vendor/@akanjs/native/packages/cli/src/lib/manifestmerge.ts +107 -0
  426. package/vendor/@akanjs/native/packages/cli/src/lib/maven.ts +244 -0
  427. package/vendor/@akanjs/native/packages/cli/src/lib/names.ts +202 -0
  428. package/vendor/@akanjs/native/packages/cli/src/lib/native-plugins.ts +326 -0
  429. package/vendor/@akanjs/native/packages/cli/src/lib/nativeconfig.ts +68 -0
  430. package/vendor/@akanjs/native/packages/cli/src/lib/permissions.ts +80 -0
  431. package/vendor/@akanjs/native/packages/cli/src/lib/plist.ts +139 -0
  432. package/vendor/@akanjs/native/packages/cli/src/lib/png.ts +240 -0
  433. package/vendor/@akanjs/native/packages/cli/src/lib/prepare.ts +290 -0
  434. package/vendor/@akanjs/native/packages/cli/src/lib/privacy.ts +64 -0
  435. package/vendor/@akanjs/native/packages/cli/src/lib/project.ts +710 -0
  436. package/vendor/@akanjs/native/packages/cli/src/lib/root.ts +18 -0
  437. package/vendor/@akanjs/native/packages/cli/src/lib/routes.ts +3 -0
  438. package/vendor/@akanjs/native/packages/cli/src/lib/serve.ts +83 -0
  439. package/vendor/@akanjs/native/packages/cli/src/lib/signing.ts +117 -0
  440. package/vendor/@akanjs/native/packages/cli/src/lib/spec.ts +521 -0
  441. package/vendor/@akanjs/native/packages/cli/src/lib/toolchains.ts +579 -0
  442. package/vendor/@akanjs/native/packages/cli/src/lib/updates.ts +160 -0
  443. package/vendor/@akanjs/native/packages/cli/src/lib/vectors.ts +121 -0
  444. package/vendor/@akanjs/native/packages/cli/src/lib/xml.ts +72 -0
  445. package/vendor/@akanjs/native/packages/cli/src/platforms/android.ts +1320 -0
  446. package/vendor/@akanjs/native/packages/cli/src/platforms/desktop-update.ts +78 -0
  447. package/vendor/@akanjs/native/packages/cli/src/platforms/desktop.ts +279 -0
  448. package/vendor/@akanjs/native/packages/cli/src/platforms/index.ts +31 -0
  449. package/vendor/@akanjs/native/packages/cli/src/platforms/ios.ts +801 -0
  450. package/vendor/@akanjs/native/packages/cli/src/platforms/linux.ts +52 -0
  451. package/vendor/@akanjs/native/packages/cli/src/platforms/macos.ts +97 -0
  452. package/vendor/@akanjs/native/packages/cli/src/platforms/targets.ts +12 -0
  453. package/vendor/@akanjs/native/packages/cli/src/platforms/web-run.ts +69 -0
  454. package/vendor/@akanjs/native/packages/cli/src/platforms/web.ts +28 -0
  455. package/vendor/@akanjs/native/packages/cli/src/platforms/windows.ts +82 -0
  456. package/vendor/@akanjs/native/packages/core/contract.json +96 -0
  457. package/vendor/@akanjs/native/packages/core/src/acl.ts +272 -0
  458. package/vendor/@akanjs/native/packages/core/src/boot.ts +97 -0
  459. package/vendor/@akanjs/native/packages/core/src/contract.ts +100 -0
  460. package/vendor/@akanjs/native/packages/core/src/errors.ts +95 -0
  461. package/vendor/@akanjs/native/packages/core/src/files.ts +105 -0
  462. package/vendor/@akanjs/native/packages/core/src/index.ts +35 -0
  463. package/vendor/@akanjs/native/packages/core/src/kernel.ts +281 -0
  464. package/vendor/@akanjs/native/packages/core/src/live.ts +62 -0
  465. package/vendor/@akanjs/native/packages/core/src/mime.ts +8 -0
  466. package/vendor/@akanjs/native/packages/core/src/plugin.ts +358 -0
  467. package/vendor/@akanjs/native/packages/core/src/protocol.ts +194 -0
  468. package/vendor/@akanjs/native/packages/core/src/runtime.ts +520 -0
  469. package/vendor/@akanjs/native/packages/core/src/state.ts +46 -0
  470. package/vendor/@akanjs/native/packages/core/src/testing.ts +176 -0
  471. package/vendor/@akanjs/native/packages/core/src/version.ts +2 -0
  472. package/vendor/@akanjs/native/packages/core/src/veto.ts +55 -0
  473. package/vendor/@akanjs/native/packages/core/vectors/acl.json +57 -0
  474. package/vendor/@akanjs/native/packages/core/vectors/bridge.json +76 -0
  475. package/vendor/@akanjs/native/packages/core/vectors/ed25519.json +29 -0
  476. package/vendor/@akanjs/native/packages/core/vectors/ids.json +73 -0
  477. package/vendor/@akanjs/native/packages/core/vectors/navigation.json +75 -0
  478. package/vendor/@akanjs/native/packages/core/vectors/ranges.json +39 -0
  479. package/vendor/@akanjs/native/packages/core/vectors/retained.json +17 -0
  480. package/vendor/@akanjs/native/packages/core/vectors/routes.json +66 -0
  481. package/vendor/@akanjs/native/packages/core/vectors/scope.json +143 -0
  482. package/vendor/@akanjs/native/packages/desktop/src/deeplinks.ts +143 -0
  483. package/vendor/@akanjs/native/packages/desktop/src/delta.ts +174 -0
  484. package/vendor/@akanjs/native/packages/desktop/src/dispatcher.ts +679 -0
  485. package/vendor/@akanjs/native/packages/desktop/src/ffi.ts +76 -0
  486. package/vendor/@akanjs/native/packages/desktop/src/host.ts +355 -0
  487. package/vendor/@akanjs/native/packages/desktop/src/lifecycle.ts +142 -0
  488. package/vendor/@akanjs/native/packages/desktop/src/main.ts +133 -0
  489. package/vendor/@akanjs/native/packages/desktop/src/page-veto.ts +103 -0
  490. package/vendor/@akanjs/native/packages/desktop/src/paths.ts +59 -0
  491. package/vendor/@akanjs/native/packages/desktop/src/plugin.ts +232 -0
  492. package/vendor/@akanjs/native/packages/react/src/index.ts +23 -0
  493. package/vendor/@akanjs/native/plugins/accessibility/android/AccessibilityPlugin.kt +96 -0
  494. package/vendor/@akanjs/native/plugins/accessibility/ios/AccessibilityPlugin.swift +92 -0
  495. package/vendor/@akanjs/native/plugins/accessibility/native-plugin.json +21 -0
  496. package/vendor/@akanjs/native/plugins/accessibility/src/announce.ts +71 -0
  497. package/vendor/@akanjs/native/plugins/accessibility/src/index.ts +77 -0
  498. package/vendor/@akanjs/native/plugins/accessibility/src/web.ts +52 -0
  499. package/vendor/@akanjs/native/plugins/app/android/AppPlugin.kt +72 -0
  500. package/vendor/@akanjs/native/plugins/app/ios/AppPlugin.swift +52 -0
  501. package/vendor/@akanjs/native/plugins/app/native-plugin.json +21 -0
  502. package/vendor/@akanjs/native/plugins/app/src/desktop.ts +64 -0
  503. package/vendor/@akanjs/native/plugins/app/src/index.ts +77 -0
  504. package/vendor/@akanjs/native/plugins/app/src/web.ts +12 -0
  505. package/vendor/@akanjs/native/plugins/app-state/android/AppStatePlugin.kt +54 -0
  506. package/vendor/@akanjs/native/plugins/app-state/ios/AppStatePlugin.swift +58 -0
  507. package/vendor/@akanjs/native/plugins/app-state/native-plugin.json +17 -0
  508. package/vendor/@akanjs/native/plugins/app-state/src/index.ts +42 -0
  509. package/vendor/@akanjs/native/plugins/app-state/src/web.ts +33 -0
  510. package/vendor/@akanjs/native/plugins/appearance/android/AppearancePlugin.kt +133 -0
  511. package/vendor/@akanjs/native/plugins/appearance/ios/AppearancePlugin.swift +109 -0
  512. package/vendor/@akanjs/native/plugins/appearance/native-plugin.json +18 -0
  513. package/vendor/@akanjs/native/plugins/appearance/src/desktop.ts +133 -0
  514. package/vendor/@akanjs/native/plugins/appearance/src/index.ts +62 -0
  515. package/vendor/@akanjs/native/plugins/appearance/src/setting.ts +18 -0
  516. package/vendor/@akanjs/native/plugins/appearance/src/web.ts +25 -0
  517. package/vendor/@akanjs/native/plugins/auth-session/android/AuthSessionPlugin.kt +171 -0
  518. package/vendor/@akanjs/native/plugins/auth-session/ios/AuthSessionPlugin.swift +112 -0
  519. package/vendor/@akanjs/native/plugins/auth-session/native-plugin.json +19 -0
  520. package/vendor/@akanjs/native/plugins/auth-session/src/args.ts +62 -0
  521. package/vendor/@akanjs/native/plugins/auth-session/src/desktop.ts +133 -0
  522. package/vendor/@akanjs/native/plugins/auth-session/src/index.ts +39 -0
  523. package/vendor/@akanjs/native/plugins/autostart/native-plugin.json +10 -0
  524. package/vendor/@akanjs/native/plugins/autostart/src/desktop.ts +189 -0
  525. package/vendor/@akanjs/native/plugins/autostart/src/index.ts +51 -0
  526. package/vendor/@akanjs/native/plugins/badge/ios/BadgePlugin.swift +92 -0
  527. package/vendor/@akanjs/native/plugins/badge/native-plugin.json +15 -0
  528. package/vendor/@akanjs/native/plugins/badge/src/count.ts +12 -0
  529. package/vendor/@akanjs/native/plugins/badge/src/desktop.ts +24 -0
  530. package/vendor/@akanjs/native/plugins/badge/src/index.ts +40 -0
  531. package/vendor/@akanjs/native/plugins/badge/src/web.ts +37 -0
  532. package/vendor/@akanjs/native/plugins/biometric/android/BiometricPlugin.kt +179 -0
  533. package/vendor/@akanjs/native/plugins/biometric/ios/BiometricPlugin.swift +129 -0
  534. package/vendor/@akanjs/native/plugins/biometric/native-plugin.json +22 -0
  535. package/vendor/@akanjs/native/plugins/biometric/src/index.ts +100 -0
  536. package/vendor/@akanjs/native/plugins/browser/android/BrowserPlugin.kt +178 -0
  537. package/vendor/@akanjs/native/plugins/browser/ios/BrowserPlugin.swift +63 -0
  538. package/vendor/@akanjs/native/plugins/browser/native-plugin.json +22 -0
  539. package/vendor/@akanjs/native/plugins/browser/src/args.ts +34 -0
  540. package/vendor/@akanjs/native/plugins/browser/src/desktop.ts +40 -0
  541. package/vendor/@akanjs/native/plugins/browser/src/index.ts +47 -0
  542. package/vendor/@akanjs/native/plugins/browser/src/web.ts +60 -0
  543. package/vendor/@akanjs/native/plugins/camera/android/CameraPlugin.kt +365 -0
  544. package/vendor/@akanjs/native/plugins/camera/ios/CameraPlugin.swift +296 -0
  545. package/vendor/@akanjs/native/plugins/camera/native-plugin.json +32 -0
  546. package/vendor/@akanjs/native/plugins/camera/src/desktop.ts +27 -0
  547. package/vendor/@akanjs/native/plugins/camera/src/index.ts +85 -0
  548. package/vendor/@akanjs/native/plugins/camera/src/web.ts +267 -0
  549. package/vendor/@akanjs/native/plugins/clipboard/android/ClipboardPlugin.kt +51 -0
  550. package/vendor/@akanjs/native/plugins/clipboard/ios/ClipboardPlugin.swift +35 -0
  551. package/vendor/@akanjs/native/plugins/clipboard/native-plugin.json +17 -0
  552. package/vendor/@akanjs/native/plugins/clipboard/src/desktop.ts +66 -0
  553. package/vendor/@akanjs/native/plugins/clipboard/src/index.ts +72 -0
  554. package/vendor/@akanjs/native/plugins/clipboard/src/web.ts +69 -0
  555. package/vendor/@akanjs/native/plugins/device/android/DevicePlugin.kt +70 -0
  556. package/vendor/@akanjs/native/plugins/device/ios/DevicePlugin.swift +80 -0
  557. package/vendor/@akanjs/native/plugins/device/native-plugin.json +18 -0
  558. package/vendor/@akanjs/native/plugins/device/src/desktop.ts +276 -0
  559. package/vendor/@akanjs/native/plugins/device/src/index.ts +72 -0
  560. package/vendor/@akanjs/native/plugins/device/src/web.ts +162 -0
  561. package/vendor/@akanjs/native/plugins/dialog/android/DialogPlugin.kt +260 -0
  562. package/vendor/@akanjs/native/plugins/dialog/ios/DialogPlugin.swift +198 -0
  563. package/vendor/@akanjs/native/plugins/dialog/native-plugin.json +18 -0
  564. package/vendor/@akanjs/native/plugins/dialog/src/desktop.ts +80 -0
  565. package/vendor/@akanjs/native/plugins/dialog/src/index.ts +87 -0
  566. package/vendor/@akanjs/native/plugins/dialog/src/options.ts +111 -0
  567. package/vendor/@akanjs/native/plugins/dialog/src/web.ts +296 -0
  568. package/vendor/@akanjs/native/plugins/dock/native-plugin.json +10 -0
  569. package/vendor/@akanjs/native/plugins/dock/src/desktop.ts +34 -0
  570. package/vendor/@akanjs/native/plugins/dock/src/index.ts +46 -0
  571. package/vendor/@akanjs/native/plugins/file-picker/android/FilePickerPlugin.kt +316 -0
  572. package/vendor/@akanjs/native/plugins/file-picker/ios/FilePickerPlugin.swift +366 -0
  573. package/vendor/@akanjs/native/plugins/file-picker/native-plugin.json +18 -0
  574. package/vendor/@akanjs/native/plugins/file-picker/src/common.ts +125 -0
  575. package/vendor/@akanjs/native/plugins/file-picker/src/desktop.ts +164 -0
  576. package/vendor/@akanjs/native/plugins/file-picker/src/index.ts +187 -0
  577. package/vendor/@akanjs/native/plugins/file-picker/src/web.ts +158 -0
  578. package/vendor/@akanjs/native/plugins/filesystem/android/FilesystemPlugin.kt +561 -0
  579. package/vendor/@akanjs/native/plugins/filesystem/ios/FilesystemPlugin.swift +596 -0
  580. package/vendor/@akanjs/native/plugins/filesystem/native-plugin.json +45 -0
  581. package/vendor/@akanjs/native/plugins/filesystem/src/common.ts +150 -0
  582. package/vendor/@akanjs/native/plugins/filesystem/src/desktop.ts +438 -0
  583. package/vendor/@akanjs/native/plugins/filesystem/src/index.ts +179 -0
  584. package/vendor/@akanjs/native/plugins/filesystem/src/web.ts +334 -0
  585. package/vendor/@akanjs/native/plugins/geolocation/android/GeolocationPlugin.kt +360 -0
  586. package/vendor/@akanjs/native/plugins/geolocation/ios/GeolocationPlugin.swift +284 -0
  587. package/vendor/@akanjs/native/plugins/geolocation/native-plugin.json +23 -0
  588. package/vendor/@akanjs/native/plugins/geolocation/src/index.ts +155 -0
  589. package/vendor/@akanjs/native/plugins/geolocation/src/web.ts +132 -0
  590. package/vendor/@akanjs/native/plugins/global-shortcut/native-plugin.json +10 -0
  591. package/vendor/@akanjs/native/plugins/global-shortcut/src/desktop.ts +36 -0
  592. package/vendor/@akanjs/native/plugins/global-shortcut/src/index.ts +55 -0
  593. package/vendor/@akanjs/native/plugins/haptics/android/HapticsPlugin.kt +127 -0
  594. package/vendor/@akanjs/native/plugins/haptics/ios/HapticsPlugin.swift +127 -0
  595. package/vendor/@akanjs/native/plugins/haptics/native-plugin.json +19 -0
  596. package/vendor/@akanjs/native/plugins/haptics/src/index.ts +34 -0
  597. package/vendor/@akanjs/native/plugins/haptics/src/web.ts +53 -0
  598. package/vendor/@akanjs/native/plugins/http/android/HttpPlugin.kt +234 -0
  599. package/vendor/@akanjs/native/plugins/http/android/HttpUrl.kt +182 -0
  600. package/vendor/@akanjs/native/plugins/http/ios/HttpPlugin.swift +228 -0
  601. package/vendor/@akanjs/native/plugins/http/ios/HttpUrl.swift +166 -0
  602. package/vendor/@akanjs/native/plugins/http/native-plugin.json +27 -0
  603. package/vendor/@akanjs/native/plugins/http/src/common.ts +294 -0
  604. package/vendor/@akanjs/native/plugins/http/src/desktop.ts +69 -0
  605. package/vendor/@akanjs/native/plugins/http/src/index.ts +181 -0
  606. package/vendor/@akanjs/native/plugins/http/src/web.ts +40 -0
  607. package/vendor/@akanjs/native/plugins/iap/android/IapPlugin.kt +358 -0
  608. package/vendor/@akanjs/native/plugins/iap/ios/IapPlugin.swift +306 -0
  609. package/vendor/@akanjs/native/plugins/iap/native-plugin.json +28 -0
  610. package/vendor/@akanjs/native/plugins/iap/src/index.ts +206 -0
  611. package/vendor/@akanjs/native/plugins/keep-awake/android/KeepAwakePlugin.kt +48 -0
  612. package/vendor/@akanjs/native/plugins/keep-awake/ios/KeepAwakePlugin.swift +36 -0
  613. package/vendor/@akanjs/native/plugins/keep-awake/native-plugin.json +17 -0
  614. package/vendor/@akanjs/native/plugins/keep-awake/src/desktop.ts +127 -0
  615. package/vendor/@akanjs/native/plugins/keep-awake/src/index.ts +79 -0
  616. package/vendor/@akanjs/native/plugins/keep-awake/src/web.ts +78 -0
  617. package/vendor/@akanjs/native/plugins/keyboard/android/KeyboardPlugin.kt +77 -0
  618. package/vendor/@akanjs/native/plugins/keyboard/ios/KeyboardPlugin.swift +93 -0
  619. package/vendor/@akanjs/native/plugins/keyboard/native-plugin.json +18 -0
  620. package/vendor/@akanjs/native/plugins/keyboard/src/index.ts +78 -0
  621. package/vendor/@akanjs/native/plugins/keyboard/src/web.ts +57 -0
  622. package/vendor/@akanjs/native/plugins/local-notifications/android/LocalNotificationReceiver.kt +38 -0
  623. package/vendor/@akanjs/native/plugins/local-notifications/android/LocalNotifications.kt +284 -0
  624. package/vendor/@akanjs/native/plugins/local-notifications/android/LocalNotificationsPlugin.kt +248 -0
  625. package/vendor/@akanjs/native/plugins/local-notifications/ios/LocalNotificationsPlugin.swift +279 -0
  626. package/vendor/@akanjs/native/plugins/local-notifications/native-plugin.json +35 -0
  627. package/vendor/@akanjs/native/plugins/local-notifications/src/desktop.ts +196 -0
  628. package/vendor/@akanjs/native/plugins/local-notifications/src/index.ts +174 -0
  629. package/vendor/@akanjs/native/plugins/local-notifications/src/schedule.ts +164 -0
  630. package/vendor/@akanjs/native/plugins/local-notifications/src/timers.ts +72 -0
  631. package/vendor/@akanjs/native/plugins/local-notifications/src/web.ts +158 -0
  632. package/vendor/@akanjs/native/plugins/menu/native-plugin.json +10 -0
  633. package/vendor/@akanjs/native/plugins/menu/src/desktop.ts +52 -0
  634. package/vendor/@akanjs/native/plugins/menu/src/index.ts +107 -0
  635. package/vendor/@akanjs/native/plugins/network/android/NetworkPlugin.kt +124 -0
  636. package/vendor/@akanjs/native/plugins/network/ios/NetworkPlugin.swift +82 -0
  637. package/vendor/@akanjs/native/plugins/network/native-plugin.json +19 -0
  638. package/vendor/@akanjs/native/plugins/network/src/index.ts +59 -0
  639. package/vendor/@akanjs/native/plugins/network/src/web.ts +43 -0
  640. package/vendor/@akanjs/native/plugins/opener/android/OpenerPlugin.kt +81 -0
  641. package/vendor/@akanjs/native/plugins/opener/ios/OpenerPlugin.swift +83 -0
  642. package/vendor/@akanjs/native/plugins/opener/native-plugin.json +25 -0
  643. package/vendor/@akanjs/native/plugins/opener/src/desktop.ts +88 -0
  644. package/vendor/@akanjs/native/plugins/opener/src/index.ts +35 -0
  645. package/vendor/@akanjs/native/plugins/opener/src/url.ts +39 -0
  646. package/vendor/@akanjs/native/plugins/opener/src/web.ts +33 -0
  647. package/vendor/@akanjs/native/plugins/preferences/android/PreferencesPlugin.kt +44 -0
  648. package/vendor/@akanjs/native/plugins/preferences/ios/PreferencesPlugin.swift +47 -0
  649. package/vendor/@akanjs/native/plugins/preferences/native-plugin.json +18 -0
  650. package/vendor/@akanjs/native/plugins/preferences/src/desktop.ts +59 -0
  651. package/vendor/@akanjs/native/plugins/preferences/src/index.ts +75 -0
  652. package/vendor/@akanjs/native/plugins/preferences/src/web.ts +55 -0
  653. package/vendor/@akanjs/native/plugins/push/android/AkanNativeMessagingService.kt +17 -0
  654. package/vendor/@akanjs/native/plugins/push/android/PushPlugin.kt +257 -0
  655. package/vendor/@akanjs/native/plugins/push/ios/PushPlugin.swift +169 -0
  656. package/vendor/@akanjs/native/plugins/push/native-plugin.json +23 -0
  657. package/vendor/@akanjs/native/plugins/push/src/index.ts +73 -0
  658. package/vendor/@akanjs/native/plugins/screen/native-plugin.json +10 -0
  659. package/vendor/@akanjs/native/plugins/screen/src/desktop.ts +50 -0
  660. package/vendor/@akanjs/native/plugins/screen/src/index.ts +107 -0
  661. package/vendor/@akanjs/native/plugins/screen/src/web.ts +92 -0
  662. package/vendor/@akanjs/native/plugins/screen-orientation/android/ScreenOrientationPlugin.kt +113 -0
  663. package/vendor/@akanjs/native/plugins/screen-orientation/ios/ScreenOrientationPlugin.swift +150 -0
  664. package/vendor/@akanjs/native/plugins/screen-orientation/native-plugin.json +17 -0
  665. package/vendor/@akanjs/native/plugins/screen-orientation/src/index.ts +69 -0
  666. package/vendor/@akanjs/native/plugins/screen-orientation/src/types.ts +26 -0
  667. package/vendor/@akanjs/native/plugins/screen-orientation/src/web.ts +67 -0
  668. package/vendor/@akanjs/native/plugins/secure-storage/android/SecureStoragePlugin.kt +184 -0
  669. package/vendor/@akanjs/native/plugins/secure-storage/ios/SecureStoragePlugin.swift +145 -0
  670. package/vendor/@akanjs/native/plugins/secure-storage/native-plugin.json +18 -0
  671. package/vendor/@akanjs/native/plugins/secure-storage/src/desktop.ts +332 -0
  672. package/vendor/@akanjs/native/plugins/secure-storage/src/index.ts +33 -0
  673. package/vendor/@akanjs/native/plugins/share/android/SharePlugin.kt +218 -0
  674. package/vendor/@akanjs/native/plugins/share/ios/SharePlugin.swift +142 -0
  675. package/vendor/@akanjs/native/plugins/share/native-plugin.json +18 -0
  676. package/vendor/@akanjs/native/plugins/share/src/index.ts +87 -0
  677. package/vendor/@akanjs/native/plugins/share/src/options.ts +43 -0
  678. package/vendor/@akanjs/native/plugins/share/src/web.ts +116 -0
  679. package/vendor/@akanjs/native/plugins/single-instance/native-plugin.json +10 -0
  680. package/vendor/@akanjs/native/plugins/single-instance/src/desktop.ts +63 -0
  681. package/vendor/@akanjs/native/plugins/single-instance/src/index.ts +32 -0
  682. package/vendor/@akanjs/native/plugins/single-instance/src/socket.ts +248 -0
  683. package/vendor/@akanjs/native/plugins/splash-screen/android/SplashScreenPlugin.kt +19 -0
  684. package/vendor/@akanjs/native/plugins/splash-screen/ios/SplashScreenPlugin.swift +20 -0
  685. package/vendor/@akanjs/native/plugins/splash-screen/native-plugin.json +17 -0
  686. package/vendor/@akanjs/native/plugins/splash-screen/src/index.ts +24 -0
  687. package/vendor/@akanjs/native/plugins/splash-screen/src/web.ts +17 -0
  688. package/vendor/@akanjs/native/plugins/sqlite/android/SqlStatements.kt +121 -0
  689. package/vendor/@akanjs/native/plugins/sqlite/android/SqlitePlugin.kt +327 -0
  690. package/vendor/@akanjs/native/plugins/sqlite/ios/SqlitePlugin.swift +361 -0
  691. package/vendor/@akanjs/native/plugins/sqlite/native-plugin.json +18 -0
  692. package/vendor/@akanjs/native/plugins/sqlite/src/common.ts +221 -0
  693. package/vendor/@akanjs/native/plugins/sqlite/src/desktop.ts +140 -0
  694. package/vendor/@akanjs/native/plugins/sqlite/src/index.ts +114 -0
  695. package/vendor/@akanjs/native/plugins/toast/android/ToastPlugin.kt +27 -0
  696. package/vendor/@akanjs/native/plugins/toast/native-plugin.json +14 -0
  697. package/vendor/@akanjs/native/plugins/toast/src/index.ts +41 -0
  698. package/vendor/@akanjs/native/plugins/toast/src/queue.ts +77 -0
  699. package/vendor/@akanjs/native/plugins/toast/src/web.ts +130 -0
  700. package/vendor/@akanjs/native/plugins/tray/native-plugin.json +10 -0
  701. package/vendor/@akanjs/native/plugins/tray/src/desktop.ts +73 -0
  702. package/vendor/@akanjs/native/plugins/tray/src/index.ts +111 -0
  703. package/vendor/@akanjs/native/plugins/updates/android/UpdatesPlugin.kt +290 -0
  704. package/vendor/@akanjs/native/plugins/updates/ios/UpdatesPlugin.swift +292 -0
  705. package/vendor/@akanjs/native/plugins/updates/native-plugin.json +19 -0
  706. package/vendor/@akanjs/native/plugins/updates/src/desktop.ts +558 -0
  707. package/vendor/@akanjs/native/plugins/updates/src/index.ts +95 -0
  708. package/vendor/@akanjs/native/plugins/window/native-plugin.json +32 -0
  709. package/vendor/@akanjs/native/plugins/window/src/desktop.ts +170 -0
  710. package/vendor/@akanjs/native/plugins/window/src/index.ts +342 -0
  711. package/vendor/@akanjs/native/plugins/window/src/web.ts +43 -0
  712. package/vendor/@akanjs/native/plugins/window-state/native-plugin.json +10 -0
  713. package/vendor/@akanjs/native/plugins/window-state/src/desktop.ts +73 -0
  714. package/vendor/@akanjs/native/plugins/window-state/src/index.ts +35 -0
  715. package/vendor/@akanjs/native/plugins/window-state/src/state.ts +146 -0
  716. package/webkit/bootCsr.tsx +26 -14
  717. package/webkit/index.ts +0 -2
  718. package/webkit/nativeNavigation.ts +116 -0
  719. package/webkit/nativePurchase.ts +93 -0
  720. package/webkit/useCamera.tsx +76 -71
  721. package/webkit/useCsrValues.ts +10 -124
  722. package/webkit/useGeoLocation.tsx +11 -13
  723. package/webkit/usePurchase.tsx +68 -123
  724. package/capacitor.base.config.ts +0 -140
  725. package/client/capacitor.ts +0 -252
  726. package/types/capacitor.base.config.d.ts +0 -3
  727. package/types/client/capacitor.d.ts +0 -290
  728. package/types/webkit/useCodepush.d.ts +0 -16
  729. package/types/webkit/useContact.d.ts +0 -11
  730. package/webkit/useCodepush.tsx +0 -76
  731. package/webkit/useContact.tsx +0 -45
@@ -0,0 +1,92 @@
1
+ import UIKit
2
+
3
+ /// VoiceOver, Reduce Motion and Dynamic Type from UIAccessibility and UIApplication, the values
4
+ /// react-native/packages/react-native/React/CoreModules/RCTAccessibilityManager.mm reads (:99-106).
5
+ /// - fontScale: the body text size for the content size category / 17 pt (the size at the default
6
+ /// "Large"), as capacitor-plugins/text-zoom/ios/Sources/TextZoomPlugin/TextZoom.swift:5-8 computes
7
+ /// it. RN keeps a fixed table (RCTAccessibilityManager.mm:261-279) that matches for the standard
8
+ /// sizes but not for the accessibility sizes (AX1: RN 1.786, the body font 28 / 17 = 1.647); the
9
+ /// font follows Apple's own ramp, which is also what CSS `font: -apple-system-body` gets.
10
+ /// - change: the three notifications RN observes (:54-97), only while the page listens, reported
11
+ /// when a field really changed (RN filters the same way, :170-181).
12
+ /// - announce: UIAccessibility.post(.announcement), RN :323-363 with its queue / priority attributes:
13
+ /// "polite" queues behind current speech, "assertive" interrupts with high priority (iOS 17).
14
+ /// Posted 0.1 s later, as capacitor-plugins/screen-reader/.../ScreenReaderPlugin.swift:39-43 does:
15
+ /// VoiceOver cuts an announcement off when it starts reading the element that was just tapped.
16
+ /// Arguments arrive decoded by the generated AccessibilityPluginSpec (PL-10); empty text is checked here.
17
+ final class AccessibilityPlugin: AccessibilityPluginSpec {
18
+ static let id = "accessibility"
19
+ private static let baseBodySize: Double = 17
20
+
21
+ private let context: AkanNativePluginContext
22
+ private var observers: [any NSObjectProtocol] = []
23
+ private var last: AccessibilityState?
24
+
25
+ init(context: AkanNativePluginContext) {
26
+ self.context = context
27
+ }
28
+
29
+ func getState(_ reply: AkanNativeReply<AccessibilityState>) {
30
+ reply.resolve(Self.state())
31
+ }
32
+
33
+ func announce(_ args: AccessibilityAnnounceArgs, _ reply: AkanNativeReply<Void>) {
34
+ let text = args.text
35
+ guard !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
36
+ return reply.reject(.invalidArgs, "text must not be empty")
37
+ }
38
+ let priority = args.priority ?? .polite
39
+ Task {
40
+ try? await Task.sleep(for: .milliseconds(100))
41
+ var attributes: [NSAttributedString.Key: Any] = [.accessibilitySpeechQueueAnnouncement: priority == .polite]
42
+ // iOS 16 has no announcement priority: an assertive announcement only skips the queue.
43
+ if priority == .assertive, #available(iOS 17.0, *) { attributes[.accessibilitySpeechAnnouncementPriority] = UIAccessibilityPriority.high }
44
+ UIAccessibility.post(notification: .announcement, argument: NSAttributedString(string: text, attributes: attributes))
45
+ reply.resolve()
46
+ }
47
+ }
48
+
49
+ func startListening(_ event: String) {
50
+ guard event == "change", observers.isEmpty else { return }
51
+ last = Self.state()
52
+ let names: [Notification.Name] = [
53
+ UIAccessibility.voiceOverStatusDidChangeNotification,
54
+ UIAccessibility.reduceMotionStatusDidChangeNotification,
55
+ UIContentSizeCategory.didChangeNotification,
56
+ ]
57
+ observers = names.map { name in
58
+ NotificationCenter.default.addObserver(forName: name, object: nil, queue: .main) { [weak self] _ in
59
+ MainActor.assumeIsolated { self?.report() }
60
+ }
61
+ }
62
+ }
63
+
64
+ func stopListening(_ event: String) {
65
+ guard event == "change" else { return }
66
+ for observer in observers { NotificationCenter.default.removeObserver(observer) }
67
+ observers = []
68
+ last = nil
69
+ }
70
+
71
+ private func report() {
72
+ guard !observers.isEmpty else { return }
73
+ let next = Self.state()
74
+ if next == last { return }
75
+ last = next
76
+ AccessibilityEvents(context).change(next)
77
+ }
78
+
79
+ private static func state() -> AccessibilityState {
80
+ AccessibilityState(
81
+ screenReader: UIAccessibility.isVoiceOverRunning,
82
+ reduceMotion: UIAccessibility.isReduceMotionEnabled,
83
+ fontScale: fontScale(UIApplication.shared.preferredContentSizeCategory)
84
+ )
85
+ }
86
+
87
+ private static func fontScale(_ category: UIContentSizeCategory) -> Double {
88
+ let traits = UITraitCollection(preferredContentSizeCategory: category)
89
+ let body = Double(UIFont.preferredFont(forTextStyle: .body, compatibleWith: traits).pointSize)
90
+ return (body / baseBodySize * 1000).rounded() / 1000
91
+ }
92
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "accessibility",
3
+ "apiVersion": 1,
4
+ "methods": ["getState", "announce"],
5
+ "events": ["change"],
6
+ "codegen": true,
7
+ "web": "./src/web.ts",
8
+ "desktop": "web",
9
+ "ios": {
10
+ "sources": ["ios/*.swift"],
11
+ "class": "AccessibilityPlugin",
12
+ "frameworks": ["UIKit"]
13
+ },
14
+ "android": {
15
+ "sources": ["android/*.kt"],
16
+ "class": "com.akanjs.plugins.accessibility.AccessibilityPlugin",
17
+ "methods": ["getState"],
18
+ "events": ["change"],
19
+ "web": true
20
+ }
21
+ }
@@ -0,0 +1,71 @@
1
+ import { AkanNativeError } from "../../../packages/core/src/index.ts";
2
+ import type { AnnouncePriority } from "./index.ts";
3
+
4
+ const PRIORITIES: readonly AnnouncePriority[] = ["polite", "assertive"];
5
+ const HIDDEN =
6
+ "position:fixed;left:0;top:0;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap";
7
+ const REGISTER_MS = 100;
8
+ const KEEP_MS = 7000;
9
+
10
+ /** Checks announce()'s options; the iOS plugin checks the same. */
11
+ export function checkAnnounce(options: unknown): { text: string; priority: AnnouncePriority } {
12
+ if (typeof options !== "object" || options === null) throw new AkanNativeError("INVALID_ARGS", "text is required");
13
+ const { text, priority } = options as Record<string, unknown>;
14
+ if (text === undefined || text === null) throw new AkanNativeError("INVALID_ARGS", "text is required");
15
+ if (typeof text !== "string") throw new AkanNativeError("INVALID_ARGS", "text must be a string");
16
+ if (text.trim() === "") throw new AkanNativeError("INVALID_ARGS", "text must not be empty");
17
+ if (priority !== undefined && priority !== null && !(PRIORITIES as readonly unknown[]).includes(priority)) {
18
+ throw new AkanNativeError("INVALID_ARGS", `priority must be one of ${PRIORITIES.join(", ")}`);
19
+ }
20
+ return { text, priority: (priority as AnnouncePriority | null | undefined) ?? "polite" };
21
+ }
22
+
23
+ const regions = new Map<AnnouncePriority, HTMLElement>();
24
+
25
+ function topModal(): Element | null {
26
+ try {
27
+ const open = document.querySelectorAll("dialog:modal");
28
+ return open.length > 0 ? open[open.length - 1]! : null;
29
+ } catch {
30
+ return null;
31
+ }
32
+ }
33
+
34
+ function region(priority: AnnouncePriority): { el: HTMLElement; fresh: boolean } {
35
+ const host = topModal() ?? document.body ?? document.documentElement;
36
+ let el = regions.get(priority);
37
+ if (el && el.parentNode === host) return { el, fresh: false };
38
+ if (!el) {
39
+ el = document.createElement("div");
40
+ el.setAttribute("aria-live", priority);
41
+ el.setAttribute("aria-relevant", "additions");
42
+ el.setAttribute("data-akan-native-announcer", priority);
43
+ el.style.cssText = HIDDEN;
44
+ regions.set(priority, el);
45
+ }
46
+ host.append(el);
47
+ return { el, fresh: true };
48
+ }
49
+
50
+ /** Adds `text` to the live region of `priority`; resolves once it is in the page. */
51
+ export function announceInPage(text: string, priority: AnnouncePriority): Promise<void> {
52
+ if (typeof document === "undefined")
53
+ return Promise.reject(new AkanNativeError("UNSUPPORTED", "announcements need a document"));
54
+ const { el, fresh } = region(priority);
55
+ const message = document.createElement("div");
56
+ message.textContent = text;
57
+ const add = () => {
58
+ el.append(message);
59
+ setTimeout(() => message.remove(), KEEP_MS);
60
+ };
61
+ if (!fresh) {
62
+ add();
63
+ return Promise.resolve();
64
+ }
65
+ return new Promise((resolve) =>
66
+ setTimeout(() => {
67
+ add();
68
+ resolve();
69
+ }, REGISTER_MS),
70
+ );
71
+ }
@@ -0,0 +1,77 @@
1
+ import { createLiveValue, definePlugin, shallowEqual } from "../../../packages/core/src/index.ts";
2
+ import { useLiveValue } from "../../../packages/react/src/index.ts";
3
+ import { readWebState, web } from "./web.ts";
4
+
5
+ export { checkAnnounce } from "./announce.ts";
6
+
7
+ export interface AccessibilityState {
8
+ /**
9
+ * A screen reader is on: VoiceOver on iOS, a touch-exploration service such as TalkBack on
10
+ * Android. null where the host cannot tell: browsers and macOS (a page cannot see VoiceOver).
11
+ */
12
+ screenReader: boolean | null;
13
+ /**
14
+ * The user asked for less motion: Reduce Motion on iOS, "Remove animations" (animation scales
15
+ * at 0) on Android, `prefers-reduced-motion` on the web and macOS.
16
+ */
17
+ reduceMotion: boolean;
18
+ /**
19
+ * The user's text size as a factor of the default size (1): iOS Dynamic Type (the body text
20
+ * size / 17 pt), Android Configuration.fontScale, the browser's default font size / 16 px on the
21
+ * web and macOS (1 unless the user changed it; iOS browsers always report 1).
22
+ */
23
+ fontScale: number;
24
+ }
25
+
26
+ /** "polite" waits until the screen reader finished speaking, "assertive" interrupts it. */
27
+ export type AnnouncePriority = "polite" | "assertive";
28
+
29
+ /** Screen reader state and announcements (plugins.md §4.1). */
30
+ export interface AccessibilityApi {
31
+ getState(): Promise<AccessibilityState>;
32
+ /**
33
+ * Makes the running screen reader speak `text` (e.g. "3 results", "Saved"), for changes that
34
+ * have no focusable element of their own. Resolves once handed over, also when no screen
35
+ * reader runs (then nothing is spoken). Default priority "polite".
36
+ * iOS: UIAccessibility announcement. Web, macOS and Android: a live region in the page
37
+ * (Android's own announcement API is deprecated in API 36); inside a modal <dialog> the region
38
+ * moves into the dialog, since the rest of the page is inert then.
39
+ */
40
+ announce(options: { text: string; priority?: AnnouncePriority }): Promise<void>;
41
+ }
42
+
43
+ export interface AccessibilityEvents {
44
+ /** One of the state's fields changed. */
45
+ change: AccessibilityState;
46
+ }
47
+
48
+ export const accessibility = definePlugin<AccessibilityApi, AccessibilityEvents>("accessibility", {
49
+ methods: ["getState", "announce"],
50
+ events: ["change"],
51
+ web,
52
+ });
53
+
54
+ const current = createLiveValue<AccessibilityState>(
55
+ readWebState(),
56
+ (set) => {
57
+ let live = true;
58
+ const stop = accessibility.listen("change", set);
59
+ accessibility
60
+ .getState()
61
+ .then((state) => live && set(state))
62
+ .catch(() => {});
63
+ return () => {
64
+ live = false;
65
+ stop();
66
+ };
67
+ },
68
+ shallowEqual,
69
+ );
70
+
71
+ /**
72
+ * The current accessibility state. Re-renders on every change. Until the host answered, it is
73
+ * the page's own reading (screenReader null, reduceMotion from `prefers-reduced-motion`).
74
+ */
75
+ export function useAccessibility(): AccessibilityState {
76
+ return useLiveValue(current);
77
+ }
@@ -0,0 +1,52 @@
1
+ import { defineWebPlugin, shallowEqual } from "../../../packages/core/src/index.ts";
2
+ import { announceInPage, checkAnnounce } from "./announce.ts";
3
+ import type { AccessibilityApi, AccessibilityEvents, AccessibilityState } from "./index.ts";
4
+
5
+ function motionQuery(): MediaQueryList | null {
6
+ return typeof matchMedia === "function" ? matchMedia("(prefers-reduced-motion: reduce)") : null;
7
+ }
8
+
9
+ export function readFontScale(): number {
10
+ if (typeof document === "undefined" || typeof getComputedStyle !== "function") return 1;
11
+ const probe = document.createElement("div");
12
+ probe.style.cssText = "position:absolute;visibility:hidden;width:0;height:0;overflow:hidden;font-size:medium";
13
+ (document.body ?? document.documentElement).append(probe);
14
+ const px = Number.parseFloat(getComputedStyle(probe).fontSize);
15
+ probe.remove();
16
+ return Number.isFinite(px) && px > 0 ? Math.round((px / 16) * 1000) / 1000 : 1;
17
+ }
18
+
19
+ export function readWebState(): AccessibilityState {
20
+ return { screenReader: null, reduceMotion: motionQuery()?.matches ?? false, fontScale: readFontScale() };
21
+ }
22
+
23
+ export const web = defineWebPlugin<AccessibilityApi, AccessibilityEvents>({
24
+ methods: {
25
+ getState: async () => readWebState(),
26
+ announce(options) {
27
+ const { text, priority } = checkAnnounce(options);
28
+ return announceInPage(text, priority);
29
+ },
30
+ },
31
+ events: {
32
+ change(emit) {
33
+ let last = readWebState();
34
+ const check = () => {
35
+ const next = readWebState();
36
+ if (shallowEqual(next, last)) return;
37
+ last = next;
38
+ emit(next);
39
+ };
40
+ const onVisible = () => {
41
+ if (document.visibilityState === "visible") check();
42
+ };
43
+ const q = motionQuery();
44
+ q?.addEventListener("change", check);
45
+ if (typeof document !== "undefined") document.addEventListener("visibilitychange", onVisible);
46
+ return () => {
47
+ q?.removeEventListener("change", check);
48
+ if (typeof document !== "undefined") document.removeEventListener("visibilitychange", onVisible);
49
+ };
50
+ },
51
+ },
52
+ });
@@ -0,0 +1,72 @@
1
+ package com.akanjs.plugins.app
2
+
3
+ import com.akanjs.runtime.AkanNativeActivity
4
+ import com.akanjs.runtime.AkanNativeLinks
5
+ import com.akanjs.runtime.AkanNativePluginContext
6
+ import com.akanjs.runtime.AkanNativeReply
7
+ import com.akanjs.runtime.AkanNativeVoidReply
8
+
9
+ /**
10
+ * App info, deep links (ACTION_VIEW intents, plugins.md S4) and the back button (S3).
11
+ * - Links come from the shell's AkanNativeLinks (App scope): the launch URL is the process's and never
12
+ * changes; every link, the launch URL included, is delivered once as urlOpen, kept until the page
13
+ * listens (C2). react-native IntentModule / capacitor-plugins/app only take ACTION_VIEW intents too.
14
+ * - backButton: while the page listens, the shell hands back gestures to us instead of going back
15
+ * in the WebView history (capacitor-plugins/app AppPlugin.java does the same with AndroidX).
16
+ * The result and event types come from the generated AppPluginSpec (PL-10).
17
+ */
18
+ class AppPlugin(private val context: AkanNativePluginContext) : AppPluginSpec {
19
+ private val events = AppEvents(context)
20
+ private var linksListening = false
21
+
22
+ override fun getInfo(reply: AkanNativeReply<AppInfoResult>) {
23
+ val activity = context.activity
24
+ val info = activity.packageManager.getPackageInfo(activity.packageName, 0)
25
+ reply.resolve(
26
+ AppInfoResult(
27
+ id = activity.packageName,
28
+ name = activity.applicationInfo.loadLabel(activity.packageManager).toString(),
29
+ version = info.versionName ?: "",
30
+ build = info.longVersionCode.toDouble(),
31
+ ),
32
+ )
33
+ }
34
+
35
+ override fun getLaunchUrl(reply: AkanNativeReply<AppGetLaunchUrlResult>) = reply.resolve(AppGetLaunchUrlResult(url = AkanNativeLinks.launchUrl))
36
+
37
+ override fun exit(reply: AkanNativeVoidReply) {
38
+ reply.resolve()
39
+ context.activity.finishAndRemoveTask()
40
+ }
41
+
42
+ override fun minimize(reply: AkanNativeVoidReply) {
43
+ context.activity.moveTaskToBack(true)
44
+ reply.resolve()
45
+ }
46
+
47
+ override fun startListening(event: String) {
48
+ when (event) {
49
+ "urlOpen" -> {
50
+ linksListening = true
51
+ AkanNativeLinks.listen(this, context.activity) { url ->
52
+ if (linksListening) events.urlOpen(AppUrlOpenEvent(url = url))
53
+ linksListening
54
+ }
55
+ }
56
+ "backButton" -> context.setBackInterceptor {
57
+ val canGoBack = (context.activity as? AkanNativeActivity)?.canGoBack() ?: false
58
+ events.backButton(AppBackButtonEvent(canGoBack = canGoBack))
59
+ }
60
+ }
61
+ }
62
+
63
+ override fun stopListening(event: String) {
64
+ when (event) {
65
+ "urlOpen" -> {
66
+ linksListening = false
67
+ AkanNativeLinks.unlisten(this)
68
+ }
69
+ "backButton" -> context.setBackInterceptor(null)
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,52 @@
1
+ import UIKit
2
+
3
+ /// App info from the bundle and deep links from the scene (AkanNativeLinks, plugins.md S4).
4
+ /// iOS apps must not quit or minimize themselves: exit/minimize are UNSUPPORTED
5
+ /// (capacitor-plugins/app does the same).
6
+ /// The result and event types come from the generated AppPluginSpec (PL-10).
7
+ final class AppPlugin: AppPluginSpec {
8
+ static let id = "app"
9
+ private let context: AkanNativePluginContext
10
+ private var subscription: UUID?
11
+
12
+ init(context: AkanNativePluginContext) {
13
+ self.context = context
14
+ }
15
+
16
+ func getInfo(_ reply: AkanNativeReply<AppInfoResult>) {
17
+ let info = Bundle.main.infoDictionary ?? [:]
18
+ reply.resolve(AppInfoResult(
19
+ id: Bundle.main.bundleIdentifier ?? "",
20
+ name: info["CFBundleDisplayName"] as? String ?? info["CFBundleName"] as? String ?? "",
21
+ version: info["CFBundleShortVersionString"] as? String ?? "",
22
+ build: Double(Int(info["CFBundleVersion"] as? String ?? "") ?? 1)
23
+ ))
24
+ }
25
+
26
+ func getLaunchUrl(_ reply: AkanNativeReply<AppGetLaunchUrlResult>) {
27
+ reply.resolve(AppGetLaunchUrlResult(url: AkanNativeLinks.shared.launchURL?.absoluteString))
28
+ }
29
+
30
+ func exit(_ reply: AkanNativeReply<Void>) {
31
+ reply.reject(.unsupported, "iOS apps cannot exit themselves")
32
+ }
33
+
34
+ func minimize(_ reply: AkanNativeReply<Void>) {
35
+ reply.reject(.unsupported, "iOS apps cannot minimize themselves")
36
+ }
37
+
38
+ func startListening(_ event: String) {
39
+ guard event == "urlOpen", subscription == nil else { return }
40
+ subscription = AkanNativeLinks.shared.listen(owner: context.owner) { [weak self] url in
41
+ guard let self else { return false }
42
+ AppEvents(self.context).urlOpen(AppUrlOpenEvent(url: url.absoluteString))
43
+ return true
44
+ }
45
+ }
46
+
47
+ func stopListening(_ event: String) {
48
+ guard event == "urlOpen", let subscription else { return }
49
+ AkanNativeLinks.shared.unlisten(subscription)
50
+ self.subscription = nil
51
+ }
52
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "app",
3
+ "apiVersion": 1,
4
+ "methods": ["getInfo", "getLaunchUrl", "exit", "minimize", "answerBeforeQuit"],
5
+ "events": ["urlOpen", "backButton", "beforeQuit"],
6
+ "codegen": true,
7
+ "web": "./src/web.ts",
8
+ "desktop": "./src/desktop.ts",
9
+ "ios": {
10
+ "sources": ["ios/*.swift"],
11
+ "class": "AppPlugin",
12
+ "methods": ["getInfo", "getLaunchUrl", "exit", "minimize"],
13
+ "events": ["urlOpen", "backButton"]
14
+ },
15
+ "android": {
16
+ "sources": ["android/*.kt"],
17
+ "class": "com.akanjs.plugins.app.AppPlugin",
18
+ "methods": ["getInfo", "getLaunchUrl", "exit", "minimize"],
19
+ "events": ["urlOpen", "backButton"]
20
+ }
21
+ }
@@ -0,0 +1,64 @@
1
+
2
+
3
+ import { RetainedEvents } from "../../../packages/core/src/kernel.ts";
4
+ import {
5
+ createPageVeto,
6
+ type DesktopContext,
7
+ defineDesktopPlugin,
8
+ linkClaimed,
9
+ type QuitReason,
10
+ } from "../../../packages/desktop/src/plugin.ts";
11
+ import type { AppApi, AppEvents } from "./index.ts";
12
+
13
+ const quitVeto = createPageVeto<{ reason: QuitReason }>();
14
+
15
+ let launchUrl: string | null = null;
16
+ let launched = false;
17
+ /** Every link, the launch link too, retained until a page listens (the shared C2 rule, kernel RetainedEvents). */
18
+ const links = new RetainedEvents<string>();
19
+
20
+ export default defineDesktopPlugin<AppApi, AppEvents>({
21
+ id: "app",
22
+ setup(ctx: DesktopContext) {
23
+ ctx.onBeforeQuit(({ reason }) => quitVeto.ask({ reason }));
24
+ ctx.onNativeEvent("opened", (event) => {
25
+ for (const url of (event.urls as string[] | undefined) ?? []) {
26
+
27
+ if (linkClaimed(url)) continue;
28
+
29
+ if (!launched) {
30
+ launched = true;
31
+ launchUrl = url;
32
+ }
33
+ links.emit(url, true);
34
+ }
35
+ });
36
+ },
37
+ methods: {
38
+ getInfo: (_args, ctx) => ({
39
+ id: ctx.app.id,
40
+ name: ctx.app.name,
41
+ version: ctx.app.version,
42
+ build: ctx.app.build ?? 1,
43
+ }),
44
+ getLaunchUrl: () => ({ url: launchUrl }),
45
+ exit: (_args, ctx) => {
46
+ setTimeout(() => ctx.quit(0), 50);
47
+ },
48
+ answerBeforeQuit: (args, ctx) => quitVeto.answer(args, ctx.window),
49
+ minimize: async (_args, ctx) => {
50
+ await ctx.shell("window.minimize");
51
+ },
52
+ },
53
+ events: {
54
+ urlOpen(send) {
55
+ launched = true;
56
+
57
+ links.listen("pages", (url) => (send({ url }, "focused")?.length ?? 1) > 0);
58
+ return () => links.unlisten("pages");
59
+ },
60
+ beforeQuit: (send, ctx) => quitVeto.source(send, ctx),
61
+
62
+ backButton: () => () => {},
63
+ },
64
+ });
@@ -0,0 +1,77 @@
1
+
2
+
3
+ import * as React from "react";
4
+ import { definePlugin, type VetoHandler, vetoable } from "../../../packages/core/src/index.ts";
5
+ import { usePluginEvent } from "../../../packages/react/src/index.ts";
6
+ import { web } from "./web.ts";
7
+
8
+ /**
9
+ * Why the app is about to quit: "user" (Cmd+Q, Dock menu, AppleScript), "session" (logout,
10
+ * restart, shutdown; preventing it cancels the logout), "lastWindowClosed" (the window was closed).
11
+ */
12
+ export type QuitReason = "user" | "session" | "lastWindowClosed";
13
+
14
+ export interface AppInfoResult {
15
+ id: string;
16
+ name: string;
17
+ version: string;
18
+ build: number;
19
+ }
20
+
21
+ export interface AppApi {
22
+ getInfo(): Promise<AppInfoResult>;
23
+ /** The URL that started the app (deep link), or null. */
24
+ getLaunchUrl(): Promise<{ url: string | null }>;
25
+ /** Ends the app without asking onBeforeQuit handlers. Android and desktop only (iOS apps must not quit themselves). */
26
+ exit(): Promise<void>;
27
+ /** Sends the app to the background (Android) or minimizes its window (desktop). */
28
+ minimize(): Promise<void>;
29
+ /** Internal: the page's answer to a beforeQuit event. Use onBeforeQuit(). */
30
+ answerBeforeQuit(args: { id: number; allow?: boolean }): Promise<void>;
31
+ }
32
+
33
+ export interface AppEvents {
34
+ /** A deep link arrived while running. URLs that arrive before anyone listens are delivered to the first listener. */
35
+ urlOpen: { url: string };
36
+ /** Android back gesture/button. While anything listens, back no longer walks the WebView history by itself. */
37
+ backButton: { canGoBack: boolean };
38
+ /** Internal: the app is about to quit (desktop). Use onBeforeQuit(). */
39
+ beforeQuit: { id: number; reason: QuitReason };
40
+ }
41
+
42
+ export const app = definePlugin<AppApi, AppEvents>("app", {
43
+ methods: ["getInfo", "getLaunchUrl", "exit", "minimize", "answerBeforeQuit"],
44
+ events: ["urlOpen", "backButton", "beforeQuit"],
45
+ web,
46
+ });
47
+
48
+ /** Calls `handler` for every deep link while mounted. */
49
+ export function useUrlOpen(handler: (url: string) => void): void {
50
+ usePluginEvent(app, "urlOpen", ({ url }) => handler(url));
51
+ }
52
+
53
+ /**
54
+ * Takes over the Android back button while mounted. The handler decides: e.g. close a dialog,
55
+ * `history.back()` when `canGoBack`, or `app.exit()` at the root.
56
+ */
57
+ export function useBackButton(handler: (event: { canGoBack: boolean }) => void): void {
58
+ usePluginEvent(app, "backButton", handler);
59
+ }
60
+
61
+ /**
62
+ * Runs `handler` before the app quits (desktop: Cmd+Q, Dock menu, logout, closing the window).
63
+ * Call `event.preventDefault()` to keep running, e.g. after asking to save; `event.reason` tells
64
+ * why. app.exit() does not ask. Elsewhere it never fires (`app.eventImplementation("beforeQuit")`
65
+ * tells). Returns an unregister function.
66
+ */
67
+ export const onBeforeQuit: (handler: VetoHandler<{ reason: QuitReason }>) => () => void = vetoable(
68
+ (listener) => app.listen("beforeQuit", listener),
69
+ (args) => app.answerBeforeQuit(args),
70
+ );
71
+
72
+ /** onBeforeQuit while mounted; always calls the latest handler. */
73
+ export function useBeforeQuit(handler: VetoHandler<{ reason: QuitReason }>): void {
74
+ const latest = React.useRef(handler);
75
+ latest.current = handler;
76
+ React.useEffect(() => onBeforeQuit((event) => latest.current(event)), []);
77
+ }
@@ -0,0 +1,12 @@
1
+ import { AkanNativeError, app as appInfo, defineWebPlugin } from "../../../packages/core/src/index.ts";
2
+ import type { AppApi, AppEvents } from "./index.ts";
3
+
4
+ export const web = defineWebPlugin<AppApi, AppEvents>({
5
+ methods: {
6
+ async getInfo() {
7
+ if (!appInfo) throw new AkanNativeError("UNSUPPORTED", "no app info (the page was not built by akan-native)");
8
+ return { id: appInfo.id, name: appInfo.name, version: appInfo.version, build: appInfo.build ?? 1 };
9
+ },
10
+ getLaunchUrl: async () => ({ url: null }),
11
+ },
12
+ });
@@ -0,0 +1,54 @@
1
+ package com.akanjs.plugins.appstate
2
+
3
+ import android.app.Activity
4
+ import android.app.Application
5
+ import android.os.Bundle
6
+ import com.akanjs.runtime.AkanNativePluginContext
7
+ import com.akanjs.runtime.AkanNativeReply
8
+
9
+ /**
10
+ * Activity lifecycle → active / inactive / background.
11
+ * react-native AppStateModule maps pause straight to background; here a paused but
12
+ * still visible activity (split screen, system dialog) is "inactive" and only onStop is "background".
13
+ * The result and event types come from the generated AppStatePluginSpec (PL-10).
14
+ */
15
+ class AppStatePlugin(private val context: AkanNativePluginContext) : AppStatePluginSpec {
16
+ private var state = AppStateValue.ACTIVE // the shell creates plugins while the activity is being resumed
17
+ private var listening = false
18
+ private val events = AppStateEvents(context)
19
+
20
+ private val callbacks = object : Application.ActivityLifecycleCallbacks {
21
+ override fun onActivityResumed(activity: Activity) = update(AppStateValue.ACTIVE)
22
+ override fun onActivityPaused(activity: Activity) = update(AppStateValue.INACTIVE)
23
+ override fun onActivityStarted(activity: Activity) = update(AppStateValue.INACTIVE)
24
+ override fun onActivityStopped(activity: Activity) = update(AppStateValue.BACKGROUND)
25
+ override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
26
+ override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
27
+ override fun onActivityDestroyed(activity: Activity) {}
28
+ }
29
+
30
+ init {
31
+ // Activity-scoped registration (API 29+): only our activity's transitions arrive.
32
+ context.activity.registerActivityLifecycleCallbacks(callbacks)
33
+ }
34
+
35
+ private fun update(next: AppStateValue) {
36
+ if (next == state) return
37
+ state = next
38
+ if (listening) events.change(AppStateChangeEvent(state = next))
39
+ }
40
+
41
+ override fun getState(reply: AkanNativeReply<AppStateGetStateResult>) = reply.resolve(AppStateGetStateResult(state = state))
42
+
43
+ override fun startListening(event: String) {
44
+ if (event == "change") listening = true
45
+ }
46
+
47
+ override fun stopListening(event: String) {
48
+ if (event == "change") listening = false
49
+ }
50
+
51
+ override fun destroy() {
52
+ context.activity.unregisterActivityLifecycleCallbacks(callbacks)
53
+ }
54
+ }