akanjs 2.2.4 → 2.2.6
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.
- package/CHANGELOG.md +9 -0
- package/base/base.ts +1 -1
- package/base/primitiveRegistry.ts +6 -10
- package/base/types.ts +1 -4
- package/capacitor.base.config.ts +1 -1
- package/client/capacitor.ts +1 -1
- package/client/cookie.ts +2 -4
- package/client/createFont.ts +2 -2
- package/client/csrTypes.ts +2 -8
- package/client/makePageProto.tsx +4 -10
- package/client/router.ts +3 -8
- package/client/translator.ts +4 -12
- package/common/Logger.ts +1 -4
- package/common/formatNumber.ts +2 -5
- package/common/hmrPhase.ts +1 -1
- package/common/isValidDate.ts +0 -3
- package/constant/fieldInfo.ts +3 -3
- package/constant/purify.ts +1 -2
- package/constant/types.ts +0 -4
- package/constant/via.ts +6 -12
- package/document/databaseRegistry.ts +0 -8
- package/document/into.ts +0 -1
- package/fetch/client/fetchClient.ts +1 -6
- package/fetch/client/httpClient.ts +1 -2
- package/fetch/fetchType/appliedReturn.type.ts +0 -1
- package/fetch/fetchType/endpointFetch.type.ts +0 -3
- package/fetch/fetchType/sliceFetch.type.ts +0 -8
- package/fetch/requestStorage.ts +2 -10
- package/package.json +67 -24
- package/server/akanApp.ts +2 -5
- package/server/akanLib.ts +0 -1
- package/server/akanServer.ts +3 -4
- package/server/artifact/builderRpc.ts +2 -2
- package/server/artifact/ipcTypes.ts +0 -4
- package/server/decorators.ts +1 -1
- package/server/di/diLifecycle.ts +3 -6
- package/server/hmr/clientScript.ts +2 -20
- package/server/hmr/devHmrController.ts +0 -4
- package/server/processMetricsCollector.ts +1 -1
- package/server/resolver/database.resolver.ts +2 -2
- package/server/resolver/resolver.contract.fixture.ts +0 -1
- package/server/resolver/signal.resolver.ts +2 -10
- package/server/routing/apiRouter.ts +2 -4
- package/server/rscClient.tsx +1 -7
- package/server/rscWorkerHost.ts +11 -33
- package/server/ssrFromRscRenderer.tsx +3 -35
- package/server/types/react-server-dom-webpack.d.ts +1 -7
- package/server/vendor/react-dom-client.ts +1 -1
- package/server/vendor/react-dom.ts +2 -3
- package/server/vendor/react-jsx-dev-runtime.ts +1 -1
- package/server/vendor/react-jsx-runtime.ts +1 -1
- package/server/vendor/react-refresh-runtime.ts +2 -2
- package/server/vendor/react-server-dom-webpack-client-browser.ts +1 -1
- package/server/vendor/react.ts +2 -9
- package/server/vendor/scheduler.ts +2 -3
- package/server/webRouter.ts +2 -3
- package/service/adapt.ts +1 -5
- package/service/predefinedAdaptor/cache.adaptor.ts +1 -2
- package/service/predefinedAdaptor/database.adaptor.ts +2 -2
- package/service/predefinedAdaptor/solidSqlite.ts +1 -2
- package/service/predefinedAdaptor/websocket.adaptor.ts +3 -15
- package/service/serve.ts +3 -7
- package/signal/base.signal.ts +0 -1
- package/signal/endpointInfo.ts +0 -7
- package/signal/intercept.ts +0 -2
- package/signal/middleware.ts +1 -2
- package/signal/serverSignal.ts +1 -15
- package/signal/signalContext.ts +1 -1
- package/signal/signalRegistry.ts +0 -5
- package/signal/sliceInfo.ts +0 -3
- package/signal/trace.ts +0 -11
- package/signal/types.ts +2 -11
- package/store/action.ts +3 -5
- package/store/stateBuilder.ts +0 -2
- package/store/stateInfo.ts +1 -2
- package/store/types.ts +1 -1
- package/test/playwright.config.base.ts +5 -28
- package/test/playwright.pageAgent.ts +1 -1
- package/test/sampleOf.ts +1 -1
- package/test/testServer.ts +1 -1
- package/types/base/base.d.ts +53 -0
- package/types/base/baseEnv.d.ts +68 -0
- package/types/base/index.d.ts +6 -0
- package/types/base/primitiveRegistry.d.ts +134 -0
- package/types/base/symbols.d.ts +11 -0
- package/types/base/types.d.ts +68 -0
- package/types/base/utils.d.ts +4 -0
- package/types/base.d.ts +1 -0
- package/types/capacitor.base.config.d.ts +3 -0
- package/types/client/capacitor.d.ts +233 -0
- package/types/client/clientRuntime.d.ts +63 -0
- package/types/client/cookie.d.ts +33 -0
- package/types/client/createFont.d.ts +6 -0
- package/types/client/csrTypes.d.ts +262 -0
- package/types/client/decorators.d.ts +7 -0
- package/types/client/device.d.ts +41 -0
- package/types/client/fetch.d.ts +1 -0
- package/types/client/index.d.ts +14 -0
- package/types/client/locale.d.ts +5 -0
- package/types/client/makePageProto.d.ts +17002 -0
- package/types/client/router.d.ts +66 -0
- package/types/client/rscNavigation.d.ts +19 -0
- package/types/client/storage.d.ts +5 -0
- package/types/client/translator.d.ts +18 -0
- package/types/client/types.d.ts +145 -0
- package/types/client/useClient.d.ts +1 -0
- package/types/client.d.ts +1 -0
- package/types/common/Logger.d.ts +41 -0
- package/types/common/applyMixins.d.ts +3 -0
- package/types/common/capitalize.d.ts +2 -0
- package/types/common/deepObjectify.d.ts +4 -0
- package/types/common/fileUpload.d.ts +28 -0
- package/types/common/formatNumber.d.ts +1 -0
- package/types/common/formatPhone.d.ts +2 -0
- package/types/common/getAllPropertyDescriptors.d.ts +5 -0
- package/types/common/hmrPhase.d.ts +6 -0
- package/types/common/httpClient.d.ts +20 -0
- package/types/common/index.d.ts +29 -0
- package/types/common/isDayjs.d.ts +2 -0
- package/types/common/isEmail.d.ts +2 -0
- package/types/common/isPhoneNumber.d.ts +2 -0
- package/types/common/isQueryEqual.d.ts +1 -0
- package/types/common/isValidDate.d.ts +2 -0
- package/types/common/jwtDecode.d.ts +2 -0
- package/types/common/localeConfig.d.ts +11 -0
- package/types/common/lowerlize.d.ts +2 -0
- package/types/common/mergeVersion.d.ts +10 -0
- package/types/common/objectify.d.ts +1 -0
- package/types/common/pathGet.d.ts +1 -0
- package/types/common/pathSet.d.ts +3 -0
- package/types/common/randomPick.d.ts +1 -0
- package/types/common/randomPicks.d.ts +1 -0
- package/types/common/routeConvention.d.ts +35 -0
- package/types/common/sleep.d.ts +2 -0
- package/types/common/splitVersion.d.ts +11 -0
- package/types/common/subRoute.d.ts +7 -0
- package/types/common/types.d.ts +14 -0
- package/types/common.d.ts +1 -0
- package/types/constant/constantRegistry.d.ts +89 -0
- package/types/constant/crystalize.d.ts +4 -0
- package/types/constant/deserialize.d.ts +7 -0
- package/types/constant/fieldInfo.d.ts +153 -0
- package/types/constant/getDefault.d.ts +3 -0
- package/types/constant/immerify.d.ts +2 -0
- package/types/constant/index.d.ts +10 -0
- package/types/constant/purify.d.ts +12 -0
- package/types/constant/serialize.d.ts +11 -0
- package/types/constant/types.d.ts +77 -0
- package/types/constant/via.d.ts +52 -0
- package/types/constant.d.ts +1 -0
- package/types/dictionary/base.dictionary.d.ts +1 -0
- package/types/dictionary/dictInfo.d.ts +206 -0
- package/types/dictionary/dictionary.d.ts +11 -0
- package/types/dictionary/index.d.ts +4 -0
- package/types/dictionary/locale.d.ts +128 -0
- package/types/dictionary/trans.d.ts +82 -0
- package/types/dictionary.d.ts +1 -0
- package/types/document/by.d.ts +20 -0
- package/types/document/dataLoader.d.ts +36 -0
- package/types/document/database.d.ts +96 -0
- package/types/document/databaseRegistry.d.ts +36 -0
- package/types/document/documentQuery.d.ts +105 -0
- package/types/document/documentSchema.d.ts +33 -0
- package/types/document/filterMeta.d.ts +84 -0
- package/types/document/index.d.ts +11 -0
- package/types/document/into.d.ts +65 -0
- package/types/document/loaderInfo.d.ts +35 -0
- package/types/document/schema.d.ts +5 -0
- package/types/document/types.d.ts +36 -0
- package/types/document.d.ts +1 -0
- package/types/fetch/client/fetchClient.d.ts +78 -0
- package/types/fetch/client/httpClient.d.ts +39 -0
- package/types/fetch/client/index.d.ts +3 -0
- package/types/fetch/client/wsClient.d.ts +37 -0
- package/types/fetch/client.d.ts +1 -0
- package/types/fetch/fetchType/appliedReturn.type.d.ts +67 -0
- package/types/fetch/fetchType/buildFetch.type.d.ts +11 -0
- package/types/fetch/fetchType/clientSignal.type.d.ts +16 -0
- package/types/fetch/fetchType/endpointFetch.type.d.ts +29 -0
- package/types/fetch/fetchType/index.d.ts +5 -0
- package/types/fetch/fetchType/sliceFetch.type.d.ts +76 -0
- package/types/fetch/fetchType.d.ts +1 -0
- package/types/fetch/index.d.ts +4 -0
- package/types/fetch/requestStorage.d.ts +29 -0
- package/types/fetch/serializer/fetch.serializer.d.ts +14 -0
- package/types/fetch/serializer/index.d.ts +1 -0
- package/types/fetch/serializer.d.ts +1 -0
- package/types/fetch/types.d.ts +19 -0
- package/types/fetch.d.ts +1 -0
- package/types/index.d.ts +213 -0
- package/types/server/akanApp.d.ts +17 -0
- package/types/server/akanAppHeaders.d.ts +1 -0
- package/types/server/akanLib.d.ts +33 -0
- package/types/server/akanOption.d.ts +15 -0
- package/types/server/akanServer.d.ts +47 -0
- package/types/server/artifact/builderRpc.d.ts +42 -0
- package/types/server/artifact/index.d.ts +6 -0
- package/types/server/artifact/ipcTypes.d.ts +73 -0
- package/types/server/artifact/manifestTypes.d.ts +16 -0
- package/types/server/artifact/routeClientCache.d.ts +45 -0
- package/types/server/artifact/routeSeedIndexStore.d.ts +43 -0
- package/types/server/artifact/routesManifestStore.d.ts +16 -0
- package/types/server/artifact.d.ts +1 -0
- package/types/server/decorators.d.ts +6 -0
- package/types/server/di/diLifecycle.d.ts +45 -0
- package/types/server/di/index.d.ts +4 -0
- package/types/server/di/predefinedAdaptor.d.ts +33 -0
- package/types/server/di/resolveAdaptorHierarchy.d.ts +21 -0
- package/types/server/di/resolveHierarchy.d.ts +11 -0
- package/types/server/di/resolveServiceHierarchy.d.ts +13 -0
- package/types/server/di/utils.d.ts +14 -0
- package/types/server/di.d.ts +1 -0
- package/types/server/hmr/changeBatch.d.ts +13 -0
- package/types/server/hmr/clientScript.d.ts +1 -0
- package/types/server/hmr/devHmrController.d.ts +24 -0
- package/types/server/hmr/index.d.ts +4 -0
- package/types/server/hmr/wsHub.d.ts +45 -0
- package/types/server/hmr.d.ts +1 -0
- package/types/server/imageOptimizer.d.ts +12 -0
- package/types/server/imageOptimizerError.d.ts +4 -0
- package/types/server/index.d.ts +14 -0
- package/types/server/lifecycle/shutdownManager.d.ts +13 -0
- package/types/server/logging/rotatingLogWriter.d.ts +20 -0
- package/types/server/processMetricsCollector.d.ts +10 -0
- package/types/server/proxy/akanResponse.d.ts +7 -0
- package/types/server/proxy/bunRequestFields.d.ts +1 -0
- package/types/server/proxy/hostBasePathWebProxy.d.ts +6 -0
- package/types/server/proxy/index.d.ts +6 -0
- package/types/server/proxy/localeWebProxy.d.ts +5 -0
- package/types/server/proxy/types.d.ts +37 -0
- package/types/server/proxy/webProxyRunner.d.ts +7 -0
- package/types/server/proxy.d.ts +1 -0
- package/types/server/resolver/database.resolver.d.ts +6 -0
- package/types/server/resolver/index.d.ts +3 -0
- package/types/server/resolver/service.resolver.d.ts +7 -0
- package/types/server/resolver/signal.resolver.d.ts +29 -0
- package/types/server/resolver.d.ts +1 -0
- package/types/server/robots.d.ts +1 -0
- package/types/server/routeElementComposer.d.ts +41 -0
- package/types/server/routeTreeBuilder.d.ts +28 -0
- package/types/server/routing/apiRouter.d.ts +61 -0
- package/types/server/rscClient.d.ts +15 -0
- package/types/server/rscWorker.d.ts +3 -0
- package/types/server/rscWorkerHost.d.ts +83 -0
- package/types/server/sitemap.d.ts +13 -0
- package/types/server/ssrFromRscRenderer.d.ts +6 -0
- package/types/server/ssrTypes.d.ts +47 -0
- package/types/server/systemPages.d.ts +27 -0
- package/types/server/types/react-server-dom-webpack.d.ts +91 -0
- package/types/server/types.d.ts +67 -0
- package/types/server/vendor/akanjs-base.d.ts +1 -0
- package/types/server/vendor/akanjs-common.d.ts +1 -0
- package/types/server/vendor/akanjs-constant.d.ts +1 -0
- package/types/server/vendor/akanjs-store.d.ts +1 -0
- package/types/server/vendor/react-dom-client.d.ts +3 -0
- package/types/server/vendor/react-dom.d.ts +3 -0
- package/types/server/vendor/react-jsx-dev-runtime.d.ts +3 -0
- package/types/server/vendor/react-jsx-runtime.d.ts +3 -0
- package/types/server/vendor/react-refresh-runtime.d.ts +3 -0
- package/types/server/vendor/react-server-dom-webpack-client-browser.d.ts +3 -0
- package/types/server/vendor/react.d.ts +11 -0
- package/types/server/vendor/scheduler.d.ts +3 -0
- package/types/server/webRouter.d.ts +44 -0
- package/types/server.d.ts +1 -0
- package/types/service/adapt.d.ts +15 -0
- package/types/service/base.service.d.ts +18 -0
- package/types/service/index.d.ts +10 -0
- package/types/service/injectInfo.d.ts +102 -0
- package/types/service/ipcTypes.d.ts +194 -0
- package/types/service/predefinedAdaptor/cache.adaptor.d.ts +46 -0
- package/types/service/predefinedAdaptor/compress.adaptor.d.ts +22 -0
- package/types/service/predefinedAdaptor/database.adaptor.d.ts +329 -0
- package/types/service/predefinedAdaptor/index.d.ts +13 -0
- package/types/service/predefinedAdaptor/logging.adaptor.d.ts +20 -0
- package/types/service/predefinedAdaptor/queue.adaptor.d.ts +22 -0
- package/types/service/predefinedAdaptor/role.adaptor.d.ts +17 -0
- package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +60 -0
- package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +25 -0
- package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +20 -0
- package/types/service/predefinedAdaptor/solidQueue.adaptor.d.ts +19 -0
- package/types/service/predefinedAdaptor/solidSqlite.d.ts +24 -0
- package/types/service/predefinedAdaptor/sqlitePath.d.ts +9 -0
- package/types/service/predefinedAdaptor/storage.adaptor.d.ts +80 -0
- package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +49 -0
- package/types/service/predefinedAdaptor.d.ts +1 -0
- package/types/service/serve.d.ts +31 -0
- package/types/service/serviceModule.d.ts +50 -0
- package/types/service/serviceRegistry.d.ts +9 -0
- package/types/service/types.d.ts +55 -0
- package/types/service.d.ts +1 -0
- package/types/signal/base.signal.d.ts +41 -0
- package/types/signal/endpoint.d.ts +28 -0
- package/types/signal/endpointInfo.d.ts +77 -0
- package/types/signal/exception.d.ts +54786 -0
- package/types/signal/guard.d.ts +10 -0
- package/types/signal/guards.d.ts +10 -0
- package/types/signal/index.d.ts +19 -0
- package/types/signal/intercept.d.ts +17 -0
- package/types/signal/internal.d.ts +18 -0
- package/types/signal/internalArg.d.ts +31 -0
- package/types/signal/internalInfo.d.ts +45 -0
- package/types/signal/middleware.d.ts +51 -0
- package/types/signal/serializer/fetch.serializer.d.ts +14 -0
- package/types/signal/serializer/index.d.ts +1 -0
- package/types/signal/serializer.d.ts +1 -0
- package/types/signal/serverSignal.d.ts +36 -0
- package/types/signal/signalContext.d.ts +96 -0
- package/types/signal/signalRegistry.d.ts +49 -0
- package/types/signal/slice.d.ts +42 -0
- package/types/signal/sliceInfo.d.ts +51 -0
- package/types/signal/trace.d.ts +97 -0
- package/types/signal/types.d.ts +142 -0
- package/types/signal.d.ts +1 -0
- package/types/store/action.d.ts +145 -0
- package/types/store/baseSt.d.ts +412 -0
- package/types/store/hooks.d.ts +1 -0
- package/types/store/index.d.ts +8 -0
- package/types/store/rootStore.d.ts +22 -0
- package/types/store/state.d.ts +91 -0
- package/types/store/stateBuilder.d.ts +141 -0
- package/types/store/stateInfo.d.ts +23 -0
- package/types/store/store.d.ts +36 -0
- package/types/store/storeInstance.d.ts +38 -0
- package/types/store/storeRegistry.d.ts +13 -0
- package/types/store/types.d.ts +42 -0
- package/types/store/withSelector.d.ts +42 -0
- package/types/store.d.ts +1 -0
- package/types/test/index.d.ts +4 -0
- package/types/test/playwright.config.base.d.ts +9 -0
- package/types/test/playwright.pageAgent.d.ts +12 -0
- package/types/test/sample.d.ts +15 -0
- package/types/test/sampleOf.d.ts +5 -0
- package/types/test/signalTest.preload.d.ts +1 -0
- package/types/test/signalTestRuntime.d.ts +29 -0
- package/types/test/testServer.d.ts +26 -0
- package/types/test.d.ts +1 -0
- package/types/ui/BottomSheet.d.ts +13 -0
- package/types/ui/Button.d.ts +11 -0
- package/types/ui/ClientSide.d.ts +8 -0
- package/types/ui/Clipboard.d.ts +7 -0
- package/types/ui/Constant/Doc.d.ts +29 -0
- package/types/ui/Constant/Mermaid.d.ts +8 -0
- package/types/ui/Constant/index.d.ts +6 -0
- package/types/ui/Constant/schemaDoc.d.ts +84 -0
- package/types/ui/Constant.d.ts +1 -0
- package/types/ui/Copy.d.ts +10 -0
- package/types/ui/CsrImage.d.ts +18 -0
- package/types/ui/Data/CardList.d.ts +36 -0
- package/types/ui/Data/Dashboard.d.ts +11 -0
- package/types/ui/Data/Insight.d.ts +9 -0
- package/types/ui/Data/Item.d.ts +75 -0
- package/types/ui/Data/ListContainer.d.ts +49 -0
- package/types/ui/Data/Pagination.d.ts +9 -0
- package/types/ui/Data/QueryMaker.d.ts +8 -0
- package/types/ui/Data/TableList.d.ts +26 -0
- package/types/ui/Data/index.d.ts +9 -0
- package/types/ui/Data/index_.d.ts +8 -0
- package/types/ui/Data.d.ts +1 -0
- package/types/ui/DatePicker.d.ts +36 -0
- package/types/ui/Dialog/Action.d.ts +5 -0
- package/types/ui/Dialog/Close.d.ts +6 -0
- package/types/ui/Dialog/Content.d.ts +6 -0
- package/types/ui/Dialog/Modal.d.ts +9 -0
- package/types/ui/Dialog/Provider.d.ts +11 -0
- package/types/ui/Dialog/Title.d.ts +5 -0
- package/types/ui/Dialog/Trigger.d.ts +6 -0
- package/types/ui/Dialog/context.d.ts +10 -0
- package/types/ui/Dialog/index.d.ts +9 -0
- package/types/ui/Dialog.d.ts +1 -0
- package/types/ui/DragAction.d.ts +24 -0
- package/types/ui/DraggableList.d.ts +31 -0
- package/types/ui/Dropdown.d.ts +14 -0
- package/types/ui/Empty.d.ts +12 -0
- package/types/ui/Field.d.ts +411 -0
- package/types/ui/FontFace.d.ts +6 -0
- package/types/ui/Image.d.ts +49 -0
- package/types/ui/InfiniteScroll.d.ts +10 -0
- package/types/ui/Input.d.ts +95 -0
- package/types/ui/KeyboardAvoiding.d.ts +8 -0
- package/types/ui/Layout/BottomAction.d.ts +6 -0
- package/types/ui/Layout/BottomInset.d.ts +7 -0
- package/types/ui/Layout/BottomTab.d.ts +14 -0
- package/types/ui/Layout/Header.d.ts +8 -0
- package/types/ui/Layout/LeftSider.d.ts +9 -0
- package/types/ui/Layout/Navbar.d.ts +11 -0
- package/types/ui/Layout/RightSider.d.ts +10 -0
- package/types/ui/Layout/Sider.d.ts +7 -0
- package/types/ui/Layout/Template.d.ts +7 -0
- package/types/ui/Layout/TopLeftAction.d.ts +6 -0
- package/types/ui/Layout/Unit.d.ts +9 -0
- package/types/ui/Layout/View.d.ts +8 -0
- package/types/ui/Layout/Zone.d.ts +6 -0
- package/types/ui/Layout/index.d.ts +14 -0
- package/types/ui/Layout.d.ts +1 -0
- package/types/ui/Link/Back.d.ts +7 -0
- package/types/ui/Link/Close.d.ts +7 -0
- package/types/ui/Link/CsrLink.d.ts +2 -0
- package/types/ui/Link/Lang.d.ts +8 -0
- package/types/ui/Link/SsrLink.d.ts +2 -0
- package/types/ui/Link/index.d.ts +10 -0
- package/types/ui/Link/types.d.ts +42 -0
- package/types/ui/Link.d.ts +1 -0
- package/types/ui/Load/Edit.d.ts +4 -0
- package/types/ui/Load/Edit_Client.d.ts +27 -0
- package/types/ui/Load/Page.d.ts +15 -0
- package/types/ui/Load/PageCSR.d.ts +3 -0
- package/types/ui/Load/Pagination.d.ts +8 -0
- package/types/ui/Load/Units.d.ts +30 -0
- package/types/ui/Load/View.d.ts +22 -0
- package/types/ui/Load/index.d.ts +8 -0
- package/types/ui/Load/index_.d.ts +3 -0
- package/types/ui/Load.d.ts +1 -0
- package/types/ui/Loading/Area.d.ts +1 -0
- package/types/ui/Loading/Button.d.ts +7 -0
- package/types/ui/Loading/Input.d.ts +7 -0
- package/types/ui/Loading/ProgressBar.d.ts +6 -0
- package/types/ui/Loading/Skeleton.d.ts +7 -0
- package/types/ui/Loading/Spin.d.ts +7 -0
- package/types/ui/Loading/index.d.ts +8 -0
- package/types/ui/Loading.d.ts +1 -0
- package/types/ui/Menu.d.ts +26 -0
- package/types/ui/Modal.d.ts +19 -0
- package/types/ui/Model/AdminPanel.d.ts +31 -0
- package/types/ui/Model/Edit.d.ts +16 -0
- package/types/ui/Model/EditModal.d.ts +52 -0
- package/types/ui/Model/EditWrapper.d.ts +13 -0
- package/types/ui/Model/LoadInit.d.ts +10 -0
- package/types/ui/Model/New.d.ts +16 -0
- package/types/ui/Model/NewWrapper.d.ts +13 -0
- package/types/ui/Model/NewWrapper_Client.d.ts +13 -0
- package/types/ui/Model/Remove.d.ts +13 -0
- package/types/ui/Model/RemoveWrapper.d.ts +12 -0
- package/types/ui/Model/SureToRemove.d.ts +11 -0
- package/types/ui/Model/View.d.ts +19 -0
- package/types/ui/Model/ViewEditModal.d.ts +12 -0
- package/types/ui/Model/ViewModal.d.ts +14 -0
- package/types/ui/Model/ViewWrapper.d.ts +12 -0
- package/types/ui/Model/index.d.ts +16 -0
- package/types/ui/Model/index_.d.ts +14 -0
- package/types/ui/Model.d.ts +1 -0
- package/types/ui/More.d.ts +12 -0
- package/types/ui/ObjectId.d.ts +5 -0
- package/types/ui/Pagination.d.ts +20 -0
- package/types/ui/Popconfirm.d.ts +28 -0
- package/types/ui/Portal.d.ts +6 -0
- package/types/ui/Radio.d.ts +19 -0
- package/types/ui/RecentTime.d.ts +12 -0
- package/types/ui/Refresh.d.ts +7 -0
- package/types/ui/ScreenNavigator.d.ts +18 -0
- package/types/ui/Select.d.ts +43 -0
- package/types/ui/Signal/Arg.d.ts +78 -0
- package/types/ui/Signal/Doc.d.ts +33 -0
- package/types/ui/Signal/Listener.d.ts +9 -0
- package/types/ui/Signal/Message.d.ts +23 -0
- package/types/ui/Signal/Object.d.ts +20 -0
- package/types/ui/Signal/PubSub.d.ts +24 -0
- package/types/ui/Signal/Request.d.ts +8 -0
- package/types/ui/Signal/Response.d.ts +14 -0
- package/types/ui/Signal/RestApi.d.ts +40 -0
- package/types/ui/Signal/WebSocket.d.ts +11 -0
- package/types/ui/Signal/index.d.ts +18 -0
- package/types/ui/Signal/makeExample.d.ts +4 -0
- package/types/ui/Signal/style.d.ts +15 -0
- package/types/ui/Signal.d.ts +1 -0
- package/types/ui/System/CSR.d.ts +32 -0
- package/types/ui/System/Client.d.ts +47 -0
- package/types/ui/System/Common.d.ts +47 -0
- package/types/ui/System/DevModeToggle.d.ts +1 -0
- package/types/ui/System/Gtag.d.ts +4 -0
- package/types/ui/System/Messages.d.ts +1 -0
- package/types/ui/System/Reconnect.d.ts +1 -0
- package/types/ui/System/Root.d.ts +6 -0
- package/types/ui/System/SSR.d.ts +24 -0
- package/types/ui/System/SelectLanguage.d.ts +5 -0
- package/types/ui/System/ThemeToggle.d.ts +4 -0
- package/types/ui/System/index.d.ts +12 -0
- package/types/ui/System.d.ts +1 -0
- package/types/ui/Tab/Menu.d.ts +12 -0
- package/types/ui/Tab/Menus.d.ts +6 -0
- package/types/ui/Tab/Panel.d.ts +8 -0
- package/types/ui/Tab/Provider.d.ts +10 -0
- package/types/ui/Tab/context.d.ts +9 -0
- package/types/ui/Tab/index.d.ts +7 -0
- package/types/ui/Tab.d.ts +1 -0
- package/types/ui/Table.d.ts +41 -0
- package/types/ui/ToggleSelect.d.ts +33 -0
- package/types/ui/Unauthorized.d.ts +9 -0
- package/types/ui/animated.d.ts +5 -0
- package/types/ui/fontCss.d.ts +11 -0
- package/types/ui/index.d.ts +44 -0
- package/types/ui.d.ts +1 -0
- package/types/webkit/bootCsr.d.ts +16 -0
- package/types/webkit/createRobotPage.d.ts +15 -0
- package/types/webkit/createSitemapPage.d.ts +4 -0
- package/types/webkit/index.d.ts +17 -0
- package/types/webkit/lazy.d.ts +11 -0
- package/types/webkit/types.d.ts +7 -0
- package/types/webkit/useCamera.d.ts +19 -0
- package/types/webkit/useCodepush.d.ts +16 -0
- package/types/webkit/useContact.d.ts +11 -0
- package/types/webkit/useCsrValues.d.ts +30 -0
- package/types/webkit/useDebounce.d.ts +2 -0
- package/types/webkit/useFetch.d.ts +18 -0
- package/types/webkit/useGeoLocation.d.ts +8 -0
- package/types/webkit/useHistory.d.ts +23 -0
- package/types/webkit/useInterval.d.ts +2 -0
- package/types/webkit/useLocation.d.ts +8 -0
- package/types/webkit/usePurchase.d.ts +19 -0
- package/types/webkit/usePushNoti.d.ts +7 -0
- package/types/webkit/useThrottle.d.ts +2 -0
- package/types/webkit.d.ts +1 -0
- package/ui/BottomSheet.tsx +1 -1
- package/ui/Clipboard.tsx +1 -1
- package/ui/CsrImage.tsx +3 -14
- package/ui/Data/ListContainer.tsx +1 -1
- package/ui/Data/Pagination.tsx +1 -1
- package/ui/Data/QueryMaker.tsx +0 -339
- package/ui/Data/index.ts +0 -1
- package/ui/DatePicker.tsx +1 -95
- package/ui/Dialog/Modal.tsx +1 -1
- package/ui/DraggableList.tsx +5 -5
- package/ui/Field.tsx +2 -3
- package/ui/Image.tsx +2 -3
- package/ui/InfiniteScroll.tsx +0 -1
- package/ui/Input.tsx +1 -8
- package/ui/Layout/BottomTab.tsx +2 -2
- package/ui/Link/SsrLink.tsx +1 -2
- package/ui/Load/Page.tsx +1 -1
- package/ui/Load/PageCSR.tsx +0 -1
- package/ui/Load/Units.tsx +1 -2
- package/ui/Load/View.tsx +1 -2
- package/ui/Menu.tsx +5 -8
- package/ui/Model/EditModal.tsx +2 -5
- package/ui/Popconfirm.tsx +2 -4
- package/ui/ScreenNavigator.tsx +2 -3
- package/ui/Signal/Message.tsx +2 -3
- package/ui/Signal/PubSub.tsx +0 -2
- package/ui/Signal/Response.tsx +1 -1
- package/ui/Signal/WebSocket.tsx +2 -11
- package/ui/System/Client.tsx +7 -41
- package/ui/System/Gtag.tsx +2 -5
- package/ui/System/Messages.tsx +2 -2
- package/ui/System/Reconnect.tsx +5 -6
- package/ui/System/Root.tsx +0 -1
- package/ui/System/SSR.tsx +1 -7
- package/ui/ToggleSelect.tsx +3 -8
- package/ui/Unauthorized.tsx +1 -1
- package/webkit/bootCsr.tsx +3 -6
- package/webkit/lazy.tsx +1 -8
- package/webkit/useCamera.tsx +0 -1
- package/webkit/useCodepush.tsx +4 -9
- package/webkit/useContact.tsx +0 -1
- package/webkit/useCsrValues.ts +6 -10
- package/webkit/useDebounce.ts +2 -2
- package/webkit/usePurchase.tsx +5 -9
- package/webkit/usePushNoti.tsx +0 -1
- package/base/base.test.ts +0 -135
- package/base/baseEnv.test.ts +0 -146
- package/base/primitiveRegistry.test.ts +0 -127
- package/base/symbols.test.ts +0 -29
- package/base/utils.test.ts +0 -30
- package/build.ts +0 -318
- package/capacitor.base.config.test.ts +0 -83
- package/client/client.auth-storage.test.ts +0 -210
- package/client/client.decorators.test.ts +0 -74
- package/client/client.device.test.ts +0 -181
- package/client/client.page.test.tsx +0 -175
- package/client/client.pure.test.ts +0 -146
- package/client/client.router.test.ts +0 -290
- package/common/Logger.test.ts +0 -45
- package/common/formatAndValidation.test.ts +0 -61
- package/common/httpClient.test.ts +0 -91
- package/common/objectPath.test.ts +0 -108
- package/common/routeConvention.test.ts +0 -132
- package/common/runtimeConfig.test.ts +0 -84
- package/constant/constant.test.ts +0 -374
- package/dictionary/dictionary.test.ts +0 -352
- package/document/document.test.ts +0 -698
- package/fetch/fetch.test.ts +0 -838
- package/server/akanApp.test.ts +0 -130
- package/server/akanServer.test.ts +0 -157
- package/server/artifact/routeClientCache.test.ts +0 -265
- package/server/artifact/routeSeedIndex.test.ts +0 -56
- package/server/artifact/routesManifest.test.ts +0 -64
- package/server/di/diLifecycle.contract.test.ts +0 -168
- package/server/logging/rotatingLogWriter.test.ts +0 -119
- package/server/processMetrics.test.ts +0 -24
- package/server/proxy/webProxyRunner.test.ts +0 -66
- package/server/resolver/resolver.contract.test.ts +0 -594
- package/server/robots.test.ts +0 -16
- package/server/routeTree.test.tsx +0 -198
- package/server/routing/apiRouter.test.ts +0 -136
- package/server/sitemap.test.ts +0 -61
- package/server/systemPages.test.tsx +0 -93
- package/server/webRouter.test.ts +0 -49
- package/service/predefinedAdaptor/compress.adaptor.test.ts +0 -184
- package/service/predefinedAdaptor/solidCache.adaptor.test.ts +0 -107
- package/service/predefinedAdaptor/solidSqlite.test.ts +0 -457
- package/service/service.test.ts +0 -732
- package/signal/signal.test.ts +0 -892
- package/store/stateBuilder.test.ts +0 -168
- package/store/store.test.ts +0 -427
- package/tsconfig.json +0 -5
- package/ui/Constant/schemaDoc.test.ts +0 -113
- package/ui/InfiniteScroll.test.tsx +0 -155
- package/ui/System/Common.test.ts +0 -37
- package/webkit/bootCsr.test.tsx +0 -153
- package/webkit/native.test.tsx +0 -341
- 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
|
-
});
|