@abide/abide 0.57.1 → 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1773
- package/bin/abide.ts +788 -204
- package/package.json +30 -152
- package/scaffold/src/server/app.ts +6 -0
- package/scaffold/src/shared/.gitkeep +0 -0
- package/scaffold/src/ui/app.html +8 -0
- package/scaffold/src/ui/pages/page.abide +13 -0
- package/src/compiler/CHARACTER_REFERENCES.ts +2242 -0
- package/src/compiler/CheckerAnswer.ts +62 -0
- package/src/compiler/Cursor.ts +367 -0
- package/src/compiler/Finding.ts +2 -0
- package/src/compiler/Lowering.ts +648 -0
- package/src/compiler/PositionTable.ts +125 -0
- package/src/compiler/REACTIVE_MEMBERS.ts +36 -0
- package/src/compiler/SHARED_NAMES.ts +45 -0
- package/src/compiler/SPECIFIERS.ts +16 -0
- package/src/compiler/ShadowMap.ts +144 -0
- package/src/compiler/TemplateNode.ts +176 -0
- package/src/compiler/TypeSession.ts +1079 -0
- package/src/compiler/VOID_ELEMENTS.ts +22 -0
- package/src/compiler/aliasedSymbol.ts +15 -0
- package/src/compiler/ambientReadsIn.ts +152 -0
- package/src/compiler/argsDefaultsIn.ts +173 -0
- package/src/compiler/argsSchemaOf.ts +230 -0
- package/src/compiler/checkApp.ts +117 -0
- package/src/compiler/checkedShadow.ts +182 -0
- package/src/compiler/classifyRead.ts +577 -0
- package/src/compiler/classifyTemplate.ts +501 -0
- package/src/compiler/compileApp.ts +559 -0
- package/src/compiler/compiledEntry.ts +141 -0
- package/src/compiler/componentGraph.ts +139 -0
- package/src/compiler/declaredExports.ts +645 -0
- package/src/compiler/decodeCharacterReferences.ts +111 -0
- package/src/compiler/emitClient.ts +1343 -0
- package/src/compiler/emitComponent.ts +162 -0
- package/src/compiler/emitSource.ts +91 -0
- package/src/compiler/formatDiagnosis.ts +19 -0
- package/src/compiler/handlersUnder.ts +109 -0
- package/src/compiler/index.ts +15 -0
- package/src/compiler/invocationProps.ts +67 -0
- package/src/compiler/isNamedAlone.ts +9 -0
- package/src/compiler/lineOf.ts +38 -0
- package/src/compiler/parseAbide.ts +1341 -0
- package/src/compiler/projectShadow.ts +643 -0
- package/src/compiler/reactiveOptions.ts +82 -0
- package/src/compiler/reactiveTypes.ts +222 -0
- package/src/compiler/readSources.ts +100 -0
- package/src/compiler/readsIn.ts +1023 -0
- package/src/compiler/renderMarkup.ts +781 -0
- package/src/compiler/scaffold.ts +105 -0
- package/src/compiler/scopeStyles.ts +309 -0
- package/src/compiler/serveLanguage.ts +405 -0
- package/src/compiler/shareScope.ts +51 -0
- package/src/compiler/sharedModuleWrites.ts +88 -0
- package/src/compiler/splitImports.ts +387 -0
- package/src/compiler/templateWarnings.ts +128 -0
- package/src/compiler/tokenize.ts +317 -0
- package/src/compiler/trackingWarnings.ts +279 -0
- package/src/compiler/writeDefaultProject.ts +42 -0
- package/src/server/BRIDGE_VERSION.ts +3 -0
- package/src/server/CLIENT_BUILD.ts +56 -0
- package/src/server/DEFAULT_PORT.ts +6 -0
- package/src/server/DOCUMENT_HEADERS.ts +11 -0
- package/src/server/Inbox.ts +36 -0
- package/src/server/LogPanel.ts +239 -0
- package/src/server/MCP_PROTOCOL_VERSION.ts +3 -0
- package/src/server/SETTLE_MILLISECONDS.ts +7 -0
- package/src/server/VIRTUAL_DIRECTORY.ts +6 -0
- package/src/server/answerFailure.ts +91 -0
- package/src/server/answerRequest.ts +560 -0
- package/src/server/answerRpc.ts +537 -0
- package/src/server/answerSocket.ts +537 -0
- package/src/server/answerValue.ts +375 -0
- package/src/server/appDirectories.ts +9 -0
- package/src/server/appKit.ts +204 -0
- package/src/server/appPlugins.ts +26 -0
- package/src/server/argsFor.ts +40 -0
- package/src/server/assistant.ts +163 -0
- package/src/server/banner.ts +43 -0
- package/src/server/bridgeRelay.ts +249 -0
- package/src/server/buildDirectory.ts +10 -0
- package/src/server/callerOf.ts +60 -0
- package/src/server/claudeApi.ts +224 -0
- package/src/server/claudeCode.ts +187 -0
- package/src/server/clientBuildOptions.ts +49 -0
- package/src/server/coerceArgs.ts +110 -0
- package/src/server/commands.ts +442 -0
- package/src/server/componentImports.ts +56 -0
- package/src/server/componentModules.d.ts +9 -0
- package/src/server/compressAnswer.ts +66 -0
- package/src/server/config.ts +192 -0
- package/src/server/configFields.ts +92 -0
- package/src/server/createApp.ts +428 -0
- package/src/server/crossingOrigin.ts +49 -0
- package/src/server/csp.ts +77 -0
- package/src/server/devWorker.ts +613 -0
- package/src/server/faultPolicy.ts +59 -0
- package/src/server/fenceServer.ts +48 -0
- package/src/server/generatedSurfaces.ts +430 -0
- package/src/server/hooks.ts +190 -0
- package/src/server/index.ts +87 -0
- package/src/server/installServer.ts +47 -0
- package/src/server/launcherOptions.ts +62 -0
- package/src/server/launcherPage.ts +156 -0
- package/src/server/manifestOf.ts +114 -0
- package/src/server/muxUpgrade.ts +72 -0
- package/src/server/namesUnder.ts +15 -0
- package/src/server/nativeMenu.ts +296 -0
- package/src/server/negotiateEncoding.ts +39 -0
- package/src/server/plainAnswer.ts +19 -0
- package/src/server/prefers.ts +25 -0
- package/src/server/principal.ts +261 -0
- package/src/server/qualitiesOf.ts +22 -0
- package/src/server/randomToken.ts +9 -0
- package/src/server/reachable.ts +31 -0
- package/src/server/refuseAddressCollision.ts +30 -0
- package/src/server/remote.ts +242 -0
- package/src/server/render.ts +464 -0
- package/src/server/renderComponent.ts +33 -0
- package/src/server/reportHealth.ts +46 -0
- package/src/server/requestScope.ts +435 -0
- package/src/server/responseHelpers.ts +75 -0
- package/src/server/runCompiled.ts +44 -0
- package/src/server/runDesktop.ts +572 -0
- package/src/server/seedBuffer.ts +293 -0
- package/src/server/serveBuild.ts +198 -0
- package/src/server/serveDev.ts +499 -0
- package/src/server/shell.ts +506 -0
- package/src/server/surfaceOf.ts +47 -0
- package/src/server/testBuild.ts +237 -0
- package/src/server/trace.ts +151 -0
- package/src/server/versionOf.ts +109 -0
- package/src/server/withoutTrailingSlash.ts +4 -0
- package/src/shared/ADDRESSES.ts +69 -0
- package/src/shared/ANCHORS.ts +54 -0
- package/src/shared/Attributes.ts +339 -0
- package/src/shared/BOOLEAN_ATTRIBUTES.ts +41 -0
- package/src/shared/CHILDREN.ts +11 -0
- package/src/shared/CURRENT_ROUTER.ts +25 -0
- package/src/shared/CopyOptions.ts +19 -0
- package/src/shared/DEBUG_META.ts +6 -0
- package/src/shared/EARLY_CALLS.ts +8 -0
- package/src/shared/FAILURE_STATUS_TEXT.ts +48 -0
- package/src/shared/Failed.ts +146 -0
- package/src/shared/GLOBAL_GETS.ts +7 -0
- package/src/shared/Issues.ts +49 -0
- package/src/shared/JsonValue.ts +18 -0
- package/src/shared/LOAD_SIGNAL.ts +10 -0
- package/src/shared/MOUNT_META.ts +6 -0
- package/src/shared/Middleware.ts +34 -0
- package/src/shared/NAVIGATION_HEADER.ts +7 -0
- package/src/shared/PRINCIPAL_HEADER.ts +6 -0
- package/src/shared/RPC_SERVER.ts +67 -0
- package/src/shared/Raw.ts +90 -0
- package/src/shared/Schema.ts +229 -0
- package/src/shared/UNEXPECTED.ts +11 -0
- package/src/shared/URL_ATTRIBUTES.ts +19 -0
- package/src/shared/VERSION_HEADER.ts +6 -0
- package/src/shared/WORK.ts +37 -0
- package/src/shared/anchorMarkup.ts +15 -0
- package/src/shared/answerOf.ts +141 -0
- package/src/shared/applyPatch.ts +173 -0
- package/src/shared/armAnchor.ts +17 -0
- package/src/shared/attributeText.ts +50 -0
- package/src/shared/boundValue.ts +58 -0
- package/src/shared/cookies.ts +271 -0
- package/src/shared/csp.ts +55 -0
- package/src/shared/decodedOrKept.ts +14 -0
- package/src/shared/escapeText.ts +103 -0
- package/src/shared/framing.ts +131 -0
- package/src/shared/headKeyOf.ts +34 -0
- package/src/shared/health.ts +51 -0
- package/src/shared/index.ts +117 -0
- package/src/shared/isEventName.ts +10 -0
- package/src/shared/isRecord.ts +4 -0
- package/src/shared/issuesOf.ts +18 -0
- package/src/shared/jsonSchema.ts +50 -0
- package/src/shared/listOf.ts +20 -0
- package/src/shared/log.ts +284 -0
- package/src/shared/matchRoute.ts +99 -0
- package/src/shared/menuItem.ts +80 -0
- package/src/shared/mount.ts +45 -0
- package/src/shared/muxFrames.ts +35 -0
- package/src/shared/navigate.ts +26 -0
- package/src/shared/note.ts +24 -0
- package/src/shared/numberFromText.ts +10 -0
- package/src/shared/online.ts +19 -0
- package/src/shared/paint.ts +4 -0
- package/src/shared/principal.ts +145 -0
- package/src/shared/principalRotated.ts +47 -0
- package/src/shared/propCell.ts +99 -0
- package/src/shared/props.ts +24 -0
- package/src/shared/putOwn.ts +24 -0
- package/src/shared/queryText.ts +18 -0
- package/src/shared/reactive/CELL.ts +8 -0
- package/src/shared/reactive/Cursor.ts +223 -0
- package/src/shared/reactive/ENTRY_LIVES.ts +7 -0
- package/src/shared/reactive/Expiry.ts +103 -0
- package/src/shared/reactive/FOLLOWED.ts +8 -0
- package/src/shared/reactive/KEYED_BRAND.ts +8 -0
- package/src/shared/reactive/Keyed.ts +423 -0
- package/src/shared/reactive/MUTATION.ts +5 -0
- package/src/shared/reactive/NO_INITIAL.ts +6 -0
- package/src/shared/reactive/NotLanded.ts +21 -0
- package/src/shared/reactive/PATCHES.ts +11 -0
- package/src/shared/reactive/PATCH_SINKS.ts +26 -0
- package/src/shared/reactive/REACTIVE_BRAND.ts +9 -0
- package/src/shared/reactive/RESHAPING.ts +13 -0
- package/src/shared/reactive/Reactive.ts +4480 -0
- package/src/shared/reactive/SELECTION_MEMBERS.ts +12 -0
- package/src/shared/reactive/STREAMING.ts +5 -0
- package/src/shared/reactive/argsContract.ts +97 -0
- package/src/shared/reactive/byOf.ts +18 -0
- package/src/shared/reactive/callLoad.ts +200 -0
- package/src/shared/reactive/canonicalKey.ts +95 -0
- package/src/shared/reactive/chunksOfStream.ts +51 -0
- package/src/shared/reactive/index.ts +542 -0
- package/src/shared/reactive/isReactive.ts +19 -0
- package/src/shared/reactive/isThenable.ts +14 -0
- package/src/shared/reactive/matchesPattern.ts +16 -0
- package/src/shared/reactive/pairReactive.ts +41 -0
- package/src/shared/reactive/parameterDefaults.ts +356 -0
- package/src/shared/reactive/recordWrites.ts +472 -0
- package/src/shared/reactive/scoped.ts +157 -0
- package/src/shared/reactive/scoping.ts +64 -0
- package/src/shared/reactive/share.ts +91 -0
- package/src/shared/reactive/structural.ts +62 -0
- package/src/shared/reactive/tracking.ts +418 -0
- package/src/shared/reactive/watch.ts +310 -0
- package/src/shared/refuse.ts +224 -0
- package/src/shared/route.ts +29 -0
- package/src/shared/routePattern.ts +146 -0
- package/src/shared/rpc.ts +496 -0
- package/src/shared/rpcRequest.ts +73 -0
- package/src/shared/safeUrl.ts +68 -0
- package/src/shared/seededDocument.ts +36 -0
- package/src/shared/setUpLevels.ts +53 -0
- package/src/shared/slotValue.ts +34 -0
- package/src/shared/spread.ts +79 -0
- package/src/shared/takeEarlyCall.ts +86 -0
- package/src/shared/url.ts +140 -0
- package/src/shared/validateJson.ts +578 -0
- package/src/shared/versionInEtag.ts +14 -0
- package/src/shared/writePath.ts +95 -0
- package/src/ui/ArmRegion.ts +185 -0
- package/src/ui/LAYER_NAMES.ts +30 -0
- package/src/ui/List.ts +273 -0
- package/src/ui/Mismatch.ts +32 -0
- package/src/ui/RawRun.ts +99 -0
- package/src/ui/Router.ts +698 -0
- package/src/ui/Scope.ts +115 -0
- package/src/ui/TryRegion.ts +278 -0
- package/src/ui/adoptWalk.ts +126 -0
- package/src/ui/applyHead.ts +146 -0
- package/src/ui/bindElement.ts +44 -0
- package/src/ui/bindProperty.ts +79 -0
- package/src/ui/bindSpread.ts +44 -0
- package/src/ui/escapeless.ts +14 -0
- package/src/ui/index.ts +64 -0
- package/src/ui/leave.ts +35 -0
- package/src/ui/listenForRoutes.ts +92 -0
- package/src/ui/measureLayer.ts +34 -0
- package/src/ui/menuBridge.ts +19 -0
- package/src/ui/moveNode.ts +34 -0
- package/src/ui/parseMarkup.ts +35 -0
- package/src/ui/reconcile.ts +368 -0
- package/src/ui/regions.ts +137 -0
- package/src/ui/reportMenu.ts +57 -0
- package/src/ui/routing.ts +18 -0
- package/src/ui/rowKeyOf.ts +19 -0
- package/src/ui/rows.ts +99 -0
- package/src/ui/setAttribute.ts +37 -0
- package/src/ui/setClass.ts +27 -0
- package/src/ui/setMarkup.ts +20 -0
- package/src/ui/setStyleProperty.ts +30 -0
- package/src/ui/setText.ts +28 -0
- package/src/ui/socketWire.ts +258 -0
- package/src/ui/wire.ts +141 -0
- package/AGENTS.md +0 -446
- package/README.md +0 -249
- package/src/abideLsp.ts +0 -251
- package/src/abideModules.d.ts +0 -8
- package/src/abideResolverPlugin.ts +0 -1101
- package/src/appEntry.ts +0 -161
- package/src/assets/app.html +0 -12
- package/src/build.ts +0 -189
- package/src/buildCli.ts +0 -125
- package/src/buildDisconnected.ts +0 -117
- package/src/bundleApp.ts +0 -146
- package/src/bundleDisconnectedEntry.ts +0 -14
- package/src/checkAbide.ts +0 -145
- package/src/cliEntry.ts +0 -25
- package/src/clientBuildPlugins.ts +0 -33
- package/src/clientEntry.ts +0 -17
- package/src/compile.ts +0 -61
- package/src/controlServerWorker.ts +0 -433
- package/src/devEntry.ts +0 -381
- package/src/discoveryEntry.ts +0 -82
- package/src/initAgent.ts +0 -50
- package/src/lib/bundle/BundleMenu.ts +0 -12
- package/src/lib/bundle/BundleMenuItem.ts +0 -25
- package/src/lib/bundle/BundleWindow.ts +0 -37
- package/src/lib/bundle/WEBVIEW_BUILD_REVISION.ts +0 -9
- package/src/lib/bundle/WEBVIEW_VERSION.ts +0 -7
- package/src/lib/bundle/bindConnectedFlag.ts +0 -29
- package/src/lib/bundle/bindRequestNavigate.ts +0 -34
- package/src/lib/bundle/buildWebviewLib.ts +0 -111
- package/src/lib/bundle/bundled.ts +0 -35
- package/src/lib/bundle/disconnected.abide +0 -265
- package/src/lib/bundle/disconnected.css +0 -9
- package/src/lib/bundle/ensureWebviewLib.ts +0 -20
- package/src/lib/bundle/exitWithParent.ts +0 -30
- package/src/lib/bundle/infoPlist.ts +0 -52
- package/src/lib/bundle/installDownloads.ts +0 -34
- package/src/lib/bundle/installMacMenu.ts +0 -49
- package/src/lib/bundle/listenLocalControlServer.ts +0 -19
- package/src/lib/bundle/native/abideMenu.mm +0 -422
- package/src/lib/bundle/native/webview.h +0 -4557
- package/src/lib/bundle/onMenu.ts +0 -42
- package/src/lib/bundle/openWebview.ts +0 -104
- package/src/lib/bundle/pngToIcns.ts +0 -47
- package/src/lib/bundle/probeAbideServer.ts +0 -57
- package/src/lib/bundle/resolveServerBinary.ts +0 -12
- package/src/lib/bundle/resolveWebviewLib.ts +0 -53
- package/src/lib/bundle/serverBinaryFilename.ts +0 -8
- package/src/lib/bundle/signMacApp.ts +0 -37
- package/src/lib/bundle/spawnEmbeddedServer.ts +0 -73
- package/src/lib/bundle/stableLocalPort.ts +0 -19
- package/src/lib/bundle/waitForServer.ts +0 -28
- package/src/lib/bundle/webviewCachePath.ts +0 -23
- package/src/lib/bundle/webviewLibName.ts +0 -11
- package/src/lib/cli/completeCli.ts +0 -38
- package/src/lib/cli/connectToServer.ts +0 -23
- package/src/lib/cli/createClient.ts +0 -108
- package/src/lib/cli/dispatchCommand.ts +0 -72
- package/src/lib/cli/loadEnvFromBinaryDir.ts +0 -15
- package/src/lib/cli/parseArgvForRpc.ts +0 -131
- package/src/lib/cli/printCommandHelp.ts +0 -43
- package/src/lib/cli/printSessionHelp.ts +0 -28
- package/src/lib/cli/printSessionStatus.ts +0 -21
- package/src/lib/cli/printTopLevelHelp.ts +0 -83
- package/src/lib/cli/printTrimmed.ts +0 -8
- package/src/lib/cli/printValue.ts +0 -10
- package/src/lib/cli/renderCliCompletions.ts +0 -56
- package/src/lib/cli/resolveCliTarget.ts +0 -47
- package/src/lib/cli/runCli.ts +0 -188
- package/src/lib/cli/runSession.ts +0 -107
- package/src/lib/cli/startLocalInstance.ts +0 -14
- package/src/lib/cli/tokenizeArgvFlags.ts +0 -86
- package/src/lib/cli/tokenizeLine.ts +0 -51
- package/src/lib/cli/types/CliManifest.ts +0 -11
- package/src/lib/cli/types/CliManifestEntry.ts +0 -17
- package/src/lib/cli/types/CliTarget.ts +0 -13
- package/src/lib/mcp/annotationsForMethod.ts +0 -29
- package/src/lib/mcp/buildPrompts.ts +0 -25
- package/src/lib/mcp/createMcpResourceServer.ts +0 -113
- package/src/lib/mcp/createMcpServer.ts +0 -56
- package/src/lib/mcp/dispatchMcpRequest.ts +0 -159
- package/src/lib/mcp/mcpResourceServerSlot.ts +0 -13
- package/src/lib/mcp/mcpSurface.ts +0 -57
- package/src/lib/mcp/mcpTools.ts +0 -196
- package/src/lib/mcp/renderPrompt.ts +0 -25
- package/src/lib/mcp/toolResultFromResponse.ts +0 -100
- package/src/lib/mcp/types/JsonRpcRequest.ts +0 -12
- package/src/lib/mcp/types/JsonRpcResponse.ts +0 -20
- package/src/lib/mcp/types/McpResourceContents.ts +0 -10
- package/src/lib/mcp/types/McpResourceDescriptor.ts +0 -6
- package/src/lib/mcp/types/McpResourceServer.ts +0 -12
- package/src/lib/mcp/types/McpServer.ts +0 -9
- package/src/lib/mcp/types/McpServerOptions.ts +0 -16
- package/src/lib/mcp/types/McpSurface.ts +0 -15
- package/src/lib/mcp/types/PromptDescriptor.ts +0 -5
- package/src/lib/mcp/types/PromptMessage.ts +0 -2
- package/src/lib/mcp/types/ToolDescriptor.ts +0 -7
- package/src/lib/mcp/types/ToolResult.ts +0 -2
- package/src/lib/server/AppModule.ts +0 -47
- package/src/lib/server/DELETE.ts +0 -10
- package/src/lib/server/GET.ts +0 -10
- package/src/lib/server/HEAD.ts +0 -10
- package/src/lib/server/PATCH.ts +0 -10
- package/src/lib/server/POST.ts +0 -10
- package/src/lib/server/PUT.ts +0 -10
- package/src/lib/server/agent.ts +0 -86
- package/src/lib/server/appDataDir.ts +0 -16
- package/src/lib/server/cli/buildEnvContent.ts +0 -19
- package/src/lib/server/cli/createTarGz.ts +0 -77
- package/src/lib/server/cli/handleCliDownload.ts +0 -152
- package/src/lib/server/cli/handleCliInstall.ts +0 -37
- package/src/lib/server/cli/installScript.ts +0 -31
- package/src/lib/server/cli/maxSourceMtime.ts +0 -26
- package/src/lib/server/cookies.ts +0 -30
- package/src/lib/server/env.ts +0 -51
- package/src/lib/server/error.ts +0 -110
- package/src/lib/server/json.ts +0 -57
- package/src/lib/server/jsonl.ts +0 -47
- package/src/lib/server/prompts/definePrompt.ts +0 -21
- package/src/lib/server/prompts/promptRegistry.ts +0 -9
- package/src/lib/server/prompts/registerPrompt.ts +0 -6
- package/src/lib/server/prompts/renderPromptTemplate.ts +0 -17
- package/src/lib/server/prompts/types/Prompt.ts +0 -14
- package/src/lib/server/prompts/types/PromptOptions.ts +0 -12
- package/src/lib/server/prompts/types/PromptRegistryEntry.ts +0 -13
- package/src/lib/server/prompts/types/PromptRoutes.ts +0 -10
- package/src/lib/server/redirect.ts +0 -43
- package/src/lib/server/render.ts +0 -70
- package/src/lib/server/request.ts +0 -19
- package/src/lib/server/rpc/defineRpc.ts +0 -271
- package/src/lib/server/rpc/dispatchRpcInProcess.ts +0 -46
- package/src/lib/server/rpc/findRpcByCommandName.ts +0 -18
- package/src/lib/server/rpc/parseArgs.ts +0 -244
- package/src/lib/server/rpc/readBodyWithinLimit.ts +0 -47
- package/src/lib/server/rpc/registerRpc.ts +0 -6
- package/src/lib/server/rpc/resolveRpcJsonSchema.ts +0 -28
- package/src/lib/server/rpc/rpcRegistry.ts +0 -11
- package/src/lib/server/rpc/runWithRpcTimeout.ts +0 -58
- package/src/lib/server/rpc/types/RemoteHandler.ts +0 -31
- package/src/lib/server/rpc/types/RemoteRoutes.ts +0 -13
- package/src/lib/server/rpc/types/RpcHelper.ts +0 -185
- package/src/lib/server/rpc/types/RpcRegistryEntry.ts +0 -50
- package/src/lib/server/rpc/types/TypedError.ts +0 -18
- package/src/lib/server/rpc/types/TypedResponse.ts +0 -18
- package/src/lib/server/rpc/unprocessed.ts +0 -13
- package/src/lib/server/rpc/validationError.ts +0 -17
- package/src/lib/server/runtime/DEFAULT_PORT.ts +0 -6
- package/src/lib/server/runtime/DEV_READY_MESSAGE.ts +0 -6
- package/src/lib/server/runtime/DEV_REBUILD_MESSAGE.ts +0 -4
- package/src/lib/server/runtime/DEV_RELOAD_CLIENT_SCRIPT.ts +0 -92
- package/src/lib/server/runtime/SSR_SWAP_SCRIPT.ts +0 -19
- package/src/lib/server/runtime/STATUS_TEXT.ts +0 -22
- package/src/lib/server/runtime/STREAMED_HTML_HEADER.ts +0 -13
- package/src/lib/server/runtime/acceptsGzip.ts +0 -33
- package/src/lib/server/runtime/amendBroadcaster.ts +0 -53
- package/src/lib/server/runtime/buildCacheSnapshot.ts +0 -63
- package/src/lib/server/runtime/buildHealthPayload.ts +0 -34
- package/src/lib/server/runtime/buildInFlightSnapshot.ts +0 -35
- package/src/lib/server/runtime/buildInspectorSurface.ts +0 -47
- package/src/lib/server/runtime/buildOpenApiSpec.ts +0 -150
- package/src/lib/server/runtime/buildPreloadManifest.ts +0 -153
- package/src/lib/server/runtime/cacheControlForAsset.ts +0 -22
- package/src/lib/server/runtime/cacheStalenessBroadcaster.ts +0 -33
- package/src/lib/server/runtime/containsTraversal.ts +0 -41
- package/src/lib/server/runtime/createAppAssetServer.ts +0 -100
- package/src/lib/server/runtime/createAppRouteResolver.ts +0 -145
- package/src/lib/server/runtime/createAssetHeaderCache.ts +0 -31
- package/src/lib/server/runtime/createPlumbingRouter.ts +0 -212
- package/src/lib/server/runtime/createPublicAssetServer.ts +0 -76
- package/src/lib/server/runtime/createRouteDispatcher.ts +0 -121
- package/src/lib/server/runtime/createServer.ts +0 -605
- package/src/lib/server/runtime/createUiPageRenderer.ts +0 -489
- package/src/lib/server/runtime/crossOriginForbidden.ts +0 -17
- package/src/lib/server/runtime/crossOriginGate.ts +0 -29
- package/src/lib/server/runtime/devClientFingerprint.ts +0 -103
- package/src/lib/server/runtime/devReloadResponse.ts +0 -41
- package/src/lib/server/runtime/disableIdleTimeoutForStream.ts +0 -27
- package/src/lib/server/runtime/envSchemaStore.ts +0 -15
- package/src/lib/server/runtime/finalizeResponse.ts +0 -42
- package/src/lib/server/runtime/findOpenPort.ts +0 -21
- package/src/lib/server/runtime/flushingGzipStream.ts +0 -62
- package/src/lib/server/runtime/getActiveServer.ts +0 -6
- package/src/lib/server/runtime/globToPathSet.ts +0 -29
- package/src/lib/server/runtime/gzipResponse.ts +0 -57
- package/src/lib/server/runtime/inFlightRequests.ts +0 -13
- package/src/lib/server/runtime/inProcessServer.ts +0 -20
- package/src/lib/server/runtime/installAmbientScopeStore.ts +0 -54
- package/src/lib/server/runtime/internalErrorResponse.ts +0 -28
- package/src/lib/server/runtime/isCrossOriginRequest.ts +0 -23
- package/src/lib/server/runtime/listenOnOpenPort.ts +0 -36
- package/src/lib/server/runtime/logExposedSurfaces.ts +0 -156
- package/src/lib/server/runtime/maybeMountInspector.ts +0 -104
- package/src/lib/server/runtime/mimeForExtension.ts +0 -14
- package/src/lib/server/runtime/pageRenderSlot.ts +0 -15
- package/src/lib/server/runtime/pageUrlFromStore.ts +0 -15
- package/src/lib/server/runtime/parseIdleTimeout.ts +0 -10
- package/src/lib/server/runtime/parsePort.ts +0 -11
- package/src/lib/server/runtime/pathStore.ts +0 -15
- package/src/lib/server/runtime/registryManifests.ts +0 -66
- package/src/lib/server/runtime/renderCellBarrierStore.ts +0 -15
- package/src/lib/server/runtime/requestContext.ts +0 -5
- package/src/lib/server/runtime/resolvePageSnapshot.ts +0 -25
- package/src/lib/server/runtime/respondWithEmbeddedAsset.ts +0 -18
- package/src/lib/server/runtime/runWithRequestScope.ts +0 -165
- package/src/lib/server/runtime/serializeCacheSnapshot.ts +0 -31
- package/src/lib/server/runtime/serverSlot.ts +0 -13
- package/src/lib/server/runtime/setActiveServer.ts +0 -6
- package/src/lib/server/runtime/snapshotEntryFromCache.ts +0 -121
- package/src/lib/server/runtime/streamCacheResolutions.ts +0 -44
- package/src/lib/server/runtime/streamFromIterator.ts +0 -124
- package/src/lib/server/runtime/textResponse.ts +0 -23
- package/src/lib/server/runtime/typedErrorResponse.ts +0 -26
- package/src/lib/server/runtime/types/Assets.ts +0 -6
- package/src/lib/server/runtime/types/DevReloadStamp.ts +0 -14
- package/src/lib/server/runtime/types/InspectorCacheEntry.ts +0 -24
- package/src/lib/server/runtime/types/InspectorCacheSnapshot.ts +0 -11
- package/src/lib/server/runtime/types/InspectorContext.ts +0 -34
- package/src/lib/server/runtime/types/InspectorInFlightRequest.ts +0 -20
- package/src/lib/server/runtime/types/InspectorInFlightSnapshot.ts +0 -10
- package/src/lib/server/runtime/types/InspectorPrompt.ts +0 -15
- package/src/lib/server/runtime/types/InspectorRpc.ts +0 -27
- package/src/lib/server/runtime/types/InspectorSocket.ts +0 -17
- package/src/lib/server/runtime/types/InspectorSurface.ts +0 -16
- package/src/lib/server/runtime/types/RequestStore.ts +0 -125
- package/src/lib/server/runtime/warnUnguardedMcp.ts +0 -43
- package/src/lib/server/runtime/withResponseDefaults.ts +0 -29
- package/src/lib/server/server.ts +0 -33
- package/src/lib/server/socket.ts +0 -32
- package/src/lib/server/sockets/amendFamilyEntry.ts +0 -39
- package/src/lib/server/sockets/createSocketDispatcher.ts +0 -397
- package/src/lib/server/sockets/defineSocket.ts +0 -225
- package/src/lib/server/sockets/lookupSocket.ts +0 -6
- package/src/lib/server/sockets/registerSocket.ts +0 -18
- package/src/lib/server/sockets/socketOperations.ts +0 -36
- package/src/lib/server/sockets/socketRegistry.ts +0 -9
- package/src/lib/server/sockets/types/SocketOperation.ts +0 -22
- package/src/lib/server/sockets/types/SocketOptions.ts +0 -26
- package/src/lib/server/sockets/types/SocketRegistryEntry.ts +0 -19
- package/src/lib/server/sockets/types/SocketRoutes.ts +0 -10
- package/src/lib/server/sse.ts +0 -58
- package/src/lib/shared/ABIDE_PACKAGE_NAME.ts +0 -7
- package/src/lib/shared/ABIDE_VERSION.ts +0 -9
- package/src/lib/shared/AMEND_TOPIC_PREFIX.ts +0 -9
- package/src/lib/shared/ASYNC_CELL.ts +0 -5
- package/src/lib/shared/CACHE_CONTROL_VALUES.ts +0 -16
- package/src/lib/shared/CACHE_STALENESS_SOCKET.ts +0 -8
- package/src/lib/shared/CLI_PATH.ts +0 -7
- package/src/lib/shared/DEFER.ts +0 -8
- package/src/lib/shared/DEV_REBUILD_PATH.ts +0 -6
- package/src/lib/shared/DEV_RELOAD_PATH.ts +0 -6
- package/src/lib/shared/HEALTH_PATH.ts +0 -7
- package/src/lib/shared/HTTP_METHODS.ts +0 -6
- package/src/lib/shared/HttpError.ts +0 -30
- package/src/lib/shared/IDENTITY_PATH.ts +0 -6
- package/src/lib/shared/INSPECTOR_PATH.ts +0 -7
- package/src/lib/shared/MCP_PATH.ts +0 -6
- package/src/lib/shared/NAV_HEADER.ts +0 -8
- package/src/lib/shared/OFFLINE_HEADER.ts +0 -8
- package/src/lib/shared/PROXIED_SERVER_SUBDIRS.ts +0 -15
- package/src/lib/shared/REF_JSON_HEADER.ts +0 -9
- package/src/lib/shared/REF_JSON_TAGS.ts +0 -43
- package/src/lib/shared/REMOTE_FUNCTION.ts +0 -8
- package/src/lib/shared/REPLAYABLE_METHODS.ts +0 -12
- package/src/lib/shared/RESERVED_SOCKET_PREFIX.ts +0 -8
- package/src/lib/shared/RPC_ARGS_TYPE.ts +0 -7
- package/src/lib/shared/RPC_SHIM_GLOBALS.ts +0 -9
- package/src/lib/shared/SEEDS.ts +0 -33
- package/src/lib/shared/SOCKETS_PATH.ts +0 -7
- package/src/lib/shared/SOCKET_SEED.ts +0 -12
- package/src/lib/shared/SSR_SCRIPT_ID.ts +0 -11
- package/src/lib/shared/STREAMING_CONTENT_TYPES.ts +0 -12
- package/src/lib/shared/SocketDisconnectedError.ts +0 -13
- package/src/lib/shared/TEXT_PLAIN.ts +0 -7
- package/src/lib/shared/abideImportName.ts +0 -44
- package/src/lib/shared/abideLog.ts +0 -38
- package/src/lib/shared/activeCacheStore.ts +0 -12
- package/src/lib/shared/activePage.ts +0 -12
- package/src/lib/shared/amend.ts +0 -48
- package/src/lib/shared/amendBroadcastSlot.ts +0 -19
- package/src/lib/shared/appDataDir.ts +0 -34
- package/src/lib/shared/appNameSlot.ts +0 -10
- package/src/lib/shared/applyAmendLocally.ts +0 -20
- package/src/lib/shared/applyCacheStalenessLocally.ts +0 -18
- package/src/lib/shared/assertExhaustive.ts +0 -14
- package/src/lib/shared/attachRpcSelectorMethods.ts +0 -44
- package/src/lib/shared/attachSocketSelectorMethods.ts +0 -34
- package/src/lib/shared/augmentModule.ts +0 -18
- package/src/lib/shared/basePath.ts +0 -11
- package/src/lib/shared/basePathFromAppUrl.ts +0 -20
- package/src/lib/shared/baseSlot.ts +0 -9
- package/src/lib/shared/binaryDirEnvPath.ts +0 -12
- package/src/lib/shared/bodyValueForKind.ts +0 -34
- package/src/lib/shared/browserClientFlags.ts +0 -10
- package/src/lib/shared/buildArtifact.ts +0 -20
- package/src/lib/shared/buildRpcProxy.ts +0 -39
- package/src/lib/shared/buildRpcRequest.ts +0 -81
- package/src/lib/shared/buildSocketOverChannel.ts +0 -102
- package/src/lib/shared/bundleGraphFromMetafile.ts +0 -68
- package/src/lib/shared/bundleLayout.ts +0 -36
- package/src/lib/shared/cache.ts +0 -1584
- package/src/lib/shared/cacheEntryFromSnapshot.ts +0 -77
- package/src/lib/shared/cacheManagedSlot.ts +0 -10
- package/src/lib/shared/cacheReaderSocketSlot.ts +0 -11
- package/src/lib/shared/cacheStalenessSlot.ts +0 -21
- package/src/lib/shared/cacheStoreSlot.ts +0 -12
- package/src/lib/shared/cacheStores.ts +0 -10
- package/src/lib/shared/canonicalJson.ts +0 -86
- package/src/lib/shared/carriesBodyArgs.ts +0 -13
- package/src/lib/shared/changeAffectsClient.ts +0 -40
- package/src/lib/shared/clearLastConnection.ts +0 -7
- package/src/lib/shared/commandNameForUrl.ts +0 -17
- package/src/lib/shared/contentBodyKind.ts +0 -27
- package/src/lib/shared/contentTypeOf.ts +0 -6
- package/src/lib/shared/createCacheStore.ts +0 -147
- package/src/lib/shared/createChannelLog.ts +0 -146
- package/src/lib/shared/createLifecycleChannel.ts +0 -62
- package/src/lib/shared/createLivenessWatch.ts +0 -118
- package/src/lib/shared/createPushIterator.ts +0 -132
- package/src/lib/shared/createReachable.ts +0 -78
- package/src/lib/shared/createRemoteFunction.ts +0 -210
- package/src/lib/shared/createResolverSlot.ts +0 -30
- package/src/lib/shared/createRpcServerProgram.ts +0 -1007
- package/src/lib/shared/createSocketSubRegistry.ts +0 -112
- package/src/lib/shared/createSubscriber.ts +0 -55
- package/src/lib/shared/createTraceContext.ts +0 -21
- package/src/lib/shared/dataDirEnvPath.ts +0 -12
- package/src/lib/shared/debugGate.ts +0 -90
- package/src/lib/shared/decodeRefJson.ts +0 -112
- package/src/lib/shared/decodeResponse.ts +0 -54
- package/src/lib/shared/decodeWireBody.ts +0 -35
- package/src/lib/shared/detectRpcMethod.ts +0 -24
- package/src/lib/shared/detectTarget.ts +0 -27
- package/src/lib/shared/docSnapshotsSlot.ts +0 -13
- package/src/lib/shared/done.ts +0 -20
- package/src/lib/shared/emitLogRecord.ts +0 -217
- package/src/lib/shared/encodeRefJson.ts +0 -108
- package/src/lib/shared/encodeSeedValue.ts +0 -24
- package/src/lib/shared/encodeWireBody.ts +0 -18
- package/src/lib/shared/escapeHtml.ts +0 -15
- package/src/lib/shared/escapeRegex.ts +0 -9
- package/src/lib/shared/exeSuffix.ts +0 -9
- package/src/lib/shared/exitOnBuildFailure.ts +0 -18
- package/src/lib/shared/extraForwardHeaders.ts +0 -16
- package/src/lib/shared/fieldErrorsFromIssues.ts +0 -27
- package/src/lib/shared/fileName.ts +0 -9
- package/src/lib/shared/fileStem.ts +0 -11
- package/src/lib/shared/findExportCallSite.ts +0 -233
- package/src/lib/shared/formatTraceparent.ts +0 -6
- package/src/lib/shared/forwardHeaders.ts +0 -44
- package/src/lib/shared/generateDeclarations.ts +0 -72
- package/src/lib/shared/getRemoteMeta.ts +0 -5
- package/src/lib/shared/hasSeedableRequest.ts +0 -25
- package/src/lib/shared/health.ts +0 -179
- package/src/lib/shared/healthReadSlot.ts +0 -11
- package/src/lib/shared/healthSeedSlot.ts +0 -12
- package/src/lib/shared/html.ts +0 -19
- package/src/lib/shared/httpErrorFor.ts +0 -26
- package/src/lib/shared/hydrationWindow.ts +0 -53
- package/src/lib/shared/importNamesToStrip.ts +0 -13
- package/src/lib/shared/invalidate.ts +0 -39
- package/src/lib/shared/invalidateEvent.ts +0 -11
- package/src/lib/shared/invalidateTripwire.ts +0 -40
- package/src/lib/shared/isAbideHealthPayload.ts +0 -11
- package/src/lib/shared/isAsciiWhitespace.ts +0 -5
- package/src/lib/shared/isAsyncCell.ts +0 -11
- package/src/lib/shared/isAsyncIterable.ts +0 -8
- package/src/lib/shared/isCompileTarget.ts +0 -21
- package/src/lib/shared/isDebugEnabled.ts +0 -19
- package/src/lib/shared/isDebugNegated.ts +0 -17
- package/src/lib/shared/isIdentPart.ts +0 -9
- package/src/lib/shared/isIdentStart.ts +0 -8
- package/src/lib/shared/isLayoutFile.ts +0 -12
- package/src/lib/shared/isModuleNotFound.ts +0 -18
- package/src/lib/shared/isReadOnlyMethod.ts +0 -14
- package/src/lib/shared/isReplayableMethod.ts +0 -7
- package/src/lib/shared/isStreamingResponse.ts +0 -12
- package/src/lib/shared/isSubscribable.ts +0 -15
- package/src/lib/shared/isThenable.ts +0 -9
- package/src/lib/shared/jsonSchemaForPromptArguments.ts +0 -29
- package/src/lib/shared/jsonSchemaForSchema.ts +0 -39
- package/src/lib/shared/jsonSchemaForType.ts +0 -245
- package/src/lib/shared/jsonlErrorFrame.ts +0 -24
- package/src/lib/shared/keyForRemoteCall.ts +0 -30
- package/src/lib/shared/keyMatchesPrefix.ts +0 -9
- package/src/lib/shared/keyPrefixForRemote.ts +0 -12
- package/src/lib/shared/lastConnectionPath.ts +0 -7
- package/src/lib/shared/layoutChainForRoute.ts +0 -22
- package/src/lib/shared/lenientDecode.ts +0 -15
- package/src/lib/shared/loadEnvFile.ts +0 -17
- package/src/lib/shared/loadEnvFromDataDir.ts +0 -14
- package/src/lib/shared/loadProjectTsConfig.ts +0 -28
- package/src/lib/shared/log.ts +0 -24
- package/src/lib/shared/logClosingRecord.ts +0 -28
- package/src/lib/shared/logTapSlot.ts +0 -13
- package/src/lib/shared/manifestModule.ts +0 -39
- package/src/lib/shared/markFrameworkSourcesIgnored.ts +0 -47
- package/src/lib/shared/matchRoute.ts +0 -165
- package/src/lib/shared/matcherFromEnvelope.ts +0 -31
- package/src/lib/shared/memoizeByKey.ts +0 -32
- package/src/lib/shared/messageFromError.ts +0 -6
- package/src/lib/shared/normalizePathname.ts +0 -11
- package/src/lib/shared/normalizeTarget.ts +0 -10
- package/src/lib/shared/online.ts +0 -51
- package/src/lib/shared/page.ts +0 -30
- package/src/lib/shared/pageSlot.ts +0 -17
- package/src/lib/shared/pageUrlForFile.ts +0 -14
- package/src/lib/shared/parseBoundedEnvInt.ts +0 -20
- package/src/lib/shared/parseEnv.ts +0 -41
- package/src/lib/shared/parsePromptMarkdown.ts +0 -35
- package/src/lib/shared/parseRouteSegments.ts +0 -31
- package/src/lib/shared/parseTraceparent.ts +0 -26
- package/src/lib/shared/peek.ts +0 -46
- package/src/lib/shared/pending.ts +0 -36
- package/src/lib/shared/pendingAsyncCellsSlot.ts +0 -13
- package/src/lib/shared/prepareRemoteExport.ts +0 -40
- package/src/lib/shared/prepareRpcModule.ts +0 -240
- package/src/lib/shared/prepareSocketModule.ts +0 -46
- package/src/lib/shared/probeRegistries.ts +0 -68
- package/src/lib/shared/producerKey.ts +0 -32
- package/src/lib/shared/programNameForPackage.ts +0 -16
- package/src/lib/shared/promptNameForFile.ts +0 -10
- package/src/lib/shared/queryStringFromArgs.ts +0 -38
- package/src/lib/shared/randomHexId.ts +0 -14
- package/src/lib/shared/reachable.ts +0 -99
- package/src/lib/shared/readEnvFile.ts +0 -15
- package/src/lib/shared/readLastConnection.ts +0 -18
- package/src/lib/shared/readPackageJson.ts +0 -9
- package/src/lib/shared/recordRemoteMeta.ts +0 -5
- package/src/lib/shared/refresh.ts +0 -39
- package/src/lib/shared/refreshing.ts +0 -37
- package/src/lib/shared/remoteMetaStore.ts +0 -16
- package/src/lib/shared/requestScopeSlot.ts +0 -13
- package/src/lib/shared/resolveClientFlags.ts +0 -20
- package/src/lib/shared/resolvedCellsSlot.ts +0 -13
- package/src/lib/shared/responseBodyKind.ts +0 -35
- package/src/lib/shared/responseErrorText.ts +0 -9
- package/src/lib/shared/reviveWireField.ts +0 -49
- package/src/lib/shared/reviveWireOutput.ts +0 -36
- package/src/lib/shared/routeParamsShape.ts +0 -20
- package/src/lib/shared/rpcErrorRegistry.ts +0 -69
- package/src/lib/shared/rpcServerForRoot.ts +0 -25
- package/src/lib/shared/rpcTimeoutSlot.ts +0 -9
- package/src/lib/shared/rpcUrlForFile.ts +0 -19
- package/src/lib/shared/runningAsStandaloneBinary.ts +0 -13
- package/src/lib/shared/safeJsonForScript.ts +0 -17
- package/src/lib/shared/scanPages.ts +0 -25
- package/src/lib/shared/selectorMatcher.ts +0 -55
- package/src/lib/shared/selectorPrefix.ts +0 -32
- package/src/lib/shared/serializeEnv.ts +0 -30
- package/src/lib/shared/serializeSelector.ts +0 -69
- package/src/lib/shared/setAppName.ts +0 -5
- package/src/lib/shared/setOwnProperty.ts +0 -19
- package/src/lib/shared/setsIntersect.ts +0 -15
- package/src/lib/shared/sharedCacheStore.ts +0 -14
- package/src/lib/shared/sharedCacheStoreSlot.ts +0 -10
- package/src/lib/shared/skipNonCode.ts +0 -230
- package/src/lib/shared/snapshotShippable.ts +0 -23
- package/src/lib/shared/snippet.ts +0 -30
- package/src/lib/shared/socketNameForFile.ts +0 -11
- package/src/lib/shared/socketTailsSlot.ts +0 -13
- package/src/lib/shared/socketTapSlot.ts +0 -12
- package/src/lib/shared/sseErrorFrame.ts +0 -29
- package/src/lib/shared/streamResponse.ts +0 -180
- package/src/lib/shared/streamedCellsSlot.ts +0 -14
- package/src/lib/shared/stripImport.ts +0 -29
- package/src/lib/shared/subscribableFromResponse.ts +0 -51
- package/src/lib/shared/subscribableProbes.ts +0 -111
- package/src/lib/shared/tailProbeSlot.ts +0 -23
- package/src/lib/shared/toTagSet.ts +0 -4
- package/src/lib/shared/trace.ts +0 -16
- package/src/lib/shared/types/AmendApply.ts +0 -15
- package/src/lib/shared/types/AsyncComputed.ts +0 -20
- package/src/lib/shared/types/AsyncState.ts +0 -13
- package/src/lib/shared/types/CacheEntry.ts +0 -100
- package/src/lib/shared/types/CacheInvalidation.ts +0 -9
- package/src/lib/shared/types/CacheOnContext.ts +0 -15
- package/src/lib/shared/types/CacheOptions.ts +0 -53
- package/src/lib/shared/types/CachePolicy.ts +0 -31
- package/src/lib/shared/types/CacheReaderHook.ts +0 -11
- package/src/lib/shared/types/CacheSelector.ts +0 -17
- package/src/lib/shared/types/CacheSnapshotEntry.ts +0 -32
- package/src/lib/shared/types/CacheStalenessApply.ts +0 -13
- package/src/lib/shared/types/CacheStalenessFrame.ts +0 -24
- package/src/lib/shared/types/CacheStats.ts +0 -13
- package/src/lib/shared/types/CacheStore.ts +0 -45
- package/src/lib/shared/types/ChannelLog.ts +0 -13
- package/src/lib/shared/types/ClientFlags.ts +0 -13
- package/src/lib/shared/types/CompileTarget.ts +0 -6
- package/src/lib/shared/types/DebugGate.ts +0 -10
- package/src/lib/shared/types/DocSnapshots.ts +0 -12
- package/src/lib/shared/types/ErrorJsonSchemas.ts +0 -8
- package/src/lib/shared/types/ErrorSpec.ts +0 -11
- package/src/lib/shared/types/FrameworkLog.ts +0 -13
- package/src/lib/shared/types/HttpMethod.ts +0 -3
- package/src/lib/shared/types/InputCoercion.ts +0 -17
- package/src/lib/shared/types/LastConnection.ts +0 -9
- package/src/lib/shared/types/Log.ts +0 -13
- package/src/lib/shared/types/LogRecord.ts +0 -42
- package/src/lib/shared/types/LogVoice.ts +0 -7
- package/src/lib/shared/types/NamedAsyncIterable.ts +0 -26
- package/src/lib/shared/types/OutputWirePlan.ts +0 -17
- package/src/lib/shared/types/PageSnapshot.ts +0 -14
- package/src/lib/shared/types/PagesScan.ts +0 -7
- package/src/lib/shared/types/PendingAsyncCells.ts +0 -10
- package/src/lib/shared/types/PromptArgument.ts +0 -12
- package/src/lib/shared/types/RawRemoteFunction.ts +0 -20
- package/src/lib/shared/types/RemoteCallable.ts +0 -40
- package/src/lib/shared/types/RemoteFunction.ts +0 -116
- package/src/lib/shared/types/ReplayableMethod.ts +0 -7
- package/src/lib/shared/types/RequestScopeInfo.ts +0 -16
- package/src/lib/shared/types/ResolvedCells.ts +0 -11
- package/src/lib/shared/types/ResolverSlot.ts +0 -13
- package/src/lib/shared/types/ReturnBody.ts +0 -15
- package/src/lib/shared/types/RpcBuildStamps.ts +0 -32
- package/src/lib/shared/types/RpcError.ts +0 -26
- package/src/lib/shared/types/RpcErrorGuard.ts +0 -35
- package/src/lib/shared/types/RpcInvoker.ts +0 -6
- package/src/lib/shared/types/RpcOptions.ts +0 -22
- package/src/lib/shared/types/Socket.ts +0 -54
- package/src/lib/shared/types/SocketChannel.ts +0 -17
- package/src/lib/shared/types/SocketClientFrame.ts +0 -19
- package/src/lib/shared/types/SocketServerFrame.ts +0 -24
- package/src/lib/shared/types/SocketSubCallbacks.ts +0 -13
- package/src/lib/shared/types/SocketTails.ts +0 -13
- package/src/lib/shared/types/SourceMap.ts +0 -14
- package/src/lib/shared/types/SsrBootState.ts +0 -27
- package/src/lib/shared/types/SsrPayload.ts +0 -36
- package/src/lib/shared/types/StandardSchemaV1.ts +0 -56
- package/src/lib/shared/types/StreamPolicy.ts +0 -11
- package/src/lib/shared/types/StreamedCells.ts +0 -19
- package/src/lib/shared/types/StreamedResolution.ts +0 -28
- package/src/lib/shared/types/TailHooks.ts +0 -13
- package/src/lib/shared/types/TraceContext.ts +0 -17
- package/src/lib/shared/types/ValidationErrorData.ts +0 -20
- package/src/lib/shared/types/WireKind.ts +0 -11
- package/src/lib/shared/url.ts +0 -141
- package/src/lib/shared/validationHttpError.ts +0 -33
- package/src/lib/shared/warmSeedKey.ts +0 -16
- package/src/lib/shared/wireJsonReplacer.ts +0 -30
- package/src/lib/shared/withBase.ts +0 -10
- package/src/lib/shared/withBaseUrl.ts +0 -17
- package/src/lib/shared/withCacheManaged.ts +0 -18
- package/src/lib/shared/withJsonSchema.ts +0 -21
- package/src/lib/shared/writeDts.ts +0 -19
- package/src/lib/shared/writeHealthDts.ts +0 -36
- package/src/lib/shared/writeLastConnection.ts +0 -13
- package/src/lib/shared/writePublicAssetsDts.ts +0 -27
- package/src/lib/shared/writeRoutesDts.ts +0 -41
- package/src/lib/shared/writeRpcDts.ts +0 -60
- package/src/lib/shared/writeTestRpcDts.ts +0 -45
- package/src/lib/shared/writeTestSocketsDts.ts +0 -34
- package/src/lib/test/assertAgentFrameConformance.ts +0 -73
- package/src/lib/test/createScriptedSurface.ts +0 -45
- package/src/lib/test/createTestApp.ts +0 -242
- package/src/lib/test/createTestSocketChannel.ts +0 -85
- package/src/lib/ui/README.md +0 -86
- package/src/lib/ui/activePendingCells.ts +0 -14
- package/src/lib/ui/amendReaderHook.ts +0 -125
- package/src/lib/ui/compile/ABIDE_SEMANTIC_TOKENS_LEGEND.ts +0 -79
- package/src/lib/ui/compile/AbideCompileError.ts +0 -16
- package/src/lib/ui/compile/BLOCK_KEYWORDS.ts +0 -21
- package/src/lib/ui/compile/SSR_ESCAPE.ts +0 -40
- package/src/lib/ui/compile/TS_PRINTER.ts +0 -7
- package/src/lib/ui/compile/UI_RUNTIME_IMPORTS.ts +0 -86
- package/src/lib/ui/compile/VOID_TAGS.ts +0 -22
- package/src/lib/ui/compile/abideUiPlugin.ts +0 -109
- package/src/lib/ui/compile/analyzeComponent.ts +0 -222
- package/src/lib/ui/compile/asOutlet.ts +0 -30
- package/src/lib/ui/compile/assertTranspiles.ts +0 -19
- package/src/lib/ui/compile/assetModulesFile.ts +0 -32
- package/src/lib/ui/compile/assignmentTargetNames.ts +0 -54
- package/src/lib/ui/compile/asyncInterpolationFields.ts +0 -152
- package/src/lib/ui/compile/asyncValuePositionError.ts +0 -21
- package/src/lib/ui/compile/asyncValuePositionInterpolations.ts +0 -64
- package/src/lib/ui/compile/attrLiftPosition.ts +0 -18
- package/src/lib/ui/compile/awaitPlan.ts +0 -60
- package/src/lib/ui/compile/awaitSubjectExpr.ts +0 -23
- package/src/lib/ui/compile/bindListenEvent.ts +0 -18
- package/src/lib/ui/compile/cachedShadowProgram.ts +0 -39
- package/src/lib/ui/compile/cachedSourceFile.ts +0 -40
- package/src/lib/ui/compile/catchBinding.ts +0 -10
- package/src/lib/ui/compile/classStyleMergePlan.ts +0 -108
- package/src/lib/ui/compile/classifyInterpolationType.ts +0 -46
- package/src/lib/ui/compile/collectAbideDiagnostics.ts +0 -166
- package/src/lib/ui/compile/compileComponent.ts +0 -46
- package/src/lib/ui/compile/compileModule.ts +0 -306
- package/src/lib/ui/compile/compileSSR.ts +0 -119
- package/src/lib/ui/compile/compileShadow.ts +0 -1326
- package/src/lib/ui/compile/componentOrdinals.ts +0 -39
- package/src/lib/ui/compile/composeProps.ts +0 -64
- package/src/lib/ui/compile/createShadowLanguageService.ts +0 -348
- package/src/lib/ui/compile/createShadowProgram.ts +0 -127
- package/src/lib/ui/compile/createShadowScope.ts +0 -42
- package/src/lib/ui/compile/declaredNames.ts +0 -36
- package/src/lib/ui/compile/decodeHtmlEntities.ts +0 -53
- package/src/lib/ui/compile/destructureBindingNames.ts +0 -38
- package/src/lib/ui/compile/desugarSignals.ts +0 -1113
- package/src/lib/ui/compile/eachPlan.ts +0 -61
- package/src/lib/ui/compile/elementPlan.ts +0 -55
- package/src/lib/ui/compile/encodeSemanticTokens.ts +0 -60
- package/src/lib/ui/compile/expressionIsPrefixEvaluable.ts +0 -19
- package/src/lib/ui/compile/generateBuild.ts +0 -903
- package/src/lib/ui/compile/generateSSR.ts +0 -967
- package/src/lib/ui/compile/groupBindParts.ts +0 -28
- package/src/lib/ui/compile/hasTopLevelAwait.ts +0 -28
- package/src/lib/ui/compile/hoistCells.ts +0 -120
- package/src/lib/ui/compile/hoistableAwaits.ts +0 -183
- package/src/lib/ui/compile/hoistableChildRenders.ts +0 -112
- package/src/lib/ui/compile/identifierReferencePattern.ts +0 -13
- package/src/lib/ui/compile/ifPlan.ts +0 -36
- package/src/lib/ui/compile/interpolatedTemplateLiteral.ts +0 -27
- package/src/lib/ui/compile/interpolationClassifierForRoot.ts +0 -32
- package/src/lib/ui/compile/isAnchorPositioned.ts +0 -19
- package/src/lib/ui/compile/isControlFlow.ts +0 -20
- package/src/lib/ui/compile/isFunctionScopeBoundary.ts +0 -20
- package/src/lib/ui/compile/isPlainIdentifier.ts +0 -7
- package/src/lib/ui/compile/isSpuriousAsyncReadDiagnostic.ts +0 -215
- package/src/lib/ui/compile/isTextLeaf.ts +0 -16
- package/src/lib/ui/compile/isWhitespaceText.ts +0 -19
- package/src/lib/ui/compile/liftAsyncSubExpressions.ts +0 -166
- package/src/lib/ui/compile/liftScriptSeed.ts +0 -47
- package/src/lib/ui/compile/loadShadowTsConfig.ts +0 -31
- package/src/lib/ui/compile/lowerAsyncInterpolations.ts +0 -92
- package/src/lib/ui/compile/lowerCompoundAssignment.ts +0 -49
- package/src/lib/ui/compile/lowerContext.ts +0 -167
- package/src/lib/ui/compile/lowerDocAccess.ts +0 -302
- package/src/lib/ui/compile/lowerScript.ts +0 -190
- package/src/lib/ui/compile/lowerUpdateExpression.ts +0 -32
- package/src/lib/ui/compile/makeVarNamer.ts +0 -10
- package/src/lib/ui/compile/nearestProjectRoot.ts +0 -16
- package/src/lib/ui/compile/nodeAtShadowOffset.ts +0 -28
- package/src/lib/ui/compile/offsetToLineColumn.ts +0 -16
- package/src/lib/ui/compile/offsetToPosition.ts +0 -9
- package/src/lib/ui/compile/pagePropsType.ts +0 -23
- package/src/lib/ui/compile/parseTemplate.ts +0 -25
- package/src/lib/ui/compile/parseTemplateRecovering.ts +0 -1385
- package/src/lib/ui/compile/prepareNestedScript.ts +0 -62
- package/src/lib/ui/compile/reactiveBinding.ts +0 -47
- package/src/lib/ui/compile/referencedIdentifiers.ts +0 -35
- package/src/lib/ui/compile/remapShadowDiagnostic.ts +0 -30
- package/src/lib/ui/compile/renameSignalRefs.ts +0 -425
- package/src/lib/ui/compile/resolveAbideImports.ts +0 -29
- package/src/lib/ui/compile/resolveBranches.ts +0 -21
- package/src/lib/ui/compile/resolveReactiveExport.ts +0 -92
- package/src/lib/ui/compile/scopeAttr.ts +0 -9
- package/src/lib/ui/compile/scopeCss.ts +0 -138
- package/src/lib/ui/compile/seedTypeClassifierForRoot.ts +0 -60
- package/src/lib/ui/compile/shadowInterpolationClassifier.ts +0 -47
- package/src/lib/ui/compile/shadowNaming.ts +0 -11
- package/src/lib/ui/compile/signalCallee.ts +0 -24
- package/src/lib/ui/compile/skeletonContext.ts +0 -133
- package/src/lib/ui/compile/skeletonable.ts +0 -68
- package/src/lib/ui/compile/snippetPlan.ts +0 -28
- package/src/lib/ui/compile/sourceFileOptionsSignature.ts +0 -20
- package/src/lib/ui/compile/sourceToShadowOffset.ts +0 -24
- package/src/lib/ui/compile/spreadExcludedNames.ts +0 -27
- package/src/lib/ui/compile/staticAttr.ts +0 -11
- package/src/lib/ui/compile/staticAttrValue.ts +0 -13
- package/src/lib/ui/compile/staticTextPart.ts +0 -12
- package/src/lib/ui/compile/stripEffects.ts +0 -48
- package/src/lib/ui/compile/structuralHeadTokens.ts +0 -107
- package/src/lib/ui/compile/switchPlan.ts +0 -28
- package/src/lib/ui/compile/templateAnchorAdapter.ts +0 -61
- package/src/lib/ui/compile/templateElementAdapter.ts +0 -44
- package/src/lib/ui/compile/templateSemanticTokens.ts +0 -21
- package/src/lib/ui/compile/templateStartOffset.ts +0 -15
- package/src/lib/ui/compile/tryPlan.ts +0 -37
- package/src/lib/ui/compile/types/AbideDiagnostic.ts +0 -14
- package/src/lib/ui/compile/types/AnalyzedComponent.ts +0 -42
- package/src/lib/ui/compile/types/AsyncInterpolationField.ts +0 -19
- package/src/lib/ui/compile/types/Binding.ts +0 -24
- package/src/lib/ui/compile/types/CompiledShadow.ts +0 -27
- package/src/lib/ui/compile/types/ElementPlan.ts +0 -43
- package/src/lib/ui/compile/types/InterpolationClassifier.ts +0 -12
- package/src/lib/ui/compile/types/InterpolationKind.ts +0 -7
- package/src/lib/ui/compile/types/ParseDiagnostic.ts +0 -8
- package/src/lib/ui/compile/types/SeedTypeClassifier.ts +0 -15
- package/src/lib/ui/compile/types/SemanticToken.ts +0 -11
- package/src/lib/ui/compile/types/ShadowKind.ts +0 -9
- package/src/lib/ui/compile/types/ShadowScope.ts +0 -19
- package/src/lib/ui/compile/types/SkeletonContext.ts +0 -21
- package/src/lib/ui/compile/types/TemplateAttr.ts +0 -34
- package/src/lib/ui/compile/types/TemplateNode.ts +0 -137
- package/src/lib/ui/compile/types/TextPart.ts +0 -8
- package/src/lib/ui/compile/types/ValuePositionInterpolation.ts +0 -13
- package/src/lib/ui/compile/unwrapParens.ts +0 -10
- package/src/lib/ui/compile/walkAnchorOrder.ts +0 -57
- package/src/lib/ui/compile/walkElementOrder.ts +0 -60
- package/src/lib/ui/compile/withBindings.ts +0 -45
- package/src/lib/ui/compile/wrapReactionCellSources.ts +0 -121
- package/src/lib/ui/compile/wrapReactiveSeeds.ts +0 -44
- package/src/lib/ui/compile/wrapSeed.ts +0 -28
- package/src/lib/ui/compile/writtenTemplateNames.ts +0 -84
- package/src/lib/ui/computed.ts +0 -75
- package/src/lib/ui/createScope.ts +0 -157
- package/src/lib/ui/dom/MATHML_NAMESPACE.ts +0 -6
- package/src/lib/ui/dom/SVG_NAMESPACE.ts +0 -8
- package/src/lib/ui/dom/anchorCursor.ts +0 -25
- package/src/lib/ui/dom/anchoredBranch.ts +0 -153
- package/src/lib/ui/dom/appendSnippet.ts +0 -75
- package/src/lib/ui/dom/appendStatic.ts +0 -26
- package/src/lib/ui/dom/appendText.ts +0 -160
- package/src/lib/ui/dom/appendTextAt.ts +0 -39
- package/src/lib/ui/dom/assertClaimedText.ts +0 -30
- package/src/lib/ui/dom/attach.ts +0 -25
- package/src/lib/ui/dom/attr.ts +0 -57
- package/src/lib/ui/dom/awaitBlock.ts +0 -314
- package/src/lib/ui/dom/awaitSubject.ts +0 -118
- package/src/lib/ui/dom/bindProp.ts +0 -22
- package/src/lib/ui/dom/bindSelectValue.ts +0 -48
- package/src/lib/ui/dom/bindableProp.ts +0 -47
- package/src/lib/ui/dom/buildDetachedRange.ts +0 -31
- package/src/lib/ui/dom/cellPending.ts +0 -24
- package/src/lib/ui/dom/claimText.ts +0 -38
- package/src/lib/ui/dom/clearBetween.ts +0 -16
- package/src/lib/ui/dom/cloneStatic.ts +0 -38
- package/src/lib/ui/dom/commentData.ts +0 -14
- package/src/lib/ui/dom/depthZeroNodes.ts +0 -34
- package/src/lib/ui/dom/discardAndRebuild.ts +0 -23
- package/src/lib/ui/dom/discardBoundary.ts +0 -46
- package/src/lib/ui/dom/disposeRange.ts +0 -18
- package/src/lib/ui/dom/domAnchorAdapter.ts +0 -29
- package/src/lib/ui/dom/domElementAdapter.ts +0 -20
- package/src/lib/ui/dom/each.ts +0 -253
- package/src/lib/ui/dom/eachAsync.ts +0 -188
- package/src/lib/ui/dom/effectiveChildNamespace.ts +0 -13
- package/src/lib/ui/dom/enterNamespace.ts +0 -20
- package/src/lib/ui/dom/fillBefore.ts +0 -42
- package/src/lib/ui/dom/fillBoundary.ts +0 -38
- package/src/lib/ui/dom/fillRange.ts +0 -30
- package/src/lib/ui/dom/foreignWrapperTag.ts +0 -22
- package/src/lib/ui/dom/hydrate.ts +0 -34
- package/src/lib/ui/dom/inheritedNamespace.ts +0 -19
- package/src/lib/ui/dom/isComment.ts +0 -6
- package/src/lib/ui/dom/isElement.ts +0 -6
- package/src/lib/ui/dom/markerDepthDelta.ts +0 -19
- package/src/lib/ui/dom/matchingRangeClose.ts +0 -29
- package/src/lib/ui/dom/mergeProps.ts +0 -32
- package/src/lib/ui/dom/mount.ts +0 -30
- package/src/lib/ui/dom/mountChild.ts +0 -94
- package/src/lib/ui/dom/mountRange.ts +0 -45
- package/src/lib/ui/dom/mountSlot.ts +0 -38
- package/src/lib/ui/dom/mountSwappableRange.ts +0 -122
- package/src/lib/ui/dom/moveRange.ts +0 -19
- package/src/lib/ui/dom/mutateDocContainer.ts +0 -65
- package/src/lib/ui/dom/on.ts +0 -33
- package/src/lib/ui/dom/openMarker.ts +0 -22
- package/src/lib/ui/dom/outlet.ts +0 -63
- package/src/lib/ui/dom/parseRawNodes.ts +0 -17
- package/src/lib/ui/dom/readCall.ts +0 -29
- package/src/lib/ui/dom/readCell.ts +0 -55
- package/src/lib/ui/dom/readTextOrSuspend.ts +0 -21
- package/src/lib/ui/dom/removeRange.ts +0 -18
- package/src/lib/ui/dom/replaceRange.ts +0 -24
- package/src/lib/ui/dom/restProps.ts +0 -32
- package/src/lib/ui/dom/skeleton.ts +0 -153
- package/src/lib/ui/dom/spreadAttrs.ts +0 -95
- package/src/lib/ui/dom/spreadProps.ts +0 -31
- package/src/lib/ui/dom/switchBlock.ts +0 -80
- package/src/lib/ui/dom/templateFor.ts +0 -28
- package/src/lib/ui/dom/tryBlock.ts +0 -263
- package/src/lib/ui/dom/types/EachRow.ts +0 -21
- package/src/lib/ui/dom/types/SkeletonHoles.ts +0 -10
- package/src/lib/ui/dom/types/SwitchCase.ts +0 -11
- package/src/lib/ui/dom/when.ts +0 -58
- package/src/lib/ui/dom/withScope.ts +0 -37
- package/src/lib/ui/dom/withSuspense.ts +0 -22
- package/src/lib/ui/dom/writeCell.ts +0 -22
- package/src/lib/ui/effect.ts +0 -24
- package/src/lib/ui/enterScope.ts +0 -18
- package/src/lib/ui/exitScope.ts +0 -8
- package/src/lib/ui/finalizeStreamedChildren.ts +0 -89
- package/src/lib/ui/flight.ts +0 -56
- package/src/lib/ui/html.ts +0 -39
- package/src/lib/ui/isolateCellBarrier.ts +0 -17
- package/src/lib/ui/linked.ts +0 -125
- package/src/lib/ui/navigate.ts +0 -77
- package/src/lib/ui/probeNavigation.ts +0 -33
- package/src/lib/ui/props.ts +0 -17
- package/src/lib/ui/remoteProxy.ts +0 -256
- package/src/lib/ui/renderChain.ts +0 -113
- package/src/lib/ui/renderToStream.ts +0 -128
- package/src/lib/ui/resumeSeedScript.ts +0 -27
- package/src/lib/ui/router.ts +0 -649
- package/src/lib/ui/runtime/AsyncCellError.ts +0 -21
- package/src/lib/ui/runtime/BRANCH_SEGMENT.ts +0 -24
- package/src/lib/ui/runtime/CELL_SEED.ts +0 -12
- package/src/lib/ui/runtime/CHILD_PRESENT.ts +0 -8
- package/src/lib/ui/runtime/CURRENT_BOUNDARY.ts +0 -11
- package/src/lib/ui/runtime/CURRENT_PATH.ts +0 -29
- package/src/lib/ui/runtime/CURRENT_SCOPE.ts +0 -23
- package/src/lib/ui/runtime/DOC_SEED.ts +0 -10
- package/src/lib/ui/runtime/HOLE_ATTRIBUTE.ts +0 -9
- package/src/lib/ui/runtime/NODE_STATE.ts +0 -22
- package/src/lib/ui/runtime/OUTLET_MARKER.ts +0 -10
- package/src/lib/ui/runtime/OUTLET_TAG.ts +0 -7
- package/src/lib/ui/runtime/OWNER.ts +0 -8
- package/src/lib/ui/runtime/PENDING_OUTLET.ts +0 -8
- package/src/lib/ui/runtime/RANGE_MARKER.ts +0 -16
- package/src/lib/ui/runtime/REACTIVE_CONTEXT.ts +0 -20
- package/src/lib/ui/runtime/RENDER.ts +0 -35
- package/src/lib/ui/runtime/REQUEST_SUPERSEDED.ts +0 -8
- package/src/lib/ui/runtime/RESUME.ts +0 -21
- package/src/lib/ui/runtime/SEED_MARKS.ts +0 -14
- package/src/lib/ui/runtime/STREAMED_CELLS.ts +0 -57
- package/src/lib/ui/runtime/SuspenseSignal.ts +0 -24
- package/src/lib/ui/runtime/abortNode.ts +0 -22
- package/src/lib/ui/runtime/ambientPathBacking.ts +0 -32
- package/src/lib/ui/runtime/ambientScopeBacking.ts +0 -26
- package/src/lib/ui/runtime/applyPatchToTree.ts +0 -54
- package/src/lib/ui/runtime/batch.ts +0 -22
- package/src/lib/ui/runtime/blockId.ts +0 -31
- package/src/lib/ui/runtime/boundaryFor.ts +0 -11
- package/src/lib/ui/runtime/cellBarrierBacking.ts +0 -30
- package/src/lib/ui/runtime/claimChild.ts +0 -8
- package/src/lib/ui/runtime/claimExpected.ts +0 -27
- package/src/lib/ui/runtime/claimMarker.ts +0 -13
- package/src/lib/ui/runtime/claimRun.ts +0 -22
- package/src/lib/ui/runtime/clientPage.ts +0 -116
- package/src/lib/ui/runtime/consumeSeed.ts +0 -38
- package/src/lib/ui/runtime/createAsyncCell.ts +0 -358
- package/src/lib/ui/runtime/createComputedNode.ts +0 -19
- package/src/lib/ui/runtime/createDoc.ts +0 -334
- package/src/lib/ui/runtime/createEffectNode.ts +0 -81
- package/src/lib/ui/runtime/createSignalNode.ts +0 -19
- package/src/lib/ui/runtime/currentAbortSignal.ts +0 -26
- package/src/lib/ui/runtime/detachLink.ts +0 -21
- package/src/lib/ui/runtime/endTracking.ts +0 -24
- package/src/lib/ui/runtime/enterRenderPass.ts +0 -13
- package/src/lib/ui/runtime/escapeKey.ts +0 -19
- package/src/lib/ui/runtime/exitRenderPass.ts +0 -7
- package/src/lib/ui/runtime/flushEffects.ts +0 -91
- package/src/lib/ui/runtime/generationGuard.ts +0 -40
- package/src/lib/ui/runtime/historyEntries.ts +0 -151
- package/src/lib/ui/runtime/inScope.ts +0 -19
- package/src/lib/ui/runtime/isAsyncFunction.ts +0 -14
- package/src/lib/ui/runtime/nextBlockId.ts +0 -12
- package/src/lib/ui/runtime/parkCursor.ts +0 -10
- package/src/lib/ui/runtime/pathSegments.ts +0 -10
- package/src/lib/ui/runtime/reactiveAbortState.ts +0 -15
- package/src/lib/ui/runtime/readNode.ts +0 -38
- package/src/lib/ui/runtime/renderPath.ts +0 -16
- package/src/lib/ui/runtime/reportHydrationDivergence.ts +0 -30
- package/src/lib/ui/runtime/routeBareSeed.ts +0 -28
- package/src/lib/ui/runtime/runHydrationPass.ts +0 -69
- package/src/lib/ui/runtime/runNode.ts +0 -75
- package/src/lib/ui/runtime/runtimePath.ts +0 -9
- package/src/lib/ui/runtime/scope.ts +0 -46
- package/src/lib/ui/runtime/scopeGroup.ts +0 -40
- package/src/lib/ui/runtime/toTeardown.ts +0 -38
- package/src/lib/ui/runtime/track.ts +0 -60
- package/src/lib/ui/runtime/trigger.ts +0 -74
- package/src/lib/ui/runtime/types/AbideHistoryState.ts +0 -9
- package/src/lib/ui/runtime/types/Boundary.ts +0 -9
- package/src/lib/ui/runtime/types/Cell.ts +0 -7
- package/src/lib/ui/runtime/types/Computed.ts +0 -3
- package/src/lib/ui/runtime/types/Doc.ts +0 -24
- package/src/lib/ui/runtime/types/EffectResult.ts +0 -10
- package/src/lib/ui/runtime/types/HydrationCursor.ts +0 -8
- package/src/lib/ui/runtime/types/NavVerdict.ts +0 -9
- package/src/lib/ui/runtime/types/Patch.ts +0 -11
- package/src/lib/ui/runtime/types/PathWalk.ts +0 -10
- package/src/lib/ui/runtime/types/ReactiveLink.ts +0 -21
- package/src/lib/ui/runtime/types/ReactiveNode.ts +0 -33
- package/src/lib/ui/runtime/types/RenderContext.ts +0 -10
- package/src/lib/ui/runtime/types/Route.ts +0 -9
- package/src/lib/ui/runtime/types/RouteLoader.ts +0 -7
- package/src/lib/ui/runtime/types/SsrRender.ts +0 -34
- package/src/lib/ui/runtime/types/State.ts +0 -3
- package/src/lib/ui/runtime/types/Teardown.ts +0 -5
- package/src/lib/ui/runtime/types/UiComponent.ts +0 -24
- package/src/lib/ui/runtime/types/UiProps.ts +0 -12
- package/src/lib/ui/runtime/unescapeKey.ts +0 -12
- package/src/lib/ui/runtime/unlinkDeps.ts +0 -28
- package/src/lib/ui/runtime/untrack.ts +0 -20
- package/src/lib/ui/runtime/updateIfNecessary.ts +0 -40
- package/src/lib/ui/runtime/walkPath.ts +0 -41
- package/src/lib/ui/runtime/withOptionalPath.ts +0 -8
- package/src/lib/ui/runtime/withPath.ts +0 -16
- package/src/lib/ui/runtime/withPathFrom.ts +0 -20
- package/src/lib/ui/runtime/withoutHydration.ts +0 -22
- package/src/lib/ui/runtime/writeNode.ts +0 -16
- package/src/lib/ui/scope.ts +0 -20
- package/src/lib/ui/seedBootState.ts +0 -53
- package/src/lib/ui/seedStreamedResolution.ts +0 -56
- package/src/lib/ui/settleAsyncCells.ts +0 -51
- package/src/lib/ui/socketChannel.ts +0 -156
- package/src/lib/ui/socketProxy.ts +0 -47
- package/src/lib/ui/startClient.ts +0 -156
- package/src/lib/ui/state.ts +0 -77
- package/src/lib/ui/subscribeCacheStaleness.ts +0 -85
- package/src/lib/ui/trackedComputed.ts +0 -68
- package/src/lib/ui/tryEncodeResume.ts +0 -11
- package/src/lib/ui/types/Layouts.ts +0 -9
- package/src/lib/ui/types/Pages.ts +0 -8
- package/src/lib/ui/types/Scope.ts +0 -68
- package/src/lib/ui/watch.ts +0 -150
- package/src/preload.ts +0 -19
- package/src/scaffold.ts +0 -153
- package/src/serverBuildPlugins.ts +0 -25
- package/src/serverEntry.ts +0 -138
- package/src/zodCjsPlugin.ts +0 -51
- package/template/.zed/settings.json +0 -10
- package/template/CLAUDE.md +0 -22
- package/template/bunfig.toml +0 -4
- package/template/package.json +0 -21
- package/template/src/app.ts +0 -28
- package/template/src/bundle/icon.png +0 -0
- package/template/src/cli/banner.txt +0 -3
- package/template/src/cli/footer.txt +0 -1
- package/template/src/server/config.ts +0 -17
- package/template/src/server/rpc/getHello.ts +0 -38
- package/template/src/ui/app.css +0 -21
- package/template/src/ui/app.html +0 -24
- package/template/src/ui/pages/about/page.abide +0 -7
- package/template/src/ui/pages/layout.abide +0 -19
- package/template/src/ui/pages/page.abide +0 -19
- package/template/test/app.test.ts +0 -30
- package/template/tsconfig.json +0 -18
- package/tsconfig.app.json +0 -17
|
@@ -1,1113 +0,0 @@
|
|
|
1
|
-
import ts from 'typescript'
|
|
2
|
-
import { assignmentTargetNames } from './assignmentTargetNames.ts'
|
|
3
|
-
import { hasTopLevelAwait } from './hasTopLevelAwait.ts'
|
|
4
|
-
import { liftScriptSeed, type ScriptSeedLift } from './liftScriptSeed.ts'
|
|
5
|
-
import type { InjectedCell } from './lowerAsyncInterpolations.ts'
|
|
6
|
-
import { type ReactiveImportBindings, reactiveImportBindings } from './resolveReactiveExport.ts'
|
|
7
|
-
import { signalCallee } from './signalCallee.ts'
|
|
8
|
-
import type { InterpolationClassifier } from './types/InterpolationClassifier.ts'
|
|
9
|
-
import type { InterpolationKind } from './types/InterpolationKind.ts'
|
|
10
|
-
import type { SeedTypeClassifier } from './types/SeedTypeClassifier.ts'
|
|
11
|
-
import { wrapSeed } from './wrapSeed.ts'
|
|
12
|
-
|
|
13
|
-
/* The routing decision for a no-marker `computed(seed)`: `true` routes to the eager
|
|
14
|
-
`trackedComputed` stream cell (read via `$$readCell`, the `cellReadNames` bucket), `false`
|
|
15
|
-
to the lazy `derive` doc slot (read as `name()`, the `computedNames` bucket). Shared by the
|
|
16
|
-
name-collection pass and the lowering so both land the binding in the identical bucket. */
|
|
17
|
-
type EagerStreamPredicate = (declaration: ts.VariableDeclaration) => boolean
|
|
18
|
-
|
|
19
|
-
const factory = ts.factory
|
|
20
|
-
|
|
21
|
-
/* Wraps a seed expression as an async unwrapping thunk `async () => await (arg)` — for a
|
|
22
|
-
type-directed PROMISE seed (ADR-0023/0043) the author wrote WITHOUT `await`
|
|
23
|
-
(`state.computed(getFoo())`). The `async`+`await` makes createAsyncCell unwrap the resolved
|
|
24
|
-
value; a plain `() => getFoo()` thunk would fall to trackedComputed's lazy opaque path (its
|
|
25
|
-
probe self-identifies only a stream, never a promise). The parens keep a comma/ternary seed
|
|
26
|
-
a single await operand. Distinct from `wrapSeed`, which only makes the arrow async when the
|
|
27
|
-
arg already carries a top-level `await`. */
|
|
28
|
-
function wrapAwaitSeed(argument: ts.Expression): ts.Expression {
|
|
29
|
-
return factory.createArrowFunction(
|
|
30
|
-
[factory.createModifier(ts.SyntaxKind.AsyncKeyword)],
|
|
31
|
-
undefined,
|
|
32
|
-
[],
|
|
33
|
-
undefined,
|
|
34
|
-
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
|
|
35
|
-
factory.createAwaitExpression(factory.createParenthesizedExpression(argument)),
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* True for an async seed thunk — an arrow/function carrying the `async` modifier, whether
|
|
40
|
-
from `wrapSeed`'s `await` lowering or a passthrough `async () => …` literal the author
|
|
41
|
-
wrote. The routing signal: an async seed becomes an async cell (read via `$$readCell`),
|
|
42
|
-
a sync seed stays the lazy `derive` computed. */
|
|
43
|
-
function isAsyncSeed(node: ts.Expression): boolean {
|
|
44
|
-
if (!ts.isArrowFunction(node) && !ts.isFunctionExpression(node)) {
|
|
45
|
-
return false
|
|
46
|
-
}
|
|
47
|
-
const modifiers = ts.getModifiers(node)
|
|
48
|
-
return modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) ?? false
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* The seed argument of a `computed`/`linked` declaration (undefined for the arg-less
|
|
52
|
-
`computed()` edge). Reused by both the name-collection pass and the lowering. */
|
|
53
|
-
function seedArgument(declaration: ts.VariableDeclaration): ts.Expression | undefined {
|
|
54
|
-
return (declaration.initializer as ts.CallExpression).arguments[0]
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/* True when a `computed(...)` declaration's wrapped seed is async — its await-lowered or
|
|
58
|
-
passthrough-async thunk routes to `scope().computed(...)` (an async cell) instead of the
|
|
59
|
-
lazy `scope().derive(...)`. The one predicate the collection pass and the lowering share. */
|
|
60
|
-
function isAsyncComputed(declaration: ts.VariableDeclaration): boolean {
|
|
61
|
-
const argument = seedArgument(declaration)
|
|
62
|
-
if (argument === undefined) {
|
|
63
|
-
return false
|
|
64
|
-
}
|
|
65
|
-
return isAsyncSeed(wrapSeed(argument))
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/* True for a SYNC `computed(...)` seed that is a bare CALL or IDENTIFIER — `computed(getStream())`
|
|
69
|
-
/ `computed(ref)`, the shape that may produce a stream/promise source. These route to the
|
|
70
|
-
eager `scope().trackedComputed(...)` (which probes its seed and auto-tracks a
|
|
71
|
-
`NamedAsyncIterable`), read via `$$readCell`; an arithmetic/member/literal seed stays on the
|
|
72
|
-
lazy `derive` path (read as `name()`). Excludes the async case (`isAsyncComputed` owns it) and
|
|
73
|
-
a literal `() => …` thunk (a direct thunk the author wrote — left lazy on `derive`). */
|
|
74
|
-
function isBareCallComputed(declaration: ts.VariableDeclaration): boolean {
|
|
75
|
-
const argument = seedArgument(declaration)
|
|
76
|
-
if (argument === undefined || isAsyncSeed(wrapSeed(argument))) {
|
|
77
|
-
return false
|
|
78
|
-
}
|
|
79
|
-
return ts.isCallExpression(argument) || ts.isIdentifier(argument)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/* True when a `computed`/`linked` seed is a BLOCKING async cell (ADR-0042 D6): its wrapped seed
|
|
83
|
-
is an async thunk whose BODY has a top-level `await` — `computed(await X)` (wrapSeed makes it
|
|
84
|
-
`async () => await X`) or `computed(async () => await X)`. An async thunk with NO await
|
|
85
|
-
(`computed(async () => getFoo())`) is STREAMING — `await` is the sole blocking marker. A
|
|
86
|
-
sync/stream seed is not blocking. The read of a blocking cell suspends its render region until
|
|
87
|
-
the value resolves; a streaming cell reads `undefined`-while-pending. Reuses `hasTopLevelAwait`
|
|
88
|
-
applied to the thunk BODY (not the arrow), so the walk descends exactly one function level. */
|
|
89
|
-
function isBlockingSeed(argument: ts.Expression): boolean {
|
|
90
|
-
const wrapped = wrapSeed(argument)
|
|
91
|
-
if (!isAsyncSeed(wrapped)) {
|
|
92
|
-
return false
|
|
93
|
-
}
|
|
94
|
-
const body =
|
|
95
|
-
ts.isArrowFunction(wrapped) || ts.isFunctionExpression(wrapped) ? wrapped.body : wrapped
|
|
96
|
-
return hasTopLevelAwait(body)
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/* Emits a compile WARNING (best-effort, never fatal) when a signal read appears AFTER the
|
|
100
|
-
first top-level `await` in an async seed — a value read there is no longer tracked, so the
|
|
101
|
-
cell won't reseed when it changes. Detection only: reads before the await (or with no
|
|
102
|
-
await) are fine. */
|
|
103
|
-
function warnPostAwaitReads(seed: ts.Expression, signalNames: ReadonlySet<string>): void {
|
|
104
|
-
if (signalNames.size === 0) {
|
|
105
|
-
return
|
|
106
|
-
}
|
|
107
|
-
/* Walk the seed's BODY — the arrow/function itself is the seed, not a nested scope, so
|
|
108
|
-
descend into it; the guard below then skips any FURTHER nested function. */
|
|
109
|
-
const body = ts.isArrowFunction(seed) || ts.isFunctionExpression(seed) ? seed.body : seed
|
|
110
|
-
let awaited = false
|
|
111
|
-
const flagged = new Set<string>()
|
|
112
|
-
const visit = (child: ts.Node): void => {
|
|
113
|
-
/* Nested functions have their own tracking; the await that matters is at the seed's
|
|
114
|
-
own top level, so don't descend into them (mirrors `hasTopLevelAwait`). */
|
|
115
|
-
if (
|
|
116
|
-
ts.isFunctionDeclaration(child) ||
|
|
117
|
-
ts.isFunctionExpression(child) ||
|
|
118
|
-
ts.isArrowFunction(child)
|
|
119
|
-
) {
|
|
120
|
-
return
|
|
121
|
-
}
|
|
122
|
-
if (ts.isAwaitExpression(child)) {
|
|
123
|
-
awaited = true
|
|
124
|
-
ts.forEachChild(child, visit)
|
|
125
|
-
return
|
|
126
|
-
}
|
|
127
|
-
if (awaited && ts.isIdentifier(child) && signalNames.has(child.text)) {
|
|
128
|
-
flagged.add(child.text)
|
|
129
|
-
}
|
|
130
|
-
ts.forEachChild(child, visit)
|
|
131
|
-
}
|
|
132
|
-
visit(body)
|
|
133
|
-
for (const name of flagged) {
|
|
134
|
-
console.warn(
|
|
135
|
-
`[abide] \`${name}\` is read after an \`await\` in an async computed/linked seed — reads after the first await are not tracked, so the cell will not reseed when \`${name}\` changes. Read it before the await (capture it into a local) to keep it tracked.`,
|
|
136
|
-
)
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/* Throws on the removed `prop(...)` reader — props are now read by destructuring `props()`.
|
|
141
|
-
Walks all calls, so a stray one nested in a function is caught too. Bare reactive
|
|
142
|
-
primitives (`state(0)`) are the SURFACE now (recognised by import binding + lowered), so
|
|
143
|
-
they no longer throw — only the withdrawn `prop` reader does. */
|
|
144
|
-
function assertNoRemovedReaders(source: ts.SourceFile): void {
|
|
145
|
-
const visit = (node: ts.Node): void => {
|
|
146
|
-
if (
|
|
147
|
-
ts.isCallExpression(node) &&
|
|
148
|
-
ts.isIdentifier(node.expression) &&
|
|
149
|
-
node.expression.text === 'prop'
|
|
150
|
-
) {
|
|
151
|
-
throw new Error(
|
|
152
|
-
'abide: `prop(...)` has been removed — read props by destructuring `props()`, e.g. `const { name } = props()` (with a default: `const { name = fallback } = props()`).',
|
|
153
|
-
)
|
|
154
|
-
}
|
|
155
|
-
ts.forEachChild(node, visit)
|
|
156
|
-
}
|
|
157
|
-
visit(source)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/*
|
|
161
|
-
Desugars the signal surface into the document form. A component's `<script>`
|
|
162
|
-
declares reactive state as signals:
|
|
163
|
-
|
|
164
|
-
let count = scope().state(0)
|
|
165
|
-
let items = scope().state([])
|
|
166
|
-
const total = scope().computed(() => count() + items.length)
|
|
167
|
-
|
|
168
|
-
This walks the already-parsed script once to collect the binding names, then returns
|
|
169
|
-
a `ts.TransformerFactory` that rewrites the declarations onto a shared `model`
|
|
170
|
-
document: each plain `state(initial)` becomes an initialising assignment (`model.x =
|
|
171
|
-
initial`, in source order so a later state can read an earlier one), each `computed`
|
|
172
|
-
and destructured prop becomes a `scope().derive` slot, and `linked` /
|
|
173
|
-
`state(initial, transform)` stay `.value` cells routed onto the scope. Returning a
|
|
174
|
-
TRANSFORMER (not rebuilt source text) lets the caller (`lowerScript`) chain it with
|
|
175
|
-
reference renaming and doc-access lowering over ONE parsed tree — no print-then-reparse
|
|
176
|
-
between passes. Plain `state` becomes `model.x` access that `lowerDocAccess` lowers to
|
|
177
|
-
patches/reads. No reactive declarations → an identity transformer (the explicit
|
|
178
|
-
`const model = doc(...)` form still works).
|
|
179
|
-
*/
|
|
180
|
-
export function desugarSignals(
|
|
181
|
-
source: ts.SourceFile,
|
|
182
|
-
/* Synthetic `const __cN = computed(...)` cells `analyzeComponent` injected for asyncIterable
|
|
183
|
-
interpolations (ADR-0019 Stage D). Their `computed` callee is UNIMPORTED, so import
|
|
184
|
-
resolution (`signalCallee`) can't recognize them — instead a declaration whose name is in
|
|
185
|
-
this set is treated as a bare-call computed slot: routed to an eager `trackedComputed`
|
|
186
|
-
stream cell and read via `$$readCell`, exactly as an explicit `state.computed(getStream())`
|
|
187
|
-
would be. Gated on the exact injected name (never a naming heuristic), so it can never
|
|
188
|
-
reclassify author code — an author's own `computed(...)` still needs its import. */
|
|
189
|
-
injectedCellNames: ReadonlySet<string> = new Set(),
|
|
190
|
-
/* The subset of `injectedCellNames` whose seed the author wrote `await` on (ADR-0032): a
|
|
191
|
-
BLOCKING peek-cell (`scope().trackedComputed(async …, false)` — an `AsyncComputed` that
|
|
192
|
-
joins the SSR barrier), vs a streaming one (`trackedComputed(async …, true)` — ships
|
|
193
|
-
pending, resolves on the client). Names not in this set are streaming. */
|
|
194
|
-
blockingCellNames: ReadonlySet<string> = new Set(),
|
|
195
|
-
/* Names the TEMPLATE writes (assigned in an event expression, or forwarded as a `bind:`
|
|
196
|
-
target) — see `writtenTemplateNames`. Unioned with the script's own write scan; a `props()`
|
|
197
|
-
binding whose name lands in the union is a WRITABLE prop (a `.value` cell via `bindableProp`)
|
|
198
|
-
rather than a read-only derive, so a two-way `bind:prop` on the parent can flow back. */
|
|
199
|
-
templateWrittenNames: ReadonlySet<string> = new Set(),
|
|
200
|
-
/* Type-directed seed classifier (ADR-0023): resolves a no-marker `computed(seed)`'s
|
|
201
|
-
async-ness from the seed's checker type via the warm shadow program. Absent (no warm
|
|
202
|
-
program, or any call site outside the shadow-warmed path) ⇒ every seed classifies
|
|
203
|
-
`undefined` ⇒ fail-open to the `isBareCallComputed` syntax heuristic — exactly today's
|
|
204
|
-
routing. The `await`-marker path (`isAsyncComputed`) is decided first and never consults it. */
|
|
205
|
-
seedClassify?: SeedTypeClassifier,
|
|
206
|
-
/* Absolute `.abide` source offset where this script's (trimmed) body begins — the base that
|
|
207
|
-
relocates a seed node's body-relative `getStart()` back to an ORIGINAL source location the
|
|
208
|
-
shadow's source→shadow `mappings` resolve. Unused when `seedClassify` is absent. */
|
|
209
|
-
scriptBase = 0,
|
|
210
|
-
): {
|
|
211
|
-
transformer: ts.TransformerFactory<ts.SourceFile>
|
|
212
|
-
stateNames: Set<string>
|
|
213
|
-
derivedNames: Set<string>
|
|
214
|
-
computedNames: Set<string>
|
|
215
|
-
cellReadNames: Set<string>
|
|
216
|
-
} {
|
|
217
|
-
assertNoRemovedReaders(source)
|
|
218
|
-
/* The full set of names written anywhere (this script + the template). A prop in this set
|
|
219
|
-
is upgraded to a writable cell; a prop only read stays a cheap read-only derive. */
|
|
220
|
-
const writtenNames = new Set<string>(templateWrittenNames)
|
|
221
|
-
assignmentTargetNames(source, writtenNames)
|
|
222
|
-
/* The file's reactive import bindings — each local (alias-safe) mapped to its
|
|
223
|
-
canonical primitive. The single recognition authority: every callee below resolves
|
|
224
|
-
against these import bindings and nothing else. */
|
|
225
|
-
const bindings = reactiveImportBindings(source)
|
|
226
|
-
const stateNames = new Set<string>()
|
|
227
|
-
const derivedNames = new Set<string>()
|
|
228
|
-
const computedNames = new Set<string>()
|
|
229
|
-
/* Names read through `$$readCell(name)`: every `linked` (a plain `State` or, when its seed
|
|
230
|
-
tracks an async source, an `AsyncState`) and every async `computed` (an `AsyncComputed`).
|
|
231
|
-
One read shape covers both — `$$readCell` peeks an async cell and reads `.value` off a
|
|
232
|
-
sync one — so `linked(getStream())` auto-tracks with no read-site branching. */
|
|
233
|
-
const cellReadNames = new Set<string>()
|
|
234
|
-
/* A `props()` destructure must be lowered even when it declares no reactive binding
|
|
235
|
-
(a rest-only `const { ...rest } = props()`), so track its presence on its own. */
|
|
236
|
-
let hasPropsDestructure = false
|
|
237
|
-
/* Resolves a computed seed's async-ness through the warm shadow classifier (ADR-0023):
|
|
238
|
-
maps the seed's absolute source location to its checker-type kind. `undefined` when no
|
|
239
|
-
classifier is threaded OR on any resolution failure (a throw / an unmapped seed), so the
|
|
240
|
-
caller degrades to `isBareCallComputed` — never mistakes a failure for a `sync` type. */
|
|
241
|
-
const seedKind = (seed: ts.Expression): InterpolationKind | undefined => {
|
|
242
|
-
if (seedClassify === undefined) {
|
|
243
|
-
return undefined
|
|
244
|
-
}
|
|
245
|
-
try {
|
|
246
|
-
const start = seed.getStart(source)
|
|
247
|
-
return seedClassify(scriptBase + start, source.text.slice(start, seed.getEnd()))
|
|
248
|
-
} catch {
|
|
249
|
-
return undefined
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
/* The single routing authority for a no-marker `computed(seed)` — shared by the
|
|
253
|
-
name-collection pass below and `computedStatements` so both land the binding in the same
|
|
254
|
-
read-name bucket (a divergence would lower a reference to the wrong read form). Type-
|
|
255
|
-
directed when the seed classifier resolves the seed (`asyncIterable` → the eager stream
|
|
256
|
-
cell; `promise`/`sync` → the lazy `derive` slot), fail-open to today's `isBareCallComputed`
|
|
257
|
-
syntax heuristic otherwise. The `await`-marker seed (`isAsyncComputed`) is decided first by
|
|
258
|
-
each caller and excluded here (its wrapped thunk is async → returns false). */
|
|
259
|
-
const isEagerStreamComputed: EagerStreamPredicate = (declaration) => {
|
|
260
|
-
const argument = seedArgument(declaration)
|
|
261
|
-
if (argument === undefined || isAsyncSeed(wrapSeed(argument))) {
|
|
262
|
-
return false
|
|
263
|
-
}
|
|
264
|
-
const kind = seedKind(argument)
|
|
265
|
-
if (kind !== undefined) {
|
|
266
|
-
return kind === 'asyncIterable'
|
|
267
|
-
}
|
|
268
|
-
return isBareCallComputed(declaration)
|
|
269
|
-
}
|
|
270
|
-
/* A type-directed PROMISE seed (ADR-0023/0043): a no-`await` `state.computed(getFoo())` whose
|
|
271
|
-
seed's checker type resolves to a promise. Routed to an eager STREAMING async cell that
|
|
272
|
-
unwraps the resolved value and reactively re-resolves when its tracked deps change — the
|
|
273
|
-
script-level twin of a bare async interpolation (ADR-0032). Only fires with a warm classifier
|
|
274
|
-
('promise'); fail-open (no program) leaves it to `isEagerStreamComputed`'s bare-call probe,
|
|
275
|
-
and the `await`-marker seed is excluded (its wrapped thunk is already async). Kept separate
|
|
276
|
-
from `isEagerStreamComputed` so `computedStatements` can wrap it as `async () => await (seed)`
|
|
277
|
-
(a stream seed stays a bare probe thunk). */
|
|
278
|
-
const isPromiseComputed: EagerStreamPredicate = (declaration) => {
|
|
279
|
-
const argument = seedArgument(declaration)
|
|
280
|
-
if (argument === undefined || isAsyncSeed(wrapSeed(argument))) {
|
|
281
|
-
return false
|
|
282
|
-
}
|
|
283
|
-
return seedKind(argument) === 'promise'
|
|
284
|
-
}
|
|
285
|
-
/* ADR-0032 (script side): a `state`/`linked`/`computed` seed whose ARGUMENT buries a
|
|
286
|
-
promise/stream sub-expression (`getSession()?.filteredSources ?? []`) — not the whole seed
|
|
287
|
-
— gets that sub-expression lifted to an injected streaming peek-cell, exactly as a template
|
|
288
|
-
interpolation does, so it reads `undefined` while pending and composes with `?.`/`??`. The
|
|
289
|
-
lift runs on the seed's checker type via the SAME classifier the whole-seed routing uses,
|
|
290
|
-
bridged to the interpolation shape (its `undefined` failure sentinel folds to `sync`, safe
|
|
291
|
-
because the walk only branches on `promise`/`asyncIterable`). Cached per declaration so the
|
|
292
|
-
shared `__vs` mint stays consistent between the name-collection pass and the transform. */
|
|
293
|
-
const liftClassify: InterpolationClassifier | undefined =
|
|
294
|
-
seedClassify === undefined ? undefined : (loc, code) => seedClassify(loc, code) ?? 'sync'
|
|
295
|
-
let scriptSeedCounter = 0
|
|
296
|
-
const mintScriptSeed = (): string => `__vs${scriptSeedCounter++}`
|
|
297
|
-
const seedLifts = new Map<ts.VariableDeclaration, ScriptSeedLift | undefined>()
|
|
298
|
-
const seedLiftFor = (declaration: ts.VariableDeclaration): ScriptSeedLift | undefined => {
|
|
299
|
-
if (seedLifts.has(declaration)) {
|
|
300
|
-
return seedLifts.get(declaration)
|
|
301
|
-
}
|
|
302
|
-
const lift = computeSeedLift(declaration)
|
|
303
|
-
seedLifts.set(declaration, lift)
|
|
304
|
-
return lift
|
|
305
|
-
}
|
|
306
|
-
/* Applies the per-callee gate then runs the lift. A seed the WHOLE-seed classification already
|
|
307
|
-
claims — an author `await` (blocking), a bare promise/stream call — is left untouched so the
|
|
308
|
-
existing routing (or the runtime probe) owns it and nothing double-wraps; only a buried
|
|
309
|
-
sub-expression in an otherwise-sync seed lifts. */
|
|
310
|
-
function computeSeedLift(declaration: ts.VariableDeclaration): ScriptSeedLift | undefined {
|
|
311
|
-
if (liftClassify === undefined) {
|
|
312
|
-
return undefined
|
|
313
|
-
}
|
|
314
|
-
/* Only a single-declaration statement lifts: the injected peek-cells are emitted before the
|
|
315
|
-
owning statement, which can't split a `let a = …, b = …` list cleanly — and a
|
|
316
|
-
`rejectMixedDeclaration`-legal same-kind multi-declaration seed-lift is vanishingly rare.
|
|
317
|
-
Leaving it unlifted degrades to the pre-lift behavior (no injected orphan cell). */
|
|
318
|
-
const list = declaration.parent
|
|
319
|
-
if (!ts.isVariableDeclarationList(list) || list.declarations.length !== 1) {
|
|
320
|
-
return undefined
|
|
321
|
-
}
|
|
322
|
-
const callee = signalCallee(declaration, bindings)
|
|
323
|
-
if (callee === 'computed') {
|
|
324
|
-
if (
|
|
325
|
-
!isComputedSlot(declaration, bindings) ||
|
|
326
|
-
isAsyncComputed(declaration) ||
|
|
327
|
-
isEagerStreamComputed(declaration) ||
|
|
328
|
-
isPromiseComputed(declaration)
|
|
329
|
-
) {
|
|
330
|
-
return undefined
|
|
331
|
-
}
|
|
332
|
-
} else if (callee === 'linked' || callee === 'state') {
|
|
333
|
-
const argument = seedArgument(declaration)
|
|
334
|
-
if (argument === undefined || isAsyncSeed(wrapSeed(argument))) {
|
|
335
|
-
return undefined
|
|
336
|
-
}
|
|
337
|
-
} else {
|
|
338
|
-
return undefined
|
|
339
|
-
}
|
|
340
|
-
const argument = seedArgument(declaration)
|
|
341
|
-
if (argument === undefined) {
|
|
342
|
-
return undefined
|
|
343
|
-
}
|
|
344
|
-
/* A bare CALL or IDENTIFIER seed is the whole-seed case (`computed(getRates())`,
|
|
345
|
-
`linked(chat.done())`, `state.computed(getRates.refreshing({...}))`) — the existing
|
|
346
|
-
whole-seed routing / runtime probe owns it, and descending into it would lift a probe
|
|
347
|
-
RECEIVER (`chat` out of `chat.done()`), breaking the call. Only a COMPOUND seed — a
|
|
348
|
-
member/binary/etc. that BURIES an async call — lifts. Mirrors `isBareCallComputed`. */
|
|
349
|
-
if (ts.isCallExpression(argument) || ts.isIdentifier(argument)) {
|
|
350
|
-
return undefined
|
|
351
|
-
}
|
|
352
|
-
const start = argument.getStart(source)
|
|
353
|
-
const seedText = source.text.slice(start, argument.getEnd())
|
|
354
|
-
return liftScriptSeed(seedText, scriptBase + start, liftClassify, mintScriptSeed)
|
|
355
|
-
}
|
|
356
|
-
for (const statement of source.statements) {
|
|
357
|
-
if (!ts.isVariableStatement(statement)) {
|
|
358
|
-
continue
|
|
359
|
-
}
|
|
360
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
361
|
-
const callee = signalCallee(declaration, bindings)
|
|
362
|
-
if (callee === 'props') {
|
|
363
|
-
/* `const {…, ...rest} = props()` — each named binding is a read-only computed
|
|
364
|
-
over the parent thunk (read as `name()`); a `...rest` binding stays a plain
|
|
365
|
-
const (a `restProps` bag), so it joins no reactive set. */
|
|
366
|
-
if (!ts.isObjectBindingPattern(declaration.name)) {
|
|
367
|
-
throw new Error(
|
|
368
|
-
'abide: `props()` must be destructured — `const { a, b } = props()`',
|
|
369
|
-
)
|
|
370
|
-
}
|
|
371
|
-
hasPropsDestructure = true
|
|
372
|
-
for (const binding of propsDestructure(declaration).bindings) {
|
|
373
|
-
/* A prop the component writes/forwards becomes a `.value` cell (`bindableProp`,
|
|
374
|
-
read/written like `state(x, transform)` → `derivedNames`); one only read stays
|
|
375
|
-
a read-only derive read as `name()` (`computedNames`). */
|
|
376
|
-
if (writtenNames.has(binding.local)) {
|
|
377
|
-
derivedNames.add(binding.local)
|
|
378
|
-
} else {
|
|
379
|
-
computedNames.add(binding.local)
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
continue
|
|
383
|
-
}
|
|
384
|
-
if (!ts.isIdentifier(declaration.name)) {
|
|
385
|
-
continue
|
|
386
|
-
}
|
|
387
|
-
if (injectedCellNames.has(declaration.name.text)) {
|
|
388
|
-
/* Injected asyncIterable-interpolation cell (`const __cN = computed(expr)`): an
|
|
389
|
-
eager `trackedComputed` stream cell, read via `$$readCell` — recognized by its
|
|
390
|
-
injected name since `computed` is unimported here. */
|
|
391
|
-
cellReadNames.add(declaration.name.text)
|
|
392
|
-
continue
|
|
393
|
-
}
|
|
394
|
-
/* Register any injected `__vsN` peek-cell a buried async seed sub-expression lifts, so
|
|
395
|
-
the reference-lowering emits `$$readCell(__vsN)` for its reads. The owning
|
|
396
|
-
declaration keeps its own bucket (a lifted computed's seed is now SYNC — a lazy
|
|
397
|
-
`derive` — while a lifted `linked`/`state` stays its usual cell). */
|
|
398
|
-
const seedLift = seedLiftFor(declaration)
|
|
399
|
-
if (seedLift !== undefined) {
|
|
400
|
-
for (const cell of seedLift.cells) {
|
|
401
|
-
cellReadNames.add(cell.name)
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
if (isPlainStateSlot(declaration, bindings)) {
|
|
405
|
-
/* Plain `state(initial)` → a serializable `model` doc slot. */
|
|
406
|
-
stateNames.add(declaration.name.text)
|
|
407
|
-
} else if (isComputedSlot(declaration, bindings)) {
|
|
408
|
-
/* `computed(compute)` → either a lazy `scope().derive` doc slot referenced as
|
|
409
|
-
`name()` (a sync/promise seed), or an eager cell read via `$$readCell(name)`
|
|
410
|
-
when the wrapped seed is async (an `await`-lowered / passthrough-`async` thunk)
|
|
411
|
-
or its seed type resolves to a stream (`isEagerStreamComputed`, ADR-0023). */
|
|
412
|
-
if (
|
|
413
|
-
isAsyncComputed(declaration) ||
|
|
414
|
-
isEagerStreamComputed(declaration) ||
|
|
415
|
-
isPromiseComputed(declaration)
|
|
416
|
-
) {
|
|
417
|
-
/* Async `computed` (author `await`), an eager stream, or a promise seed — all
|
|
418
|
-
read via `$$readCell(name)`. Whether a pending read PAUSES (author `await`,
|
|
419
|
-
a blocking cell) or peeks `undefined` (streaming) is carried by the cell
|
|
420
|
-
itself at construction (the `trackedComputed(thunk, streaming)` flag), so the
|
|
421
|
-
read form is uniform and nothing blocking-specific is collected here. */
|
|
422
|
-
cellReadNames.add(declaration.name.text)
|
|
423
|
-
} else {
|
|
424
|
-
computedNames.add(declaration.name.text)
|
|
425
|
-
}
|
|
426
|
-
} else if (callee === 'linked') {
|
|
427
|
-
/* `linked` → a cell read via `$$readCell(name)`: a plain `State` when the seed
|
|
428
|
-
is synchronous, an `AsyncState` when it tracks a promise/stream — one read
|
|
429
|
-
shape auto-tracks whichever source the runtime primitive resolved to. Its
|
|
430
|
-
blocking-ness (author `await`) likewise rides on the constructed cell. */
|
|
431
|
-
cellReadNames.add(declaration.name.text)
|
|
432
|
-
} else if (callee === 'state') {
|
|
433
|
-
/* `state(initial, transform)` → a `.value` cell (its write-coercion transform
|
|
434
|
-
forces a local store); referenced as `name.value`, unchanged. */
|
|
435
|
-
derivedNames.add(declaration.name.text)
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
const hasReactive =
|
|
441
|
-
stateNames.size > 0 ||
|
|
442
|
-
derivedNames.size > 0 ||
|
|
443
|
-
computedNames.size > 0 ||
|
|
444
|
-
cellReadNames.size > 0 ||
|
|
445
|
-
hasPropsDestructure
|
|
446
|
-
|
|
447
|
-
const transformer: ts.TransformerFactory<ts.SourceFile> = () => (root) => {
|
|
448
|
-
if (!hasReactive) {
|
|
449
|
-
return root
|
|
450
|
-
}
|
|
451
|
-
const statements: ts.Statement[] = []
|
|
452
|
-
/* A shared `$$model = scope()` host for the state slots, prepended once. The doc
|
|
453
|
-
base is `$$`-reserved so a user variable named `model` can never collide. */
|
|
454
|
-
if (stateNames.size > 0) {
|
|
455
|
-
statements.push(
|
|
456
|
-
constDeclaration(
|
|
457
|
-
'$$model',
|
|
458
|
-
factory.createCallExpression(factory.createIdentifier('scope'), undefined, []),
|
|
459
|
-
),
|
|
460
|
-
)
|
|
461
|
-
}
|
|
462
|
-
/* Every component signal name — the read set the post-`await` tracking lint checks
|
|
463
|
-
an async seed's body against. */
|
|
464
|
-
const signalNames = new Set<string>([
|
|
465
|
-
...stateNames,
|
|
466
|
-
...derivedNames,
|
|
467
|
-
...computedNames,
|
|
468
|
-
...cellReadNames,
|
|
469
|
-
])
|
|
470
|
-
for (const statement of root.statements) {
|
|
471
|
-
statements.push(
|
|
472
|
-
...loweredStatement(
|
|
473
|
-
statement,
|
|
474
|
-
bindings,
|
|
475
|
-
signalNames,
|
|
476
|
-
injectedCellNames,
|
|
477
|
-
blockingCellNames,
|
|
478
|
-
writtenNames,
|
|
479
|
-
isEagerStreamComputed,
|
|
480
|
-
isPromiseComputed,
|
|
481
|
-
seedLiftFor,
|
|
482
|
-
),
|
|
483
|
-
)
|
|
484
|
-
}
|
|
485
|
-
return factory.updateSourceFile(root, statements)
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
return {
|
|
489
|
-
transformer,
|
|
490
|
-
stateNames,
|
|
491
|
-
derivedNames,
|
|
492
|
-
computedNames,
|
|
493
|
-
cellReadNames,
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
/* The lowered form of a top-level statement: state slots → `model.x = init`
|
|
498
|
-
assignments, computed → `scope().derive` consts, props → derive consts (+ restProps),
|
|
499
|
-
cells → `scope().<callee>(...)` consts; anything else passes through verbatim. The
|
|
500
|
-
per-statement dispatch mirrors the name-collection pass. */
|
|
501
|
-
function loweredStatement(
|
|
502
|
-
statement: ts.Statement,
|
|
503
|
-
bindings: ReactiveImportBindings,
|
|
504
|
-
signalNames: ReadonlySet<string>,
|
|
505
|
-
injectedCellNames: ReadonlySet<string>,
|
|
506
|
-
blockingCellNames: ReadonlySet<string>,
|
|
507
|
-
writtenNames: ReadonlySet<string>,
|
|
508
|
-
isEagerStreamComputed: EagerStreamPredicate,
|
|
509
|
-
isPromiseComputed: EagerStreamPredicate,
|
|
510
|
-
seedLiftFor: (declaration: ts.VariableDeclaration) => ScriptSeedLift | undefined,
|
|
511
|
-
): ts.Statement[] {
|
|
512
|
-
rejectMixedDeclaration(statement, bindings)
|
|
513
|
-
return (
|
|
514
|
-
liftedSeedStatements(statement, bindings, seedLiftFor) ??
|
|
515
|
-
injectedComputedStatements(statement, injectedCellNames, blockingCellNames) ??
|
|
516
|
-
stateAssignmentStatements(statement, bindings) ??
|
|
517
|
-
computedStatements(
|
|
518
|
-
statement,
|
|
519
|
-
bindings,
|
|
520
|
-
signalNames,
|
|
521
|
-
isEagerStreamComputed,
|
|
522
|
-
isPromiseComputed,
|
|
523
|
-
) ??
|
|
524
|
-
propsStatements(statement, bindings, writtenNames) ??
|
|
525
|
-
cellStatements(statement, bindings, signalNames) ?? [statement]
|
|
526
|
-
)
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
/* Parses a lifted seed fragment (`getSession()` / `__vs0?.filteredSources ?? []`) back into an
|
|
530
|
-
expression node. Wrapped in parens so an object-literal or comma seed parses as an expression;
|
|
531
|
-
the node is synthetic (mini-parse positions), safe because every downstream pass — reference
|
|
532
|
-
renaming, doc-access lowering — is position-independent. */
|
|
533
|
-
function parseSeedExpression(code: string): ts.Expression {
|
|
534
|
-
const file = ts.createSourceFile('__seed.ts', `(${code})`, ts.ScriptTarget.Latest, true)
|
|
535
|
-
const statement = file.statements[0]
|
|
536
|
-
if (statement !== undefined && ts.isExpressionStatement(statement)) {
|
|
537
|
-
const expression = statement.expression
|
|
538
|
-
return ts.isParenthesizedExpression(expression) ? expression.expression : expression
|
|
539
|
-
}
|
|
540
|
-
throw new Error(`abide: could not parse lifted seed expression: ${code}`)
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
/* `() => (<expr>)` — the bare thunk an injected STREAM peek-cell wraps its source in (byte-mirrors
|
|
544
|
-
an explicit `state.computed(getStream())`). */
|
|
545
|
-
function bareThunk(expression: ts.Expression): ts.Expression {
|
|
546
|
-
return factory.createArrowFunction(
|
|
547
|
-
undefined,
|
|
548
|
-
undefined,
|
|
549
|
-
[],
|
|
550
|
-
undefined,
|
|
551
|
-
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
|
|
552
|
-
factory.createParenthesizedExpression(expression),
|
|
553
|
-
)
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
/* The injected `const __vsN = scope().trackedComputed(...)` cell for one lifted sub-expression —
|
|
557
|
-
the script-side twin of `injectedComputedStatements`: a PROMISE sub-expression becomes an async
|
|
558
|
-
unwrapping thunk carrying the streaming flag (`!blocking`), a STREAM stays a bare probe thunk. */
|
|
559
|
-
function injectedSeedCell(cell: InjectedCell): ts.Statement {
|
|
560
|
-
const source = parseSeedExpression(cell.code)
|
|
561
|
-
const args =
|
|
562
|
-
cell.kind === 'promise'
|
|
563
|
-
? [wrapAwaitSeed(source), cell.blocking ? factory.createFalse() : factory.createTrue()]
|
|
564
|
-
: [bareThunk(source)]
|
|
565
|
-
return constDeclaration(cell.name, scopeMethodCall('trackedComputed', args))
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
/* If any declaration in `statement` carries a script-seed lift (ADR-0032), lowers the whole
|
|
569
|
-
statement HERE: each lifted declaration emits its injected `__vsN` peek-cells FIRST (declared
|
|
570
|
-
before the owning statement — the seed runs eagerly at construction, so an appended cell would
|
|
571
|
-
be a TDZ reference), then the owning declaration lowered over its now-SYNC rewritten seed (a
|
|
572
|
-
lifted `computed` is a lazy `derive`; a `linked`/`state` keeps its cell). A non-lifted sibling
|
|
573
|
-
in the same (same-kind) statement re-enters the normal lowering as its own single declaration.
|
|
574
|
-
Returns undefined when no declaration lifts, so the standard dispatch runs. */
|
|
575
|
-
function liftedSeedStatements(
|
|
576
|
-
statement: ts.Statement,
|
|
577
|
-
bindings: ReactiveImportBindings,
|
|
578
|
-
seedLiftFor: (declaration: ts.VariableDeclaration) => ScriptSeedLift | undefined,
|
|
579
|
-
): ts.Statement[] | undefined {
|
|
580
|
-
if (!ts.isVariableStatement(statement) || statement.declarationList.declarations.length !== 1) {
|
|
581
|
-
return undefined
|
|
582
|
-
}
|
|
583
|
-
const declaration = statement.declarationList.declarations[0]!
|
|
584
|
-
const lift = seedLiftFor(declaration)
|
|
585
|
-
if (lift === undefined || !ts.isIdentifier(declaration.name)) {
|
|
586
|
-
return undefined
|
|
587
|
-
}
|
|
588
|
-
const output: ts.Statement[] = []
|
|
589
|
-
{
|
|
590
|
-
for (const cell of lift.cells) {
|
|
591
|
-
output.push(injectedSeedCell(cell))
|
|
592
|
-
}
|
|
593
|
-
const name = declaration.name.text
|
|
594
|
-
const seed = parseSeedExpression(lift.rewrittenSeedText)
|
|
595
|
-
const callee = signalCallee(declaration, bindings)
|
|
596
|
-
const rest = (declaration.initializer as ts.CallExpression).arguments.slice(1)
|
|
597
|
-
if (callee === 'computed') {
|
|
598
|
-
/* The rewritten seed is SYNC (it reads the peek-cells), so the computed is a lazy
|
|
599
|
-
`derive` doc slot read as `name()` — recomputes when a peek-cell reseeds. */
|
|
600
|
-
output.push(
|
|
601
|
-
constDeclaration(
|
|
602
|
-
name,
|
|
603
|
-
scopeMethodCall('derive', [factory.createStringLiteral(name), wrapSeed(seed)]),
|
|
604
|
-
),
|
|
605
|
-
)
|
|
606
|
-
} else if (callee === 'linked') {
|
|
607
|
-
output.push(
|
|
608
|
-
constDeclaration(name, scopeMethodCall('linked', [wrapSeed(seed), ...rest])),
|
|
609
|
-
)
|
|
610
|
-
} else if (isPlainStateSlot(declaration, bindings)) {
|
|
611
|
-
output.push(
|
|
612
|
-
factory.createExpressionStatement(
|
|
613
|
-
factory.createAssignment(
|
|
614
|
-
factory.createPropertyAccessExpression(
|
|
615
|
-
factory.createIdentifier('$$model'),
|
|
616
|
-
name,
|
|
617
|
-
),
|
|
618
|
-
seed,
|
|
619
|
-
),
|
|
620
|
-
),
|
|
621
|
-
)
|
|
622
|
-
} else {
|
|
623
|
-
output.push(constDeclaration(name, scopeMethodCall('state', [seed, ...rest])))
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
return output
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
/* Lowers a synthetic `const __vN = computed(<seed>)` (an async (sub)expression peek-cell
|
|
630
|
-
`analyzeComponent` injected, ADR-0032) to a `scope().trackedComputed(...)` cell read via
|
|
631
|
-
`$$readCell`. Two shapes, by the seed:
|
|
632
|
-
- a PROMISE seed (`computed(await X)` → an async `() => await X` thunk) → `trackedComputed(
|
|
633
|
-
thunk, <streaming>)`, where `streaming = !blockingCellNames.has(name)`: a blocking cell
|
|
634
|
-
(author `await`) joins the SSR barrier and resolves inline; a streaming one ships pending.
|
|
635
|
-
- an `AsyncIterable` seed (`computed(getStream())` → a bare `() => getStream()` thunk) →
|
|
636
|
-
`trackedComputed(thunk)`, byte-identical to an explicit `state.computed(getStream())`.
|
|
637
|
-
Recognized by the injected name (`computed` is unimported here); returns undefined for any
|
|
638
|
-
statement that is not one of these injected cells (each is its own single-declaration statement). */
|
|
639
|
-
function injectedComputedStatements(
|
|
640
|
-
statement: ts.Statement,
|
|
641
|
-
injectedCellNames: ReadonlySet<string>,
|
|
642
|
-
blockingCellNames: ReadonlySet<string>,
|
|
643
|
-
): ts.Statement[] | undefined {
|
|
644
|
-
if (!ts.isVariableStatement(statement)) {
|
|
645
|
-
return undefined
|
|
646
|
-
}
|
|
647
|
-
const statements: ts.Statement[] = []
|
|
648
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
649
|
-
if (!ts.isIdentifier(declaration.name) || !injectedCellNames.has(declaration.name.text)) {
|
|
650
|
-
return undefined
|
|
651
|
-
}
|
|
652
|
-
const name = declaration.name.text
|
|
653
|
-
const argument = seedArgument(declaration)
|
|
654
|
-
const wrapped =
|
|
655
|
-
argument === undefined
|
|
656
|
-
? factory.createArrowFunction(
|
|
657
|
-
undefined,
|
|
658
|
-
undefined,
|
|
659
|
-
[],
|
|
660
|
-
undefined,
|
|
661
|
-
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
|
|
662
|
-
factory.createIdentifier('undefined'),
|
|
663
|
-
)
|
|
664
|
-
: wrapSeed(argument)
|
|
665
|
-
/* A promise seed (async thunk) unwraps to the resolved value and carries the SSR tier flag;
|
|
666
|
-
a stream seed (bare thunk) probes to a frame cell and needs no flag (a stream never joins
|
|
667
|
-
the barrier), so it stays a single-arg call to byte-match the explicit form. */
|
|
668
|
-
const args = isAsyncSeed(wrapped)
|
|
669
|
-
? [wrapped, blockingCellNames.has(name) ? factory.createFalse() : factory.createTrue()]
|
|
670
|
-
: [wrapped]
|
|
671
|
-
statements.push(constDeclaration(name, scopeMethodCall('trackedComputed', args)))
|
|
672
|
-
}
|
|
673
|
-
return statements
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
/* Each lowering function above is all-or-nothing per VariableStatement: it returns
|
|
677
|
-
undefined the moment one declaration doesn't match its kind, so the whole statement
|
|
678
|
-
passes through verbatim. A statement mixing a reactive declaration with a differently-
|
|
679
|
-
lowered one (`let count = state(0), step = 5`) therefore ships literal — but the
|
|
680
|
-
collection pass already registered `count`, so references lower to `$$model.read("count")`
|
|
681
|
-
with no `$$model.count = 0` seed (silent undefined). Reject it with a legible error so
|
|
682
|
-
the author splits the declarations; a checker-free compiler must fail loud, not
|
|
683
|
-
mis-lower silently. Same-kind lists (`let a = state(0), b = state(1)`) are fine. */
|
|
684
|
-
function rejectMixedDeclaration(statement: ts.Statement, bindings: ReactiveImportBindings): void {
|
|
685
|
-
if (!ts.isVariableStatement(statement)) {
|
|
686
|
-
return
|
|
687
|
-
}
|
|
688
|
-
const kinds = new Set(
|
|
689
|
-
statement.declarationList.declarations.map((declaration) =>
|
|
690
|
-
loweringKind(declaration, bindings),
|
|
691
|
-
),
|
|
692
|
-
)
|
|
693
|
-
/* Any two distinct kinds break: each lowering function bails on the non-matching
|
|
694
|
-
declaration, so the statement ships verbatim. A uniform list (size 1) is fine. */
|
|
695
|
-
if (kinds.size > 1) {
|
|
696
|
-
throw new Error(
|
|
697
|
-
'abide: declare each reactive signal in its own statement — a `let`/`const` that mixes a reactive declaration (state/linked/computed/props) with another kind cannot be lowered as one statement.',
|
|
698
|
-
)
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
/* The lowering bucket a single declaration falls into — mirrors the name-collection
|
|
703
|
-
dispatch so `rejectMixedDeclaration` can detect a statement spanning more than one. */
|
|
704
|
-
function loweringKind(
|
|
705
|
-
declaration: ts.VariableDeclaration,
|
|
706
|
-
bindings: ReactiveImportBindings,
|
|
707
|
-
): 'state' | 'computed' | 'props' | 'cell' | 'plain' {
|
|
708
|
-
const callee = signalCallee(declaration, bindings)
|
|
709
|
-
if (callee === 'props') {
|
|
710
|
-
return 'props'
|
|
711
|
-
}
|
|
712
|
-
if (isPlainStateSlot(declaration, bindings)) {
|
|
713
|
-
return 'state'
|
|
714
|
-
}
|
|
715
|
-
if (isComputedSlot(declaration, bindings)) {
|
|
716
|
-
return 'computed'
|
|
717
|
-
}
|
|
718
|
-
if (callee === 'linked' || callee === 'state') {
|
|
719
|
-
return 'cell'
|
|
720
|
-
}
|
|
721
|
-
return 'plain'
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
/* `const NAME = <init>` — a fresh const declaration reusing the original initializer node. */
|
|
725
|
-
function constDeclaration(name: string, initializer: ts.Expression): ts.VariableStatement {
|
|
726
|
-
return factory.createVariableStatement(
|
|
727
|
-
undefined,
|
|
728
|
-
factory.createVariableDeclarationList(
|
|
729
|
-
[factory.createVariableDeclaration(name, undefined, undefined, initializer)],
|
|
730
|
-
ts.NodeFlags.Const,
|
|
731
|
-
),
|
|
732
|
-
)
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
/* `scope().<method>(...args)` — the reactive method routed onto the ambient scope. */
|
|
736
|
-
function scopeMethodCall(method: string, args: readonly ts.Expression[]): ts.CallExpression {
|
|
737
|
-
return factory.createCallExpression(
|
|
738
|
-
factory.createPropertyAccessExpression(
|
|
739
|
-
factory.createCallExpression(factory.createIdentifier('scope'), undefined, []),
|
|
740
|
-
method,
|
|
741
|
-
),
|
|
742
|
-
undefined,
|
|
743
|
-
args,
|
|
744
|
-
)
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
/* True for a read-only computed slot — `computed(compute)` with no write-through
|
|
748
|
-
`set`. The writable `computed(compute, set)` lens keeps a `.value` cell (handled by
|
|
749
|
-
the caller). */
|
|
750
|
-
function isComputedSlot(
|
|
751
|
-
declaration: ts.VariableDeclaration,
|
|
752
|
-
bindings: ReactiveImportBindings,
|
|
753
|
-
): boolean {
|
|
754
|
-
const initializer = declaration.initializer
|
|
755
|
-
return (
|
|
756
|
-
signalCallee(declaration, bindings) === 'computed' &&
|
|
757
|
-
initializer !== undefined &&
|
|
758
|
-
ts.isCallExpression(initializer) &&
|
|
759
|
-
initializer.arguments.length === 1
|
|
760
|
-
)
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
/* A `.value`-cell signal declaration — a `linked` or a `state(initial, transform)` —
|
|
764
|
-
routed onto the scope: `linked(seed)` → `const x = scope().linked(seed)`. The cell
|
|
765
|
-
stays a standalone non-serializing cell (its refs stay `name.value`); the rewrite only
|
|
766
|
-
removes the bare runtime import so the sole reactive surface is `scope()`. */
|
|
767
|
-
function cellStatements(
|
|
768
|
-
statement: ts.Statement,
|
|
769
|
-
bindings: ReactiveImportBindings,
|
|
770
|
-
signalNames: ReadonlySet<string>,
|
|
771
|
-
): ts.Statement[] | undefined {
|
|
772
|
-
if (!ts.isVariableStatement(statement)) {
|
|
773
|
-
return undefined
|
|
774
|
-
}
|
|
775
|
-
const statements: ts.Statement[] = []
|
|
776
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
777
|
-
const callee = signalCallee(declaration, bindings)
|
|
778
|
-
if (
|
|
779
|
-
!ts.isIdentifier(declaration.name) ||
|
|
780
|
-
(callee !== 'linked' && callee !== 'state') ||
|
|
781
|
-
isPlainStateSlot(declaration, bindings)
|
|
782
|
-
) {
|
|
783
|
-
return undefined
|
|
784
|
-
}
|
|
785
|
-
const args = (declaration.initializer as ts.CallExpression).arguments
|
|
786
|
-
/* `linked` wraps its seed argument (a bare value/`await`/stream expression becomes a
|
|
787
|
-
thunk, a literal `() => …` passes through) so the runtime primitive can route it to
|
|
788
|
-
an async cell; `state` is a value-taker — its args pass verbatim, never wrapped. */
|
|
789
|
-
if (callee === 'linked' && args[0] !== undefined) {
|
|
790
|
-
const wrapped = wrapSeed(args[0])
|
|
791
|
-
if (isAsyncSeed(wrapped)) {
|
|
792
|
-
warnPostAwaitReads(wrapped, signalNames)
|
|
793
|
-
}
|
|
794
|
-
statements.push(
|
|
795
|
-
constDeclaration(
|
|
796
|
-
declaration.name.text,
|
|
797
|
-
scopeMethodCall('linked', [wrapped, ...args.slice(1)]),
|
|
798
|
-
),
|
|
799
|
-
)
|
|
800
|
-
} else {
|
|
801
|
-
statements.push(constDeclaration(declaration.name.text, scopeMethodCall(callee, args)))
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
return statements
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
/* `let total = computed(compute)` → `const total = scope().derive("total", compute)`
|
|
808
|
-
— a computed doc slot whose reader the references lower to `total()`. */
|
|
809
|
-
function computedStatements(
|
|
810
|
-
statement: ts.Statement,
|
|
811
|
-
bindings: ReactiveImportBindings,
|
|
812
|
-
signalNames: ReadonlySet<string>,
|
|
813
|
-
isEagerStreamComputed: EagerStreamPredicate,
|
|
814
|
-
isPromiseComputed: EagerStreamPredicate,
|
|
815
|
-
): ts.Statement[] | undefined {
|
|
816
|
-
if (!ts.isVariableStatement(statement)) {
|
|
817
|
-
return undefined
|
|
818
|
-
}
|
|
819
|
-
const statements: ts.Statement[] = []
|
|
820
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
821
|
-
if (
|
|
822
|
-
!ts.isIdentifier(declaration.name) ||
|
|
823
|
-
signalCallee(declaration, bindings) !== 'computed' ||
|
|
824
|
-
!isComputedSlot(declaration, bindings)
|
|
825
|
-
) {
|
|
826
|
-
return undefined
|
|
827
|
-
}
|
|
828
|
-
const name = declaration.name.text
|
|
829
|
-
const argument = seedArgument(declaration)
|
|
830
|
-
/* The seed thunk: a wrapped argument (bare expr / `await` / literal thunk), or an arg-
|
|
831
|
-
less `computed()` degenerating to `() => undefined`. */
|
|
832
|
-
const wrapped =
|
|
833
|
-
argument === undefined
|
|
834
|
-
? factory.createArrowFunction(
|
|
835
|
-
undefined,
|
|
836
|
-
undefined,
|
|
837
|
-
[],
|
|
838
|
-
undefined,
|
|
839
|
-
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
|
|
840
|
-
factory.createIdentifier('undefined'),
|
|
841
|
-
)
|
|
842
|
-
: wrapSeed(argument)
|
|
843
|
-
if (isAsyncSeed(wrapped)) {
|
|
844
|
-
/* Async seed → the eager async cell (`AsyncComputed`, read via `$$readCell`), the
|
|
845
|
-
runtime unwraps the promise. `await` in the thunk body → BLOCKING (joins the SSR
|
|
846
|
-
barrier, resolves inline, client suspends its render region); async modifier with NO
|
|
847
|
-
await → STREAMING (ships pending, resolves on the client) — ADR-0042 D6. Routed
|
|
848
|
-
through `trackedComputed(thunk, streaming)` (same createAsyncCell for an async thunk)
|
|
849
|
-
to carry the flag, matching the template-injected path. */
|
|
850
|
-
warnPostAwaitReads(wrapped, signalNames)
|
|
851
|
-
const streaming = argument === undefined || !isBlockingSeed(argument)
|
|
852
|
-
statements.push(
|
|
853
|
-
constDeclaration(
|
|
854
|
-
name,
|
|
855
|
-
scopeMethodCall('trackedComputed', [
|
|
856
|
-
wrapped,
|
|
857
|
-
streaming ? factory.createTrue() : factory.createFalse(),
|
|
858
|
-
]),
|
|
859
|
-
),
|
|
860
|
-
)
|
|
861
|
-
} else if (argument !== undefined && isPromiseComputed(declaration)) {
|
|
862
|
-
/* Type-directed PROMISE seed (ADR-0023/0043): a bare `state.computed(getFoo())` whose
|
|
863
|
-
seed resolves to a promise. Wrap it as `async () => await (seed)` so createAsyncCell
|
|
864
|
-
unwraps the resolved value — a plain `() => getFoo()` thunk would fall to
|
|
865
|
-
trackedComputed's lazy opaque path (its probe self-identifies only a stream). Passed
|
|
866
|
-
`streaming: true` (the `true` arg): no author `await` → it does NOT join the SSR
|
|
867
|
-
blocking barrier — the shell ships pending and the client resolves + reactively
|
|
868
|
-
re-resolves, the ADR-0032 no-await tier. `await getFoo()` stays the BLOCKING form. */
|
|
869
|
-
statements.push(
|
|
870
|
-
constDeclaration(
|
|
871
|
-
name,
|
|
872
|
-
scopeMethodCall('trackedComputed', [
|
|
873
|
-
wrapAwaitSeed(argument),
|
|
874
|
-
factory.createTrue(),
|
|
875
|
-
]),
|
|
876
|
-
),
|
|
877
|
-
)
|
|
878
|
-
} else if (isEagerStreamComputed(declaration)) {
|
|
879
|
-
/* Stream seed → the eager `trackedComputed`, which probes the seed and auto-tracks a
|
|
880
|
-
stream (`AsyncComputed`) or falls back to a lazy computed; read via `$$readCell`.
|
|
881
|
-
Reached when the seed type resolves to `asyncIterable` (ADR-0023) or, fail-open with
|
|
882
|
-
no warm program, when it is a bare call/identifier (`isBareCallComputed`). */
|
|
883
|
-
statements.push(constDeclaration(name, scopeMethodCall('trackedComputed', [wrapped])))
|
|
884
|
-
} else {
|
|
885
|
-
/* Sync arithmetic/member/literal seed → the lazy `derive` doc slot, read as `name()`. */
|
|
886
|
-
statements.push(
|
|
887
|
-
constDeclaration(
|
|
888
|
-
name,
|
|
889
|
-
scopeMethodCall('derive', [factory.createStringLiteral(name), wrapped]),
|
|
890
|
-
),
|
|
891
|
-
)
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
return statements
|
|
895
|
-
}
|
|
896
|
-
|
|
897
|
-
/* True for `state(initial, transform)` — the write-coercion transform forces a
|
|
898
|
-
`.value` cell (writes run it) rather than a bare, serializable doc slot. */
|
|
899
|
-
function hasTransform(declaration: ts.VariableDeclaration): boolean {
|
|
900
|
-
const initializer = declaration.initializer
|
|
901
|
-
return (
|
|
902
|
-
initializer !== undefined &&
|
|
903
|
-
ts.isCallExpression(initializer) &&
|
|
904
|
-
initializer.arguments.length >= 2
|
|
905
|
-
)
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
/* A plain `state(initial)` with no transform → a serializable `model` doc slot;
|
|
909
|
-
every other reactive declaration is a `.value` cell. The one rule shared by the
|
|
910
|
-
name-collection pass and the slot lowering. */
|
|
911
|
-
function isPlainStateSlot(
|
|
912
|
-
declaration: ts.VariableDeclaration,
|
|
913
|
-
bindings: ReactiveImportBindings,
|
|
914
|
-
): boolean {
|
|
915
|
-
return signalCallee(declaration, bindings) === 'state' && !hasTransform(declaration)
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
/* One destructured prop: the local binding name, the parent prop key it reads, and
|
|
919
|
-
the optional `= default` expression (the fallback when the prop is absent). */
|
|
920
|
-
type PropsBinding = { local: string; key: string; initializer: ts.Expression | undefined }
|
|
921
|
-
|
|
922
|
-
/* The destructure of a `const {…, ...rest} = props()` pattern — its named bindings
|
|
923
|
-
plus an optional rest binding (the unconsumed props, gathered by `restProps`).
|
|
924
|
-
Nested destructuring has no single prop key, so it throws a legible compile error. */
|
|
925
|
-
function propsDestructure(declaration: ts.VariableDeclaration): {
|
|
926
|
-
bindings: PropsBinding[]
|
|
927
|
-
rest: string | undefined
|
|
928
|
-
} {
|
|
929
|
-
const pattern = declaration.name as ts.ObjectBindingPattern
|
|
930
|
-
const bindings: PropsBinding[] = []
|
|
931
|
-
let rest: string | undefined
|
|
932
|
-
for (const element of pattern.elements) {
|
|
933
|
-
if (element.dotDotDotToken !== undefined) {
|
|
934
|
-
if (!ts.isIdentifier(element.name)) {
|
|
935
|
-
throw new Error('abide: `...rest` in `props()` must bind a plain name')
|
|
936
|
-
}
|
|
937
|
-
rest = element.name.text
|
|
938
|
-
continue
|
|
939
|
-
}
|
|
940
|
-
if (!ts.isIdentifier(element.name)) {
|
|
941
|
-
throw new Error('abide: nested destructuring in `props()` is not supported')
|
|
942
|
-
}
|
|
943
|
-
bindings.push({
|
|
944
|
-
local: element.name.text,
|
|
945
|
-
key: propsBindingKey(element),
|
|
946
|
-
initializer: element.initializer,
|
|
947
|
-
})
|
|
948
|
-
}
|
|
949
|
-
return { bindings, rest }
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
/* The parent prop key a binding element reads — its rename source (`name: alias` →
|
|
953
|
-
`name`) or, absent a rename, the local name itself. */
|
|
954
|
-
function propsBindingKey(element: ts.BindingElement): string {
|
|
955
|
-
const propertyName = element.propertyName
|
|
956
|
-
if (propertyName === undefined) {
|
|
957
|
-
return (element.name as ts.Identifier).text
|
|
958
|
-
}
|
|
959
|
-
if (
|
|
960
|
-
ts.isIdentifier(propertyName) ||
|
|
961
|
-
ts.isStringLiteralLike(propertyName) ||
|
|
962
|
-
ts.isNumericLiteral(propertyName)
|
|
963
|
-
) {
|
|
964
|
-
return propertyName.text
|
|
965
|
-
}
|
|
966
|
-
throw new Error('abide: computed prop keys in `props()` destructuring are not supported')
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
/* If `statement` is a `const {…, ...rest} = props()` destructure, returns one binding per
|
|
970
|
-
named prop — plus a `const rest = restProps($props, [consumed])` for a rest binding;
|
|
971
|
-
otherwise undefined. A prop the component only READS is a read-only reactive computed
|
|
972
|
-
(`scope().derive("name", () => $props["key"]?.() ?? default)`, read as `name()`). A prop
|
|
973
|
-
it WRITES or forwards (in `writtenNames`) is a writable `.value` cell instead
|
|
974
|
-
(`$$bindableProp($props, "key", () => default)`, read/written as `name.value`), so a
|
|
975
|
-
two-way `bind:prop` on the parent flows back. The `?? default` / `fallback` thunk applies
|
|
976
|
-
the binding's `= default` when the prop is absent. */
|
|
977
|
-
function propsStatements(
|
|
978
|
-
statement: ts.Statement,
|
|
979
|
-
bindings: ReactiveImportBindings,
|
|
980
|
-
writtenNames: ReadonlySet<string>,
|
|
981
|
-
): ts.Statement[] | undefined {
|
|
982
|
-
if (!ts.isVariableStatement(statement)) {
|
|
983
|
-
return undefined
|
|
984
|
-
}
|
|
985
|
-
const statements: ts.Statement[] = []
|
|
986
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
987
|
-
if (
|
|
988
|
-
signalCallee(declaration, bindings) !== 'props' ||
|
|
989
|
-
!ts.isObjectBindingPattern(declaration.name)
|
|
990
|
-
) {
|
|
991
|
-
return undefined
|
|
992
|
-
}
|
|
993
|
-
const { bindings: propBindings, rest } = propsDestructure(declaration)
|
|
994
|
-
for (const { local, key, initializer } of propBindings) {
|
|
995
|
-
/* A written/forwarded prop → `$$bindableProp($props, "key", () => default)`. */
|
|
996
|
-
if (writtenNames.has(local)) {
|
|
997
|
-
const args: ts.Expression[] = [
|
|
998
|
-
factory.createIdentifier('$props'),
|
|
999
|
-
factory.createStringLiteral(key),
|
|
1000
|
-
]
|
|
1001
|
-
if (initializer !== undefined) {
|
|
1002
|
-
args.push(
|
|
1003
|
-
factory.createArrowFunction(
|
|
1004
|
-
undefined,
|
|
1005
|
-
undefined,
|
|
1006
|
-
[],
|
|
1007
|
-
undefined,
|
|
1008
|
-
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
|
|
1009
|
-
factory.createParenthesizedExpression(initializer),
|
|
1010
|
-
),
|
|
1011
|
-
)
|
|
1012
|
-
}
|
|
1013
|
-
statements.push(
|
|
1014
|
-
constDeclaration(
|
|
1015
|
-
local,
|
|
1016
|
-
factory.createCallExpression(
|
|
1017
|
-
factory.createIdentifier('$$bindableProp'),
|
|
1018
|
-
undefined,
|
|
1019
|
-
args,
|
|
1020
|
-
),
|
|
1021
|
-
),
|
|
1022
|
-
)
|
|
1023
|
-
continue
|
|
1024
|
-
}
|
|
1025
|
-
/* `$props["key"]?.()` — the parent thunk, optionally called. */
|
|
1026
|
-
const read = factory.createCallChain(
|
|
1027
|
-
factory.createElementAccessExpression(
|
|
1028
|
-
factory.createIdentifier('$props'),
|
|
1029
|
-
factory.createStringLiteral(key),
|
|
1030
|
-
),
|
|
1031
|
-
factory.createToken(ts.SyntaxKind.QuestionDotToken),
|
|
1032
|
-
undefined,
|
|
1033
|
-
[],
|
|
1034
|
-
)
|
|
1035
|
-
/* `?? default` only when the binding declared a `= default` fallback. */
|
|
1036
|
-
const body =
|
|
1037
|
-
initializer === undefined
|
|
1038
|
-
? read
|
|
1039
|
-
: factory.createBinaryExpression(
|
|
1040
|
-
read,
|
|
1041
|
-
factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
|
|
1042
|
-
factory.createParenthesizedExpression(initializer),
|
|
1043
|
-
)
|
|
1044
|
-
const thunk = factory.createArrowFunction(
|
|
1045
|
-
undefined,
|
|
1046
|
-
undefined,
|
|
1047
|
-
[],
|
|
1048
|
-
undefined,
|
|
1049
|
-
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
|
|
1050
|
-
body,
|
|
1051
|
-
)
|
|
1052
|
-
statements.push(
|
|
1053
|
-
constDeclaration(
|
|
1054
|
-
local,
|
|
1055
|
-
scopeMethodCall('derive', [factory.createStringLiteral(local), thunk]),
|
|
1056
|
-
),
|
|
1057
|
-
)
|
|
1058
|
-
}
|
|
1059
|
-
/* The rest bag gathers every prop not named above (and not `children`). */
|
|
1060
|
-
if (rest !== undefined) {
|
|
1061
|
-
const consumed = propBindings.map((binding) => factory.createStringLiteral(binding.key))
|
|
1062
|
-
statements.push(
|
|
1063
|
-
constDeclaration(
|
|
1064
|
-
rest,
|
|
1065
|
-
factory.createCallExpression(
|
|
1066
|
-
factory.createIdentifier('$$restProps'),
|
|
1067
|
-
undefined,
|
|
1068
|
-
[
|
|
1069
|
-
factory.createIdentifier('$props'),
|
|
1070
|
-
factory.createArrayLiteralExpression(consumed),
|
|
1071
|
-
],
|
|
1072
|
-
),
|
|
1073
|
-
),
|
|
1074
|
-
)
|
|
1075
|
-
}
|
|
1076
|
-
}
|
|
1077
|
-
return statements
|
|
1078
|
-
}
|
|
1079
|
-
|
|
1080
|
-
/* If `statement` declares `state(...)` bindings, returns `model.<name> = <init>`
|
|
1081
|
-
assignment statements (one per declaration); otherwise undefined. */
|
|
1082
|
-
function stateAssignmentStatements(
|
|
1083
|
-
statement: ts.Statement,
|
|
1084
|
-
bindings: ReactiveImportBindings,
|
|
1085
|
-
): ts.Statement[] | undefined {
|
|
1086
|
-
if (!ts.isVariableStatement(statement)) {
|
|
1087
|
-
return undefined
|
|
1088
|
-
}
|
|
1089
|
-
const statements: ts.Statement[] = []
|
|
1090
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
1091
|
-
if (!ts.isIdentifier(declaration.name) || !isPlainStateSlot(declaration, bindings)) {
|
|
1092
|
-
/* Only a plain `state(initial)` becomes a slot; `state(initial, transform)`
|
|
1093
|
-
(and everything else) is a `.value` cell — pass it through so the
|
|
1094
|
-
runtime call (and its transform) survives. */
|
|
1095
|
-
return undefined
|
|
1096
|
-
}
|
|
1097
|
-
const initial =
|
|
1098
|
-
(declaration.initializer as ts.CallExpression).arguments[0] ??
|
|
1099
|
-
factory.createIdentifier('undefined')
|
|
1100
|
-
statements.push(
|
|
1101
|
-
factory.createExpressionStatement(
|
|
1102
|
-
factory.createAssignment(
|
|
1103
|
-
factory.createPropertyAccessExpression(
|
|
1104
|
-
factory.createIdentifier('$$model'),
|
|
1105
|
-
declaration.name.text,
|
|
1106
|
-
),
|
|
1107
|
-
initial,
|
|
1108
|
-
),
|
|
1109
|
-
),
|
|
1110
|
-
)
|
|
1111
|
-
}
|
|
1112
|
-
return statements
|
|
1113
|
-
}
|