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,444 @@
1
+ package com.akanjs.runtime
2
+
3
+ import android.net.Uri
4
+ import android.os.Handler
5
+ import android.os.Looper
6
+ import android.util.Log
7
+ import android.webkit.WebMessage
8
+ import android.webkit.WebMessagePort
9
+ import android.webkit.WebView
10
+ import java.io.File
11
+ import org.json.JSONArray
12
+ import org.json.JSONException
13
+ import org.json.JSONObject
14
+ import org.json.JSONTokener
15
+
16
+ /**
17
+ * Bridge over a framework MessagePort (docs/research/android.md §4.1):
18
+ * page: listens for "message", then fetch("/__akan_native/hello")
19
+ * shell: createWebMessageChannel() and postWebMessage(port, targetOrigin = app origin)
20
+ * Only the app-origin main frame receives the port. A JavascriptInterface would be injected
21
+ * into every frame, cross-origin iframes included, so none is registered.
22
+ * All dispatch happens on the main thread (the port callback is bound to the main Handler).
23
+ *
24
+ * Bridge v1.1: requests name their document (one page load, one port). A claim or a request with a
25
+ * new id ends the current document, and calls of ended documents are refused. Responses and events
26
+ * of the current document are numbered (`seq`) on the main thread just before they are posted.
27
+ */
28
+ class AkanNativeBridge(private val webView: WebView) {
29
+ private val main = Handler(Looper.getMainLooper())
30
+ private val plugins = LinkedHashMap<String, AkanNativePlugin>()
31
+ private val listeners = HashMap<String, Int>() // "plugin\u0000event" → count
32
+
33
+ private var port: WebMessagePort? = null
34
+ private var document: AkanNativeDocument? = null
35
+ /** Ended documents, so their late calls are refused. */
36
+ private val ended = ArrayDeque<String>()
37
+
38
+ /** The app's capabilities from boot.json (PL-11); null for builds without an ACL (everything allowed). */
39
+ var acl: AkanNativeAcl? = null
40
+
41
+ /** boot.json `plugins`: what each plugin declares natively on Android (the L2 declaration gate). */
42
+ var declarations: Map<*, *> = emptyMap<String, Any?>()
43
+
44
+ /**
45
+ * "plugin\u0000event" of events whose payload is a snapshot (plugins[].coalesce): only the latest of
46
+ * a burst is sent (architecture review stage 4). Read once the declarations are set.
47
+ */
48
+ private val coalescing: Set<String> by lazy {
49
+ val keys = mutableSetOf("\$host\u0000tick")
50
+ for ((plugin, decl) in declarations) ((decl as? Map<*, *>)?.get("coalesce") as? List<*>)?.forEach { keys.add("$plugin\u0000$it") }
51
+ keys
52
+ }
53
+
54
+ /** Dev builds: the self-test's \$host methods. */
55
+ var dev = false
56
+
57
+ /** Dev builds: \$host.hang calls still open, and how many were cancelled. */
58
+ private val hanging = ArrayList<AkanNativeCall>()
59
+ private var hangCancels = 0
60
+
61
+ fun register(id: String, plugin: AkanNativePlugin) {
62
+ plugins[id] = plugin
63
+ }
64
+
65
+ fun plugins(): Collection<AkanNativePlugin> = plugins.values
66
+
67
+ fun plugin(id: String): AkanNativePlugin? = plugins[id]
68
+
69
+ /** FileRefs are the process's (AkanNativeApp): a page of another activity may still show one. */
70
+ fun file(id: String): Pair<File, String>? = AkanNativeApp.file(id)
71
+
72
+ fun registerFile(file: File, mime: String): JSONObject = AkanNativeApp.registerFile(file, mime)
73
+
74
+ /** Ports handed out and not claimed yet, with their ring nonce (a few; the oldest is closed). */
75
+ private val offers = ArrayList<Pair<String, WebMessagePort>>()
76
+
77
+ /** The nonce of the current port's ring: the page has its port, so rings with it are late retries. */
78
+ private var claimed: String? = null
79
+
80
+
81
+ /**
82
+ * The doorbell (/__akan_native/hello?n=<nonce>) rang. The shell posts a new port with that nonce to
83
+ * the app-origin main frame, but keeps the current one until the page claims the new port
84
+ * ("akan-native:claim", its first message). Only the page that rang knows its nonce, so a ring from a
85
+ * frame (any frame can ring: a sandboxed frame's fetch carries the app origin as Referer) posts a
86
+ * port the page ignores, and nothing changes (SEC-4; before, every ring reset the page's bridge).
87
+ * A claim means a new document: the previous port and its subscriptions belong to a page that is
88
+ * gone. This is decided on claim and not in onPageStarted because a small page can ring before
89
+ * onPageStarted runs (reproduced on cold starts).
90
+ *
91
+ * The page rings again when no port came within 3 s (the first may have been posted before its
92
+ * listener existed). Every offer for that ring stays open until the page claims one: it takes
93
+ * the first port that reaches it and closes the others, and the shell closes the rest on claim.
94
+ * Rings for the nonce the page already claimed are ignored.
95
+ */
96
+ fun offerPort(nonce: String) = main.post {
97
+ if (nonce == claimed) return@post
98
+ while (offers.size >= MAX_OFFERS) offers.removeAt(0).second.close()
99
+ val (native, page) = webView.createWebMessageChannel()
100
+ native.setWebMessageCallback(object : WebMessagePort.WebMessageCallback() {
101
+ override fun onMessage(p: WebMessagePort, message: WebMessage) {
102
+ if (port !== native) {
103
+ if (offers.none { it.second === native }) return // closed on another claim
104
+ claim(nonce, native)
105
+ }
106
+ val text = message.data ?: return
107
+ if (text == CLAIM) return
108
+ dispatch(text, p)
109
+ }
110
+ }, main)
111
+ offers.add(nonce to native)
112
+ webView.postWebMessage(WebMessage("akan-native:port:$nonce", arrayOf(page)), Uri.parse(AkanNativeAssetServer.ORIGIN))
113
+ }
114
+
115
+ private fun claim(nonce: String, native: WebMessagePort) {
116
+ for ((_, other) in offers) if (other !== native) other.close() // retries, rings of frames, or of the page that is gone
117
+ offers.clear()
118
+ port?.close()
119
+ endDocument()
120
+ port = native
121
+ claimed = nonce
122
+ }
123
+
124
+ /**
125
+ * The page's document ended (a new one claimed a port or called, or the activity is gone). In
126
+ * this order, each step guarded, done by the host without asking the page: its calls end (their
127
+ * plugins' onCancel handlers run), its subscriptions stop, what its calls own is closed (last
128
+ * first), then the plugins' documentEnded hooks run. Calling it again does nothing.
129
+ */
130
+ fun endDocument() {
131
+ val doc = document ?: return
132
+ document = null
133
+ if (doc.id.isNotEmpty()) {
134
+ ended.addLast(doc.id)
135
+ while (ended.size > 16) ended.removeFirst()
136
+ }
137
+ val running = doc.running.values.mapNotNull { it.get() }
138
+ doc.running.clear()
139
+ for (call in running) safely("bridge") { call.cancel(AkanNativeErrorCode.CANCELLED, "the page that made this call is gone") }
140
+ for ((key, count) in listeners) {
141
+ if (count <= 0) continue
142
+ val (plugin, event) = key.split('\u0000', limit = 2)
143
+ safely(plugin) { plugins[plugin]?.stopListening(event) }
144
+ }
145
+ listeners.clear()
146
+ for (dispose in doc.end()) safely("bridge") { dispose() }
147
+ for ((id, plugin) in plugins) safely(id) { plugin.documentEnded(doc.id) }
148
+ }
149
+
150
+ /** The window (activity) is gone: its document ends and the App services forget its plugins' listeners. */
151
+ fun windowEnded(owner: Any) {
152
+ endDocument()
153
+ AkanNativeLinks.removeAll(owner)
154
+ }
155
+
156
+ /** Table sizes for the document churn check (K13, dev \$host.info). */
157
+ private fun stats(): JSONObject = JSONObject()
158
+ .put("documents", if (document == null) 0 else 1)
159
+ .put("ended", ended.size)
160
+ .put("subscriptions", listeners.values.sum())
161
+ .put("running", document?.running?.size ?: 0)
162
+ .put("resources", document?.resourceCount ?: 0)
163
+ .put("files", AkanNativeApp.fileCount)
164
+ .put("linkListeners", AkanNativeLinks.listenerCount)
165
+
166
+ /** The document of a request: a new id ends the current one, an ended one gets null. */
167
+ private fun dispatch(text: String, port: WebMessagePort) {
168
+ val raw = try {
169
+ JSONTokener(text).nextValue()
170
+ } catch (e: JSONException) {
171
+ return post(port, error(0, AkanNativeErrorCode.INVALID_ARGS, "request is not JSON"), AkanNativeDocument(""))
172
+ }
173
+ val parsed = AkanNativeAcl.plain(raw)
174
+ // SEC-3: the shape of the request, checked like every host does (AkanNativeKernel, shared vectors).
175
+ AkanNativeKernel.validateRequest(parsed)?.let { problem ->
176
+ val id = ((parsed as? Map<*, *>)?.get("id") as? Number)?.toDouble()?.takeIf { it == Math.floor(it) }?.toLong() ?: 0
177
+ return post(port, error(id, AkanNativeErrorCode.INVALID_ARGS, problem), AkanNativeDocument(""))
178
+ }
179
+ val req = parsed as Map<*, *>
180
+ val id = (req["id"] as Number).toLong()
181
+ val pluginId = req["plugin"] as String
182
+ val method = req["method"] as String
183
+ // Bridge v1.1: which document the request belongs to (AkanNativeKernel.admitDocument).
184
+ val docId = req["doc"] as String?
185
+ val doc = when (AkanNativeKernel.admitDocument(document?.id, ended, docId)) {
186
+ AkanNativeAdmission.CURRENT -> document!!
187
+ AkanNativeAdmission.NEW -> {
188
+ endDocument()
189
+ AkanNativeDocument(docId ?: "").also { document = it }
190
+ }
191
+ AkanNativeAdmission.ENDED -> return post(port, error(id, AkanNativeErrorCode.INTERNAL, "the page that made this call is gone"), AkanNativeDocument(""))
192
+ // Its answer would take a number the page runtime never sees, and its id would be spent
193
+ // for the runtime's own request with that id.
194
+ AkanNativeAdmission.NO_DOC -> return post(port, error(id, AkanNativeErrorCode.INVALID_ARGS, "request has no document id"), AkanNativeDocument(""))
195
+ }
196
+ // v1.1 `once`, before any AkanNativeCall exists: a dropped one would be answered by its safety net.
197
+ if (doc.id.isNotEmpty() && !doc.ids.accept(id)) {
198
+ Log.w(TAG, "dropping a repeated request $id")
199
+ return
200
+ }
201
+ val args = (raw as JSONObject).optJSONObject("args") ?: JSONObject()
202
+ val call = AkanNativeCall(method, args) { body ->
203
+ onMain { doc.running.remove(id) }
204
+ body.put("v", 1).put("id", id)
205
+ post(port, body, doc)
206
+ }
207
+ if (pluginId == "\$bridge") return bridgeOp(call, doc)
208
+ doc.running[id] = java.lang.ref.WeakReference(call)
209
+ call.document = doc
210
+ if (pluginId == "\$host") return host(call)
211
+ val plugin = plugins[pluginId] ?: return call.reject(AkanNativeErrorCode.NOT_FOUND, "plugin $pluginId is not registered")
212
+ // L2: an undeclared method or event never reaches the plugin, whatever its code handles.
213
+ val subscription = method == "\$listen" || method == "\$unlisten"
214
+ if (!AkanNativeKernel.declares(declarations[pluginId], method, if (subscription) call.string("event") else null)) {
215
+ return call.reject(AkanNativeErrorCode.NOT_FOUND, if (subscription) "event $pluginId.${call.string("event")} is not declared" else "method $pluginId.$method is not declared")
216
+ }
217
+ // PL-11 / plugins.md C7: checked before the plugin sees the call. $unlisten always passes.
218
+ val rules = acl
219
+ if (method != "\$unlisten" && rules != null) {
220
+ val event = call.string("event") ?: ""
221
+ val (allowed, scope) = rules.check(pluginId, if (method == "\$listen") "listen:$event" else method)
222
+ if (!allowed) {
223
+ val what = if (method == "\$listen") "$event events" else "$method()"
224
+ return call.reject(AkanNativeErrorCode.NOT_ALLOWED, "$pluginId.$what is not allowed by the app's capabilities")
225
+ }
226
+ call.scope = scope
227
+ }
228
+ if (method == "\$listen" || method == "\$unlisten") {
229
+ val event = call.string("event") ?: return call.reject(AkanNativeErrorCode.INVALID_ARGS, "$method requires args.event")
230
+ val key = "$pluginId\u0000$event"
231
+ val before = listeners[key] ?: 0
232
+ val after = maxOf(0, before + if (method == "\$listen") 1 else -1)
233
+ listeners[key] = after
234
+ if (before == 0 && after == 1) safely(pluginId) { plugin.startListening(event) }
235
+ if (before > 0 && after == 0) safely(pluginId) { plugin.stopListening(event) }
236
+ return call.resolve()
237
+ }
238
+ try {
239
+ plugin.handle(call)
240
+ } catch (e: Exception) {
241
+ Log.e(TAG, "$pluginId.$method failed", e)
242
+ call.reject(AkanNativeErrorCode.INTERNAL, e.toString())
243
+ } catch (e: LinkageError) { // an API this Android lacks, reached without a version check
244
+ Log.e(TAG, "$pluginId.$method needs an API this Android version does not have", e)
245
+ call.reject(AkanNativeErrorCode.UNSUPPORTED, "$pluginId.$method is not available on this Android version")
246
+ }
247
+ }
248
+
249
+ /**
250
+ * \$bridge operations (v1.1 `cancel`): follow-ups on what this document's own calls handed out,
251
+ * so they need no ACL entry. Messages come in order over the port, so a cancel never overtakes its call.
252
+ */
253
+ private fun bridgeOp(call: AkanNativeCall, doc: AkanNativeDocument) {
254
+ if (call.method == "cancel") {
255
+ val target = call.args.getLong("id")
256
+ val running = doc.running.remove(target)?.get() ?: return call.resolve(JSONObject().put("cancelled", false))
257
+ val timeout = call.string("reason") == "timeout"
258
+ running.cancel(if (timeout) AkanNativeErrorCode.TIMEOUT else AkanNativeErrorCode.CANCELLED, if (timeout) "the page's time limit for this call ran out" else "cancelled by the page")
259
+ return call.resolve(JSONObject().put("cancelled", true))
260
+ }
261
+ // release
262
+ val url = call.string("url") ?: ""
263
+ val path = url.removePrefix(AkanNativeAssetServer.ORIGIN)
264
+ val released = path.startsWith("/__akan_native/file/") && AkanNativeApp.releaseFile(path.removePrefix("/__akan_native/file/"))
265
+ call.resolve(JSONObject().put("released", released))
266
+ }
267
+
268
+ private fun onMain(block: () -> Unit) {
269
+ if (Looper.myLooper() == Looper.getMainLooper()) block() else main.post(block)
270
+ }
271
+
272
+ fun emit(plugin: String, event: String, data: Any?) {
273
+ if ((listeners["$plugin\u0000$event"] ?: 0) == 0) return
274
+ send(plugin, event, data)
275
+ }
276
+
277
+ /** An event for the current document. */
278
+ private fun send(plugin: String, event: String, data: Any?) = onMain {
279
+ val message = JSONObject().put("v", 1).put("plugin", plugin).put("event", event)
280
+ if (data != null) message.put("data", data)
281
+ val target = port ?: return@onMain
282
+ val doc = document ?: return@onMain
283
+ val key = "$plugin\u0000$event"
284
+ if (key !in coalescing) return@onMain post(target, message, doc)
285
+ // The last waiting entry is replaced when it is the same event; otherwise it queues behind.
286
+ if (doc.outbox.lastOrNull()?.first == key) doc.outbox[doc.outbox.size - 1] = key to message else doc.outbox.add(key to message)
287
+ if (!doc.outboxScheduled) {
288
+ doc.outboxScheduled = true
289
+ main.postDelayed({ flushOutbox(doc) }, 100)
290
+ }
291
+ }
292
+
293
+ /** Sends the document's waiting coalesced events, in order (numbered now, when they go). Main thread. */
294
+ private fun flushOutbox(doc: AkanNativeDocument) {
295
+ doc.outboxScheduled = false
296
+ if (doc.outbox.isEmpty()) return
297
+ val target = port
298
+ val waiting = doc.outbox.toList()
299
+ doc.outbox.clear()
300
+ if (document !== doc || target == null) return
301
+ for ((_, message) in waiting) deliver(target, message, doc)
302
+ }
303
+
304
+ /**
305
+ * Numbers the message (on the main thread, where everything is sent from) and posts it. A plugin
306
+ * may answer after the page reloaded (camera after an activity result, a dialog left open): its
307
+ * port is closed by then and postMessage throws IllegalStateException. The page that asked is
308
+ * gone, so the answer is dropped. Posting also happens from plugin threads: hop to main.
309
+ */
310
+ private fun post(port: WebMessagePort, message: JSONObject, doc: AkanNativeDocument) {
311
+ val send = Runnable {
312
+ flushOutbox(doc) // what waits goes first, so the page sees it in order
313
+ deliver(port, message, doc)
314
+ }
315
+ if (Looper.myLooper() == Looper.getMainLooper()) send.run() else main.post(send)
316
+ }
317
+
318
+ /** Numbers a message of `doc` while it is the current document and posts it. Main thread. */
319
+ private fun deliver(port: WebMessagePort, message: JSONObject, doc: AkanNativeDocument) {
320
+ if (doc.id.isNotEmpty()) {
321
+ message.put("doc", doc.id)
322
+ if (document === doc) message.put("seq", ++doc.seq)
323
+ }
324
+ try {
325
+ port.postMessage(WebMessage(jsSafe(message.toString())))
326
+ } catch (e: IllegalStateException) {
327
+ Log.i(TAG, "dropping a bridge message for a page that is gone")
328
+ }
329
+ }
330
+
331
+ /** A response for a request that never becomes an AkanNativeCall (not numbered). */
332
+ private fun error(id: Long, code: String, message: String): JSONObject =
333
+ JSONObject().put("v", 1).put("id", id).put("ok", false).put("error", JSONObject().put("code", code).put("message", message))
334
+
335
+ /** Shell built-ins the page runtime calls. Dev builds only: the self-test's bridge checks. */
336
+ private fun host(call: AkanNativeCall) {
337
+ // AkanNativeFeatures.DEV is a constant: release builds (false) lose these methods and what only they
338
+ // reach (AkanNativeVectors) in R8 (architecture review stage 6).
339
+ if (!AkanNativeFeatures.DEV || !dev) return call.reject(AkanNativeErrorCode.NOT_FOUND, "unknown host method ${call.method}")
340
+ when (call.method) {
341
+ "echo" -> { // answers, then sends an event right after the answer (the order check)
342
+ call.resolve(call.args)
343
+ send("\$host", "echo", call.args)
344
+ }
345
+ "info" -> call.resolve(JSONObject().put("instance", AkanNativeApp.instance).put("bundleSelections", AkanNativeApp.bundleSelections).put("windows", AkanNativeApp.windows).put("stats", stats()).put("cancels", hangCancels))
346
+ "burst" -> { // coalescing \$host.tick events, then the answer (the coalesce check)
347
+ val count = call.int("count") ?: 0
348
+ for (n in 0 until count) send("\$host", "tick", JSONObject().put("n", n))
349
+ call.resolve(JSONObject().put("sent", count))
350
+ }
351
+ "hang" -> { // never answers by itself; counts its cancellation (v1.1 cancel check)
352
+ hanging.add(call)
353
+ call.onCancel {
354
+ hangCancels++
355
+ hanging.remove(call)
356
+ }
357
+ }
358
+ "vectors" -> { // the shared vectors against this device's kernel (AkanNativeVectors), off the main thread
359
+ Thread {
360
+ val result = AkanNativeVectors.run()
361
+ call.resolve(JSONObject().put("passed", result.passed).put("expected", AkanNativeVectors.expected).put("failures", JSONArray(result.failures.take(20))))
362
+ }.start()
363
+ }
364
+ "recreate" -> { // a new activity in this process
365
+ call.resolve()
366
+ main.postDelayed({ (webView.context as? android.app.Activity)?.recreate() }, 200)
367
+ }
368
+ else -> call.reject(AkanNativeErrorCode.NOT_FOUND, "unknown host method ${call.method}")
369
+ }
370
+ }
371
+
372
+ private inline fun safely(plugin: String, block: () -> Unit) {
373
+ try {
374
+ block()
375
+ } catch (e: Exception) {
376
+ Log.e(TAG, "plugin $plugin failed", e)
377
+ } catch (e: LinkageError) {
378
+ Log.e(TAG, "plugin $plugin needs an API this Android version does not have", e)
379
+ }
380
+ }
381
+
382
+ companion object {
383
+ private const val CLAIM = "akan-native:claim"
384
+ private const val MAX_OFFERS = 4
385
+ /** org.json output is valid JS; escape the two line terminators older engines choke on. */
386
+ fun jsSafe(json: String): String = json.replace("\u2028", "\\u2028").replace("\u2029", "\\u2029")
387
+ }
388
+ }
389
+
390
+ /** One page load (bridge v1.1 `doc`): the numbering of what it is sent, and its request ids. Main thread only. */
391
+ internal class AkanNativeDocument(override val id: String) : AkanNativeDocumentScope {
392
+ var seq = 0
393
+ val ids = AkanNativeCallIds()
394
+ /** Calls not answered yet (v1.1 `cancel`). Weak: a call a plugin drops must still be collected, which answers it. */
395
+ val running = HashMap<Long, java.lang.ref.WeakReference<AkanNativeCall>>()
396
+ /** Coalescing events not sent yet, in order (AkanNativeBridge.send). Main thread. */
397
+ val outbox = ArrayList<Pair<String, JSONObject>>()
398
+ var outboxScheduled = false
399
+ override var ended = false
400
+ private set
401
+ private val resources = LinkedHashMap<Long, () -> Unit>()
402
+ private var nextToken = 0L
403
+
404
+ override fun own(dispose: () -> Unit): Long {
405
+ if (ended) {
406
+ dispose()
407
+ return 0
408
+ }
409
+ resources[++nextToken] = dispose
410
+ return nextToken
411
+ }
412
+
413
+ override fun disown(token: Long) {
414
+ resources.remove(token)
415
+ }
416
+
417
+ val resourceCount: Int get() = resources.size
418
+
419
+ /** Marks it ended and hands over its disposers, last owned first. */
420
+ fun end(): List<() -> Unit> {
421
+ ended = true
422
+ return resources.values.reversed().also { resources.clear() }
423
+ }
424
+ }
425
+
426
+ /**
427
+ * A document's request ids (v1.1 `once`): each is accepted once. Ids grow within a document; recent
428
+ * ones are kept in a set and older ones covered by a floor (CallIds in @akanjs/native/desktop).
429
+ */
430
+ internal class AkanNativeCallIds {
431
+ private var floor = Long.MIN_VALUE
432
+ private val seen = HashSet<Long>()
433
+
434
+ fun accept(id: Long): Boolean {
435
+ if (id <= floor || id in seen) return false
436
+ seen.add(id)
437
+ if (seen.size > 1024) {
438
+ val oldest = seen.sorted().take(512)
439
+ seen.removeAll(oldest.toSet())
440
+ floor = oldest.last()
441
+ }
442
+ return true
443
+ }
444
+ }
@@ -0,0 +1,55 @@
1
+ // Framework APIs that changed after Android 10 (API 29, the app's minSdk), in one place for the shell
2
+ // and the plugins. Code that needs API N lives in an ApiN object and runs only under
3
+ // `Build.VERSION.SDK_INT >= N`; the build checks this (packages/cli/src/lib/apilevel.ts).
4
+ package com.akanjs.runtime
5
+
6
+ import android.app.Activity
7
+ import android.content.Context
8
+ import android.content.Intent
9
+ import android.os.Build
10
+ import android.os.Parcelable
11
+ import android.view.Display
12
+
13
+ object AkanNativeCompat {
14
+ /** The display the activity is on. Activity.getDisplay is API 30. */
15
+ fun display(activity: Activity): Display? =
16
+ if (Build.VERSION.SDK_INT >= 30) Api30.display(activity) else @Suppress("DEPRECATION") activity.windowManager.defaultDisplay
17
+
18
+ /**
19
+ * A typed Parcelable extra. The typed getParcelableExtra is API 33, with a bug in 13 that androidx
20
+ * IntentCompat avoids by using it from 34 on; the untyped one is deprecated there.
21
+ */
22
+ fun <T : Parcelable> parcelableExtra(intent: Intent, name: String, type: Class<T>): T? {
23
+ if (Build.VERSION.SDK_INT >= 34) return Api33.parcelableExtra(intent, name, type)
24
+ @Suppress("DEPRECATION") val value: Parcelable? = intent.getParcelableExtra(name)
25
+ return if (type.isInstance(value)) type.cast(value) else null
26
+ }
27
+
28
+ /**
29
+ * The app's own light or dark setting below API 31, which has no per-app night mode
30
+ * (UiModeManager.setApplicationNightMode): AkanNativeActivity applies it as an override configuration
31
+ * when it starts. null: follow the system.
32
+ */
33
+ fun storedNightMode(context: Context): Boolean? {
34
+ val prefs = context.getSharedPreferences(NIGHT_PREFS, Context.MODE_PRIVATE)
35
+ return if (prefs.contains(NIGHT_KEY)) prefs.getBoolean(NIGHT_KEY, false) else null
36
+ }
37
+
38
+ /** Stores the setting for the next activity start (commit: the recreated activity reads it at once). */
39
+ fun storeNightMode(context: Context, night: Boolean?) {
40
+ val edit = context.getSharedPreferences(NIGHT_PREFS, Context.MODE_PRIVATE).edit()
41
+ if (night == null) edit.remove(NIGHT_KEY) else edit.putBoolean(NIGHT_KEY, night)
42
+ edit.commit()
43
+ }
44
+
45
+ private const val NIGHT_PREFS = "akan-native.nightmode"
46
+ private const val NIGHT_KEY = "night"
47
+
48
+ private object Api30 {
49
+ fun display(activity: Activity): Display? = activity.display
50
+ }
51
+
52
+ private object Api33 {
53
+ fun <T : Parcelable> parcelableExtra(intent: Intent, name: String, type: Class<T>): T? = intent.getParcelableExtra(name, type)
54
+ }
55
+ }
@@ -0,0 +1,99 @@
1
+ // Generated by scripts/contract.ts from packages/core/contract.json. Do not edit.
2
+ package com.akanjs.runtime
3
+
4
+ /** An id grammar: allowed characters, length, and an optional extension after the first dot. */
5
+ class AkanNativeIdSpec(val chars: String, val first: String, val notFirst: String, val min: Int, val max: Int, val extChars: String, val extMax: Int)
6
+
7
+ object AkanNativeContract {
8
+ val ERROR_CODES = listOf("UNSUPPORTED", "PERMISSION_DENIED", "CANCELLED", "TIMEOUT", "INVALID_ARGS", "NOT_FOUND", "NOT_ALLOWED", "INTERNAL")
9
+
10
+ /** File name extension → MIME type (assets and FileRefs). */
11
+ val MIME = mapOf(
12
+ "html" to "text/html",
13
+ "htm" to "text/html",
14
+ "js" to "text/javascript",
15
+ "mjs" to "text/javascript",
16
+ "css" to "text/css",
17
+ "json" to "application/json",
18
+ "map" to "application/json",
19
+ "webmanifest" to "application/manifest+json",
20
+ "txt" to "text/plain",
21
+ "text" to "text/plain",
22
+ "log" to "text/plain",
23
+ "md" to "text/markdown",
24
+ "csv" to "text/csv",
25
+ "tsv" to "text/tab-separated-values",
26
+ "xml" to "application/xml",
27
+ "yaml" to "application/yaml",
28
+ "yml" to "application/yaml",
29
+ "ics" to "text/calendar",
30
+ "vcf" to "text/vcard",
31
+ "pdf" to "application/pdf",
32
+ "rtf" to "application/rtf",
33
+ "zip" to "application/zip",
34
+ "gz" to "application/gzip",
35
+ "tar" to "application/x-tar",
36
+ "wasm" to "application/wasm",
37
+ "epub" to "application/epub+zip",
38
+ "doc" to "application/msword",
39
+ "docx" to "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
40
+ "xls" to "application/vnd.ms-excel",
41
+ "xlsx" to "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
42
+ "ppt" to "application/vnd.ms-powerpoint",
43
+ "pptx" to "application/vnd.openxmlformats-officedocument.presentationml.presentation",
44
+ "png" to "image/png",
45
+ "jpg" to "image/jpeg",
46
+ "jpeg" to "image/jpeg",
47
+ "gif" to "image/gif",
48
+ "webp" to "image/webp",
49
+ "avif" to "image/avif",
50
+ "heic" to "image/heic",
51
+ "heif" to "image/heif",
52
+ "bmp" to "image/bmp",
53
+ "svg" to "image/svg+xml",
54
+ "ico" to "image/x-icon",
55
+ "tif" to "image/tiff",
56
+ "tiff" to "image/tiff",
57
+ "mp3" to "audio/mpeg",
58
+ "m4a" to "audio/mp4",
59
+ "aac" to "audio/aac",
60
+ "wav" to "audio/wav",
61
+ "ogg" to "audio/ogg",
62
+ "flac" to "audio/flac",
63
+ "mp4" to "video/mp4",
64
+ "m4v" to "video/mp4",
65
+ "mov" to "video/quicktime",
66
+ "webm" to "video/webm",
67
+ "ttf" to "font/ttf",
68
+ "otf" to "font/otf",
69
+ "woff" to "font/woff",
70
+ "woff2" to "font/woff2",
71
+ "glb" to "model/gltf-binary",
72
+ "gltf" to "model/gltf+json",
73
+ )
74
+
75
+ /** Besides the text types, the asset types served with charset=utf-8. */
76
+ val MIME_UTF8 = setOf("application/json", "application/manifest+json", "application/xml", "application/yaml", "image/svg+xml", "model/gltf+json")
77
+
78
+ val ID_FILE_REF = AkanNativeIdSpec("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-", "", "", 1, 128, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 8)
79
+ val ID_BUNDLE = AkanNativeIdSpec("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-", "", ".", 1, 80, "", 0)
80
+ val ID_DOCUMENT = AkanNativeIdSpec("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-", "", "", 8, 64, "", 0)
81
+ val ID_NAME = AkanNativeIdSpec("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-", "\$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "", 1, 64, "", 0)
82
+
83
+ val EXTERNAL_SCHEMES = listOf("http", "https", "mailto", "tel")
84
+ val FRAME_SCHEMES = listOf("http", "https", "data", "blob", "about")
85
+ /** Schemes an app can never add to the external list. */
86
+ val NEVER_EXTERNAL_SCHEMES = listOf("javascript", "vbscript", "file", "data", "blob", "about", "content", "intent", "app")
87
+
88
+ const val ROUTE_ROOT = "__akan_native"
89
+ const val ROUTE_INIT = "init.js"
90
+ const val ROUTE_IPC = "ipc"
91
+ const val ROUTE_HELLO = "hello"
92
+ const val ROUTE_FILE = "file"
93
+
94
+ const val INIT_PREFIX = "window.__AKAN_NATIVE__=(function(o,b,e){for(var k in b)o[k]=b[k];o.env=e;return o})(window.__AKAN_NATIVE__||{},"
95
+ const val INIT_SUFFIX = ");\n"
96
+ const val MAX_RANGE_BYTES = 1024000
97
+ const val EXTERNAL_OPENS_PER_SECOND = 1
98
+ const val MAX_RETAINED_EVENTS = 16
99
+ }