akanjs 2.2.4 → 2.2.5

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 (609) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/base/base.ts +1 -1
  3. package/base/primitiveRegistry.ts +6 -10
  4. package/base/types.ts +1 -4
  5. package/capacitor.base.config.ts +1 -1
  6. package/client/capacitor.ts +1 -1
  7. package/client/cookie.ts +2 -4
  8. package/client/createFont.ts +2 -2
  9. package/client/csrTypes.ts +2 -8
  10. package/client/makePageProto.tsx +4 -10
  11. package/client/router.ts +3 -8
  12. package/client/translator.ts +4 -12
  13. package/common/Logger.ts +1 -4
  14. package/common/formatNumber.ts +2 -5
  15. package/common/hmrPhase.ts +1 -1
  16. package/common/isValidDate.ts +0 -3
  17. package/constant/fieldInfo.ts +3 -3
  18. package/constant/purify.ts +1 -2
  19. package/constant/types.ts +0 -4
  20. package/constant/via.ts +6 -12
  21. package/document/databaseRegistry.ts +0 -8
  22. package/document/into.ts +0 -1
  23. package/fetch/client/fetchClient.ts +1 -6
  24. package/fetch/client/httpClient.ts +1 -2
  25. package/fetch/fetchType/appliedReturn.type.ts +0 -1
  26. package/fetch/fetchType/endpointFetch.type.ts +0 -3
  27. package/fetch/fetchType/sliceFetch.type.ts +0 -8
  28. package/fetch/requestStorage.ts +2 -10
  29. package/package.json +67 -24
  30. package/server/akanApp.ts +2 -5
  31. package/server/akanLib.ts +0 -1
  32. package/server/akanServer.ts +3 -4
  33. package/server/artifact/builderRpc.ts +2 -2
  34. package/server/artifact/ipcTypes.ts +0 -4
  35. package/server/decorators.ts +1 -1
  36. package/server/di/diLifecycle.ts +3 -6
  37. package/server/hmr/clientScript.ts +2 -20
  38. package/server/hmr/devHmrController.ts +0 -4
  39. package/server/processMetricsCollector.ts +1 -1
  40. package/server/resolver/database.resolver.ts +2 -2
  41. package/server/resolver/resolver.contract.fixture.ts +0 -1
  42. package/server/resolver/signal.resolver.ts +2 -10
  43. package/server/routing/apiRouter.ts +2 -4
  44. package/server/rscClient.tsx +1 -7
  45. package/server/rscWorkerHost.ts +11 -33
  46. package/server/ssrFromRscRenderer.tsx +3 -35
  47. package/server/types/react-server-dom-webpack.d.ts +1 -7
  48. package/server/vendor/react-dom-client.ts +1 -1
  49. package/server/vendor/react-dom.ts +2 -3
  50. package/server/vendor/react-jsx-dev-runtime.ts +1 -1
  51. package/server/vendor/react-jsx-runtime.ts +1 -1
  52. package/server/vendor/react-refresh-runtime.ts +2 -2
  53. package/server/vendor/react-server-dom-webpack-client-browser.ts +1 -1
  54. package/server/vendor/react.ts +2 -9
  55. package/server/vendor/scheduler.ts +2 -3
  56. package/server/webRouter.ts +2 -3
  57. package/service/adapt.ts +1 -5
  58. package/service/predefinedAdaptor/cache.adaptor.ts +1 -2
  59. package/service/predefinedAdaptor/database.adaptor.ts +2 -2
  60. package/service/predefinedAdaptor/solidSqlite.ts +1 -2
  61. package/service/predefinedAdaptor/websocket.adaptor.ts +3 -15
  62. package/service/serve.ts +3 -7
  63. package/signal/base.signal.ts +0 -1
  64. package/signal/endpointInfo.ts +0 -7
  65. package/signal/intercept.ts +0 -2
  66. package/signal/middleware.ts +1 -2
  67. package/signal/serverSignal.ts +1 -15
  68. package/signal/signalContext.ts +1 -1
  69. package/signal/signalRegistry.ts +0 -5
  70. package/signal/sliceInfo.ts +0 -3
  71. package/signal/trace.ts +0 -11
  72. package/signal/types.ts +2 -11
  73. package/store/action.ts +3 -5
  74. package/store/stateBuilder.ts +0 -2
  75. package/store/stateInfo.ts +1 -2
  76. package/store/types.ts +1 -1
  77. package/test/playwright.config.base.ts +5 -28
  78. package/test/playwright.pageAgent.ts +1 -1
  79. package/test/sampleOf.ts +1 -1
  80. package/test/testServer.ts +1 -1
  81. package/types/base/base.d.ts +53 -0
  82. package/types/base/baseEnv.d.ts +68 -0
  83. package/types/base/index.d.ts +6 -0
  84. package/types/base/primitiveRegistry.d.ts +134 -0
  85. package/types/base/symbols.d.ts +11 -0
  86. package/types/base/types.d.ts +68 -0
  87. package/types/base/utils.d.ts +4 -0
  88. package/types/base.d.ts +1 -0
  89. package/types/capacitor.base.config.d.ts +3 -0
  90. package/types/client/capacitor.d.ts +233 -0
  91. package/types/client/clientRuntime.d.ts +63 -0
  92. package/types/client/cookie.d.ts +33 -0
  93. package/types/client/createFont.d.ts +6 -0
  94. package/types/client/csrTypes.d.ts +262 -0
  95. package/types/client/decorators.d.ts +7 -0
  96. package/types/client/device.d.ts +41 -0
  97. package/types/client/fetch.d.ts +1 -0
  98. package/types/client/index.d.ts +14 -0
  99. package/types/client/locale.d.ts +5 -0
  100. package/types/client/makePageProto.d.ts +17002 -0
  101. package/types/client/router.d.ts +66 -0
  102. package/types/client/rscNavigation.d.ts +19 -0
  103. package/types/client/storage.d.ts +5 -0
  104. package/types/client/translator.d.ts +18 -0
  105. package/types/client/types.d.ts +145 -0
  106. package/types/client/useClient.d.ts +1 -0
  107. package/types/client.d.ts +1 -0
  108. package/types/common/Logger.d.ts +41 -0
  109. package/types/common/applyMixins.d.ts +3 -0
  110. package/types/common/capitalize.d.ts +2 -0
  111. package/types/common/deepObjectify.d.ts +4 -0
  112. package/types/common/fileUpload.d.ts +28 -0
  113. package/types/common/formatNumber.d.ts +1 -0
  114. package/types/common/formatPhone.d.ts +2 -0
  115. package/types/common/getAllPropertyDescriptors.d.ts +5 -0
  116. package/types/common/hmrPhase.d.ts +6 -0
  117. package/types/common/httpClient.d.ts +20 -0
  118. package/types/common/index.d.ts +29 -0
  119. package/types/common/isDayjs.d.ts +2 -0
  120. package/types/common/isEmail.d.ts +2 -0
  121. package/types/common/isPhoneNumber.d.ts +2 -0
  122. package/types/common/isQueryEqual.d.ts +1 -0
  123. package/types/common/isValidDate.d.ts +2 -0
  124. package/types/common/jwtDecode.d.ts +2 -0
  125. package/types/common/localeConfig.d.ts +11 -0
  126. package/types/common/lowerlize.d.ts +2 -0
  127. package/types/common/mergeVersion.d.ts +10 -0
  128. package/types/common/objectify.d.ts +1 -0
  129. package/types/common/pathGet.d.ts +1 -0
  130. package/types/common/pathSet.d.ts +3 -0
  131. package/types/common/randomPick.d.ts +1 -0
  132. package/types/common/randomPicks.d.ts +1 -0
  133. package/types/common/routeConvention.d.ts +35 -0
  134. package/types/common/sleep.d.ts +2 -0
  135. package/types/common/splitVersion.d.ts +11 -0
  136. package/types/common/subRoute.d.ts +7 -0
  137. package/types/common/types.d.ts +14 -0
  138. package/types/common.d.ts +1 -0
  139. package/types/constant/constantRegistry.d.ts +89 -0
  140. package/types/constant/crystalize.d.ts +4 -0
  141. package/types/constant/deserialize.d.ts +7 -0
  142. package/types/constant/fieldInfo.d.ts +153 -0
  143. package/types/constant/getDefault.d.ts +3 -0
  144. package/types/constant/immerify.d.ts +2 -0
  145. package/types/constant/index.d.ts +10 -0
  146. package/types/constant/purify.d.ts +12 -0
  147. package/types/constant/serialize.d.ts +11 -0
  148. package/types/constant/types.d.ts +77 -0
  149. package/types/constant/via.d.ts +52 -0
  150. package/types/constant.d.ts +1 -0
  151. package/types/dictionary/base.dictionary.d.ts +1 -0
  152. package/types/dictionary/dictInfo.d.ts +206 -0
  153. package/types/dictionary/dictionary.d.ts +11 -0
  154. package/types/dictionary/index.d.ts +4 -0
  155. package/types/dictionary/locale.d.ts +128 -0
  156. package/types/dictionary/trans.d.ts +82 -0
  157. package/types/dictionary.d.ts +1 -0
  158. package/types/document/by.d.ts +20 -0
  159. package/types/document/dataLoader.d.ts +36 -0
  160. package/types/document/database.d.ts +96 -0
  161. package/types/document/databaseRegistry.d.ts +36 -0
  162. package/types/document/documentQuery.d.ts +105 -0
  163. package/types/document/documentSchema.d.ts +33 -0
  164. package/types/document/filterMeta.d.ts +84 -0
  165. package/types/document/index.d.ts +11 -0
  166. package/types/document/into.d.ts +65 -0
  167. package/types/document/loaderInfo.d.ts +35 -0
  168. package/types/document/schema.d.ts +5 -0
  169. package/types/document/types.d.ts +36 -0
  170. package/types/document.d.ts +1 -0
  171. package/types/fetch/client/fetchClient.d.ts +78 -0
  172. package/types/fetch/client/httpClient.d.ts +39 -0
  173. package/types/fetch/client/index.d.ts +3 -0
  174. package/types/fetch/client/wsClient.d.ts +37 -0
  175. package/types/fetch/client.d.ts +1 -0
  176. package/types/fetch/fetchType/appliedReturn.type.d.ts +67 -0
  177. package/types/fetch/fetchType/buildFetch.type.d.ts +11 -0
  178. package/types/fetch/fetchType/clientSignal.type.d.ts +16 -0
  179. package/types/fetch/fetchType/endpointFetch.type.d.ts +29 -0
  180. package/types/fetch/fetchType/index.d.ts +5 -0
  181. package/types/fetch/fetchType/sliceFetch.type.d.ts +76 -0
  182. package/types/fetch/fetchType.d.ts +1 -0
  183. package/types/fetch/index.d.ts +4 -0
  184. package/types/fetch/requestStorage.d.ts +29 -0
  185. package/types/fetch/serializer/fetch.serializer.d.ts +14 -0
  186. package/types/fetch/serializer/index.d.ts +1 -0
  187. package/types/fetch/serializer.d.ts +1 -0
  188. package/types/fetch/types.d.ts +19 -0
  189. package/types/fetch.d.ts +1 -0
  190. package/types/index.d.ts +213 -0
  191. package/types/server/akanApp.d.ts +17 -0
  192. package/types/server/akanAppHeaders.d.ts +1 -0
  193. package/types/server/akanLib.d.ts +33 -0
  194. package/types/server/akanOption.d.ts +15 -0
  195. package/types/server/akanServer.d.ts +47 -0
  196. package/types/server/artifact/builderRpc.d.ts +42 -0
  197. package/types/server/artifact/index.d.ts +6 -0
  198. package/types/server/artifact/ipcTypes.d.ts +73 -0
  199. package/types/server/artifact/manifestTypes.d.ts +16 -0
  200. package/types/server/artifact/routeClientCache.d.ts +45 -0
  201. package/types/server/artifact/routeSeedIndexStore.d.ts +43 -0
  202. package/types/server/artifact/routesManifestStore.d.ts +16 -0
  203. package/types/server/artifact.d.ts +1 -0
  204. package/types/server/decorators.d.ts +6 -0
  205. package/types/server/di/diLifecycle.d.ts +45 -0
  206. package/types/server/di/index.d.ts +4 -0
  207. package/types/server/di/predefinedAdaptor.d.ts +33 -0
  208. package/types/server/di/resolveAdaptorHierarchy.d.ts +21 -0
  209. package/types/server/di/resolveHierarchy.d.ts +11 -0
  210. package/types/server/di/resolveServiceHierarchy.d.ts +13 -0
  211. package/types/server/di/utils.d.ts +14 -0
  212. package/types/server/di.d.ts +1 -0
  213. package/types/server/hmr/changeBatch.d.ts +13 -0
  214. package/types/server/hmr/clientScript.d.ts +1 -0
  215. package/types/server/hmr/devHmrController.d.ts +24 -0
  216. package/types/server/hmr/index.d.ts +4 -0
  217. package/types/server/hmr/wsHub.d.ts +45 -0
  218. package/types/server/hmr.d.ts +1 -0
  219. package/types/server/imageOptimizer.d.ts +12 -0
  220. package/types/server/imageOptimizerError.d.ts +4 -0
  221. package/types/server/index.d.ts +14 -0
  222. package/types/server/lifecycle/shutdownManager.d.ts +13 -0
  223. package/types/server/logging/rotatingLogWriter.d.ts +20 -0
  224. package/types/server/processMetricsCollector.d.ts +10 -0
  225. package/types/server/proxy/akanResponse.d.ts +7 -0
  226. package/types/server/proxy/bunRequestFields.d.ts +1 -0
  227. package/types/server/proxy/hostBasePathWebProxy.d.ts +6 -0
  228. package/types/server/proxy/index.d.ts +6 -0
  229. package/types/server/proxy/localeWebProxy.d.ts +5 -0
  230. package/types/server/proxy/types.d.ts +37 -0
  231. package/types/server/proxy/webProxyRunner.d.ts +7 -0
  232. package/types/server/proxy.d.ts +1 -0
  233. package/types/server/resolver/database.resolver.d.ts +6 -0
  234. package/types/server/resolver/index.d.ts +3 -0
  235. package/types/server/resolver/service.resolver.d.ts +7 -0
  236. package/types/server/resolver/signal.resolver.d.ts +29 -0
  237. package/types/server/resolver.d.ts +1 -0
  238. package/types/server/robots.d.ts +1 -0
  239. package/types/server/routeElementComposer.d.ts +41 -0
  240. package/types/server/routeTreeBuilder.d.ts +28 -0
  241. package/types/server/routing/apiRouter.d.ts +61 -0
  242. package/types/server/rscClient.d.ts +15 -0
  243. package/types/server/rscWorker.d.ts +3 -0
  244. package/types/server/rscWorkerHost.d.ts +83 -0
  245. package/types/server/sitemap.d.ts +13 -0
  246. package/types/server/ssrFromRscRenderer.d.ts +6 -0
  247. package/types/server/ssrTypes.d.ts +47 -0
  248. package/types/server/systemPages.d.ts +27 -0
  249. package/types/server/types/react-server-dom-webpack.d.ts +91 -0
  250. package/types/server/types.d.ts +67 -0
  251. package/types/server/vendor/akanjs-base.d.ts +1 -0
  252. package/types/server/vendor/akanjs-common.d.ts +1 -0
  253. package/types/server/vendor/akanjs-constant.d.ts +1 -0
  254. package/types/server/vendor/akanjs-store.d.ts +1 -0
  255. package/types/server/vendor/react-dom-client.d.ts +3 -0
  256. package/types/server/vendor/react-dom.d.ts +3 -0
  257. package/types/server/vendor/react-jsx-dev-runtime.d.ts +3 -0
  258. package/types/server/vendor/react-jsx-runtime.d.ts +3 -0
  259. package/types/server/vendor/react-refresh-runtime.d.ts +3 -0
  260. package/types/server/vendor/react-server-dom-webpack-client-browser.d.ts +3 -0
  261. package/types/server/vendor/react.d.ts +11 -0
  262. package/types/server/vendor/scheduler.d.ts +3 -0
  263. package/types/server/webRouter.d.ts +44 -0
  264. package/types/server.d.ts +1 -0
  265. package/types/service/adapt.d.ts +15 -0
  266. package/types/service/base.service.d.ts +18 -0
  267. package/types/service/index.d.ts +10 -0
  268. package/types/service/injectInfo.d.ts +102 -0
  269. package/types/service/ipcTypes.d.ts +194 -0
  270. package/types/service/predefinedAdaptor/cache.adaptor.d.ts +46 -0
  271. package/types/service/predefinedAdaptor/compress.adaptor.d.ts +22 -0
  272. package/types/service/predefinedAdaptor/database.adaptor.d.ts +329 -0
  273. package/types/service/predefinedAdaptor/index.d.ts +13 -0
  274. package/types/service/predefinedAdaptor/logging.adaptor.d.ts +20 -0
  275. package/types/service/predefinedAdaptor/queue.adaptor.d.ts +22 -0
  276. package/types/service/predefinedAdaptor/role.adaptor.d.ts +17 -0
  277. package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +60 -0
  278. package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +25 -0
  279. package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +20 -0
  280. package/types/service/predefinedAdaptor/solidQueue.adaptor.d.ts +19 -0
  281. package/types/service/predefinedAdaptor/solidSqlite.d.ts +24 -0
  282. package/types/service/predefinedAdaptor/sqlitePath.d.ts +9 -0
  283. package/types/service/predefinedAdaptor/storage.adaptor.d.ts +80 -0
  284. package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +49 -0
  285. package/types/service/predefinedAdaptor.d.ts +1 -0
  286. package/types/service/serve.d.ts +31 -0
  287. package/types/service/serviceModule.d.ts +50 -0
  288. package/types/service/serviceRegistry.d.ts +9 -0
  289. package/types/service/types.d.ts +55 -0
  290. package/types/service.d.ts +1 -0
  291. package/types/signal/base.signal.d.ts +41 -0
  292. package/types/signal/endpoint.d.ts +28 -0
  293. package/types/signal/endpointInfo.d.ts +77 -0
  294. package/types/signal/exception.d.ts +54786 -0
  295. package/types/signal/guard.d.ts +10 -0
  296. package/types/signal/guards.d.ts +10 -0
  297. package/types/signal/index.d.ts +19 -0
  298. package/types/signal/intercept.d.ts +17 -0
  299. package/types/signal/internal.d.ts +18 -0
  300. package/types/signal/internalArg.d.ts +31 -0
  301. package/types/signal/internalInfo.d.ts +45 -0
  302. package/types/signal/middleware.d.ts +51 -0
  303. package/types/signal/serializer/fetch.serializer.d.ts +14 -0
  304. package/types/signal/serializer/index.d.ts +1 -0
  305. package/types/signal/serializer.d.ts +1 -0
  306. package/types/signal/serverSignal.d.ts +36 -0
  307. package/types/signal/signalContext.d.ts +96 -0
  308. package/types/signal/signalRegistry.d.ts +49 -0
  309. package/types/signal/slice.d.ts +42 -0
  310. package/types/signal/sliceInfo.d.ts +51 -0
  311. package/types/signal/trace.d.ts +97 -0
  312. package/types/signal/types.d.ts +142 -0
  313. package/types/signal.d.ts +1 -0
  314. package/types/store/action.d.ts +145 -0
  315. package/types/store/baseSt.d.ts +412 -0
  316. package/types/store/hooks.d.ts +1 -0
  317. package/types/store/index.d.ts +8 -0
  318. package/types/store/rootStore.d.ts +22 -0
  319. package/types/store/state.d.ts +91 -0
  320. package/types/store/stateBuilder.d.ts +141 -0
  321. package/types/store/stateInfo.d.ts +23 -0
  322. package/types/store/store.d.ts +36 -0
  323. package/types/store/storeInstance.d.ts +38 -0
  324. package/types/store/storeRegistry.d.ts +13 -0
  325. package/types/store/types.d.ts +42 -0
  326. package/types/store/withSelector.d.ts +42 -0
  327. package/types/store.d.ts +1 -0
  328. package/types/test/index.d.ts +4 -0
  329. package/types/test/playwright.config.base.d.ts +9 -0
  330. package/types/test/playwright.pageAgent.d.ts +12 -0
  331. package/types/test/sample.d.ts +15 -0
  332. package/types/test/sampleOf.d.ts +5 -0
  333. package/types/test/signalTest.preload.d.ts +1 -0
  334. package/types/test/signalTestRuntime.d.ts +29 -0
  335. package/types/test/testServer.d.ts +26 -0
  336. package/types/test.d.ts +1 -0
  337. package/types/ui/BottomSheet.d.ts +13 -0
  338. package/types/ui/Button.d.ts +11 -0
  339. package/types/ui/ClientSide.d.ts +8 -0
  340. package/types/ui/Clipboard.d.ts +7 -0
  341. package/types/ui/Constant/Doc.d.ts +29 -0
  342. package/types/ui/Constant/Mermaid.d.ts +8 -0
  343. package/types/ui/Constant/index.d.ts +6 -0
  344. package/types/ui/Constant/schemaDoc.d.ts +84 -0
  345. package/types/ui/Constant.d.ts +1 -0
  346. package/types/ui/Copy.d.ts +10 -0
  347. package/types/ui/CsrImage.d.ts +18 -0
  348. package/types/ui/Data/CardList.d.ts +36 -0
  349. package/types/ui/Data/Dashboard.d.ts +11 -0
  350. package/types/ui/Data/Insight.d.ts +9 -0
  351. package/types/ui/Data/Item.d.ts +75 -0
  352. package/types/ui/Data/ListContainer.d.ts +49 -0
  353. package/types/ui/Data/Pagination.d.ts +9 -0
  354. package/types/ui/Data/QueryMaker.d.ts +8 -0
  355. package/types/ui/Data/TableList.d.ts +26 -0
  356. package/types/ui/Data/index.d.ts +9 -0
  357. package/types/ui/Data/index_.d.ts +8 -0
  358. package/types/ui/Data.d.ts +1 -0
  359. package/types/ui/DatePicker.d.ts +36 -0
  360. package/types/ui/Dialog/Action.d.ts +5 -0
  361. package/types/ui/Dialog/Close.d.ts +6 -0
  362. package/types/ui/Dialog/Content.d.ts +6 -0
  363. package/types/ui/Dialog/Modal.d.ts +9 -0
  364. package/types/ui/Dialog/Provider.d.ts +11 -0
  365. package/types/ui/Dialog/Title.d.ts +5 -0
  366. package/types/ui/Dialog/Trigger.d.ts +6 -0
  367. package/types/ui/Dialog/context.d.ts +10 -0
  368. package/types/ui/Dialog/index.d.ts +9 -0
  369. package/types/ui/Dialog.d.ts +1 -0
  370. package/types/ui/DragAction.d.ts +24 -0
  371. package/types/ui/DraggableList.d.ts +31 -0
  372. package/types/ui/Dropdown.d.ts +14 -0
  373. package/types/ui/Empty.d.ts +12 -0
  374. package/types/ui/Field.d.ts +411 -0
  375. package/types/ui/FontFace.d.ts +6 -0
  376. package/types/ui/Image.d.ts +49 -0
  377. package/types/ui/InfiniteScroll.d.ts +10 -0
  378. package/types/ui/Input.d.ts +95 -0
  379. package/types/ui/KeyboardAvoiding.d.ts +8 -0
  380. package/types/ui/Layout/BottomAction.d.ts +6 -0
  381. package/types/ui/Layout/BottomInset.d.ts +7 -0
  382. package/types/ui/Layout/BottomTab.d.ts +14 -0
  383. package/types/ui/Layout/Header.d.ts +8 -0
  384. package/types/ui/Layout/LeftSider.d.ts +9 -0
  385. package/types/ui/Layout/Navbar.d.ts +11 -0
  386. package/types/ui/Layout/RightSider.d.ts +10 -0
  387. package/types/ui/Layout/Sider.d.ts +7 -0
  388. package/types/ui/Layout/Template.d.ts +7 -0
  389. package/types/ui/Layout/TopLeftAction.d.ts +6 -0
  390. package/types/ui/Layout/Unit.d.ts +9 -0
  391. package/types/ui/Layout/View.d.ts +8 -0
  392. package/types/ui/Layout/Zone.d.ts +6 -0
  393. package/types/ui/Layout/index.d.ts +14 -0
  394. package/types/ui/Layout.d.ts +1 -0
  395. package/types/ui/Link/Back.d.ts +7 -0
  396. package/types/ui/Link/Close.d.ts +7 -0
  397. package/types/ui/Link/CsrLink.d.ts +2 -0
  398. package/types/ui/Link/Lang.d.ts +8 -0
  399. package/types/ui/Link/SsrLink.d.ts +2 -0
  400. package/types/ui/Link/index.d.ts +10 -0
  401. package/types/ui/Link/types.d.ts +42 -0
  402. package/types/ui/Link.d.ts +1 -0
  403. package/types/ui/Load/Edit.d.ts +4 -0
  404. package/types/ui/Load/Edit_Client.d.ts +27 -0
  405. package/types/ui/Load/Page.d.ts +15 -0
  406. package/types/ui/Load/PageCSR.d.ts +3 -0
  407. package/types/ui/Load/Pagination.d.ts +8 -0
  408. package/types/ui/Load/Units.d.ts +30 -0
  409. package/types/ui/Load/View.d.ts +22 -0
  410. package/types/ui/Load/index.d.ts +8 -0
  411. package/types/ui/Load/index_.d.ts +3 -0
  412. package/types/ui/Load.d.ts +1 -0
  413. package/types/ui/Loading/Area.d.ts +1 -0
  414. package/types/ui/Loading/Button.d.ts +7 -0
  415. package/types/ui/Loading/Input.d.ts +7 -0
  416. package/types/ui/Loading/ProgressBar.d.ts +6 -0
  417. package/types/ui/Loading/Skeleton.d.ts +7 -0
  418. package/types/ui/Loading/Spin.d.ts +7 -0
  419. package/types/ui/Loading/index.d.ts +8 -0
  420. package/types/ui/Loading.d.ts +1 -0
  421. package/types/ui/Menu.d.ts +26 -0
  422. package/types/ui/Modal.d.ts +19 -0
  423. package/types/ui/Model/AdminPanel.d.ts +31 -0
  424. package/types/ui/Model/Edit.d.ts +16 -0
  425. package/types/ui/Model/EditModal.d.ts +52 -0
  426. package/types/ui/Model/EditWrapper.d.ts +13 -0
  427. package/types/ui/Model/LoadInit.d.ts +10 -0
  428. package/types/ui/Model/New.d.ts +16 -0
  429. package/types/ui/Model/NewWrapper.d.ts +13 -0
  430. package/types/ui/Model/NewWrapper_Client.d.ts +13 -0
  431. package/types/ui/Model/Remove.d.ts +13 -0
  432. package/types/ui/Model/RemoveWrapper.d.ts +12 -0
  433. package/types/ui/Model/SureToRemove.d.ts +11 -0
  434. package/types/ui/Model/View.d.ts +19 -0
  435. package/types/ui/Model/ViewEditModal.d.ts +12 -0
  436. package/types/ui/Model/ViewModal.d.ts +14 -0
  437. package/types/ui/Model/ViewWrapper.d.ts +12 -0
  438. package/types/ui/Model/index.d.ts +16 -0
  439. package/types/ui/Model/index_.d.ts +14 -0
  440. package/types/ui/Model.d.ts +1 -0
  441. package/types/ui/More.d.ts +12 -0
  442. package/types/ui/ObjectId.d.ts +5 -0
  443. package/types/ui/Pagination.d.ts +20 -0
  444. package/types/ui/Popconfirm.d.ts +28 -0
  445. package/types/ui/Portal.d.ts +6 -0
  446. package/types/ui/Radio.d.ts +19 -0
  447. package/types/ui/RecentTime.d.ts +12 -0
  448. package/types/ui/Refresh.d.ts +7 -0
  449. package/types/ui/ScreenNavigator.d.ts +18 -0
  450. package/types/ui/Select.d.ts +43 -0
  451. package/types/ui/Signal/Arg.d.ts +78 -0
  452. package/types/ui/Signal/Doc.d.ts +33 -0
  453. package/types/ui/Signal/Listener.d.ts +9 -0
  454. package/types/ui/Signal/Message.d.ts +23 -0
  455. package/types/ui/Signal/Object.d.ts +20 -0
  456. package/types/ui/Signal/PubSub.d.ts +24 -0
  457. package/types/ui/Signal/Request.d.ts +8 -0
  458. package/types/ui/Signal/Response.d.ts +14 -0
  459. package/types/ui/Signal/RestApi.d.ts +40 -0
  460. package/types/ui/Signal/WebSocket.d.ts +11 -0
  461. package/types/ui/Signal/index.d.ts +18 -0
  462. package/types/ui/Signal/makeExample.d.ts +4 -0
  463. package/types/ui/Signal/style.d.ts +15 -0
  464. package/types/ui/Signal.d.ts +1 -0
  465. package/types/ui/System/CSR.d.ts +32 -0
  466. package/types/ui/System/Client.d.ts +47 -0
  467. package/types/ui/System/Common.d.ts +47 -0
  468. package/types/ui/System/DevModeToggle.d.ts +1 -0
  469. package/types/ui/System/Gtag.d.ts +4 -0
  470. package/types/ui/System/Messages.d.ts +1 -0
  471. package/types/ui/System/Reconnect.d.ts +1 -0
  472. package/types/ui/System/Root.d.ts +6 -0
  473. package/types/ui/System/SSR.d.ts +24 -0
  474. package/types/ui/System/SelectLanguage.d.ts +5 -0
  475. package/types/ui/System/ThemeToggle.d.ts +4 -0
  476. package/types/ui/System/index.d.ts +12 -0
  477. package/types/ui/System.d.ts +1 -0
  478. package/types/ui/Tab/Menu.d.ts +12 -0
  479. package/types/ui/Tab/Menus.d.ts +6 -0
  480. package/types/ui/Tab/Panel.d.ts +8 -0
  481. package/types/ui/Tab/Provider.d.ts +10 -0
  482. package/types/ui/Tab/context.d.ts +9 -0
  483. package/types/ui/Tab/index.d.ts +7 -0
  484. package/types/ui/Tab.d.ts +1 -0
  485. package/types/ui/Table.d.ts +41 -0
  486. package/types/ui/ToggleSelect.d.ts +33 -0
  487. package/types/ui/Unauthorized.d.ts +9 -0
  488. package/types/ui/animated.d.ts +5 -0
  489. package/types/ui/fontCss.d.ts +11 -0
  490. package/types/ui/index.d.ts +44 -0
  491. package/types/ui.d.ts +1 -0
  492. package/types/webkit/bootCsr.d.ts +16 -0
  493. package/types/webkit/createRobotPage.d.ts +15 -0
  494. package/types/webkit/createSitemapPage.d.ts +4 -0
  495. package/types/webkit/index.d.ts +17 -0
  496. package/types/webkit/lazy.d.ts +11 -0
  497. package/types/webkit/types.d.ts +7 -0
  498. package/types/webkit/useCamera.d.ts +19 -0
  499. package/types/webkit/useCodepush.d.ts +16 -0
  500. package/types/webkit/useContact.d.ts +11 -0
  501. package/types/webkit/useCsrValues.d.ts +30 -0
  502. package/types/webkit/useDebounce.d.ts +2 -0
  503. package/types/webkit/useFetch.d.ts +18 -0
  504. package/types/webkit/useGeoLocation.d.ts +8 -0
  505. package/types/webkit/useHistory.d.ts +23 -0
  506. package/types/webkit/useInterval.d.ts +2 -0
  507. package/types/webkit/useLocation.d.ts +8 -0
  508. package/types/webkit/usePurchase.d.ts +19 -0
  509. package/types/webkit/usePushNoti.d.ts +7 -0
  510. package/types/webkit/useThrottle.d.ts +2 -0
  511. package/types/webkit.d.ts +1 -0
  512. package/ui/BottomSheet.tsx +1 -1
  513. package/ui/Clipboard.tsx +1 -1
  514. package/ui/CsrImage.tsx +3 -14
  515. package/ui/Data/ListContainer.tsx +1 -1
  516. package/ui/Data/Pagination.tsx +1 -1
  517. package/ui/Data/QueryMaker.tsx +0 -339
  518. package/ui/Data/index.ts +0 -1
  519. package/ui/DatePicker.tsx +1 -95
  520. package/ui/Dialog/Modal.tsx +1 -1
  521. package/ui/DraggableList.tsx +5 -5
  522. package/ui/Field.tsx +2 -3
  523. package/ui/Image.tsx +2 -3
  524. package/ui/InfiniteScroll.tsx +0 -1
  525. package/ui/Input.tsx +1 -8
  526. package/ui/Layout/BottomTab.tsx +2 -2
  527. package/ui/Link/SsrLink.tsx +1 -2
  528. package/ui/Load/Page.tsx +1 -1
  529. package/ui/Load/PageCSR.tsx +0 -1
  530. package/ui/Load/Units.tsx +1 -2
  531. package/ui/Load/View.tsx +1 -2
  532. package/ui/Menu.tsx +5 -8
  533. package/ui/Model/EditModal.tsx +2 -5
  534. package/ui/Popconfirm.tsx +2 -4
  535. package/ui/ScreenNavigator.tsx +2 -3
  536. package/ui/Signal/Message.tsx +2 -3
  537. package/ui/Signal/PubSub.tsx +0 -2
  538. package/ui/Signal/Response.tsx +1 -1
  539. package/ui/Signal/WebSocket.tsx +2 -11
  540. package/ui/System/Client.tsx +7 -41
  541. package/ui/System/Gtag.tsx +2 -5
  542. package/ui/System/Messages.tsx +2 -2
  543. package/ui/System/Reconnect.tsx +5 -6
  544. package/ui/System/Root.tsx +0 -1
  545. package/ui/System/SSR.tsx +1 -7
  546. package/ui/ToggleSelect.tsx +3 -8
  547. package/ui/Unauthorized.tsx +1 -1
  548. package/webkit/bootCsr.tsx +3 -6
  549. package/webkit/lazy.tsx +1 -8
  550. package/webkit/useCamera.tsx +0 -1
  551. package/webkit/useCodepush.tsx +4 -9
  552. package/webkit/useContact.tsx +0 -1
  553. package/webkit/useCsrValues.ts +6 -10
  554. package/webkit/useDebounce.ts +2 -2
  555. package/webkit/usePurchase.tsx +5 -9
  556. package/webkit/usePushNoti.tsx +0 -1
  557. package/base/base.test.ts +0 -135
  558. package/base/baseEnv.test.ts +0 -146
  559. package/base/primitiveRegistry.test.ts +0 -127
  560. package/base/symbols.test.ts +0 -29
  561. package/base/utils.test.ts +0 -30
  562. package/build.ts +0 -318
  563. package/capacitor.base.config.test.ts +0 -83
  564. package/client/client.auth-storage.test.ts +0 -210
  565. package/client/client.decorators.test.ts +0 -74
  566. package/client/client.device.test.ts +0 -181
  567. package/client/client.page.test.tsx +0 -175
  568. package/client/client.pure.test.ts +0 -146
  569. package/client/client.router.test.ts +0 -290
  570. package/common/Logger.test.ts +0 -45
  571. package/common/formatAndValidation.test.ts +0 -61
  572. package/common/httpClient.test.ts +0 -91
  573. package/common/objectPath.test.ts +0 -108
  574. package/common/routeConvention.test.ts +0 -132
  575. package/common/runtimeConfig.test.ts +0 -84
  576. package/constant/constant.test.ts +0 -374
  577. package/dictionary/dictionary.test.ts +0 -352
  578. package/document/document.test.ts +0 -698
  579. package/fetch/fetch.test.ts +0 -838
  580. package/server/akanApp.test.ts +0 -130
  581. package/server/akanServer.test.ts +0 -157
  582. package/server/artifact/routeClientCache.test.ts +0 -265
  583. package/server/artifact/routeSeedIndex.test.ts +0 -56
  584. package/server/artifact/routesManifest.test.ts +0 -64
  585. package/server/di/diLifecycle.contract.test.ts +0 -168
  586. package/server/logging/rotatingLogWriter.test.ts +0 -119
  587. package/server/processMetrics.test.ts +0 -24
  588. package/server/proxy/webProxyRunner.test.ts +0 -66
  589. package/server/resolver/resolver.contract.test.ts +0 -594
  590. package/server/robots.test.ts +0 -16
  591. package/server/routeTree.test.tsx +0 -198
  592. package/server/routing/apiRouter.test.ts +0 -136
  593. package/server/sitemap.test.ts +0 -61
  594. package/server/systemPages.test.tsx +0 -93
  595. package/server/webRouter.test.ts +0 -49
  596. package/service/predefinedAdaptor/compress.adaptor.test.ts +0 -184
  597. package/service/predefinedAdaptor/solidCache.adaptor.test.ts +0 -107
  598. package/service/predefinedAdaptor/solidSqlite.test.ts +0 -457
  599. package/service/service.test.ts +0 -732
  600. package/signal/signal.test.ts +0 -892
  601. package/store/stateBuilder.test.ts +0 -168
  602. package/store/store.test.ts +0 -427
  603. package/tsconfig.json +0 -5
  604. package/ui/Constant/schemaDoc.test.ts +0 -113
  605. package/ui/InfiniteScroll.test.tsx +0 -155
  606. package/ui/System/Common.test.ts +0 -37
  607. package/webkit/bootCsr.test.tsx +0 -153
  608. package/webkit/native.test.tsx +0 -341
  609. package/webkit/webkit.test.tsx +0 -531
