akanjs 3.0.0-beta.2 → 3.0.0-beta.20
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/base/base.ts +6 -11
- package/base/baseEnv.ts +17 -11
- package/base/databaseModes.ts +75 -0
- package/base/index.ts +1 -0
- package/base/primitiveRegistry.ts +38 -47
- package/base/symbols.ts +1 -1
- package/base/types.ts +1 -1
- package/base/utils.ts +3 -6
- package/capacitor.base.config.ts +2 -3
- package/client/capacitor.ts +18 -63
- package/client/cn.ts +3 -13
- package/client/cookie.ts +6 -15
- package/client/createFont.ts +0 -2
- package/client/csrTypes.ts +6 -59
- package/client/decorators.ts +1 -1
- package/client/device.ts +52 -44
- package/client/frameConfig.ts +15 -26
- package/client/index.ts +0 -1
- package/client/makePageProto.tsx +3 -4
- package/client/route/RootLayoutDefinition.ts +0 -6
- package/client/route/RouteDefinition.ts +5 -30
- package/client/route/resolveRouteModule.ts +1 -5
- package/client/router.ts +35 -39
- package/client/rscNavigation.ts +4 -5
- package/client/sharedContext.ts +2 -19
- package/client/storage.ts +29 -38
- package/client/translator.ts +5 -6
- package/client/types.ts +0 -3
- package/common/CodeAgentClient.ts +91 -0
- package/common/CodeTranscript.ts +325 -0
- package/common/Logger.ts +9 -34
- package/common/TrustedProxy.ts +6 -34
- package/common/applyMixins.ts +13 -2
- package/common/authToken.ts +0 -11
- package/common/capitalize.ts +3 -4
- package/common/clamp.ts +0 -1
- package/common/clientAddress.ts +1 -15
- package/common/codeAgentProfile.ts +181 -0
- package/common/codeAgentWire.ts +305 -0
- package/{server/routing → common}/eventStream.ts +1 -6
- package/common/fileUpload.ts +1 -12
- package/common/formatNumber.ts +3 -12
- package/common/index.ts +104 -19
- package/common/interpolateTranslation.ts +1 -6
- package/common/isEmail.ts +0 -1
- package/common/isRecord.ts +2 -0
- package/common/isThenable.ts +1 -8
- package/common/isValidDate.ts +3 -5
- package/common/logContext.ts +1 -1
- package/{ui/Agent → common}/markdownBlocks.ts +0 -3
- package/common/markdownSpans.ts +47 -0
- package/{ui/Agent → common}/markdownTable.ts +1 -5
- package/common/mcpExposure.ts +4 -27
- package/common/objectPath.ts +67 -0
- package/common/objectify.ts +52 -0
- package/common/{isPhoneNumber.ts → phone.ts} +7 -1
- package/common/randomPick.ts +13 -0
- package/common/requestOrigin.ts +0 -17
- package/common/restClient.ts +8 -13
- package/common/round.ts +4 -0
- package/common/routeConvention.ts +21 -14
- package/common/sleep.ts +1 -8
- package/common/subRoute.ts +4 -7
- package/common/toError.ts +1 -0
- package/common/tunnelWire.ts +263 -0
- package/common/types.ts +6 -7
- package/common/{splitVersion.ts → version.ts} +3 -6
- package/common/{websocketBinaryFrame.ts → websocketContract.ts} +43 -9
- package/constant/cascadePaths.ts +6 -9
- package/constant/constantRegistry.ts +21 -57
- package/constant/crystalize.ts +2 -12
- package/constant/dateSlot.ts +0 -15
- package/constant/fieldInfo.ts +30 -109
- package/constant/fieldQueryMeta.ts +2 -10
- package/constant/getDefault.ts +16 -8
- package/constant/hydrationPlan.ts +1 -9
- package/constant/index.ts +0 -1
- package/constant/labelOf.ts +1 -6
- package/constant/mask.ts +36 -38
- package/constant/purify.ts +6 -14
- package/constant/serialize.ts +82 -5
- package/constant/textFieldPaths.ts +2 -3
- package/constant/types.ts +2 -6
- package/constant/via.ts +20 -60
- package/dictionary/DictionaryLookup.ts +1 -7
- package/dictionary/agent.dictionary.ts +43 -11
- package/dictionary/base.dictionary.ts +11 -0
- package/dictionary/dictInfo.ts +145 -626
- package/dictionary/dictShape.ts +54 -0
- package/dictionary/dictionary.ts +1 -2
- package/dictionary/dictionaryRegistry.ts +7 -28
- package/dictionary/locale.ts +24 -116
- package/dictionary/trans.ts +18 -56
- package/document/dataLoader.ts +77 -78
- package/document/database.ts +52 -56
- package/document/documentQuery.ts +32 -32
- package/document/documentSchema.ts +21 -26
- package/document/filterMeta.ts +11 -31
- package/document/index.ts +0 -1
- package/document/into.ts +8 -18
- package/document/loaderInfo.ts +28 -7
- package/document/noDocumentError.ts +2 -7
- package/document/queryEvaluator.ts +21 -43
- package/document/types.ts +0 -1
- package/fetch/client/fetchClient.ts +66 -105
- package/fetch/client/fetchHandle.ts +4 -12
- package/fetch/client/httpClient.ts +35 -68
- package/fetch/client/remoteError.ts +2 -8
- package/fetch/client/sliceInitHandle.ts +3 -6
- package/fetch/client/sliceQueryArgs.ts +11 -0
- package/fetch/client/wsClient.ts +75 -64
- package/fetch/fetchType/appliedReturn.type.ts +5 -24
- package/fetch/fetchType/buildFetch.type.ts +28 -1
- package/fetch/fetchType/index.ts +0 -1
- package/fetch/requestStorage.ts +7 -28
- package/fetch/types.ts +0 -1
- package/index.ts +31 -64
- package/package.json +19 -5
- package/server/akanApp.ts +138 -289
- package/server/akanAppHeaders.ts +2 -3
- package/server/akanOption.ts +25 -27
- package/server/akanServer.ts +98 -219
- package/server/animatedImage.ts +2 -11
- package/server/artifact/builderRpc.ts +24 -64
- package/server/artifact/index.ts +0 -1
- package/server/artifact/ipcTypes.ts +27 -30
- package/server/artifact/routeClientCache.ts +18 -37
- package/server/artifact/routeSeedIndexStore.ts +2 -35
- package/server/artifact/routesManifestStore.ts +13 -38
- package/server/binaryPubsub.ts +0 -9
- package/server/cachePolicy.ts +10 -44
- package/server/console.ts +12 -16
- package/server/consoleSession.ts +55 -12
- package/server/contentEncoding.ts +42 -27
- package/server/decorators.ts +4 -70
- package/server/devtools/constantSerializer.ts +2 -14
- package/server/devtools/depsSerializer.ts +14 -46
- package/server/devtools/devtoolsJson.ts +6 -18
- package/server/devtools/devtoolsRouter.ts +2 -12
- package/server/devtools/signalSerializer.ts +5 -44
- package/server/devtools/types.ts +0 -12
- package/server/di/diLifecycle.ts +141 -221
- package/server/di/predefinedAdaptor.ts +11 -5
- package/server/di/resolveHierarchy.ts +114 -5
- package/server/di/utils.ts +13 -29
- package/server/head.tsx +53 -0
- package/server/hmr/clientScript.ts +2 -8
- package/server/hmr/devHmrController.ts +28 -32
- package/server/hmr/wsHub.ts +9 -7
- package/server/imageOptimizer.ts +5 -26
- package/server/index.ts +1 -1
- package/server/lifecycle/portInUse.ts +1 -4
- package/server/lifecycle/runtimeDir.ts +0 -4
- package/server/lifecycle/shutdownManager.ts +4 -29
- package/server/logging/childOutputReader.ts +0 -12
- package/server/logging/hubFileSink.ts +10 -6
- package/server/logging/logControlSocket.ts +13 -7
- package/server/logging/logForwarder.ts +19 -22
- package/server/logging/logHub.ts +0 -0
- package/server/logging/logQuery.ts +4 -7
- package/server/logging/logStdoutWriter.ts +1 -11
- package/server/logging/logStreamRoute.ts +4 -21
- package/server/logging/logTailClient.ts +1 -8
- package/server/logging/rotatingLogWriter.ts +4 -6
- package/server/mcp/McpAuth.ts +5 -79
- package/server/mcp/McpDispatcher.ts +13 -90
- package/server/mcp/McpEventStream.ts +2 -12
- package/server/mcp/McpExecutionContext.ts +1 -42
- package/server/mcp/McpRateLimiter.ts +61 -30
- package/server/mcp/McpRouter.ts +49 -208
- package/server/mcp/PagePromptComposer.ts +7 -29
- package/server/memoryLimit.ts +1 -13
- package/server/oauth/OAuthAuthorize.ts +3 -7
- package/server/oauth/OAuthClientIdMetadata.ts +2 -27
- package/server/oauth/OAuthErrors.ts +0 -13
- package/server/oauth/OAuthMetadata.ts +1 -7
- package/server/oauth/OAuthPkce.ts +0 -2
- package/server/oauth/OAuthRedirect.ts +0 -9
- package/server/oauth/OAuthRegistration.ts +0 -2
- package/server/oauth/OAuthRevocation.ts +1 -11
- package/server/oauth/OAuthToken.ts +3 -14
- package/server/oauth/oauthTypes.ts +1 -2
- package/server/ops/ageEncryption.ts +317 -0
- package/server/ops/appInfo.ts +92 -0
- package/server/ops/opsCommand.ts +116 -0
- package/server/ops/opsRoute.ts +151 -0
- package/server/ops/opsToken.ts +93 -0
- package/server/ops/snapshotJobs.ts +133 -0
- package/server/ops/snapshotRestore.ts +118 -0
- package/server/ops/snapshotTypes.ts +52 -0
- package/server/ops/sqliteFiles.ts +20 -0
- package/server/ops/sqliteSnapshot.ts +149 -0
- package/server/processMetricsCollector.ts +12 -14
- package/server/proxy/hostBasePathWebProxy.ts +20 -13
- package/server/proxy/index.ts +2 -3
- package/server/proxy/localeWebProxy.ts +3 -17
- package/server/proxy/types.ts +14 -0
- package/server/proxy/webProxyRunner.ts +13 -1
- package/server/resolver/CascadeRunner.ts +7 -23
- package/server/resolver/database.resolver.ts +57 -123
- package/server/resolver/service.resolver.ts +9 -161
- package/server/resolver/signal.resolver.ts +73 -98
- package/server/routeElementComposer.tsx +23 -52
- package/server/routeState.ts +15 -34
- package/server/routeTreeBuilder.ts +24 -83
- package/server/routing/apiRouter.ts +17 -49
- package/server/routing/appWsData.ts +4 -28
- package/server/routing/soloAppRoutes.ts +5 -5
- package/server/rscClient.tsx +31 -37
- package/server/rscClientFetch.ts +7 -3
- package/server/rscClientPatch.ts +4 -25
- package/server/rscHttp.ts +1 -1
- package/server/rscNavigationState.ts +10 -25
- package/server/rscPagePrompts.ts +4 -24
- package/server/rscSegmentOutlet.tsx +1 -5
- package/server/rscWorker.tsx +146 -285
- package/server/rscWorkerCache.ts +74 -8
- package/server/rscWorkerHost.ts +45 -192
- package/server/semaphore.ts +1 -1
- package/server/sitemap.ts +1 -3
- package/server/ssrFromRscRenderer.tsx +31 -124
- package/server/ssrTypes.ts +3 -29
- package/server/staticPath.ts +0 -16
- package/server/systemPageDocument.tsx +65 -2
- package/server/systemPages.tsx +4 -2
- package/server/tunnel/TunnelAgent.ts +237 -0
- package/server/tunnel/TunnelDataSocket.ts +146 -0
- package/server/tunnel/TunnelHttpStream.ts +86 -0
- package/server/tunnel/TunnelTcpStream.ts +96 -0
- package/server/tunnel/TunnelWebsocketStream.ts +110 -0
- package/server/tunnel/index.ts +6 -0
- package/server/tunnel/tunnelStream.ts +32 -0
- package/server/types.tsx +2 -9
- package/server/webRouter.ts +88 -306
- package/service/agent.service.ts +66 -35
- package/service/injectInfo.ts +106 -75
- package/service/ipcTypes.ts +4 -1
- package/service/liveSyncHub.ts +4 -34
- package/service/predefinedAdaptor/anthropicLlm.ts +65 -75
- package/service/predefinedAdaptor/cache.adaptor.ts +257 -75
- package/service/predefinedAdaptor/database.adaptor.ts +366 -108
- package/service/predefinedAdaptor/documentTransfer.ts +89 -0
- package/service/predefinedAdaptor/index.ts +2 -1
- package/service/predefinedAdaptor/insightQuery.ts +89 -79
- package/service/predefinedAdaptor/llm.adaptor.ts +64 -54
- package/service/predefinedAdaptor/llmOverflow.ts +63 -0
- package/service/predefinedAdaptor/openaiDialect.ts +56 -64
- package/service/predefinedAdaptor/openaiLlm.ts +24 -27
- package/service/predefinedAdaptor/queue.adaptor.ts +41 -22
- package/service/predefinedAdaptor/schedule.adaptor.ts +69 -9
- package/service/predefinedAdaptor/searchIndex.ts +76 -325
- package/service/predefinedAdaptor/solidCache.adaptor.ts +135 -12
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +28 -16
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +61 -10
- package/service/predefinedAdaptor/solidSqlite.ts +10 -16
- package/service/predefinedAdaptor/sql/PendingStoreEnsures.ts +1 -0
- package/service/predefinedAdaptor/sql/PostgresInsightSession.ts +113 -0
- package/service/predefinedAdaptor/sql/QueryCompiler.ts +50 -30
- package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +290 -138
- package/service/predefinedAdaptor/sql/SqliteInsightSession.ts +85 -0
- package/service/predefinedAdaptor/sql/UpdateCompiler.ts +1 -7
- package/service/predefinedAdaptor/sql/dialect/postgres.ts +138 -53
- package/service/predefinedAdaptor/sql/dialect/sqlite.ts +18 -15
- package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +31 -4
- package/service/predefinedAdaptor/sql/driver/libsql.ts +20 -12
- package/service/predefinedAdaptor/sql/driver/postgres.ts +13 -7
- package/service/predefinedAdaptor/sql/search/fts5.ts +249 -0
- package/service/predefinedAdaptor/sql/search/mirror.ts +76 -0
- package/service/predefinedAdaptor/sql/search/postgres.ts +453 -0
- package/service/predefinedAdaptor/sql/search/types.ts +50 -0
- package/service/predefinedAdaptor/sql/types.ts +76 -17
- package/service/predefinedAdaptor/sql/values.ts +40 -2
- package/service/predefinedAdaptor/sqlitePath.ts +12 -0
- package/service/predefinedAdaptor/sseData.ts +23 -0
- package/service/predefinedAdaptor/storage.adaptor.ts +19 -7
- package/service/predefinedAdaptor/websocket.adaptor.ts +154 -184
- package/service/serve.ts +1 -2
- package/service/serviceModule.ts +52 -70
- package/service/toolNames.ts +5 -22
- package/service/types.ts +3 -9
- package/signal/CrossSiteGuard.ts +5 -40
- package/signal/SignalFailure.ts +2 -15
- package/signal/agent/AgentCatalogue.ts +9 -55
- package/signal/agent.signal.ts +9 -6
- package/signal/agentMeter.ts +45 -0
- package/signal/agentTurnStream.ts +48 -46
- package/signal/endpoint.ts +12 -2
- package/signal/endpointCache.ts +59 -0
- package/signal/endpointInfo.ts +13 -27
- package/signal/exception.ts +3 -34
- package/signal/guard.ts +4 -21
- package/signal/guards.ts +2 -10
- package/signal/index.ts +1 -0
- package/signal/internal.ts +3 -7
- package/signal/internalArg.ts +10 -13
- package/signal/internalInfo.ts +1 -1
- package/signal/mcp/McpDocument.ts +21 -90
- package/signal/mcp/McpProgress.ts +6 -19
- package/signal/mcp/McpUriTemplate.ts +1 -27
- package/signal/mcp/Msg.ts +13 -122
- package/signal/mcp/mcpProtocol.ts +3 -26
- package/signal/mcp/pagePrompt.ts +3 -9
- package/signal/middleware.ts +15 -65
- package/signal/openapi/openapi.ts +0 -4
- package/signal/schema/JsonSchemaBuilder.ts +32 -46
- package/signal/serializer/fetch.serializer.ts +37 -43
- package/signal/serverSignal.ts +6 -8
- package/signal/signalContext.ts +70 -161
- package/signal/signalRegistry.ts +11 -17
- package/signal/slice.ts +6 -12
- package/signal/sliceInfo.ts +5 -30
- package/signal/trace.ts +11 -84
- package/signal/types.ts +27 -57
- package/store/SliceRequest.ts +1 -11
- package/store/action.ts +153 -395
- package/store/actionTag.ts +1 -10
- package/store/agent/AgentBridge.ts +3 -25
- package/store/agent/AgentContext.ts +2 -9
- package/store/agent/AgentCursor.ts +160 -0
- package/store/agent/AgentPrompts.ts +0 -15
- package/store/agent/AgentVisual.ts +152 -0
- package/store/agent/ScreenFlash.ts +67 -0
- package/store/agent/ScreenReader.ts +3 -52
- package/store/agent/ScreenSettle.ts +1 -13
- package/store/agent/ScreenTarget.ts +15 -32
- package/store/agent/StoreCatalogue.ts +12 -24
- package/store/agent/StoreSurfaceSource.ts +35 -65
- package/store/agent/index.ts +4 -4
- package/store/agentic/AgentValue.ts +9 -26
- package/store/agentic/StExposeBuilder.ts +3 -12
- package/store/agentic/StExposeDraft.ts +0 -6
- package/store/agentic/StStateBuilder.ts +3 -11
- package/store/agentic/StStateDraft.ts +0 -5
- package/store/agentic/StToolBuilder.ts +48 -41
- package/store/agentic/StToolDraft.ts +0 -7
- package/store/agentic/attachAgentic.ts +2 -10
- package/store/agentic/formFields.ts +8 -42
- package/store/agentic/index.ts +1 -1
- package/store/agentic/useAgentReference.ts +31 -0
- package/store/agentic/useFieldTool.ts +176 -58
- package/store/agentic/useFormTools.ts +4 -21
- package/store/agentic/useRelationFieldTool.ts +2 -15
- package/store/databaseStateNames.ts +0 -9
- package/store/draftStore.ts +4 -54
- package/store/formSetterNames.ts +2 -19
- package/store/hooks.ts +1 -1
- package/store/liveInsert.ts +1 -30
- package/store/sliceKeys.ts +37 -0
- package/store/sliceRole.ts +1 -10
- package/store/state.ts +4 -50
- package/store/stateBuilder.ts +1 -23
- package/store/storeInstance.ts +21 -114
- package/store/storeRegistry.ts +1 -8
- package/store/types.ts +1 -1
- package/test/conformance.ts +299 -0
- package/test/index.ts +2 -2
- package/test/sampleOf.ts +52 -28
- package/test/signalTestRuntime.ts +6 -10
- package/test/testServer.ts +66 -31
- package/types/base/base.d.ts +2 -3
- package/types/base/baseEnv.d.ts +7 -10
- package/types/base/databaseModes.d.ts +28 -0
- package/types/base/index.d.ts +1 -0
- package/types/base/primitiveRegistry.d.ts +23 -10
- package/types/base/symbols.d.ts +1 -1
- package/types/capacitor.base.config.d.ts +1 -1
- package/types/client/cn.d.ts +3 -13
- package/types/client/cookie.d.ts +3 -12
- package/types/client/csrTypes.d.ts +6 -57
- package/types/client/decorators.d.ts +1 -1
- package/types/client/device.d.ts +2 -1
- package/types/client/index.d.ts +0 -1
- package/types/client/route/RootLayoutDefinition.d.ts +0 -1
- package/types/client/route/RouteDefinition.d.ts +4 -16
- package/types/client/route/resolveRouteModule.d.ts +1 -5
- package/types/client/router.d.ts +8 -4
- package/types/client/rscNavigation.d.ts +4 -5
- package/types/client/sharedContext.d.ts +2 -19
- package/types/client/storage.d.ts +1 -1
- package/types/client/types.d.ts +0 -3
- package/types/common/CodeAgentClient.d.ts +20 -0
- package/types/common/CodeTranscript.d.ts +72 -0
- package/types/common/Logger.d.ts +4 -20
- package/types/common/TrustedProxy.d.ts +2 -28
- package/types/common/applyMixins.d.ts +3 -0
- package/types/common/authToken.d.ts +0 -11
- package/types/common/capitalize.d.ts +1 -1
- package/types/common/clamp.d.ts +0 -1
- package/types/common/clientAddress.d.ts +1 -15
- package/types/common/codeAgentProfile.d.ts +115 -0
- package/types/common/codeAgentWire.d.ts +279 -0
- package/types/{server/routing → common}/eventStream.d.ts +0 -5
- package/types/common/fileUpload.d.ts +6 -11
- package/types/common/index.d.ts +20 -19
- package/types/common/interpolateTranslation.d.ts +1 -6
- package/types/common/isEmail.d.ts +0 -1
- package/types/common/isRecord.d.ts +1 -0
- package/types/common/isThenable.d.ts +0 -8
- package/types/common/logContext.d.ts +1 -1
- package/types/{ui/Agent → common}/markdownBlocks.d.ts +0 -3
- package/types/common/markdownSpans.d.ts +30 -0
- package/types/{ui/Agent → common}/markdownTable.d.ts +0 -2
- package/types/common/mcpExposure.d.ts +3 -23
- package/types/common/objectPath.d.ts +10 -0
- package/types/common/objectify.d.ts +7 -0
- package/types/common/phone.d.ts +2 -0
- package/types/common/randomPick.d.ts +1 -0
- package/types/common/requestOrigin.d.ts +0 -17
- package/types/common/restClient.d.ts +0 -7
- package/types/common/round.d.ts +1 -0
- package/types/common/routeConvention.d.ts +2 -5
- package/types/common/sleep.d.ts +0 -1
- package/types/common/subRoute.d.ts +4 -6
- package/types/common/toError.d.ts +1 -0
- package/types/common/tunnelWire.d.ts +161 -0
- package/types/common/types.d.ts +7 -7
- package/types/common/version.d.ts +6 -0
- package/types/common/websocketContract.d.ts +41 -0
- package/types/constant/cascadePaths.d.ts +2 -5
- package/types/constant/constantRegistry.d.ts +4 -4
- package/types/constant/dateSlot.d.ts +0 -5
- package/types/constant/fieldInfo.d.ts +2 -21
- package/types/constant/fieldQueryMeta.d.ts +2 -10
- package/types/constant/getDefault.d.ts +5 -7
- package/types/constant/hydrationPlan.d.ts +0 -8
- package/types/constant/index.d.ts +0 -1
- package/types/constant/labelOf.d.ts +1 -6
- package/types/constant/mask.d.ts +11 -36
- package/types/constant/serialize.d.ts +10 -2
- package/types/constant/types.d.ts +2 -6
- package/types/constant/via.d.ts +0 -1
- package/types/dictionary/DictionaryLookup.d.ts +1 -7
- package/types/dictionary/agent.dictionary.d.ts +2 -1
- package/types/dictionary/base.dictionary.d.ts +1 -1
- package/types/dictionary/dictInfo.d.ts +25 -92
- package/types/dictionary/dictShape.d.ts +26 -0
- package/types/dictionary/dictionary.d.ts +9 -9
- package/types/dictionary/dictionaryRegistry.d.ts +1 -15
- package/types/dictionary/locale.d.ts +9 -28
- package/types/dictionary/trans.d.ts +5 -14
- package/types/document/dataLoader.d.ts +2 -2
- package/types/document/database.d.ts +21 -14
- package/types/document/documentQuery.d.ts +6 -1
- package/types/document/documentSchema.d.ts +3 -7
- package/types/document/filterMeta.d.ts +3 -8
- package/types/document/index.d.ts +0 -1
- package/types/document/into.d.ts +3 -2
- package/types/document/loaderInfo.d.ts +9 -4
- package/types/document/noDocumentError.d.ts +2 -7
- package/types/document/queryEvaluator.d.ts +7 -24
- package/types/document/types.d.ts +0 -1
- package/types/fetch/client/fetchClient.d.ts +6 -9
- package/types/fetch/client/fetchHandle.d.ts +3 -11
- package/types/fetch/client/httpClient.d.ts +5 -1
- package/types/fetch/client/remoteError.d.ts +2 -8
- package/types/fetch/client/sliceInitHandle.d.ts +2 -5
- package/types/fetch/client/sliceQueryArgs.d.ts +3 -0
- package/types/fetch/client/wsClient.d.ts +10 -15
- package/types/fetch/fetchType/appliedReturn.type.d.ts +5 -23
- package/types/fetch/fetchType/buildFetch.type.d.ts +15 -1
- package/types/fetch/fetchType/index.d.ts +0 -1
- package/types/fetch/requestStorage.d.ts +3 -16
- package/types/fetch/types.d.ts +0 -1
- package/types/index.d.ts +30 -64
- package/types/server/akanApp.d.ts +5 -28
- package/types/server/akanAppHeaders.d.ts +0 -1
- package/types/server/akanOption.d.ts +12 -24
- package/types/server/akanServer.d.ts +16 -56
- package/types/server/animatedImage.d.ts +0 -6
- package/types/server/artifact/builderRpc.d.ts +7 -30
- package/types/server/artifact/index.d.ts +0 -1
- package/types/server/artifact/ipcTypes.d.ts +22 -29
- package/types/server/artifact/routeClientCache.d.ts +3 -11
- package/types/server/artifact/routeSeedIndexStore.d.ts +0 -16
- package/types/server/artifact/routesManifestStore.d.ts +1 -1
- package/types/server/binaryPubsub.d.ts +0 -8
- package/types/server/cachePolicy.d.ts +2 -21
- package/types/server/console.d.ts +3 -6
- package/types/server/consoleSession.d.ts +2 -2
- package/types/server/contentEncoding.d.ts +6 -14
- package/types/server/decorators.d.ts +0 -12
- package/types/server/devtools/constantSerializer.d.ts +1 -6
- package/types/server/devtools/depsSerializer.d.ts +1 -7
- package/types/server/devtools/devtoolsJson.d.ts +1 -7
- package/types/server/devtools/devtoolsRouter.d.ts +2 -11
- package/types/server/devtools/signalSerializer.d.ts +1 -9
- package/types/server/devtools/types.d.ts +0 -11
- package/types/server/di/diLifecycle.d.ts +0 -36
- package/types/server/di/predefinedAdaptor.d.ts +3 -2
- package/types/server/di/resolveHierarchy.d.ts +22 -5
- package/types/server/di/utils.d.ts +4 -17
- package/types/server/head.d.ts +9 -0
- package/types/server/hmr/devHmrController.d.ts +0 -2
- package/types/server/hmr/wsHub.d.ts +6 -1
- package/types/server/index.d.ts +1 -1
- package/types/server/lifecycle/portInUse.d.ts +1 -4
- package/types/server/lifecycle/runtimeDir.d.ts +0 -4
- package/types/server/lifecycle/shutdownManager.d.ts +0 -9
- package/types/server/logging/childOutputReader.d.ts +0 -12
- package/types/server/logging/hubFileSink.d.ts +1 -5
- package/types/server/logging/logControlSocket.d.ts +2 -7
- package/types/server/logging/logForwarder.d.ts +3 -15
- package/types/server/logging/logHub.d.ts +1 -15
- package/types/server/logging/logQuery.d.ts +3 -6
- package/types/server/logging/logStdoutWriter.d.ts +0 -6
- package/types/server/logging/logStreamRoute.d.ts +0 -9
- package/types/server/logging/logTailClient.d.ts +0 -5
- package/types/server/mcp/McpAuth.d.ts +3 -71
- package/types/server/mcp/McpDispatcher.d.ts +0 -23
- package/types/server/mcp/McpEventStream.d.ts +1 -12
- package/types/server/mcp/McpExecutionContext.d.ts +0 -33
- package/types/server/mcp/McpRateLimiter.d.ts +10 -13
- package/types/server/mcp/McpRouter.d.ts +1 -47
- package/types/server/mcp/PagePromptComposer.d.ts +1 -13
- package/types/server/memoryLimit.d.ts +1 -13
- package/types/server/oauth/OAuthAuthorize.d.ts +1 -6
- package/types/server/oauth/OAuthClientIdMetadata.d.ts +2 -26
- package/types/server/oauth/OAuthErrors.d.ts +0 -13
- package/types/server/oauth/OAuthMetadata.d.ts +1 -7
- package/types/server/oauth/OAuthPkce.d.ts +0 -1
- package/types/server/oauth/OAuthRedirect.d.ts +0 -9
- package/types/server/oauth/OAuthRegistration.d.ts +0 -1
- package/types/server/oauth/OAuthRevocation.d.ts +1 -11
- package/types/server/oauth/OAuthToken.d.ts +1 -13
- package/types/server/oauth/oauthTypes.d.ts +1 -2
- package/types/server/ops/ageEncryption.d.ts +19 -0
- package/types/server/ops/appInfo.d.ts +36 -0
- package/types/server/ops/opsCommand.d.ts +5 -0
- package/types/server/ops/opsRoute.d.ts +24 -0
- package/types/server/ops/opsToken.d.ts +26 -0
- package/types/server/ops/snapshotJobs.d.ts +24 -0
- package/types/server/ops/snapshotRestore.d.ts +24 -0
- package/types/server/ops/snapshotTypes.d.ts +45 -0
- package/types/server/ops/sqliteFiles.d.ts +5 -0
- package/types/server/ops/sqliteSnapshot.d.ts +32 -0
- package/types/server/processMetricsCollector.d.ts +3 -1
- package/types/server/proxy/hostBasePathWebProxy.d.ts +7 -1
- package/types/server/proxy/index.d.ts +2 -3
- package/types/server/proxy/localeWebProxy.d.ts +1 -1
- package/types/server/proxy/types.d.ts +5 -0
- package/types/server/proxy/webProxyRunner.d.ts +1 -0
- package/types/server/resolver/CascadeRunner.d.ts +0 -4
- package/types/server/resolver/database.resolver.d.ts +1 -1
- package/types/server/resolver/service.resolver.d.ts +2 -2
- package/types/server/resolver/signal.resolver.d.ts +1 -15
- package/types/server/routeElementComposer.d.ts +2 -8
- package/types/server/routeState.d.ts +1 -1
- package/types/server/routing/apiRouter.d.ts +2 -20
- package/types/server/routing/appWsData.d.ts +0 -26
- package/types/server/routing/soloAppRoutes.d.ts +2 -6
- package/types/server/rscClient.d.ts +0 -9
- package/types/server/rscClientFetch.d.ts +6 -6
- package/types/server/rscClientPatch.d.ts +1 -1
- package/types/server/rscHttp.d.ts +1 -0
- package/types/server/rscNavigationState.d.ts +3 -2
- package/types/server/rscPagePrompts.d.ts +0 -9
- package/types/server/rscWorkerCache.d.ts +41 -3
- package/types/server/rscWorkerHost.d.ts +5 -61
- package/types/server/ssrFromRscRenderer.d.ts +0 -12
- package/types/server/ssrTypes.d.ts +2 -29
- package/types/server/staticPath.d.ts +0 -16
- package/types/server/systemPageDocument.d.ts +8 -0
- package/types/server/systemPages.d.ts +2 -3
- package/types/server/tunnel/TunnelAgent.d.ts +29 -0
- package/types/server/tunnel/TunnelDataSocket.d.ts +22 -0
- package/types/server/tunnel/TunnelHttpStream.d.ts +10 -0
- package/types/server/tunnel/TunnelTcpStream.d.ts +11 -0
- package/types/server/tunnel/TunnelWebsocketStream.d.ts +10 -0
- package/types/server/tunnel/index.d.ts +6 -0
- package/types/server/tunnel/tunnelStream.d.ts +19 -0
- package/types/server/tunnel.d.ts +1 -0
- package/types/server/types.d.ts +2 -9
- package/types/server/webRouter.d.ts +2 -19
- package/types/service/agent.service.d.ts +16 -29
- package/types/service/injectInfo.d.ts +26 -15
- package/types/service/ipcTypes.d.ts +6 -0
- package/types/service/liveSyncHub.d.ts +4 -22
- package/types/service/predefinedAdaptor/anthropicLlm.d.ts +20 -29
- package/types/service/predefinedAdaptor/cache.adaptor.d.ts +42 -12
- package/types/service/predefinedAdaptor/database.adaptor.d.ts +20 -16
- package/types/service/predefinedAdaptor/documentTransfer.d.ts +15 -0
- package/types/service/predefinedAdaptor/index.d.ts +2 -1
- package/types/service/predefinedAdaptor/insightQuery.d.ts +7 -30
- package/types/service/predefinedAdaptor/llm.adaptor.d.ts +54 -54
- package/types/service/predefinedAdaptor/llmOverflow.d.ts +16 -0
- package/types/service/predefinedAdaptor/openaiDialect.d.ts +19 -29
- package/types/service/predefinedAdaptor/openaiLlm.d.ts +9 -14
- package/types/service/predefinedAdaptor/queue.adaptor.d.ts +12 -7
- package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +7 -2
- package/types/service/predefinedAdaptor/searchIndex.d.ts +17 -47
- package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +15 -6
- package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +6 -4
- package/types/service/predefinedAdaptor/solidSqlite.d.ts +2 -1
- package/types/service/predefinedAdaptor/sql/PostgresInsightSession.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +9 -11
- package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +11 -25
- package/types/service/predefinedAdaptor/sql/SqliteInsightSession.d.ts +15 -0
- package/types/service/predefinedAdaptor/sql/UpdateCompiler.d.ts +0 -4
- package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +18 -10
- package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +5 -2
- package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +9 -3
- package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +8 -5
- package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +4 -4
- package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +28 -0
- package/types/service/predefinedAdaptor/sql/search/mirror.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/search/postgres.d.ts +53 -0
- package/types/service/predefinedAdaptor/sql/search/types.d.ts +45 -0
- package/types/service/predefinedAdaptor/sql/types.d.ts +69 -15
- package/types/service/predefinedAdaptor/sql/values.d.ts +8 -0
- package/types/service/predefinedAdaptor/sqlitePath.d.ts +1 -0
- package/types/service/predefinedAdaptor/sseData.d.ts +1 -0
- package/types/service/predefinedAdaptor/storage.adaptor.d.ts +3 -2
- package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +26 -26
- package/types/service/serviceModule.d.ts +7 -7
- package/types/service/toolNames.d.ts +4 -21
- package/types/service/types.d.ts +3 -3
- package/types/signal/CrossSiteGuard.d.ts +3 -28
- package/types/signal/SignalFailure.d.ts +1 -15
- package/types/signal/agent/AgentCatalogue.d.ts +8 -54
- package/types/signal/agent.signal.d.ts +4 -1
- package/types/signal/agentMeter.d.ts +24 -0
- package/types/signal/agentTurnStream.d.ts +10 -11
- package/types/signal/endpoint.d.ts +0 -1
- package/types/signal/endpointCache.d.ts +5 -0
- package/types/signal/endpointInfo.d.ts +1 -9
- package/types/signal/exception.d.ts +1 -34
- package/types/signal/guard.d.ts +4 -15
- package/types/signal/guards.d.ts +2 -10
- package/types/signal/index.d.ts +1 -0
- package/types/signal/internal.d.ts +1 -5
- package/types/signal/internalArg.d.ts +7 -13
- package/types/signal/mcp/McpDocument.d.ts +5 -45
- package/types/signal/mcp/McpProgress.d.ts +6 -19
- package/types/signal/mcp/McpUriTemplate.d.ts +1 -19
- package/types/signal/mcp/Msg.d.ts +13 -70
- package/types/signal/mcp/mcpProtocol.d.ts +1 -26
- package/types/signal/mcp/pagePrompt.d.ts +3 -9
- package/types/signal/middleware.d.ts +0 -18
- package/types/signal/schema/JsonSchemaBuilder.d.ts +15 -43
- package/types/signal/serializer/fetch.serializer.d.ts +1 -6
- package/types/signal/serverSignal.d.ts +0 -1
- package/types/signal/signalContext.d.ts +14 -61
- package/types/signal/signalRegistry.d.ts +0 -1
- package/types/signal/slice.d.ts +3 -9
- package/types/signal/sliceInfo.d.ts +5 -30
- package/types/signal/trace.d.ts +2 -30
- package/types/signal/types.d.ts +27 -57
- package/types/store/SliceRequest.d.ts +1 -11
- package/types/store/action.d.ts +2 -6
- package/types/store/actionTag.d.ts +1 -10
- package/types/store/agent/AgentBridge.d.ts +3 -22
- package/types/store/agent/AgentContext.d.ts +1 -7
- package/types/store/agent/AgentCursor.d.ts +24 -0
- package/types/store/agent/AgentPrompts.d.ts +0 -5
- package/types/store/agent/AgentVisual.d.ts +25 -0
- package/types/store/agent/ScreenFlash.d.ts +23 -0
- package/types/store/agent/ScreenReader.d.ts +3 -26
- package/types/store/agent/ScreenSettle.d.ts +1 -12
- package/types/store/agent/ScreenTarget.d.ts +3 -23
- package/types/store/agent/StoreCatalogue.d.ts +12 -16
- package/types/store/agent/StoreSurfaceSource.d.ts +11 -23
- package/types/store/agent/index.d.ts +4 -3
- package/types/store/agentic/AgentValue.d.ts +3 -23
- package/types/store/agentic/StExposeBuilder.d.ts +2 -11
- package/types/store/agentic/StExposeDraft.d.ts +0 -6
- package/types/store/agentic/StStateBuilder.d.ts +1 -7
- package/types/store/agentic/StStateDraft.d.ts +0 -5
- package/types/store/agentic/StToolBuilder.d.ts +14 -37
- package/types/store/agentic/StToolDraft.d.ts +0 -7
- package/types/store/agentic/attachAgentic.d.ts +2 -10
- package/types/store/agentic/formFields.d.ts +5 -41
- package/types/store/agentic/index.d.ts +1 -1
- package/types/store/agentic/useAgentReference.d.ts +14 -0
- package/types/store/agentic/useFieldTool.d.ts +19 -16
- package/types/store/agentic/useFormTools.d.ts +1 -18
- package/types/store/agentic/useRelationFieldTool.d.ts +1 -14
- package/types/store/baseSt.d.ts +2 -2
- package/types/store/databaseStateNames.d.ts +0 -9
- package/types/store/draftStore.d.ts +4 -30
- package/types/store/formSetterNames.d.ts +0 -19
- package/types/store/hooks.d.ts +1 -1
- package/types/store/liveInsert.d.ts +0 -23
- package/types/store/sliceKeys.d.ts +31 -0
- package/types/store/sliceRole.d.ts +1 -10
- package/types/store/state.d.ts +2 -9
- package/types/store/stateBuilder.d.ts +0 -14
- package/types/store/storeInstance.d.ts +6 -20
- package/types/store/storeRegistry.d.ts +0 -2
- package/types/test/conformance.d.ts +73 -0
- package/types/test/index.d.ts +2 -2
- package/types/test/sampleOf.d.ts +17 -2
- package/types/test/signalTestRuntime.d.ts +1 -1
- package/types/test/testServer.d.ts +4 -3
- package/types/ui/Agent/Attach.d.ts +2 -2
- package/types/ui/Agent/Bubble.d.ts +3 -14
- package/types/ui/Agent/Chat.d.ts +31 -64
- package/types/ui/Agent/ChatCommands.d.ts +4 -14
- package/types/ui/Agent/Composer.d.ts +18 -5
- package/types/ui/Agent/Dock.d.ts +38 -10
- package/types/ui/Agent/Guide.d.ts +1 -5
- package/types/ui/Agent/History.d.ts +1 -18
- package/types/ui/Agent/Launcher.d.ts +2 -2
- package/types/ui/Agent/Markdown.d.ts +2 -6
- package/types/ui/Agent/MentionNode.d.ts +18 -0
- package/types/ui/Agent/Menu.d.ts +4 -4
- package/types/ui/Agent/Question.d.ts +1 -6
- package/types/ui/Agent/Queued.d.ts +1 -6
- package/types/ui/Agent/Refer.d.ts +9 -0
- package/types/ui/Agent/RichInput.d.ts +14 -0
- package/types/ui/Agent/Skip.d.ts +3 -15
- package/types/ui/Agent/Steps.d.ts +17 -0
- package/types/ui/Agent/ToolCard.d.ts +9 -0
- package/types/ui/Agent/Zone.d.ts +13 -30
- package/types/ui/Agent/agentSessionOf.d.ts +20 -16
- package/types/ui/Agent/attachment.d.ts +4 -38
- package/types/ui/Agent/fetchRunner.d.ts +1 -8
- package/types/ui/Agent/index.d.ts +2 -6
- package/types/ui/Agent/mentionDraft.d.ts +9 -0
- package/types/ui/Agent/tokenCount.d.ts +1 -5
- package/types/ui/Agent/useChatAttachments.d.ts +0 -5
- package/types/ui/Agent/useChatQueue.d.ts +3 -14
- package/types/ui/Agent/useChatReferences.d.ts +15 -0
- package/types/ui/Agent/useChatVoice.d.ts +0 -12
- package/types/ui/Agent/useDraftRecall.d.ts +0 -8
- package/types/ui/Agent/useKeyboardInset.d.ts +0 -7
- package/types/ui/Agent/useReferenceMenu.d.ts +35 -0
- package/types/ui/Agent/useSlashMenu.d.ts +0 -2
- package/types/ui/Agent/voice.d.ts +8 -42
- package/types/ui/Badge.d.ts +0 -1
- package/types/ui/BottomSheet.d.ts +2 -5
- package/types/ui/Button.d.ts +6 -23
- package/types/ui/ClientSide.d.ts +0 -2
- package/types/ui/Constant/schemaGraph.d.ts +0 -4
- package/types/ui/Copy.d.ts +2 -3
- package/types/ui/CsrImage.d.ts +2 -1
- package/types/ui/Data/Dashboard.d.ts +1 -4
- package/types/ui/Data/Item.d.ts +1 -1
- package/types/ui/Data/ListContainer.d.ts +1 -10
- package/types/ui/Data/Pagination.d.ts +0 -2
- package/types/ui/Data/QueryMaker.d.ts +0 -7
- package/types/ui/Data/RefPicker.d.ts +0 -7
- package/types/ui/DatePicker.d.ts +0 -11
- package/types/ui/Dialog/LegacyModal.d.ts +1 -4
- package/types/ui/Dialog/Provider.d.ts +37 -4
- package/types/ui/Dialog/index.d.ts +4 -4
- package/types/ui/Dropdown.d.ts +1 -9
- package/types/ui/Empty.d.ts +3 -10
- package/types/ui/Field/Collection.d.ts +1 -16
- package/types/ui/Field/Relation.d.ts +10 -37
- package/types/ui/Field/Text.d.ts +9 -66
- package/types/ui/Field/index.d.ts +0 -9
- package/types/ui/Field/lightRefCache.d.ts +11 -0
- package/types/ui/Field/useRelationOptions.d.ts +28 -0
- package/types/ui/Image.d.ts +8 -12
- package/types/ui/InfiniteScroll.d.ts +2 -6
- package/types/ui/Input.d.ts +8 -15
- package/types/ui/Layout/Role.d.ts +23 -0
- package/types/ui/Layout/Sider.d.ts +21 -0
- package/types/ui/Layout/TopInset.d.ts +5 -0
- package/types/ui/Layout/index.d.ts +7 -7
- package/types/ui/LegacyModal.d.ts +1 -12
- package/types/ui/Link/Action.d.ts +11 -0
- package/types/ui/Link/Anchor.d.ts +20 -0
- package/types/ui/Link/index.d.ts +4 -7
- package/types/ui/Load/Edit_Client.d.ts +1 -1
- package/types/ui/Load/Page.d.ts +3 -5
- package/types/ui/Load/Stream.d.ts +0 -12
- package/types/ui/Load/Units.d.ts +1 -1
- package/types/ui/Load/View.d.ts +2 -7
- package/types/ui/Loading/ProgressBar.d.ts +0 -4
- package/types/ui/Loading/Skeleton.d.ts +2 -0
- package/types/ui/Loading/Spin.d.ts +12 -2
- package/types/ui/Loading/index.d.ts +3 -8
- package/types/ui/Loading/index_.d.ts +3 -10
- package/types/ui/Menu.d.ts +0 -5
- package/types/ui/Modal.d.ts +0 -17
- package/types/ui/Model/AdminPanel.d.ts +1 -4
- package/types/ui/Model/DraftBar.d.ts +2 -7
- package/types/ui/Model/EditModal.d.ts +7 -22
- package/types/ui/Model/LoadStore.d.ts +18 -0
- package/types/ui/Model/Remove.d.ts +0 -2
- package/types/ui/Model/SureToRemove.d.ts +0 -3
- package/types/ui/Model/ViewEditModal.d.ts +0 -2
- package/types/ui/Model/draftScope.d.ts +0 -7
- package/types/ui/Model/index.d.ts +2 -2
- package/types/ui/Model/index_.d.ts +2 -2
- package/types/ui/Pagination.d.ts +4 -12
- package/types/ui/Popconfirm.d.ts +3 -17
- package/types/ui/Radio.d.ts +0 -4
- package/types/ui/RecentTime.d.ts +5 -9
- package/types/ui/Reference/Panel.d.ts +44 -6
- package/types/ui/Reference/Segmented.d.ts +0 -3
- package/types/ui/Reference/{style.d.ts → docUi.d.ts} +6 -2
- package/types/ui/Reference/index.d.ts +3 -7
- package/types/ui/Refresh.d.ts +1 -1
- package/types/ui/ScreenNavigator.d.ts +2 -2
- package/types/ui/Select.d.ts +4 -19
- package/types/ui/Signal/Endpoint.d.ts +43 -0
- package/types/ui/Signal/WebSocket.d.ts +23 -0
- package/types/ui/Signal/endpointEntries.d.ts +2 -4
- package/types/ui/Signal/index.d.ts +1 -3
- package/types/ui/Signal/style.d.ts +1 -2
- package/types/ui/Switch.d.ts +1 -5
- package/types/ui/System/CSR.d.ts +2 -2
- package/types/ui/System/Client.d.ts +2 -6
- package/types/ui/System/Common.d.ts +11 -22
- package/types/ui/System/Root.d.ts +1 -4
- package/types/ui/System/SSR.d.ts +2 -2
- package/types/ui/System/ThemeToggle.d.ts +1 -0
- package/types/ui/System/index.d.ts +1 -0
- package/types/ui/Tab/Provider.d.ts +24 -4
- package/types/ui/Tab/index.d.ts +3 -3
- package/types/ui/Table.d.ts +7 -23
- package/types/ui/Toast.d.ts +9 -16
- package/types/ui/ToggleSelect.d.ts +0 -5
- package/types/ui/Tooltip.d.ts +1 -2
- package/types/ui/UiOverride/{context.d.ts → UiOverride.d.ts} +24 -40
- package/types/ui/UiOverride/index.d.ts +2 -5
- package/types/ui/UiOverride/override.d.ts +2 -18
- package/types/ui/Unauthorized.d.ts +0 -6
- package/types/ui/agentAttrs.d.ts +4 -11
- package/types/ui/index.d.ts +9 -5
- package/types/ui/overlayLayer.d.ts +4 -24
- package/types/ui/overlayPosition.d.ts +0 -12
- package/types/ui/recipe/badgeRecipe.d.ts +2 -2
- package/types/ui/recipe/buttonRecipe.d.ts +2 -2
- package/types/ui/recipe/factory.d.ts +1 -21
- package/types/ui/recipe/index.d.ts +0 -14
- package/types/ui/recipe/inputRecipe.d.ts +3 -3
- package/types/ui/sliceNamesOf.d.ts +78 -0
- package/types/ui/triggerSlot.d.ts +2 -12
- package/types/vendor/use-agentic/AgentProgress.d.ts +12 -0
- package/types/vendor/use-agentic/AgentSession.d.ts +94 -2
- package/types/vendor/use-agentic/Compaction.d.ts +42 -5
- package/types/vendor/use-agentic/Reference.d.ts +56 -0
- package/types/vendor/use-agentic/ToolRunner.d.ts +31 -1
- package/types/vendor/use-agentic/Transcript.d.ts +4 -1
- package/types/vendor/use-agentic/index.d.ts +1 -0
- package/types/vendor/use-agentic/types.d.ts +109 -7
- package/types/webkit/RenderLayer.d.ts +11 -0
- package/types/webkit/index.d.ts +1 -2
- package/types/webkit/lazy.d.ts +3 -12
- package/types/webkit/{createRobotPage.d.ts → seoPages.d.ts} +4 -0
- package/types/webkit/useBodyScrollLock.d.ts +0 -1
- package/types/webkit/useCamera.d.ts +1 -1
- package/types/webkit/useContact.d.ts +1 -1
- package/types/webkit/useDebounce.d.ts +0 -1
- package/types/webkit/useEscapeKey.d.ts +1 -4
- package/types/webkit/useFetch.d.ts +1 -6
- package/types/webkit/useFrameRuntime.d.ts +1 -1
- package/types/webkit/useGeoLocation.d.ts +1 -1
- package/types/webkit/usePageTool.d.ts +2 -9
- package/types/webkit/usePurchase.d.ts +1 -4
- package/types/webkit/useScreenScope.d.ts +2 -13
- package/ui/Agent/Attach.tsx +5 -4
- package/ui/Agent/Bubble.tsx +51 -31
- package/ui/Agent/Chat.tsx +114 -102
- package/ui/Agent/ChatCommands.ts +5 -21
- package/ui/Agent/Composer.tsx +110 -28
- package/ui/Agent/Dock.tsx +176 -16
- package/ui/Agent/Guide.tsx +1 -5
- package/ui/Agent/History.tsx +1 -18
- package/ui/Agent/Launcher.tsx +2 -2
- package/ui/Agent/Markdown.tsx +40 -14
- package/ui/Agent/MentionNode.ts +54 -0
- package/ui/Agent/Menu.tsx +8 -5
- package/ui/Agent/Question.tsx +1 -6
- package/ui/Agent/Queued.tsx +3 -6
- package/ui/Agent/Refer.tsx +40 -0
- package/ui/Agent/RichInput.tsx +146 -0
- package/ui/Agent/Skip.tsx +3 -15
- package/ui/Agent/Steps.tsx +33 -0
- package/ui/Agent/ToolCard.tsx +32 -0
- package/ui/Agent/Zone.tsx +15 -31
- package/ui/Agent/agentSessionOf.ts +115 -15
- package/ui/Agent/attachment.ts +5 -42
- package/ui/Agent/fetchRunner.ts +3 -15
- package/ui/Agent/index.ts +1 -6
- package/ui/Agent/mentionDraft.ts +91 -0
- package/ui/Agent/tokenCount.ts +1 -5
- package/ui/Agent/useChatAttachments.ts +2 -9
- package/ui/Agent/useChatQueue.ts +12 -14
- package/ui/Agent/useChatReferences.ts +51 -0
- package/ui/Agent/useChatVoice.ts +2 -23
- package/ui/Agent/useDraftRecall.ts +0 -9
- package/ui/Agent/useKeyboardInset.ts +0 -7
- package/ui/Agent/useReferenceMenu.ts +93 -0
- package/ui/Agent/useSlashMenu.ts +0 -3
- package/ui/Agent/voice.ts +8 -43
- package/ui/Badge.tsx +0 -2
- package/ui/BottomSheet.tsx +2 -5
- package/ui/Button.tsx +9 -45
- package/ui/ClientSide.tsx +0 -2
- package/ui/Clipboard.tsx +0 -1
- package/ui/Constant/Doc.tsx +274 -265
- package/ui/Constant/Graph.tsx +11 -3
- package/ui/Constant/schemaGraph.ts +0 -9
- package/ui/Copy.tsx +2 -3
- package/ui/CsrImage.tsx +9 -9
- package/ui/Data/CardList.tsx +2 -17
- package/ui/Data/Dashboard.tsx +2 -5
- package/ui/Data/Item.tsx +2 -3
- package/ui/Data/ListContainer.tsx +15 -61
- package/ui/Data/Pagination.tsx +3 -22
- package/ui/Data/QueryMaker.tsx +1 -8
- package/ui/Data/RefPicker.tsx +1 -8
- package/ui/Data/TableList.tsx +2 -15
- package/ui/DatePicker.tsx +1 -12
- package/ui/Dialog/LegacyModal.tsx +3 -7
- package/ui/Dialog/Modal.tsx +3 -4
- package/ui/Dialog/Provider.tsx +85 -7
- package/ui/Dialog/index.tsx +1 -5
- package/ui/DraggableList.tsx +1 -4
- package/ui/Dropdown.tsx +4 -17
- package/ui/Empty.tsx +4 -12
- package/ui/Field/Choice.tsx +1 -1
- package/ui/Field/Collection.tsx +7 -29
- package/ui/Field/DateField.tsx +2 -7
- package/ui/Field/Label.tsx +0 -1
- package/ui/Field/NumberField.tsx +0 -1
- package/ui/Field/Relation.tsx +79 -199
- package/ui/Field/Text.tsx +25 -86
- package/ui/Field/index.tsx +0 -9
- package/ui/Field/lightRefCache.ts +61 -0
- package/ui/Field/useRelationOptions.ts +97 -0
- package/ui/Image.tsx +35 -65
- package/ui/InfiniteScroll.tsx +3 -21
- package/ui/Input.tsx +82 -174
- package/ui/Layout/Role.tsx +42 -0
- package/ui/Layout/Sider.tsx +82 -1
- package/ui/Layout/TopInset.tsx +23 -1
- package/ui/Layout/index.ts +3 -9
- package/ui/LegacyModal.tsx +1 -12
- package/ui/Link/Action.tsx +29 -0
- package/ui/Link/Anchor.tsx +118 -0
- package/ui/Link/index.tsx +7 -8
- package/ui/Load/Edit_Client.tsx +2 -37
- package/ui/Load/Page.tsx +3 -6
- package/ui/Load/Pagination.tsx +4 -19
- package/ui/Load/Stream.tsx +0 -12
- package/ui/Load/Units.tsx +13 -86
- package/ui/Load/View.tsx +4 -21
- package/ui/Loading/ProgressBar.tsx +0 -4
- package/ui/Loading/Skeleton.tsx +14 -0
- package/ui/Loading/Spin.tsx +34 -5
- package/ui/Loading/index.ts +0 -5
- package/ui/Loading/index_.tsx +2 -12
- package/ui/Menu.tsx +3 -21
- package/ui/Modal.tsx +0 -17
- package/ui/Model/AdminPanel.tsx +2 -5
- package/ui/Model/DraftBar.tsx +3 -14
- package/ui/Model/EditModal.tsx +11 -48
- package/ui/Model/EditWrapper.tsx +2 -3
- package/ui/Model/LoadStore.tsx +18 -0
- package/ui/Model/NewWrapper_Client.tsx +1 -1
- package/ui/Model/Remove.tsx +4 -12
- package/ui/Model/RemoveWrapper.tsx +2 -3
- package/ui/Model/SureToRemove.tsx +4 -13
- package/ui/Model/ViewEditModal.tsx +0 -6
- package/ui/Model/ViewModal.tsx +1 -5
- package/ui/Model/ViewWrapper.tsx +1 -2
- package/ui/Model/draftScope.ts +0 -7
- package/ui/Model/index_.tsx +2 -22
- package/ui/Pagination.tsx +4 -12
- package/ui/Popconfirm.tsx +3 -18
- package/ui/Portal.tsx +2 -3
- package/ui/Radio.tsx +1 -5
- package/ui/RecentTime.tsx +19 -31
- package/ui/Reference/Panel.tsx +102 -6
- package/ui/Reference/Segmented.tsx +5 -11
- package/ui/Reference/{style.ts → docUi.ts} +10 -2
- package/ui/Reference/index.ts +3 -7
- package/ui/Refresh.tsx +79 -13
- package/ui/ScreenNavigator.tsx +8 -13
- package/ui/Select.tsx +29 -37
- package/ui/Signal/Endpoint.tsx +154 -0
- package/ui/Signal/Listener.tsx +1 -4
- package/ui/Signal/Object.tsx +67 -73
- package/ui/Signal/RestApi.tsx +30 -76
- package/ui/Signal/WebSocket.tsx +253 -2
- package/ui/Signal/endpointEntries.ts +3 -5
- package/ui/Signal/index.ts +1 -3
- package/ui/Signal/style.ts +1 -2
- package/ui/Switch.tsx +1 -5
- package/ui/System/CSR.tsx +29 -109
- package/ui/System/Client.tsx +15 -19
- package/ui/System/Common.tsx +31 -22
- package/ui/System/Messages.tsx +2 -2
- package/ui/System/Reconnect.tsx +1 -6
- package/ui/System/Root.tsx +1 -4
- package/ui/System/SSR.tsx +10 -16
- package/ui/System/ThemeToggle.tsx +15 -0
- package/ui/System/index.tsx +2 -2
- package/ui/Tab/Provider.tsx +115 -7
- package/ui/Tab/index.tsx +1 -4
- package/ui/Table.tsx +7 -23
- package/ui/Toast.tsx +9 -16
- package/ui/ToggleSelect.tsx +10 -24
- package/ui/Tooltip.tsx +2 -8
- package/ui/UiOverride/{context.ts → UiOverride.tsx} +54 -42
- package/ui/UiOverride/index.ts +9 -6
- package/ui/UiOverride/override.ts +2 -18
- package/ui/Unauthorized.tsx +1 -8
- package/ui/agentAttrs.ts +9 -12
- package/ui/index.ts +20 -5
- package/ui/overlayLayer.ts +4 -25
- package/ui/overlayPosition.ts +2 -14
- package/ui/recipe/badgeRecipe.ts +1 -1
- package/ui/recipe/buttonRecipe.ts +4 -4
- package/ui/recipe/factory.ts +1 -22
- package/ui/recipe/index.ts +1 -14
- package/ui/recipe/inputRecipe.ts +2 -2
- package/ui/sliceNamesOf.ts +26 -0
- package/ui/styles.css +195 -1
- package/ui/triggerSlot.tsx +2 -12
- package/vendor/use-agentic/AgentProgress.ts +13 -1
- package/vendor/use-agentic/AgentSession.ts +313 -29
- package/vendor/use-agentic/AgenticSurface.ts +2 -0
- package/vendor/use-agentic/Compaction.ts +91 -9
- package/vendor/use-agentic/Reference.ts +99 -0
- package/vendor/use-agentic/ToolRunner.ts +77 -2
- package/vendor/use-agentic/Transcript.ts +15 -4
- package/vendor/use-agentic/WIRE.md +16 -2
- package/vendor/use-agentic/httpRunner.ts +19 -4
- package/vendor/use-agentic/index.ts +1 -1
- package/vendor/use-agentic/types.ts +121 -10
- package/webkit/RenderLayer.tsx +45 -0
- package/webkit/bootCsr.tsx +4 -57
- package/webkit/index.ts +1 -2
- package/webkit/lazy.tsx +3 -13
- package/webkit/{createRobotPage.ts → seoPages.ts} +5 -0
- package/webkit/useBodyScrollLock.tsx +0 -6
- package/webkit/useCamera.tsx +10 -28
- package/webkit/useCodepush.tsx +8 -31
- package/webkit/useContact.tsx +1 -8
- package/webkit/useCsrValues.ts +203 -428
- package/webkit/useDebounce.ts +0 -3
- package/webkit/useEscapeKey.tsx +1 -12
- package/webkit/useFetch.ts +7 -13
- package/webkit/useFrameRuntime.ts +5 -43
- package/webkit/useGeoLocation.tsx +1 -1
- package/webkit/useLocation.ts +5 -8
- package/webkit/usePageTool.tsx +2 -9
- package/webkit/usePurchase.tsx +17 -33
- package/webkit/useScreenScope.tsx +2 -13
- package/client/fetch.ts +0 -1
- package/client/frameDebug.ts +0 -29
- package/common/deepObjectify.ts +0 -42
- package/common/dynamicRecord.ts +0 -12
- package/common/formatPhone.ts +0 -7
- package/common/getAllPropertyDescriptors.ts +0 -13
- package/common/lowerlize.ts +0 -4
- package/common/mergeVersion.ts +0 -10
- package/common/pathGet.ts +0 -13
- package/common/pathGetLoose.ts +0 -31
- package/common/pathSet.ts +0 -28
- package/common/plainFieldsOf.ts +0 -13
- package/common/randomPicks.ts +0 -12
- package/common/websocketAuth.ts +0 -24
- package/constant/deserialize.ts +0 -98
- package/dictionary/agentTurn.dictionary.ts +0 -33
- package/document/schema.ts +0 -24
- package/fetch/fetchType/clientSignal.type.ts +0 -22
- package/local/apps/akan/akan-local.db +0 -0
- package/local/apps/akan/akan-local.db-shm +0 -0
- package/local/apps/akan/akan-local.db-wal +0 -0
- package/local/apps/akan/akan-local_solid.db +0 -0
- package/local/apps/akan/akan-local_solid.db-shm +0 -0
- package/local/apps/akan/akan-local_solid.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-wal +0 -0
- package/server/artifact/manifestTypes.ts +0 -19
- package/server/assetEncoding.ts +0 -27
- package/server/consoleEvaluator.ts +0 -51
- package/server/di/index.ts +0 -4
- package/server/di/resolveAdaptorHierarchy.ts +0 -91
- package/server/di/resolveServiceHierarchy.ts +0 -47
- package/server/hmr/changeBatch.ts +0 -14
- package/server/hmr/index.ts +0 -4
- package/server/metadata.tsx +0 -198
- package/server/proxy/akanResponse.ts +0 -16
- package/server/proxy/bunRequestFields.ts +0 -12
- package/server/rscPartialCommit.ts +0 -3
- package/server/rscPatchSafety.ts +0 -57
- package/server/rscWorkerReplay.ts +0 -49
- package/server/subRouteIndexDocument.tsx +0 -61
- package/service/predefinedAdaptor/deepseekLlm.ts +0 -82
- package/service/predefinedAdaptor/sqlDescriptor.ts +0 -25
- package/store/agent/storeSurface.ts +0 -28
- package/store/agent/types.ts +0 -16
- package/store/agentic/useFileFieldTool.ts +0 -221
- package/store/stateInfo.ts +0 -66
- package/test/playwright.config.base.ts +0 -48
- package/test/playwright.pageAgent.ts +0 -41
- package/test/sample.ts +0 -19
- package/types/client/fetch.d.ts +0 -1
- package/types/client/frameDebug.d.ts +0 -3
- package/types/common/deepObjectify.d.ts +0 -6
- package/types/common/dynamicRecord.d.ts +0 -14
- package/types/common/formatPhone.d.ts +0 -2
- package/types/common/getAllPropertyDescriptors.d.ts +0 -5
- package/types/common/isPhoneNumber.d.ts +0 -2
- package/types/common/lowerlize.d.ts +0 -2
- package/types/common/mergeVersion.d.ts +0 -10
- package/types/common/pathGet.d.ts +0 -1
- package/types/common/pathGetLoose.d.ts +0 -8
- package/types/common/pathSet.d.ts +0 -3
- package/types/common/plainFieldsOf.d.ts +0 -6
- package/types/common/randomPicks.d.ts +0 -1
- package/types/common/splitVersion.d.ts +0 -11
- package/types/common/websocketAuth.d.ts +0 -19
- package/types/common/websocketBinaryFrame.d.ts +0 -17
- package/types/constant/deserialize.d.ts +0 -10
- package/types/dictionary/agentTurn.dictionary.d.ts +0 -1
- package/types/document/schema.d.ts +0 -5
- package/types/fetch/fetchType/clientSignal.type.d.ts +0 -16
- package/types/server/artifact/manifestTypes.d.ts +0 -16
- package/types/server/assetEncoding.d.ts +0 -7
- package/types/server/consoleEvaluator.d.ts +0 -2
- package/types/server/di/index.d.ts +0 -4
- package/types/server/di/resolveAdaptorHierarchy.d.ts +0 -21
- package/types/server/di/resolveServiceHierarchy.d.ts +0 -13
- package/types/server/di.d.ts +0 -1
- package/types/server/hmr/changeBatch.d.ts +0 -13
- package/types/server/hmr/index.d.ts +0 -4
- package/types/server/hmr.d.ts +0 -1
- package/types/server/metadata.d.ts +0 -22
- package/types/server/proxy/akanResponse.d.ts +0 -7
- package/types/server/proxy/bunRequestFields.d.ts +0 -1
- package/types/server/rscPartialCommit.d.ts +0 -1
- package/types/server/rscPatchSafety.d.ts +0 -8
- package/types/server/rscWorkerReplay.d.ts +0 -32
- package/types/server/subRouteIndexDocument.d.ts +0 -8
- package/types/service/predefinedAdaptor/deepseekLlm.d.ts +0 -19
- package/types/service/predefinedAdaptor/sqlDescriptor.d.ts +0 -5
- package/types/store/agent/storeSurface.d.ts +0 -14
- package/types/store/agent/types.d.ts +0 -15
- package/types/store/agentic/useFileFieldTool.d.ts +0 -41
- package/types/store/stateInfo.d.ts +0 -23
- package/types/test/playwright.config.base.d.ts +0 -9
- package/types/test/playwright.pageAgent.d.ts +0 -12
- package/types/test/sample.d.ts +0 -15
- package/types/ui/Agent/Context.d.ts +0 -13
- package/types/ui/Agent/Mic.d.ts +0 -8
- package/types/ui/Agent/Section.d.ts +0 -10
- package/types/ui/Agent/StateKey.d.ts +0 -16
- package/types/ui/Agent/Tool.d.ts +0 -15
- package/types/ui/Agent/Transcript.d.ts +0 -13
- package/types/ui/Agent/markdownSpans.d.ts +0 -2
- package/types/ui/Agent/sessionHistory.d.ts +0 -14
- package/types/ui/Agent/sessionView.d.ts +0 -15
- package/types/ui/Dialog/Action.d.ts +0 -5
- package/types/ui/Dialog/Close.d.ts +0 -6
- package/types/ui/Dialog/Content.d.ts +0 -6
- package/types/ui/Dialog/Title.d.ts +0 -5
- package/types/ui/Dialog/Trigger.d.ts +0 -6
- package/types/ui/Dialog/context.d.ts +0 -18
- package/types/ui/Layout/LeftSider.d.ts +0 -11
- package/types/ui/Layout/RightSider.d.ts +0 -12
- package/types/ui/Layout/Template.d.ts +0 -7
- package/types/ui/Layout/TopLeftAction.d.ts +0 -6
- package/types/ui/Layout/Unit.d.ts +0 -9
- package/types/ui/Layout/View.d.ts +0 -8
- package/types/ui/Layout/Zone.d.ts +0 -6
- package/types/ui/Link/Back.d.ts +0 -7
- package/types/ui/Link/Close.d.ts +0 -7
- package/types/ui/Link/CsrLink.d.ts +0 -2
- package/types/ui/Link/Lang.d.ts +0 -8
- package/types/ui/Link/SsrLink.d.ts +0 -2
- package/types/ui/Link/types.d.ts +0 -50
- package/types/ui/Loading/Area.d.ts +0 -9
- package/types/ui/Loading/Button.d.ts +0 -7
- package/types/ui/Loading/Input.d.ts +0 -7
- package/types/ui/Model/LoadInit.d.ts +0 -10
- package/types/ui/Model/LoadView.d.ts +0 -10
- package/types/ui/Reference/Collapse.d.ts +0 -11
- package/types/ui/Reference/Summary.d.ts +0 -13
- package/types/ui/Reference/Toolbar.d.ts +0 -21
- package/types/ui/Reference/dictText.d.ts +0 -6
- package/types/ui/Signal/Message.d.ts +0 -23
- package/types/ui/Signal/PubSub.d.ts +0 -24
- package/types/ui/Signal/Request.d.ts +0 -8
- package/types/ui/System/DevModeToggle.d.ts +0 -1
- package/types/ui/System/Gtag.d.ts +0 -4
- package/types/ui/System/frameCssVars.d.ts +0 -5
- package/types/ui/Tab/Menu.d.ts +0 -12
- package/types/ui/Tab/Menus.d.ts +0 -6
- package/types/ui/Tab/Panel.d.ts +0 -8
- package/types/ui/Tab/context.d.ts +0 -11
- package/types/ui/UiOverride/Provider.d.ts +0 -15
- package/types/ui/UiOverride/createOverridable.d.ts +0 -9
- package/types/ui/UiOverride/useUiOverride.d.ts +0 -7
- package/types/ui/UiOverride/useUiRecipe.d.ts +0 -8
- package/types/webkit/createSitemapPage.d.ts +0 -4
- package/ui/Agent/Context.tsx +0 -49
- package/ui/Agent/Mic.tsx +0 -27
- package/ui/Agent/Section.tsx +0 -24
- package/ui/Agent/StateKey.tsx +0 -46
- package/ui/Agent/Tool.tsx +0 -59
- package/ui/Agent/Transcript.tsx +0 -33
- package/ui/Agent/markdownSpans.tsx +0 -49
- package/ui/Agent/sessionHistory.ts +0 -62
- package/ui/Agent/sessionView.ts +0 -38
- package/ui/Dialog/Action.tsx +0 -15
- package/ui/Dialog/Close.tsx +0 -18
- package/ui/Dialog/Content.tsx +0 -11
- package/ui/Dialog/Title.tsx +0 -15
- package/ui/Dialog/Trigger.tsx +0 -18
- package/ui/Dialog/context.ts +0 -32
- package/ui/Layout/LeftSider.tsx +0 -43
- package/ui/Layout/RightSider.tsx +0 -47
- package/ui/Layout/Template.tsx +0 -11
- package/ui/Layout/TopLeftAction.tsx +0 -28
- package/ui/Layout/Unit.tsx +0 -19
- package/ui/Layout/View.tsx +0 -12
- package/ui/Layout/Zone.tsx +0 -10
- package/ui/Link/Back.tsx +0 -15
- package/ui/Link/Close.tsx +0 -20
- package/ui/Link/CsrLink.tsx +0 -46
- package/ui/Link/Lang.tsx +0 -16
- package/ui/Link/SsrLink.tsx +0 -72
- package/ui/Link/types.ts +0 -55
- package/ui/Loading/Area.tsx +0 -27
- package/ui/Loading/Button.tsx +0 -15
- package/ui/Loading/Input.tsx +0 -15
- package/ui/Model/LoadInit.tsx +0 -11
- package/ui/Model/LoadView.tsx +0 -11
- package/ui/Reference/Collapse.tsx +0 -26
- package/ui/Reference/Summary.tsx +0 -25
- package/ui/Reference/Toolbar.tsx +0 -44
- package/ui/Reference/dictText.ts +0 -9
- package/ui/Signal/Message.tsx +0 -215
- package/ui/Signal/PubSub.tsx +0 -201
- package/ui/Signal/Request.tsx +0 -11
- package/ui/System/DevModeToggle.tsx +0 -19
- package/ui/System/Gtag.tsx +0 -69
- package/ui/System/frameCssVars.ts +0 -25
- package/ui/Tab/Menu.tsx +0 -70
- package/ui/Tab/Menus.tsx +0 -13
- package/ui/Tab/Panel.tsx +0 -25
- package/ui/Tab/context.ts +0 -20
- package/ui/UiOverride/Provider.tsx +0 -26
- package/ui/UiOverride/createOverridable.tsx +0 -25
- package/ui/UiOverride/useUiOverride.ts +0 -15
- package/ui/UiOverride/useUiRecipe.ts +0 -15
- package/webkit/createSitemapPage.ts +0 -4
package/store/action.ts
CHANGED
|
@@ -37,13 +37,15 @@ import type {
|
|
|
37
37
|
SlceDbSort,
|
|
38
38
|
SliceCls,
|
|
39
39
|
} from "akanjs/signal";
|
|
40
|
+
import { expandQueryArgs, normalizeQueryArgs } from "../fetch/client/sliceQueryArgs";
|
|
40
41
|
import { tagAction } from "./actionTag";
|
|
42
|
+
import { databaseStateNames } from "./databaseStateNames";
|
|
41
43
|
import { DraftStore } from "./draftStore";
|
|
42
44
|
import { formSetterNames } from "./formSetterNames";
|
|
43
45
|
import { type LiveSortableRow, livePlacementIndex } from "./liveInsert";
|
|
44
46
|
import { SliceRequest } from "./SliceRequest";
|
|
45
|
-
import
|
|
46
|
-
import type { DraftState
|
|
47
|
+
import { sliceKeysOf } from "./sliceKeys";
|
|
48
|
+
import type { DraftState } from "./state";
|
|
47
49
|
import type { SetGet, StoreSliceArgs, StoreSliceMap, StoreSliceSuffixCap } from "./types";
|
|
48
50
|
|
|
49
51
|
type _SliceMap<S extends SliceCls> = StoreSliceMap<S>;
|
|
@@ -62,20 +64,8 @@ type SliceRefreshForm<S extends SliceCls, Suffix extends keyof _SliceMap<S>> = S
|
|
|
62
64
|
};
|
|
63
65
|
|
|
64
66
|
const UPLOAD_POLL_INTERVAL_MS = 3000;
|
|
65
|
-
/** Two minutes of polling. A file still `uploading` after that is a server that will not finish it. */
|
|
66
67
|
const UPLOAD_POLL_ATTEMPTS = 40;
|
|
67
68
|
|
|
68
|
-
const isNullableSliceArg = (arg: SerializedSlice["args"][number]) => arg.nullable ?? arg.type === "search";
|
|
69
|
-
|
|
70
|
-
const normalizeQueryArgs = (queryArgs: unknown[], sliceArgs: SerializedSlice["args"]) => {
|
|
71
|
-
let length = Math.min(queryArgs.length, sliceArgs.length);
|
|
72
|
-
while (length > 0 && isNullableSliceArg(sliceArgs[length - 1]) && queryArgs[length - 1] == null) length--;
|
|
73
|
-
return queryArgs.slice(0, length);
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const expandQueryArgs = (queryArgs: unknown[], sliceArgs: SerializedSlice["args"]) =>
|
|
77
|
-
sliceArgs.map((_, idx) => queryArgs[idx]);
|
|
78
|
-
|
|
79
69
|
export interface CreateOption<Full extends { id: string }> {
|
|
80
70
|
path?: string;
|
|
81
71
|
modal?: string;
|
|
@@ -87,16 +77,12 @@ export interface NewOption {
|
|
|
87
77
|
modal?: string;
|
|
88
78
|
setDefault?: boolean;
|
|
89
79
|
sliceName?: string;
|
|
90
|
-
/**
|
|
91
|
-
* The draft scope this form belongs to, already built by the shell that holds the raw seed. Absent means no
|
|
92
|
-
* draft: `new<Model>` merges its argument into `default<Model>`, whose date defaults would rotate the key on
|
|
93
|
-
* every open, so the scope cannot be derived from what arrives here.
|
|
94
|
-
*/
|
|
80
|
+
/** Built by the shell from the raw seed (merged date defaults would rotate the key). Absent means no draft. */
|
|
95
81
|
draftScope?: string;
|
|
96
82
|
}
|
|
97
83
|
export interface EditOption {
|
|
98
84
|
modal?: string | null;
|
|
99
|
-
/**
|
|
85
|
+
/** Built by the shell from the record id. Absent means no draft. */
|
|
100
86
|
draftScope?: string;
|
|
101
87
|
}
|
|
102
88
|
type PartialOrNull<O> = { [K in keyof O]?: O[K] | null };
|
|
@@ -322,8 +308,6 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
|
|
|
322
308
|
const fileUploadRefName = resolveFileUploadCapability(fetch.serializedSignal)?.refName;
|
|
323
309
|
|
|
324
310
|
const names = {
|
|
325
|
-
model: fieldName,
|
|
326
|
-
Model: className,
|
|
327
311
|
modelForm: `${fieldName}Form`,
|
|
328
312
|
writeOnModel: `writeOn${className}`,
|
|
329
313
|
addModelFiles: `add${className}Files`,
|
|
@@ -348,7 +332,7 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
|
|
|
348
332
|
: (value as object);
|
|
349
333
|
(state[names.modelForm] as { [key: string]: any })[namesOfField.field] = setValue;
|
|
350
334
|
});
|
|
351
|
-
|
|
335
|
+
|
|
352
336
|
const postSet = (this as unknown as { [key: string]: ((value: unknown) => unknown) | undefined })[
|
|
353
337
|
namesOfField.postSetField
|
|
354
338
|
];
|
|
@@ -434,7 +418,6 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
|
|
|
434
418
|
let attemptsLeft = UPLOAD_POLL_ATTEMPTS;
|
|
435
419
|
const intervalKey = setInterval(() => {
|
|
436
420
|
void (async () => {
|
|
437
|
-
|
|
438
421
|
attemptsLeft -= 1;
|
|
439
422
|
try {
|
|
440
423
|
const currentFile = await (
|
|
@@ -466,7 +449,7 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
|
|
|
466
449
|
}
|
|
467
450
|
: {}),
|
|
468
451
|
};
|
|
469
|
-
|
|
452
|
+
|
|
470
453
|
tagAction(singleFieldSetAction[namesOfField.setFieldOnModel] as (...args: never[]) => unknown, {
|
|
471
454
|
action: namesOfField.setFieldOnModel,
|
|
472
455
|
state: `${names.modelForm}.${namesOfField.field}`,
|
|
@@ -487,27 +470,19 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
487
470
|
const [fieldName, className] = [refName, capitalize(refName)];
|
|
488
471
|
const cnst = ConstantRegistry.getDatabase(refName);
|
|
489
472
|
const modelRef = cnst.full;
|
|
490
|
-
|
|
473
|
+
|
|
491
474
|
let openFormBase: object | null = null;
|
|
492
475
|
const slices = Object.entries(slice).map(([suffix, serializedSlice]) => ({
|
|
493
476
|
sliceName: `${refName}${capitalize(suffix)}`,
|
|
494
|
-
suffix,
|
|
477
|
+
keys: sliceKeysOf(refName, suffix),
|
|
495
478
|
slice: serializedSlice,
|
|
496
479
|
}));
|
|
497
480
|
const names = {
|
|
498
|
-
|
|
499
|
-
_model: `_${fieldName}`,
|
|
481
|
+
...databaseStateNames(refName),
|
|
500
482
|
Model: className,
|
|
501
|
-
modelOperation: `${fieldName}Operation`,
|
|
502
|
-
defaultModel: `default${className}`,
|
|
503
483
|
modelInsight: `${fieldName}Insight`,
|
|
504
|
-
modelForm: `${fieldName}Form`,
|
|
505
|
-
modelSubmit: `${fieldName}Submit`,
|
|
506
|
-
modelLoading: `${fieldName}Loading`,
|
|
507
|
-
modelFormLoading: `${fieldName}FormLoading`,
|
|
508
484
|
modelList: `${fieldName}List`,
|
|
509
485
|
modelListLoading: `${fieldName}ListLoading`,
|
|
510
|
-
modelSelection: `${fieldName}Selection`,
|
|
511
486
|
createModelInForm: `create${className}InForm`,
|
|
512
487
|
updateModelInForm: `update${className}InForm`,
|
|
513
488
|
createModel: `create${className}`,
|
|
@@ -521,49 +496,24 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
521
496
|
viewModel: `view${className}`,
|
|
522
497
|
setModel: `set${className}`,
|
|
523
498
|
resetModel: `reset${className}`,
|
|
524
|
-
modelViewAt: `${fieldName}ViewAt`,
|
|
525
|
-
modelModal: `${fieldName}Modal`,
|
|
526
|
-
modelDraft: `${fieldName}FormDraft`,
|
|
527
499
|
loadModelDraft: `load${className}FormDraft`,
|
|
528
500
|
restoreModelDraft: `restore${className}FormDraft`,
|
|
529
501
|
discardModelDraft: `discard${className}FormDraft`,
|
|
530
|
-
initModel: `init${className}`,
|
|
531
|
-
modelInitList: `${fieldName}InitList`,
|
|
532
|
-
modelInitAt: `${fieldName}InitAt`,
|
|
533
|
-
modelStaleAt: `${fieldName}StaleAt`,
|
|
534
|
-
refreshModel: `refresh${className}`,
|
|
535
|
-
selectModel: `select${className}`,
|
|
536
|
-
setPageOfModel: `setPageOf${className}`,
|
|
537
|
-
loadMoreOfModel: `loadMoreOf${className}`,
|
|
538
|
-
setLimitOfModel: `setLimitOf${className}`,
|
|
539
|
-
setQueryArgsOfModel: `setQueryArgsOf${className}`,
|
|
540
|
-
setSortOfModel: `setSortOf${className}`,
|
|
541
|
-
applyLiveModel: `applyLive${className}`,
|
|
542
|
-
watchLiveModel: `watchLive${className}`,
|
|
543
|
-
lastPageOfModel: `lastPageOf${className}`,
|
|
544
|
-
pageOfModel: `pageOf${className}`,
|
|
545
|
-
limitOfModel: `limitOf${className}`,
|
|
546
|
-
hasMoreOfModel: `hasMoreOf${className}`,
|
|
547
|
-
isCumulativeOfModel: `isCumulativeOf${className}`,
|
|
548
|
-
queryArgsOfModel: `queryArgsOf${className}`,
|
|
549
|
-
sortOfModel: `sortOf${className}`,
|
|
550
502
|
};
|
|
551
|
-
|
|
503
|
+
const defaultKeyOf = (sliceName: string) => capitalize(sliceName).replace(names.Model, names.defaultModel);
|
|
504
|
+
|
|
552
505
|
const staleAtOfSlices = () => {
|
|
553
506
|
const staleAt = new Date();
|
|
554
|
-
return Object.fromEntries(
|
|
555
|
-
slices.map(({ sliceName }) => [sliceName.replace(names.model, names.modelStaleAt), staleAt]),
|
|
556
|
-
);
|
|
507
|
+
return Object.fromEntries(slices.map(({ keys }) => [keys.state.modelStaleAt, staleAt]));
|
|
557
508
|
};
|
|
558
509
|
const updatedAtOf = (model: Full): string | null => {
|
|
559
510
|
const updatedAt = (model as unknown as { updatedAt?: { toISOString?: () => string } }).updatedAt;
|
|
560
511
|
return typeof updatedAt?.toISOString === "function" ? updatedAt.toISOString() : null;
|
|
561
512
|
};
|
|
562
|
-
/** Turns draft saving on for this form and records what "unchanged" means for it. */
|
|
563
513
|
function armDraft(this: SetGet, draftScope: string | undefined, form: object, baseUpdatedAt: string | null) {
|
|
564
514
|
openFormBase = draftScope ? form : null;
|
|
565
515
|
if (!draftScope) return null;
|
|
566
|
-
|
|
516
|
+
|
|
567
517
|
void DraftStore.reconcileIdentity();
|
|
568
518
|
return {
|
|
569
519
|
key: DraftStore.keyOf(refName, draftScope),
|
|
@@ -573,12 +523,6 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
573
523
|
appliedAt: null,
|
|
574
524
|
};
|
|
575
525
|
}
|
|
576
|
-
/**
|
|
577
|
-
* Reads the saved draft and either puts it in the form or leaves it pending.
|
|
578
|
-
*
|
|
579
|
-
* Runs after the form has already been set from its own source, so a failed read, a stale record, or a
|
|
580
|
-
* conflicting one all leave the editor exactly as it would have been without drafts at all.
|
|
581
|
-
*/
|
|
582
526
|
async function applyDraft(this: SetGet, { auto }: { auto: boolean }) {
|
|
583
527
|
const draft = (this.get() as { [key: string]: any })[names.modelDraft] as DraftState | null;
|
|
584
528
|
if (!draft) return;
|
|
@@ -587,7 +531,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
587
531
|
|
|
588
532
|
const current = (this.get() as { [key: string]: any })[names.modelDraft] as DraftState | null;
|
|
589
533
|
if (current?.key !== draft.key) return;
|
|
590
|
-
|
|
534
|
+
|
|
591
535
|
const openedForm = (this.get() as { [key: string]: any })[names.modelForm] as object;
|
|
592
536
|
if (DraftStore.contentHash(record.form) === DraftStore.contentHash(DraftStore.encodeForm(refName, openedForm))) {
|
|
593
537
|
await DraftStore.remove(draft.key);
|
|
@@ -608,39 +552,38 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
608
552
|
}
|
|
609
553
|
this.set({ [names.modelDraft]: { ...draft, pending: { savedAt, form } } });
|
|
610
554
|
}
|
|
611
|
-
/** Disarms saving and forgets the record. Called by every path that ends the form for good. */
|
|
612
555
|
const clearDraft = (draft: DraftState | null) => {
|
|
613
556
|
openFormBase = null;
|
|
614
557
|
if (draft) void DraftStore.remove(draft.key);
|
|
615
558
|
return null;
|
|
616
559
|
};
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
function applyLocalCreate(
|
|
625
|
-
this: SetGet,
|
|
626
|
-
sliceName: string,
|
|
627
|
-
model: Full,
|
|
628
|
-
seen: { modelList: DataList<Light>; modelListLoading: boolean; modelInsight: Insight & BaseInsight },
|
|
629
|
-
) {
|
|
630
|
-
if (slices.find((entry) => entry.sliceName === sliceName)?.slice.live) {
|
|
631
|
-
const applyLive = (this as unknown as DynamicRecord)[
|
|
632
|
-
capitalize(sliceName).replace(names.Model, names.applyLiveModel)
|
|
633
|
-
] as ((event: LiveEventPayload) => void) | undefined;
|
|
560
|
+
|
|
561
|
+
function applyLocalCreate(this: SetGet, sliceName: string, model: Full, seen: { [key: string]: any }) {
|
|
562
|
+
const target = slices.find((entry) => entry.sliceName === sliceName);
|
|
563
|
+
if (target?.slice.live) {
|
|
564
|
+
const applyLive = (this as unknown as DynamicRecord)[target.keys.action.applyLiveModel] as
|
|
565
|
+
| ((event: LiveEventPayload) => void)
|
|
566
|
+
| undefined;
|
|
634
567
|
applyLive?.({ op: "enter", id: model.id, light: new cnst.light().set(model) as unknown as object });
|
|
635
568
|
return;
|
|
636
569
|
}
|
|
637
|
-
if (seen.modelListLoading) return;
|
|
570
|
+
if (seen[sliceName.replace(names.model, names.modelListLoading)]) return;
|
|
571
|
+
const listKey = sliceName.replace(names.model, names.modelList);
|
|
572
|
+
const insightKey = sliceName.replace(names.model, names.modelInsight);
|
|
573
|
+
const modelInsight = seen[insightKey] as Insight & BaseInsight;
|
|
638
574
|
this.set({
|
|
639
|
-
[
|
|
640
|
-
[
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
575
|
+
[listKey]: new DataList([model, ...(seen[listKey] as DataList<Light>)]),
|
|
576
|
+
[insightKey]: new cnst.insight().set({ ...modelInsight, count: modelInsight.count + 1 }),
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
function patchLists(this: SetGet, updatedModel: Full) {
|
|
580
|
+
const updatedLightModel = new cnst.light().set(updatedModel) as unknown as Light;
|
|
581
|
+
slices.forEach(({ keys: { state: namesOfSlice } }) => {
|
|
582
|
+
const currentState = this.get() as { [key: string]: any };
|
|
583
|
+
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
584
|
+
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
585
|
+
if (modelListLoading || !modelList.has(updatedModel.id)) return;
|
|
586
|
+
this.set({ [namesOfSlice.modelList]: new DataList(modelList).set(updatedLightModel) });
|
|
644
587
|
});
|
|
645
588
|
}
|
|
646
589
|
const baseAction = {
|
|
@@ -648,19 +591,9 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
648
591
|
this: SetGet,
|
|
649
592
|
{ path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
|
|
650
593
|
) {
|
|
651
|
-
const SliceName = capitalize(sliceName);
|
|
652
|
-
const namesOfSlice = {
|
|
653
|
-
defaultModel: SliceName.replace(names.Model, names.defaultModel),
|
|
654
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
655
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
656
|
-
modelInsight: sliceName.replace(names.model, names.modelInsight),
|
|
657
|
-
};
|
|
658
594
|
const currentState = this.get() as { [key: string]: any };
|
|
659
595
|
const modelForm = currentState[names.modelForm] as Input;
|
|
660
|
-
const
|
|
661
|
-
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
662
|
-
const modelInsight = currentState[namesOfSlice.modelInsight] as Insight & BaseInsight;
|
|
663
|
-
const defaultModel = currentState[namesOfSlice.defaultModel] as Full;
|
|
596
|
+
const defaultModel = currentState[defaultKeyOf(sliceName)] as Full;
|
|
664
597
|
const modelInput = (cnst.input.purify as (form: any) => DefaultOf<Input> | null)(modelForm);
|
|
665
598
|
|
|
666
599
|
if (!modelInput) return;
|
|
@@ -676,21 +609,17 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
676
609
|
...staleAtOfSlices(),
|
|
677
610
|
...(typeof path === "string" && path ? { [path]: model } : {}),
|
|
678
611
|
});
|
|
679
|
-
applyLocalCreate.call(this, sliceName, model,
|
|
612
|
+
applyLocalCreate.call(this, sliceName, model, currentState);
|
|
680
613
|
await onSuccess?.(model);
|
|
681
614
|
},
|
|
682
615
|
[names.updateModelInForm]: async function (
|
|
683
616
|
this: SetGet,
|
|
684
617
|
{ path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
|
|
685
618
|
) {
|
|
686
|
-
const SliceName = capitalize(sliceName);
|
|
687
|
-
const namesOfSlice = {
|
|
688
|
-
defaultModel: SliceName.replace(names.Model, names.defaultModel),
|
|
689
|
-
};
|
|
690
619
|
const currentState = this.get() as { [key: string]: any };
|
|
691
620
|
const model = currentState[names.model] as Full | null;
|
|
692
621
|
const modelForm = currentState[names.modelForm] as Input & { id: string };
|
|
693
|
-
const defaultModel = currentState[
|
|
622
|
+
const defaultModel = currentState[defaultKeyOf(sliceName)] as Full;
|
|
694
623
|
const modelInput = (cnst.input.purify as (form: any) => DefaultOf<Input> | null)(modelForm);
|
|
695
624
|
if (!modelInput) return;
|
|
696
625
|
if (model?.id === modelForm.id) this.set({ [names.modelLoading]: modelForm.id });
|
|
@@ -709,19 +638,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
709
638
|
...staleAtOfSlices(),
|
|
710
639
|
...(typeof path === "string" && path ? { [path]: updatedModel } : {}),
|
|
711
640
|
});
|
|
712
|
-
|
|
713
|
-
slices.forEach(({ sliceName }) => {
|
|
714
|
-
const namesOfSlice = {
|
|
715
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
716
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
717
|
-
};
|
|
718
|
-
const currentState = this.get() as { [key: string]: any };
|
|
719
|
-
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
720
|
-
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
721
|
-
if (modelListLoading || !modelList.has(updatedModel.id)) return;
|
|
722
|
-
const newModelList = new DataList(modelList).set(updatedLightModel);
|
|
723
|
-
this.set({ [namesOfSlice.modelList]: newModelList });
|
|
724
|
-
});
|
|
641
|
+
patchLists.call(this, updatedModel);
|
|
725
642
|
await onSuccess?.(updatedModel);
|
|
726
643
|
},
|
|
727
644
|
[names.createModel]: async function (
|
|
@@ -729,15 +646,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
729
646
|
data: GetStateObject<Input>,
|
|
730
647
|
{ path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
|
|
731
648
|
) {
|
|
732
|
-
const namesOfSlice = {
|
|
733
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
734
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
735
|
-
modelInsight: sliceName.replace(names.model, names.modelInsight),
|
|
736
|
-
};
|
|
737
649
|
const currentState = this.get() as { [key: string]: any };
|
|
738
|
-
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
739
|
-
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
740
|
-
const modelInsight = currentState[namesOfSlice.modelInsight] as Insight & BaseInsight;
|
|
741
650
|
const modelInput = (cnst.input.purify as (data: any) => Input | null)(data);
|
|
742
651
|
if (!modelInput) return;
|
|
743
652
|
this.set({ [names.modelLoading]: true });
|
|
@@ -750,14 +659,14 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
750
659
|
...staleAtOfSlices(),
|
|
751
660
|
...(typeof path === "string" && path ? { [path]: model } : {}),
|
|
752
661
|
});
|
|
753
|
-
applyLocalCreate.call(this, sliceName, model,
|
|
662
|
+
applyLocalCreate.call(this, sliceName, model, currentState);
|
|
754
663
|
await onSuccess?.(model);
|
|
755
664
|
},
|
|
756
665
|
[names.updateModel]: async function (
|
|
757
666
|
this: SetGet,
|
|
758
667
|
id: string,
|
|
759
668
|
data: GetStateObject<Input>,
|
|
760
|
-
{ path, modal,
|
|
669
|
+
{ path, modal, onError, onSuccess }: CreateOption<Full> = {},
|
|
761
670
|
) {
|
|
762
671
|
const currentState = this.get() as { [key: string]: any };
|
|
763
672
|
const model = currentState[names.model] as Full | null;
|
|
@@ -775,19 +684,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
775
684
|
...staleAtOfSlices(),
|
|
776
685
|
...(typeof path === "string" && path ? { [path]: updatedModel } : {}),
|
|
777
686
|
});
|
|
778
|
-
|
|
779
|
-
slices.forEach(({ sliceName }) => {
|
|
780
|
-
const namesOfSlice = {
|
|
781
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
782
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
783
|
-
};
|
|
784
|
-
const currentState = this.get() as { [key: string]: any };
|
|
785
|
-
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
786
|
-
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
787
|
-
if (modelListLoading || !modelList.has(updatedModel.id)) return;
|
|
788
|
-
const newModelList = new DataList(modelList).set(updatedLightModel);
|
|
789
|
-
this.set({ [namesOfSlice.modelList]: newModelList });
|
|
790
|
-
});
|
|
687
|
+
patchLists.call(this, updatedModel);
|
|
791
688
|
await onSuccess?.(updatedModel);
|
|
792
689
|
},
|
|
793
690
|
[names.removeModel]: async function (this: SetGet, id: string, options?: FetchPolicy & { modal?: string | null }) {
|
|
@@ -797,13 +694,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
797
694
|
fetchPolicyOptions,
|
|
798
695
|
);
|
|
799
696
|
const lightModel = new cnst.light().set(model) as unknown as Light;
|
|
800
|
-
slices.forEach(({
|
|
801
|
-
const namesOfSlice = {
|
|
802
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
803
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
804
|
-
modelSelection: sliceName.replace(names.model, names.modelSelection),
|
|
805
|
-
modelInsight: sliceName.replace(names.model, names.modelInsight),
|
|
806
|
-
};
|
|
697
|
+
slices.forEach(({ keys: { state: namesOfSlice } }) => {
|
|
807
698
|
const currentState = this.get() as { [key: string]: any };
|
|
808
699
|
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
809
700
|
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
@@ -862,17 +753,14 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
862
753
|
partial: Partial<Full> = {},
|
|
863
754
|
{ modal, setDefault, sliceName = names.model, draftScope }: NewOption = {},
|
|
864
755
|
) {
|
|
865
|
-
const
|
|
866
|
-
const namesOfSlice = {
|
|
867
|
-
defaultModel: SliceName.replace(names.Model, names.defaultModel),
|
|
868
|
-
};
|
|
756
|
+
const defaultModelKey = defaultKeyOf(sliceName);
|
|
869
757
|
const currentState = this.get() as { [key: string]: any };
|
|
870
|
-
const defaultModel = currentState[
|
|
758
|
+
const defaultModel = currentState[defaultModelKey] as Full;
|
|
871
759
|
const merged = { ...plainFieldsOf(defaultModel), ...partial };
|
|
872
760
|
const modelForm = immerify(modelRef, merged);
|
|
873
761
|
this.set({
|
|
874
762
|
[names.modelForm]: modelForm,
|
|
875
|
-
[
|
|
763
|
+
[defaultModelKey]: setDefault ? immerify(modelRef, merged) : defaultModel,
|
|
876
764
|
[names.model]: null,
|
|
877
765
|
[names.modelModal]: modal ?? "edit",
|
|
878
766
|
[names.modelFormLoading]: false,
|
|
@@ -897,7 +785,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
897
785
|
[names.modelForm]: modelForm,
|
|
898
786
|
[names.modelDraft]: armDraft.call(this, draftScope, modelForm, updatedAtOf(model)),
|
|
899
787
|
});
|
|
900
|
-
|
|
788
|
+
|
|
901
789
|
if (draftScope) void applyDraft.call(this, { auto: false });
|
|
902
790
|
},
|
|
903
791
|
[names.mergeModel]: async function (
|
|
@@ -920,19 +808,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
920
808
|
[names.modelLoading]: false,
|
|
921
809
|
...staleAtOfSlices(),
|
|
922
810
|
});
|
|
923
|
-
|
|
924
|
-
slices.forEach(({ sliceName }) => {
|
|
925
|
-
const namesOfSlice = {
|
|
926
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
927
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
928
|
-
};
|
|
929
|
-
const currentState = this.get() as { [key: string]: any };
|
|
930
|
-
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
931
|
-
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
932
|
-
if (modelListLoading || !modelList.has(updatedModel.id)) return;
|
|
933
|
-
const newModelList = new DataList(modelList).set(updatedLightModel);
|
|
934
|
-
this.set({ [namesOfSlice.modelList]: newModelList });
|
|
935
|
-
});
|
|
811
|
+
patchLists.call(this, updatedModel);
|
|
936
812
|
},
|
|
937
813
|
[names.viewModel]: async function (
|
|
938
814
|
this: SetGet,
|
|
@@ -947,7 +823,6 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
947
823
|
[names.setModel]: function (this: SetGet, ...fullOrLightModels: Full[]) {
|
|
948
824
|
const currentState = this.get() as { [key: string]: any };
|
|
949
825
|
if (fullOrLightModels.length === 0) return;
|
|
950
|
-
|
|
951
826
|
const firstModel = fullOrLightModels[0];
|
|
952
827
|
const model = currentState[names.model] as Full | null;
|
|
953
828
|
const isFull = firstModel instanceof modelRef;
|
|
@@ -958,15 +833,10 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
958
833
|
const crystalizedModel = new cnst.full().set(model).set(firstModel) as unknown as Full;
|
|
959
834
|
this.set({ [names.model]: crystalizedModel });
|
|
960
835
|
}
|
|
961
|
-
|
|
962
836
|
const lightModels = withSharedInstances(() =>
|
|
963
837
|
fullOrLightModels.map((fullOrLightModel) => new cnst.light().set(fullOrLightModel) as unknown as Light),
|
|
964
838
|
);
|
|
965
|
-
slices.forEach(({
|
|
966
|
-
const namesOfSlice = {
|
|
967
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
968
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
969
|
-
};
|
|
839
|
+
slices.forEach(({ keys: { state: namesOfSlice } }) => {
|
|
970
840
|
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
971
841
|
const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
|
|
972
842
|
if (modelListLoading) return;
|
|
@@ -990,13 +860,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
990
860
|
});
|
|
991
861
|
return model ?? null;
|
|
992
862
|
},
|
|
993
|
-
|
|
994
|
-
* Reads whatever was saved for this scope into a form that is already filled, and turns saving on for it.
|
|
995
|
-
*
|
|
996
|
-
* `edit<Model>` does this itself once its fetch lands. This is for the shell that seeds the form straight
|
|
997
|
-
* from an RSC payload and has no reason to fetch again — without it, a fresh payload would open an editor
|
|
998
|
-
* that recovers nothing, and refetching just to reach this would undo the reason the payload was handed over.
|
|
999
|
-
*/
|
|
863
|
+
|
|
1000
864
|
[names.loadModelDraft]: async function (this: SetGet, draftScope?: string) {
|
|
1001
865
|
const currentState = this.get() as { [key: string]: any };
|
|
1002
866
|
const model = currentState[names.model] as Full | null;
|
|
@@ -1020,60 +884,47 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1020
884
|
void DraftStore.remove(draft.key);
|
|
1021
885
|
|
|
1022
886
|
this.set({
|
|
1023
|
-
|
|
1024
887
|
...(draft.appliedAt && openFormBase ? { [names.modelForm]: openFormBase } : {}),
|
|
1025
888
|
[names.modelDraft]: { ...draft, pending: null, appliedAt: null },
|
|
1026
889
|
});
|
|
1027
890
|
},
|
|
1028
891
|
};
|
|
1029
|
-
const sliceAction = slices.reduce((acc, { sliceName, slice }) => {
|
|
1030
|
-
|
|
1031
|
-
|
|
892
|
+
const sliceAction = slices.reduce((acc, { sliceName, keys, slice }) => {
|
|
893
|
+
|
|
1032
894
|
const requests = new SliceRequest();
|
|
1033
|
-
|
|
1034
|
-
let liveWatch: { signature: string; dispose: () => void } | null = null;
|
|
1035
895
|
|
|
896
|
+
let liveWatch: { signature: string; dispose: () => void } | null = null;
|
|
1036
897
|
const livePauseIdxs = (slice.live?.pauseOn ?? [])
|
|
1037
898
|
.map((name) => slice.args.findIndex((arg) => arg.name === name))
|
|
1038
899
|
.filter((idx) => idx >= 0);
|
|
1039
|
-
const namesOfSlice
|
|
1040
|
-
|
|
1041
|
-
modelInsight: sliceName.replace(names.model, names.modelInsight),
|
|
1042
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
1043
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
1044
|
-
initModel: SliceName.replace(names.Model, names.initModel),
|
|
1045
|
-
modelInitList: SliceName.replace(names.Model, names.modelInitList),
|
|
1046
|
-
modelInitAt: SliceName.replace(names.Model, names.modelInitAt),
|
|
1047
|
-
modelStaleAt: SliceName.replace(names.Model, names.modelStaleAt),
|
|
1048
|
-
refreshModel: SliceName.replace(names.Model, names.refreshModel),
|
|
1049
|
-
selectModel: SliceName.replace(names.Model, names.selectModel),
|
|
1050
|
-
setPageOfModel: SliceName.replace(names.Model, names.setPageOfModel),
|
|
1051
|
-
loadMoreOfModel: SliceName.replace(names.Model, names.loadMoreOfModel),
|
|
1052
|
-
setLimitOfModel: SliceName.replace(names.Model, names.setLimitOfModel),
|
|
1053
|
-
setQueryArgsOfModel: SliceName.replace(names.Model, names.setQueryArgsOfModel),
|
|
1054
|
-
setSortOfModel: SliceName.replace(names.Model, names.setSortOfModel),
|
|
1055
|
-
applyLiveModel: SliceName.replace(names.Model, names.applyLiveModel),
|
|
1056
|
-
watchLiveModel: SliceName.replace(names.Model, names.watchLiveModel),
|
|
1057
|
-
lastPageOfModel: SliceName.replace(names.Model, names.lastPageOfModel),
|
|
1058
|
-
pageOfModel: SliceName.replace(names.Model, names.pageOfModel),
|
|
1059
|
-
limitOfModel: SliceName.replace(names.Model, names.limitOfModel),
|
|
1060
|
-
hasMoreOfModel: SliceName.replace(names.Model, names.hasMoreOfModel),
|
|
1061
|
-
isCumulativeOfModel: SliceName.replace(names.Model, names.isCumulativeOfModel),
|
|
1062
|
-
queryArgsOfModel: SliceName.replace(names.Model, names.queryArgsOfModel),
|
|
1063
|
-
sortOfModel: SliceName.replace(names.Model, names.sortOfModel),
|
|
1064
|
-
modelSelection: SliceName.replace(names.Model, names.modelSelection),
|
|
1065
|
-
};
|
|
1066
|
-
/**
|
|
1067
|
-
* Whether the server still holds rows past the ones just returned.
|
|
1068
|
-
*
|
|
1069
|
-
* Read off the batch rather than off `<model>Insight`, because the count is a second query — absent entirely
|
|
1070
|
-
* under `{ insight: false }`, and one live event out of step with the list the rest of the time. A short
|
|
1071
|
-
* batch is the server saying it had nothing more; a full one costs at most one extra request that comes back
|
|
1072
|
-
* empty when the total happens to be a multiple of the limit.
|
|
1073
|
-
*/
|
|
900
|
+
const namesOfSlice = { ...keys.state, ...keys.action };
|
|
901
|
+
|
|
1074
902
|
const hasMoreFrom = (batch: unknown[], askedFor: number) => ({
|
|
1075
903
|
[namesOfSlice.hasMoreOfModel]: batch.length >= askedFor && askedFor > 0,
|
|
1076
904
|
});
|
|
905
|
+
const fetchList = (queryArgs: unknown[], skip: number, limit: number, sort: Sort, options?: object) =>
|
|
906
|
+
(fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
|
|
907
|
+
...expandQueryArgs(queryArgs, slice.args),
|
|
908
|
+
skip,
|
|
909
|
+
limit,
|
|
910
|
+
sort,
|
|
911
|
+
options,
|
|
912
|
+
);
|
|
913
|
+
const fetchInsight = (queryArgs: unknown[], options?: object) =>
|
|
914
|
+
(fetch[namesOfSlice.modelInsight] as (...args: any[]) => Promise<Insight & BaseInsight>)(
|
|
915
|
+
...expandQueryArgs(queryArgs, slice.args),
|
|
916
|
+
options,
|
|
917
|
+
);
|
|
918
|
+
const loadList = async <T>(self: SetGet, load: () => Promise<T>, commit: (loaded: T) => object) => {
|
|
919
|
+
self.set({ [namesOfSlice.modelListLoading]: true });
|
|
920
|
+
const ticket = requests.claim();
|
|
921
|
+
try {
|
|
922
|
+
const loaded = await load();
|
|
923
|
+
if (requests.isCurrent(ticket)) self.set(commit(loaded));
|
|
924
|
+
} finally {
|
|
925
|
+
if (requests.isCurrent(ticket)) self.set({ [namesOfSlice.modelListLoading]: false });
|
|
926
|
+
}
|
|
927
|
+
};
|
|
1077
928
|
const singleSliceAction = {
|
|
1078
929
|
[namesOfSlice.initModel]: async function (
|
|
1079
930
|
this: SetGet,
|
|
@@ -1118,7 +969,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1118
969
|
const modelOperation = currentState[names.modelOperation] as string;
|
|
1119
970
|
const isCumulative = currentState[namesOfSlice.isCumulativeOfModel] as boolean;
|
|
1120
971
|
const loadedLength = (currentState[namesOfSlice.modelList] as DataList<Light>).length;
|
|
1121
|
-
|
|
972
|
+
|
|
1122
973
|
const fetchLimit = isCumulative ? Math.max(limit, loadedLength) : limit;
|
|
1123
974
|
const queryArgsOfModel = currentState[namesOfSlice.queryArgsOfModel] as object[];
|
|
1124
975
|
const pageOfModel = currentState[namesOfSlice.pageOfModel] as number;
|
|
@@ -1132,49 +983,34 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1132
983
|
limit === limitOfModel &&
|
|
1133
984
|
isQueryEqual(sort as unknown as object, sortOfModel as unknown as object)
|
|
1134
985
|
)
|
|
1135
|
-
return;
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
[namesOfSlice.modelList]: modelList,
|
|
1164
|
-
[namesOfSlice.modelInsight]: modelInsight,
|
|
1165
|
-
[namesOfSlice.modelInitList]: modelList,
|
|
1166
|
-
[namesOfSlice.modelInitAt]: new Date(),
|
|
1167
|
-
[namesOfSlice.lastPageOfModel]: Math.max(Math.floor((modelInsight.count - 1) / (limit || 20)) + 1, 1),
|
|
1168
|
-
...hasMoreFrom(modelDataList, fetchLimit),
|
|
1169
|
-
[namesOfSlice.limitOfModel]: limit,
|
|
1170
|
-
[namesOfSlice.queryArgsOfModel]: queryArgs,
|
|
1171
|
-
[namesOfSlice.sortOfModel]: sort,
|
|
1172
|
-
[namesOfSlice.pageOfModel]: page,
|
|
1173
|
-
[names.modelOperation]: "idle",
|
|
1174
|
-
});
|
|
1175
|
-
} finally {
|
|
1176
|
-
if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
|
|
1177
|
-
}
|
|
986
|
+
return;
|
|
987
|
+
await loadList(
|
|
988
|
+
this,
|
|
989
|
+
() =>
|
|
990
|
+
Promise.all([
|
|
991
|
+
fetchList(queryArgs, (page - 1) * limit, fetchLimit, sort, { ...fetchPolicy, onError: initForm.onError }),
|
|
992
|
+
insight === false ? null : fetchInsight(queryArgs, { ...fetchPolicy, onError: initForm.onError }),
|
|
993
|
+
]),
|
|
994
|
+
([modelDataList, modelObjInsight]) => {
|
|
995
|
+
const modelList = new DataList(modelDataList);
|
|
996
|
+
const modelInsight =
|
|
997
|
+
modelObjInsight ??
|
|
998
|
+
(new cnst.insight().set({ count: modelDataList.length }) as unknown as Insight & BaseInsight);
|
|
999
|
+
return {
|
|
1000
|
+
[namesOfSlice.modelList]: modelList,
|
|
1001
|
+
[namesOfSlice.modelInsight]: modelInsight,
|
|
1002
|
+
[namesOfSlice.modelInitList]: modelList,
|
|
1003
|
+
[namesOfSlice.modelInitAt]: new Date(),
|
|
1004
|
+
[namesOfSlice.lastPageOfModel]: Math.max(Math.floor((modelInsight.count - 1) / (limit || 20)) + 1, 1),
|
|
1005
|
+
...hasMoreFrom(modelDataList, fetchLimit),
|
|
1006
|
+
[namesOfSlice.limitOfModel]: limit,
|
|
1007
|
+
[namesOfSlice.queryArgsOfModel]: queryArgs,
|
|
1008
|
+
[namesOfSlice.sortOfModel]: sort,
|
|
1009
|
+
[namesOfSlice.pageOfModel]: page,
|
|
1010
|
+
[names.modelOperation]: "idle",
|
|
1011
|
+
};
|
|
1012
|
+
},
|
|
1013
|
+
);
|
|
1178
1014
|
},
|
|
1179
1015
|
[namesOfSlice.selectModel]: function (
|
|
1180
1016
|
this: SetGet,
|
|
@@ -1200,48 +1036,21 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1200
1036
|
const limitOfModel = currentState[namesOfSlice.limitOfModel] as number;
|
|
1201
1037
|
const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
|
|
1202
1038
|
if (pageOfModel === page) return;
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
|
|
1208
|
-
...fetchQueryArgs,
|
|
1209
|
-
(page - 1) * limitOfModel,
|
|
1210
|
-
limitOfModel,
|
|
1211
|
-
sortOfModel,
|
|
1212
|
-
options,
|
|
1213
|
-
);
|
|
1214
|
-
if (!requests.isCurrent(ticket)) return;
|
|
1215
|
-
this.set({
|
|
1039
|
+
await loadList(
|
|
1040
|
+
this,
|
|
1041
|
+
() => fetchList(queryArgsOfModel, (page - 1) * limitOfModel, limitOfModel, sortOfModel, options),
|
|
1042
|
+
(modelDataList) => ({
|
|
1216
1043
|
[namesOfSlice.modelList]: new DataList(modelDataList),
|
|
1217
1044
|
[namesOfSlice.pageOfModel]: page,
|
|
1218
1045
|
[namesOfSlice.isCumulativeOfModel]: false,
|
|
1219
1046
|
...hasMoreFrom(modelDataList, limitOfModel),
|
|
1220
|
-
})
|
|
1221
|
-
|
|
1222
|
-
if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
|
|
1223
|
-
}
|
|
1047
|
+
}),
|
|
1048
|
+
);
|
|
1224
1049
|
},
|
|
1225
|
-
|
|
1226
|
-
* Appends the rows after the ones already loaded, turning this slice's window into a cumulative list.
|
|
1227
|
-
*
|
|
1228
|
-
* The offset is the list on screen rather than a page number, and that is the whole point. A page number
|
|
1229
|
-
* assumes the server's ordering baseline has not moved, which a live insertion at the front breaks on the
|
|
1230
|
-
* first event; the rows in hand are the first `n` the query returns whatever has been inserted since, so
|
|
1231
|
-
* asking for what comes after them cannot drift from what is displayed. It also leaves `pageOf<Model>` at
|
|
1232
|
-
* 1, which is what keeps live placement — refused anywhere but the first page — working past the first
|
|
1233
|
-
* "more".
|
|
1234
|
-
*
|
|
1235
|
-
* It reads `<model>ListLoading` and never sets it: an append leaves the rows on screen, so raising it
|
|
1236
|
-
* would put the whole-list spinner over one and would make `applyLive<Model>` drop every live event until
|
|
1237
|
-
* the batch lands. So concurrent calls are NOT rejected — two of them fetch the same offset, since the
|
|
1238
|
-
* list they measure has not grown yet. That is a wasted round trip and never a wrong list: the ticket
|
|
1239
|
-
* makes only the newest response apply, and both asked for the same rows. A caller that minds the wasted
|
|
1240
|
-
* request holds its own in-flight flag, the way `InfiniteScroll` does.
|
|
1241
|
-
*/
|
|
1050
|
+
|
|
1242
1051
|
[namesOfSlice.loadMoreOfModel]: async function (this: SetGet, options?: FetchPolicy) {
|
|
1243
1052
|
const currentState = this.get() as { [key: string]: any };
|
|
1244
|
-
|
|
1053
|
+
|
|
1245
1054
|
if (currentState[namesOfSlice.modelListLoading] as boolean) return;
|
|
1246
1055
|
if (!(currentState[namesOfSlice.hasMoreOfModel] as boolean)) return;
|
|
1247
1056
|
const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
|
|
@@ -1250,17 +1059,15 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1250
1059
|
const limitOfModel = (currentState[namesOfSlice.limitOfModel] as number) || 20;
|
|
1251
1060
|
const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
|
|
1252
1061
|
const ticket = requests.claim();
|
|
1253
|
-
const
|
|
1254
|
-
|
|
1255
|
-
...fetchQueryArgs,
|
|
1062
|
+
const modelDataList = await fetchList(
|
|
1063
|
+
queryArgsOfModel,
|
|
1256
1064
|
(pageOfModel - 1) * limitOfModel + modelList.length,
|
|
1257
1065
|
limitOfModel,
|
|
1258
1066
|
sortOfModel,
|
|
1259
1067
|
options,
|
|
1260
1068
|
);
|
|
1261
|
-
|
|
1262
1069
|
if (!requests.isCurrent(ticket)) return;
|
|
1263
|
-
|
|
1070
|
+
|
|
1264
1071
|
const currentModelList = (this.get() as { [key: string]: any })[namesOfSlice.modelList] as DataList<Light>;
|
|
1265
1072
|
this.set({
|
|
1266
1073
|
[namesOfSlice.modelList]: new DataList([...currentModelList.values, ...modelDataList]),
|
|
@@ -1278,29 +1085,18 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1278
1085
|
if (limitOfModel === limit) return;
|
|
1279
1086
|
const skip = (pageOfModel - 1) * limitOfModel;
|
|
1280
1087
|
const page = Math.max(Math.floor((skip - 1) / limit) + 1, 1);
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
|
|
1286
|
-
...fetchQueryArgs,
|
|
1287
|
-
(page - 1) * limit,
|
|
1288
|
-
limit,
|
|
1289
|
-
sortOfModel,
|
|
1290
|
-
options,
|
|
1291
|
-
);
|
|
1292
|
-
if (!requests.isCurrent(ticket)) return;
|
|
1293
|
-
this.set({
|
|
1088
|
+
await loadList(
|
|
1089
|
+
this,
|
|
1090
|
+
() => fetchList(queryArgsOfModel, (page - 1) * limit, limit, sortOfModel, options),
|
|
1091
|
+
(modelDataList) => ({
|
|
1294
1092
|
[namesOfSlice.modelList]: new DataList(modelDataList),
|
|
1295
1093
|
[namesOfSlice.lastPageOfModel]: Math.max(Math.floor((modelInsight.count - 1) / limit) + 1, 1),
|
|
1296
1094
|
[namesOfSlice.limitOfModel]: limit,
|
|
1297
1095
|
[namesOfSlice.pageOfModel]: page,
|
|
1298
1096
|
[namesOfSlice.isCumulativeOfModel]: false,
|
|
1299
1097
|
...hasMoreFrom(modelDataList, limit),
|
|
1300
|
-
})
|
|
1301
|
-
|
|
1302
|
-
if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
|
|
1303
|
-
}
|
|
1098
|
+
}),
|
|
1099
|
+
);
|
|
1304
1100
|
},
|
|
1305
1101
|
[namesOfSlice.setQueryArgsOfModel]: async function (
|
|
1306
1102
|
this: SetGet,
|
|
@@ -1322,27 +1118,16 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1322
1118
|
const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
|
|
1323
1119
|
if (isQueryEqual(queryArgsOfModel, queryArgs)) {
|
|
1324
1120
|
Logger.trace(`${namesOfSlice.queryArgsOfModel} store-level cache hit`);
|
|
1325
|
-
return;
|
|
1121
|
+
return;
|
|
1326
1122
|
}
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
limitOfModel,
|
|
1336
|
-
sortOfModel,
|
|
1337
|
-
options,
|
|
1338
|
-
),
|
|
1339
|
-
(fetch[namesOfSlice.modelInsight] as (...args: any[]) => Promise<Insight & BaseInsight>)(
|
|
1340
|
-
...fetchQueryArgs,
|
|
1341
|
-
options,
|
|
1342
|
-
),
|
|
1343
|
-
]);
|
|
1344
|
-
if (!requests.isCurrent(ticket)) return;
|
|
1345
|
-
this.set({
|
|
1123
|
+
await loadList(
|
|
1124
|
+
this,
|
|
1125
|
+
() =>
|
|
1126
|
+
Promise.all([
|
|
1127
|
+
fetchList(queryArgs, 0, limitOfModel, sortOfModel, options),
|
|
1128
|
+
fetchInsight(queryArgs, options),
|
|
1129
|
+
]),
|
|
1130
|
+
([modelDataList, modelInsight]) => ({
|
|
1346
1131
|
[namesOfSlice.queryArgsOfModel]: queryArgs,
|
|
1347
1132
|
[namesOfSlice.modelList]: new DataList(modelDataList),
|
|
1348
1133
|
[namesOfSlice.modelInsight]: modelInsight,
|
|
@@ -1351,49 +1136,28 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1351
1136
|
[namesOfSlice.isCumulativeOfModel]: false,
|
|
1352
1137
|
...hasMoreFrom(modelDataList, limitOfModel),
|
|
1353
1138
|
[namesOfSlice.modelSelection]: new Map(),
|
|
1354
|
-
})
|
|
1355
|
-
|
|
1356
|
-
if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
|
|
1357
|
-
}
|
|
1139
|
+
}),
|
|
1140
|
+
);
|
|
1358
1141
|
},
|
|
1359
1142
|
[namesOfSlice.setSortOfModel]: async function (this: SetGet, sort: Sort, options?: FetchPolicy) {
|
|
1360
1143
|
const currentState = this.get() as { [key: string]: any };
|
|
1361
1144
|
const queryArgsOfModel = currentState[namesOfSlice.queryArgsOfModel] as object[];
|
|
1362
1145
|
const limitOfModel = currentState[namesOfSlice.limitOfModel] as number;
|
|
1363
1146
|
const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
|
|
1364
|
-
if (sortOfModel === sort) return;
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
|
|
1370
|
-
...fetchQueryArgs,
|
|
1371
|
-
0,
|
|
1372
|
-
limitOfModel,
|
|
1373
|
-
sort,
|
|
1374
|
-
options,
|
|
1375
|
-
);
|
|
1376
|
-
if (!requests.isCurrent(ticket)) return;
|
|
1377
|
-
this.set({
|
|
1147
|
+
if (sortOfModel === sort) return;
|
|
1148
|
+
await loadList(
|
|
1149
|
+
this,
|
|
1150
|
+
() => fetchList(queryArgsOfModel, 0, limitOfModel, sort, options),
|
|
1151
|
+
(modelDataList) => ({
|
|
1378
1152
|
[namesOfSlice.modelList]: new DataList(modelDataList),
|
|
1379
1153
|
[namesOfSlice.sortOfModel]: sort,
|
|
1380
1154
|
[namesOfSlice.pageOfModel]: 1,
|
|
1381
1155
|
[namesOfSlice.isCumulativeOfModel]: false,
|
|
1382
1156
|
...hasMoreFrom(modelDataList, limitOfModel),
|
|
1383
|
-
})
|
|
1384
|
-
|
|
1385
|
-
if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
|
|
1386
|
-
}
|
|
1157
|
+
}),
|
|
1158
|
+
);
|
|
1387
1159
|
},
|
|
1388
|
-
|
|
1389
|
-
* Applies one live event to this slice's window.
|
|
1390
|
-
*
|
|
1391
|
-
* The verb already answers membership — the server evaluated this slice's own query against the document
|
|
1392
|
-
* before and after the write, so arriving here at all is the proof, and nothing is re-checked. What is left
|
|
1393
|
-
* is the window: `<slice>List` is a prefix of the list, not the list, so an insertion is only ever attempted
|
|
1394
|
-
* where its position can be known. Everywhere else the list is stamped stale and refetched, which is always
|
|
1395
|
-
* correct and merely costs a round trip.
|
|
1396
|
-
*/
|
|
1160
|
+
|
|
1397
1161
|
[namesOfSlice.applyLiveModel]: function (this: SetGet, event: LiveEventPayload) {
|
|
1398
1162
|
const currentState = this.get() as { [key: string]: any };
|
|
1399
1163
|
if (currentState[namesOfSlice.modelListLoading] as boolean) return;
|
|
@@ -1421,12 +1185,12 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1421
1185
|
}
|
|
1422
1186
|
const light = event.light ? (new cnst.light().set(event.light) as unknown as Light) : null;
|
|
1423
1187
|
if (event.op === "update") {
|
|
1424
|
-
|
|
1188
|
+
|
|
1425
1189
|
if (!light || !modelList.has(event.id)) return;
|
|
1426
1190
|
this.set({ [namesOfSlice.modelList]: new DataList(modelList).set(light).save() });
|
|
1427
1191
|
return;
|
|
1428
1192
|
}
|
|
1429
|
-
|
|
1193
|
+
|
|
1430
1194
|
const placement =
|
|
1431
1195
|
light && !modelList.has(event.id)
|
|
1432
1196
|
? livePlacementIndex({
|
|
@@ -1445,7 +1209,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1445
1209
|
this.set({ ...(modelList.has(event.id) ? {} : countedTo(modelInsight.count + 1)), ...staleAt });
|
|
1446
1210
|
return;
|
|
1447
1211
|
}
|
|
1448
|
-
|
|
1212
|
+
|
|
1449
1213
|
const inserted = [...modelList.slice(0, placement), light, ...modelList.slice(placement)];
|
|
1450
1214
|
const placed = isCumulative ? inserted : inserted.slice(0, limit);
|
|
1451
1215
|
this.set({
|
|
@@ -1454,17 +1218,11 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1454
1218
|
...staleAt,
|
|
1455
1219
|
});
|
|
1456
1220
|
},
|
|
1457
|
-
|
|
1458
|
-
* Opens this slice's live room for `queryArgs`, or closes it when given null.
|
|
1459
|
-
*
|
|
1460
|
-
* One room per slice, not per component. The list a room writes into is a single piece of store state, so a
|
|
1461
|
-
* second subscription would apply every event to it twice — a count off by one per extra reader, which is
|
|
1462
|
-
* exactly the kind of drift nothing surfaces until someone counts.
|
|
1463
|
-
*/
|
|
1221
|
+
|
|
1464
1222
|
[namesOfSlice.watchLiveModel]: function (this: SetGet, queryArgs: unknown[] | null) {
|
|
1465
1223
|
if (!slice.live) return;
|
|
1466
1224
|
const args = queryArgs ? expandQueryArgs(normalizeQueryArgs(queryArgs, slice.args), slice.args) : null;
|
|
1467
|
-
|
|
1225
|
+
|
|
1468
1226
|
const paused = !!args && livePauseIdxs.some((idx) => args[idx] != null);
|
|
1469
1227
|
const signature = args && !paused ? JSON.stringify(args) : null;
|
|
1470
1228
|
if (liveWatch && signature !== liveWatch.signature) {
|
|
@@ -1475,7 +1233,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
|
|
|
1475
1233
|
const self = this as unknown as DynamicRecord;
|
|
1476
1234
|
const apply = self[namesOfSlice.applyLiveModel] as (event: unknown) => void;
|
|
1477
1235
|
const refresh = self[namesOfSlice.refreshModel] as (form: object) => Promise<void>;
|
|
1478
|
-
|
|
1236
|
+
|
|
1479
1237
|
const subscribe = fetch[`subscribe${capitalize(sliceName.replace(names.model, `${names.model}Live`))}`] as
|
|
1480
1238
|
| ((...args: unknown[]) => () => void)
|
|
1481
1239
|
| undefined;
|