@@ -1,457 +0,0 @@
1
- import { Database, type SQLQueryBindings, type Statement } from "bun:sqlite";
2
- import { describe, expect, test } from "bun:test";
3
- import { dayjs, Int } from "akanjs/base";
4
- import { ConstantRegistry, via } from "akanjs/constant";
5
- import { by, type DatabaseCls, DatabaseRegistry, DocumentSchema, from, into } from "akanjs/document";
6
- import { type AkanSqlClient, type AkanSqlStatement, SqliteDocumentStore } from "./database.adaptor";
7
- import { decodeSolidValue, encodeSolidValue, getSolidConfig, toEpochMs } from "./solidSqlite";
8
- import { resolveDefaultSqliteFile } from "./sqlitePath";
9
-
10
- const InsightTestStatus = ["active", "failed", "deploying"] as const;
11
- class InsightTestInput extends via((f) => ({
12
- title: f(String),
13
- score: f(Int, { default: 0 }),
14
- status: f(String, { default: "active" }),
15
- tags: f([String], { default: [] }),
16
- })) {}
17
- class InsightTestObject extends via(InsightTestInput, (f) => ({})) {}
18
- class InsightTestLight extends via(InsightTestObject, ["title"] as const, () => ({})) {}
19
- class InsightTestFull extends via(InsightTestObject, InsightTestLight, () => ({})) {}
20
- class InsightTestInsight extends via(InsightTestFull, (f) => ({
21
- count: f(Int, { default: 0, accumulate: {} }),
22
- activeCount: f(Int, { default: 0, accumulate: { status: "active" } }),
23
- runningCount: f(Int, { default: 0, accumulate: { status: { oneOf: ["active", "deploying"] } } }),
24
- taggedCount: f(Int, { default: 0, accumulate: { tags: { oneOf: ["featured", "urgent"] } } }),
25
- })) {}
26
- const insightTestConstant = ConstantRegistry.buildModel(
27
- "sqliteInsightTest",
28
- InsightTestInput,
29
- InsightTestObject,
30
- InsightTestFull,
31
- InsightTestLight,
32
- InsightTestInsight,
33
- { InsightTestInput, InsightTestObject, InsightTestFull, InsightTestLight, InsightTestInsight, InsightTestStatus },
34
- );
35
- class InsightTestFilter extends from(InsightTestFull, () => ({})) {}
36
- class InsightTestDoc extends by(InsightTestFull) {}
37
- class InsightTestModel extends into(InsightTestDoc, InsightTestFilter, insightTestConstant, () => ({})) {}
38
- const insightTestDatabase = DatabaseRegistry.buildModel(
39
- "sqliteInsightTest",
40
- InsightTestInput as unknown as DatabaseCls<InstanceType<typeof InsightTestInput>>,
41
- InsightTestDoc,
42
- InsightTestModel,
43
- InsightTestObject,
44
- InsightTestInsight,
45
- InsightTestFilter,
46
- );
47
-
48
- class TicketHistory extends via((f) => ({
49
- action: f(String),
50
- content: f([String], { default: [] }),
51
- count: f(Int, { default: 0 }),
52
- flag: f(Boolean, { default: false }),
53
- })) {}
54
- class TicketTestInput extends via((f) => ({
55
- title: f(String),
56
- status: f(String, { default: "active" }),
57
- issuedAt: f(Date).optional(),
58
- transactionAt: f(Date, { default: dayjs(0) }),
59
- histories: f([TicketHistory]),
60
- })) {}
61
- class TicketTestObject extends via(TicketTestInput, (f) => ({})) {}
62
- class TicketTestLight extends via(TicketTestObject, ["title"] as const, () => ({})) {}
63
- class TicketTestFull extends via(TicketTestObject, TicketTestLight, () => ({})) {}
64
- class TicketTestInsight extends via(TicketTestFull, (f) => ({
65
- count: f(Int, { default: 0, accumulate: {} }),
66
- })) {}
67
- const ticketTestConstant = ConstantRegistry.buildModel(
68
- "sqliteTicketTest",
69
- TicketTestInput,
70
- TicketTestObject,
71
- TicketTestFull,
72
- TicketTestLight,
73
- TicketTestInsight,
74
- { TicketTestInput, TicketTestObject, TicketTestFull, TicketTestLight, TicketTestInsight, TicketHistory },
75
- );
76
- class TicketTestFilter extends from(TicketTestFull, () => ({})) {}
77
- class TicketTestDoc extends by(TicketTestFull) {}
78
- class TicketTestModel extends into(TicketTestDoc, TicketTestFilter, ticketTestConstant, () => ({})) {}
79
- const ticketTestDatabase = DatabaseRegistry.buildModel(
80
- "sqliteTicketTest",
81
- TicketTestInput as unknown as DatabaseCls<InstanceType<typeof TicketTestInput>>,
82
- TicketTestDoc,
83
- TicketTestModel,
84
- TicketTestObject,
85
- TicketTestInsight,
86
- TicketTestFilter,
87
- );
88
-
89
- class TestSqliteStatement implements AkanSqlStatement {
90
- constructor(private readonly statement: Statement) {}
91
-
92
- async run(...params: unknown[]) {
93
- return this.statement.run(...(params as SQLQueryBindings[]));
94
- }
95
-
96
- async get<Row = Record<string, unknown>>(...params: unknown[]): Promise<Row | null> {
97
- return (this.statement.get(...(params as SQLQueryBindings[])) as Row | null) ?? null;
98
- }
99
-
100
- async all<Row = Record<string, unknown>>(...params: unknown[]): Promise<Row[]> {
101
- return this.statement.all(...(params as SQLQueryBindings[])) as Row[];
102
- }
103
- }
104
-
105
- class TestSqliteClient implements AkanSqlClient {
106
- constructor(readonly db: Database) {}
107
-
108
- async execute(sql: string, params: unknown[] | Record<string, unknown> = []) {
109
- const values = Array.isArray(params) ? params : Object.values(params);
110
- return this.db.query(sql).run(...(values as SQLQueryBindings[]));
111
- }
112
-
113
- prepare(sql: string): AkanSqlStatement {
114
- return new TestSqliteStatement(this.db.query(sql));
115
- }
116
-
117
- async close() {
118
- this.db.close();
119
- }
120
- }
121
-
122
- class TestDatabaseOwner {
123
- private readonly meta = new Map<string, string>();
124
- readonly afterCommitCallbacks: (() => unknown)[] = [];
125
-
126
- constructor(private readonly client: AkanSqlClient) {}
127
-
128
- getConnection() {
129
- return this.client;
130
- }
131
-
132
- getMeta(key: string) {
133
- return this.meta.get(key);
134
- }
135
-
136
- setMeta(key: string, value: string) {
137
- this.meta.set(key, value);
138
- }
139
-
140
- async afterCommit(fn: () => unknown) {
141
- this.afterCommitCallbacks.push(fn);
142
- await fn();
143
- }
144
- }
145
-
146
- describe("solid sqlite utilities", () => {
147
- test("encodes and decodes solid values", () => {
148
- const buffer = Buffer.from("hello");
149
-
150
- expect(encodeSolidValue("value")).toEqual({ type: "string", value: "value" });
151
- expect(encodeSolidValue(12)).toEqual({ type: "number", value: "12" });
152
- expect(encodeSolidValue(buffer)).toEqual({ type: "buffer", value: buffer });
153
-
154
- expect(decodeSolidValue<string>("string", "value")).toBe("value");
155
- expect(decodeSolidValue<number>("number", "12")).toBe(12);
156
- expect(decodeSolidValue<Buffer>("buffer", buffer)).toEqual(buffer);
157
- expect(decodeSolidValue<Buffer>("buffer", "hello")).toEqual(buffer);
158
- expect(decodeSolidValue<string>("string", null)).toBeUndefined();
159
- });
160
-
161
- test("round-trips structured (object/array) solid values as json", () => {
162
- // Refresh-session storage writes objects/arrays through the cache, which bun:sqlite
163
- // cannot bind directly; they must be JSON-encoded so callers get the value back intact.
164
- const session = { id: "s1", subject: "admin", expiresAt: "2026-01-01T00:00:00.000Z", userAgent: undefined };
165
- const encodedObj = encodeSolidValue(session);
166
- expect(encodedObj.type).toBe("json");
167
- expect(typeof encodedObj.value).toBe("string");
168
- expect(decodeSolidValue<typeof session>("json", encodedObj.value)).toEqual({
169
- id: "s1",
170
- subject: "admin",
171
- expiresAt: "2026-01-01T00:00:00.000Z",
172
- });
173
-
174
- const hashes = ["a", "b", "c"];
175
- const encodedArr = encodeSolidValue(hashes);
176
- expect(encodedArr.type).toBe("json");
177
- expect(decodeSolidValue<string[]>("json", encodedArr.value)).toEqual(hashes);
178
-
179
- // Top-level undefined is coerced to JSON null rather than producing an invalid binding.
180
- expect(encodeSolidValue(undefined)).toEqual({ type: "json", value: "null" });
181
- });
182
-
183
- test("converts optional expiration values to epoch ms", () => {
184
- const date = dayjs("2026-01-01T00:00:00.000Z");
185
-
186
- expect(toEpochMs()).toBeNull();
187
- expect(toEpochMs(null)).toBeNull();
188
- expect(toEpochMs(1234)).toBe(1234);
189
- expect(toEpochMs(date)).toBe(date.valueOf());
190
- });
191
-
192
- test("resolves default sqlite paths and solid config", () => {
193
- const previousSqliteDir = process.env.AKAN_SQLITE_DIR;
194
- const previousSolidDbPath = process.env.AKAN_SOLID_DB_PATH;
195
- const previousOperationMode = process.env.AKAN_PUBLIC_OPERATION_MODE;
196
- try {
197
- process.env.AKAN_SQLITE_DIR = "/tmp/akan-sqlite";
198
- expect(
199
- resolveDefaultSqliteFile({
200
- appName: "demo",
201
- fileName: "demo.db",
202
- isProduction: false,
203
- workspaceRoot: "/workspace",
204
- }),
205
- ).toBe("/tmp/akan-sqlite/demo.db");
206
-
207
- delete process.env.AKAN_SQLITE_DIR;
208
- expect(
209
- resolveDefaultSqliteFile({
210
- appName: "demo",
211
- fileName: "demo.db",
212
- isProduction: false,
213
- workspaceRoot: "/workspace",
214
- }),
215
- ).toBe("/workspace/local/apps/demo/demo.db");
216
-
217
- expect(
218
- resolveDefaultSqliteFile({
219
- appName: "demo",
220
- fileName: "demo.db",
221
- isProduction: true,
222
- operationMode: "local",
223
- workspaceRoot: "/workspace",
224
- }),
225
- ).toBe("/workspace/local/apps/demo/demo.db");
226
-
227
- process.env.AKAN_PUBLIC_OPERATION_MODE = "local";
228
- expect(
229
- resolveDefaultSqliteFile({
230
- appName: "demo",
231
- fileName: "demo.db",
232
- isProduction: true,
233
- workspaceRoot: "/workspace",
234
- }),
235
- ).toBe("/workspace/local/apps/demo/demo.db");
236
-
237
- expect(
238
- resolveDefaultSqliteFile({
239
- appName: "demo",
240
- fileName: "demo.db",
241
- isProduction: true,
242
- operationMode: "cloud",
243
- workspaceRoot: "/workspace",
244
- }),
245
- ).toBe(`${process.cwd()}/sqlite/demo.db`);
246
-
247
- process.env.AKAN_SOLID_DB_PATH = "/tmp/solid.db";
248
- expect(
249
- getSolidConfig({
250
- appName: "demo",
251
- environment: "test",
252
- solid: { queueLeaseMs: 7, journalMode: "MEMORY" },
253
- }).filePath,
254
- ).toBe("/tmp/solid.db");
255
- expect(
256
- getSolidConfig({
257
- appName: "demo",
258
- environment: "test",
259
- solid: { queueLeaseMs: 7, journalMode: "MEMORY" },
260
- }),
261
- ).toMatchObject({
262
- journalMode: "MEMORY",
263
- queueLeaseMs: 7,
264
- busyTimeoutMs: 5000,
265
- synchronous: "NORMAL",
266
- });
267
- } finally {
268
- if (previousSqliteDir === undefined) delete process.env.AKAN_SQLITE_DIR;
269
- else process.env.AKAN_SQLITE_DIR = previousSqliteDir;
270
- if (previousSolidDbPath === undefined) delete process.env.AKAN_SOLID_DB_PATH;
271
- else process.env.AKAN_SOLID_DB_PATH = previousSolidDbPath;
272
- if (previousOperationMode === undefined) delete process.env.AKAN_PUBLIC_OPERATION_MODE;
273
- else process.env.AKAN_PUBLIC_OPERATION_MODE = previousOperationMode;
274
- }
275
- });
276
-
277
- test("hydrates new documents with schema defaults before save", async () => {
278
- const db = new Database(":memory:", { strict: true, create: true });
279
- const client = new TestSqliteClient(db);
280
- const owner = new TestDatabaseOwner(client);
281
- const store = new SqliteDocumentStore(owner, insightTestConstant, insightTestDatabase, new DocumentSchema());
282
-
283
- try {
284
- await client.execute(
285
- `CREATE TABLE IF NOT EXISTS "_akan_meta" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL, "updatedAt" INTEGER NOT NULL)`,
286
- );
287
- await store.ensure();
288
-
289
- const doc = store.hydrate({ title: "Draft" });
290
-
291
- expect(doc.score).toBe(0);
292
- expect(doc.status).toBe("active");
293
- expect(doc.tags).toEqual([]);
294
- await expect(doc.save()).resolves.toMatchObject({
295
- title: "Draft",
296
- score: 0,
297
- status: "active",
298
- tags: [],
299
- });
300
- } finally {
301
- await client.close();
302
- }
303
- });
304
-
305
- test("fills nested constant defaults inside arrays on save", async () => {
306
- const db = new Database(":memory:", { strict: true, create: true });
307
- const client = new TestSqliteClient(db);
308
- const owner = new TestDatabaseOwner(client);
309
- const store = new SqliteDocumentStore(owner, ticketTestConstant, ticketTestDatabase, new DocumentSchema());
310
-
311
- try {
312
- await client.execute(
313
- `CREATE TABLE IF NOT EXISTS "_akan_meta" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL, "updatedAt" INTEGER NOT NULL)`,
314
- );
315
- await store.ensure();
316
-
317
- const created = await store.create({ title: "Ticket", histories: [{ action: "open" }] });
318
- expect(created.histories[0]).toMatchObject({ action: "open", content: [], count: 0, flag: false });
319
-
320
- created.histories.push({ action: "close" });
321
- const saved = await created.save();
322
- expect(saved.histories[1]).toMatchObject({ action: "close", content: [], count: 0, flag: false });
323
-
324
- const fetched = await store.pickById(created.id);
325
- expect(fetched.histories[0]).toMatchObject({ action: "open", content: [], count: 0, flag: false });
326
- expect(fetched.histories[1]).toMatchObject({ action: "close", content: [], count: 0, flag: false });
327
- } finally {
328
- await client.close();
329
- }
330
- });
331
-
332
- test("fills missing nested and top-level defaults when loading legacy rows", async () => {
333
- const db = new Database(":memory:", { strict: true, create: true });
334
- const client = new TestSqliteClient(db);
335
- const owner = new TestDatabaseOwner(client);
336
- const store = new SqliteDocumentStore(owner, ticketTestConstant, ticketTestDatabase, new DocumentSchema());
337
-
338
- try {
339
- await client.execute(
340
- `CREATE TABLE IF NOT EXISTS "_akan_meta" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL, "updatedAt" INTEGER NOT NULL)`,
341
- );
342
- await store.ensure();
343
-
344
- const now = Date.now();
345
- // Legacy row: nested `content`/`count`/`flag` and top-level `status` were never persisted.
346
- const legacyDoc = JSON.stringify({ title: "Legacy", histories: [{ action: "open" }] });
347
- await client.execute(
348
- `INSERT INTO "sqliteTicketTest" ("id", "createdAt", "updatedAt", "removedAt", "_doc") VALUES (?, ?, ?, ?, ?)`,
349
- ["legacy-1", now, now, null, legacyDoc],
350
- );
351
-
352
- const fetched = await store.pickById("legacy-1");
353
- expect(fetched.status).toBe("active");
354
- expect(fetched.histories[0]).toMatchObject({ action: "open", content: [], count: 0, flag: false });
355
- } finally {
356
- await client.close();
357
- }
358
- });
359
-
360
- test("normalizes date fields to epoch storage regardless of input shape", async () => {
361
- const db = new Database(":memory:", { strict: true, create: true });
362
- const client = new TestSqliteClient(db);
363
- const owner = new TestDatabaseOwner(client);
364
- const store = new SqliteDocumentStore(owner, ticketTestConstant, ticketTestDatabase, new DocumentSchema());
365
-
366
- try {
367
- await client.execute(
368
- `CREATE TABLE IF NOT EXISTS "_akan_meta" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL, "updatedAt" INTEGER NOT NULL)`,
369
- );
370
- await store.ensure();
371
-
372
- const iso = "2026-06-06T13:52:39.747Z";
373
- // `issuedAt` arrives as an ISO string while `transactionAt` falls back to its dayjs(0) default.
374
- const created = await store.create({ title: "Dated", issuedAt: iso, histories: [] });
375
- expect(dayjs.isDayjs(created.issuedAt)).toBe(true);
376
- expect(created.issuedAt.valueOf()).toBe(dayjs(iso).valueOf());
377
- expect(created.transactionAt.valueOf()).toBe(0);
378
-
379
- // Both dates must persist as epoch numbers, not a string/number mix.
380
- const row = await client
381
- .prepare(`SELECT "_doc" FROM "sqliteTicketTest" WHERE "id" = ?`)
382
- .get<{ _doc: string }>(created.id);
383
- const stored = JSON.parse(row?._doc ?? "{}");
384
- expect(typeof stored.issuedAt).toBe("number");
385
- expect(stored.issuedAt).toBe(dayjs(iso).valueOf());
386
- expect(typeof stored.transactionAt).toBe("number");
387
- expect(stored.transactionAt).toBe(0);
388
-
389
- const fetched = await store.pickById(created.id);
390
- expect(fetched.issuedAt.valueOf()).toBe(dayjs(iso).valueOf());
391
- expect(fetched.transactionAt.valueOf()).toBe(0);
392
- } finally {
393
- await client.close();
394
- }
395
- });
396
-
397
- test("reads legacy ISO-string dates as valid dayjs", async () => {
398
- const db = new Database(":memory:", { strict: true, create: true });
399
- const client = new TestSqliteClient(db);
400
- const owner = new TestDatabaseOwner(client);
401
- const store = new SqliteDocumentStore(owner, ticketTestConstant, ticketTestDatabase, new DocumentSchema());
402
-
403
- try {
404
- await client.execute(
405
- `CREATE TABLE IF NOT EXISTS "_akan_meta" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL, "updatedAt" INTEGER NOT NULL)`,
406
- );
407
- await store.ensure();
408
-
409
- const iso = "2026-06-06T13:52:39.747Z";
410
- const now = Date.now();
411
- // Legacy row persisted `issuedAt` as an ISO string instead of epoch ms.
412
- const legacyDoc = JSON.stringify({ title: "Legacy", issuedAt: iso, histories: [] });
413
- await client.execute(
414
- `INSERT INTO "sqliteTicketTest" ("id", "createdAt", "updatedAt", "removedAt", "_doc") VALUES (?, ?, ?, ?, ?)`,
415
- ["legacy-date-1", now, now, null, legacyDoc],
416
- );
417
-
418
- const fetched = await store.pickById("legacy-date-1");
419
- expect(fetched.issuedAt.isValid()).toBe(true);
420
- expect(fetched.issuedAt.valueOf()).toBe(dayjs(iso).valueOf());
421
- } finally {
422
- await client.close();
423
- }
424
- });
425
-
426
- test("counts insight fields with document query accumulates", async () => {
427
- const db = new Database(":memory:", { strict: true, create: true });
428
- const client = new TestSqliteClient(db);
429
- const owner = new TestDatabaseOwner(client);
430
- const store = new SqliteDocumentStore(owner, insightTestConstant, insightTestDatabase, new DocumentSchema());
431
-
432
- try {
433
- await client.execute(
434
- `CREATE TABLE IF NOT EXISTS "_akan_meta" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL, "updatedAt" INTEGER NOT NULL)`,
435
- );
436
- await store.ensure();
437
- await store.create({ title: "Alpha", score: 12, status: "active", tags: ["featured"] });
438
- await store.create({ title: "Beta", score: 4, status: "failed", tags: ["cold"] });
439
- await store.create({ title: "Gamma", score: 20, status: "deploying", tags: ["urgent"] });
440
-
441
- await expect(store.insight()).resolves.toEqual({
442
- count: 3,
443
- activeCount: 1,
444
- runningCount: 2,
445
- taggedCount: 2,
446
- });
447
- await expect(store.insight({ score: { gte: 10 } })).resolves.toEqual({
448
- count: 2,
449
- activeCount: 1,
450
- runningCount: 2,
451
- taggedCount: 2,
452
- });
453
- } finally {
454
- await client.close();
455
- }
456
- });
457
- });