@abide/abide 0.58.0 → 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 -1781
- 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 -973
- 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/adoptRange.ts +0 -27
- 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 -69
- 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 -129
- package/src/lib/ui/dom/mountRange.ts +0 -48
- 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 -88
- 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 -18
- 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,903 +0,0 @@
|
|
|
1
|
-
import { assertExhaustive } from '../../shared/assertExhaustive.ts'
|
|
2
|
-
import { HOLE_ATTRIBUTE } from '../runtime/HOLE_ATTRIBUTE.ts'
|
|
3
|
-
import { OUTLET_TAG } from '../runtime/OUTLET_TAG.ts'
|
|
4
|
-
import { ANCHOR } from '../runtime/RANGE_MARKER.ts'
|
|
5
|
-
import { asOutlet } from './asOutlet.ts'
|
|
6
|
-
import { awaitPlan } from './awaitPlan.ts'
|
|
7
|
-
import { awaitSubjectExpr } from './awaitSubjectExpr.ts'
|
|
8
|
-
import { bindListenEvent } from './bindListenEvent.ts'
|
|
9
|
-
import { componentOrdinals } from './componentOrdinals.ts'
|
|
10
|
-
import { composeProps } from './composeProps.ts'
|
|
11
|
-
import { eachPlan } from './eachPlan.ts'
|
|
12
|
-
import { elementPlan } from './elementPlan.ts'
|
|
13
|
-
import { groupBindParts } from './groupBindParts.ts'
|
|
14
|
-
import { ifPlan } from './ifPlan.ts'
|
|
15
|
-
import { interpolatedTemplateLiteral } from './interpolatedTemplateLiteral.ts'
|
|
16
|
-
import { isControlFlow } from './isControlFlow.ts'
|
|
17
|
-
import { isPlainIdentifier } from './isPlainIdentifier.ts'
|
|
18
|
-
import { isWhitespaceText } from './isWhitespaceText.ts'
|
|
19
|
-
import { lowerContext } from './lowerContext.ts'
|
|
20
|
-
import { makeVarNamer } from './makeVarNamer.ts'
|
|
21
|
-
import { reactiveBinding } from './reactiveBinding.ts'
|
|
22
|
-
import { scopeAttr } from './scopeAttr.ts'
|
|
23
|
-
import { skeletonContext } from './skeletonContext.ts'
|
|
24
|
-
import { snippetPlan } from './snippetPlan.ts'
|
|
25
|
-
import { spreadExcludedNames } from './spreadExcludedNames.ts'
|
|
26
|
-
import { staticAttr } from './staticAttr.ts'
|
|
27
|
-
import { staticAttrValue } from './staticAttrValue.ts'
|
|
28
|
-
import { staticTextPart } from './staticTextPart.ts'
|
|
29
|
-
import { switchPlan } from './switchPlan.ts'
|
|
30
|
-
import { tryPlan } from './tryPlan.ts'
|
|
31
|
-
import type { Binding } from './types/Binding.ts'
|
|
32
|
-
import type { ShadowKind } from './types/ShadowKind.ts'
|
|
33
|
-
import type { TemplateNode } from './types/TemplateNode.ts'
|
|
34
|
-
import { VOID_TAGS } from './VOID_TAGS.ts'
|
|
35
|
-
import { withBindings } from './withBindings.ts'
|
|
36
|
-
|
|
37
|
-
/* The skeleton positioning anchor a control-flow block / component / slot / outlet
|
|
38
|
-
stamps into its skeleton markup, sourced from the same `ANCHOR` wire-alphabet constant
|
|
39
|
-
the client's anchor scan (`skeleton`) matches — so the markup the build clones and the
|
|
40
|
-
markup the scan reads can never drift on a literal. */
|
|
41
|
-
const ANCHOR_COMMENT = `<!--${ANCHOR}-->`
|
|
42
|
-
|
|
43
|
-
/*
|
|
44
|
-
Generates the build statements for a parsed template: element creation, static
|
|
45
|
-
attributes, reactive `attr`/`text` bindings, `on` listeners, keyed `each`, and
|
|
46
|
-
conditional `when`. Every embedded expression is first rewritten from the signal
|
|
47
|
-
surface (`count` → `model.count`) and then lowered to the doc patch/read API
|
|
48
|
-
(cell-hoisting runs over the whole result afterwards). The output operates on
|
|
49
|
-
`hostVar` and expects the `$$`-aliased dom bindings (`$$watch`, `$$each`, …)
|
|
50
|
-
and the component's `$$model` (emitted by `desugarSignals`) in scope — the body
|
|
51
|
-
the component compiler wraps and hoists cells into.
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
/* A JS-identifier-safe frame name from an authored construct label (an attribute name
|
|
55
|
-
like `aria-label`, a bound property). Non-identifier chars → `_`; a leading digit gets
|
|
56
|
-
an `_` prefix; empty falls back to `thunk`. Callers prefix the label (`attr_`/`bind_`),
|
|
57
|
-
so the result is never a bare reserved word. */
|
|
58
|
-
function thunkName(label: string): string {
|
|
59
|
-
const safe = label.replace(/[^A-Za-z0-9_$]/g, '_').replace(/^(?=\d)/, '_')
|
|
60
|
-
return safe === '' ? 'thunk' : safe
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/* Names a reactive thunk so a stack frame reads `name@File.abide:line` instead of
|
|
64
|
-
`(anonymous)` — disambiguating which binding a frame is when several share a line. Emits
|
|
65
|
-
a named function expression (the only form whose name a debugger displays); the named
|
|
66
|
-
bodies never reference `this`/`arguments`, so the arrow→function swap is behaviour-safe,
|
|
67
|
-
and minify strips the name, so it costs nothing in production. */
|
|
68
|
-
function namedThunk(name: string, body: string): string {
|
|
69
|
-
return `function ${thunkName(name)}() { ${body} }`
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function generateBuild(
|
|
73
|
-
nodes: TemplateNode[],
|
|
74
|
-
hostVar: string,
|
|
75
|
-
stateNames: ReadonlySet<string>,
|
|
76
|
-
derivedNames: ReadonlySet<string>,
|
|
77
|
-
computedNames: ReadonlySet<string>,
|
|
78
|
-
isLayout = false,
|
|
79
|
-
/* `linked` / async `computed` names, lowered to `$$readCell(name)` in template exprs — one
|
|
80
|
-
read form whose pause-vs-peek (a blocking `await` cell suspends the region; a streaming
|
|
81
|
-
cell peeks `undefined`) is decided at runtime by the cell's own `blocking` bit (ADR-0042). */
|
|
82
|
-
cellReadNames: ReadonlySet<string> = new Set(),
|
|
83
|
-
): string {
|
|
84
|
-
const nextVar = makeVarNamer()
|
|
85
|
-
|
|
86
|
-
/* In a layout, `<slot/>` outlets are rewritten to `OUTLET_TAG` elements up front
|
|
87
|
-
(`asOutlet`) so the static-clone path carries them as ordinary structure. `asOutlet`
|
|
88
|
-
CLONES every element it descends through and drops the slot's anchor hole, so the
|
|
89
|
-
shared skeleton context must walk THIS rewritten tree — the one the build traversal
|
|
90
|
-
below reads — or its node-keyed hole indices key the originals and never match. */
|
|
91
|
-
const rootNodes = isLayout ? nodes.map(asOutlet) : nodes
|
|
92
|
-
|
|
93
|
-
/* Per-node skeleton position from the SAME pass the SSR back-end reads — so the client's
|
|
94
|
-
anchor/text-leaf decisions consult one source of truth instead of re-deriving the
|
|
95
|
-
position structurally (the drift the shared context exists to prevent). */
|
|
96
|
-
const { markText, elIndex, anIndex } = skeletonContext(rootNodes)
|
|
97
|
-
|
|
98
|
-
/* Each `<Child/>` mount site's render-path ordinal, from the ONE shared document-order
|
|
99
|
-
walk the SSR back-end also reads (`componentOrdinals`) — so two same-type siblings get
|
|
100
|
-
distinct, SSR-congruent segments regardless of either back-end's emission order. The
|
|
101
|
-
returned lookup throws on a miss (a structural divergence from the shared walk). */
|
|
102
|
-
const childOrdinal = componentOrdinals(rootNodes)
|
|
103
|
-
|
|
104
|
-
/* The hole's index, assigned by the shared skeletonContext walk — the sole numberer. A
|
|
105
|
-
missing entry means this back-end reached a hole the shared walk didn't number: a
|
|
106
|
-
structural divergence between the two, surfaced loudly at compile time rather than as a
|
|
107
|
-
runtime hydration desync. */
|
|
108
|
-
function holeIndex(map: WeakMap<object, number>, key: object): number {
|
|
109
|
-
const index = map.get(key)
|
|
110
|
-
if (index === undefined) {
|
|
111
|
-
throw new Error('[abide] skeleton hole not numbered by the shared positional walk')
|
|
112
|
-
}
|
|
113
|
-
return index
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/* The shared signal→`model` lowering + branch-scoped nested-script deref scope. */
|
|
117
|
-
const {
|
|
118
|
-
expression: lowerExpression,
|
|
119
|
-
statement: lowerStatement,
|
|
120
|
-
script: lowerScript,
|
|
121
|
-
withNestedScripts,
|
|
122
|
-
withShadow,
|
|
123
|
-
isShadowed,
|
|
124
|
-
bindRead,
|
|
125
|
-
bindWrite,
|
|
126
|
-
} = lowerContext(stateNames, derivedNames, computedNames, cellReadNames)
|
|
127
|
-
|
|
128
|
-
/* Maps a plan `Binding`'s classification to the client `ShadowKind`: a `reactive` value
|
|
129
|
-
derefs as a `.value` cell (`derived`), a `plain` value as the bare local (`plain`). The
|
|
130
|
-
injected mapping `withBindings` registers every binding through — the one place a name's
|
|
131
|
-
kind is chosen on this back-end. */
|
|
132
|
-
const buildBindingKind = (binding: Binding): ShadowKind =>
|
|
133
|
-
binding.classification === 'reactive' ? 'derived' : 'plain'
|
|
134
|
-
|
|
135
|
-
/* Emits the wiring for one non-static attribute against an already-obtained skeleton
|
|
136
|
-
element var — reactive `attr`, `on` listener, `attach`, or a two-way `bind`. */
|
|
137
|
-
function dynamicAttr(
|
|
138
|
-
node: Extract<TemplateNode, { kind: 'element' }>,
|
|
139
|
-
attr: Extract<
|
|
140
|
-
(typeof node.attrs)[number],
|
|
141
|
-
{
|
|
142
|
-
kind:
|
|
143
|
-
| 'expression'
|
|
144
|
-
| 'interpolated'
|
|
145
|
-
| 'event'
|
|
146
|
-
| 'attach'
|
|
147
|
-
| 'bind'
|
|
148
|
-
| 'class'
|
|
149
|
-
| 'style'
|
|
150
|
-
}
|
|
151
|
-
>,
|
|
152
|
-
varName: string,
|
|
153
|
-
): string {
|
|
154
|
-
if (attr.kind === 'expression') {
|
|
155
|
-
return `$$attr(${varName}, ${JSON.stringify(attr.name)}, ${namedThunk(`attr_${attr.name}`, `return (${lowerExpression(attr.code)})`)});\n`
|
|
156
|
-
}
|
|
157
|
-
/* `name="literal {expr}"` — the template-literal concatenation bound as a reactive
|
|
158
|
-
string attribute (always present). A class/style with directives is merged
|
|
159
|
-
upstream of this dispatch, so it never reaches here. */
|
|
160
|
-
if (attr.kind === 'interpolated') {
|
|
161
|
-
return `$$attr(${varName}, ${JSON.stringify(attr.name)}, ${namedThunk(`attr_${attr.name}`, `return (${lowerExpression(interpolatedTemplateLiteral(attr.parts))})`)});\n`
|
|
162
|
-
}
|
|
163
|
-
if (attr.kind === 'event') {
|
|
164
|
-
return `$$on(${varName}, ${JSON.stringify(attr.event)}, (${lowerExpression(attr.code)}));\n`
|
|
165
|
-
}
|
|
166
|
-
if (attr.kind === 'attach') {
|
|
167
|
-
return `$$attach(${varName}, (${lowerExpression(attr.code)}));\n`
|
|
168
|
-
}
|
|
169
|
-
/* `class:<name>` — toggle the class by truthiness; surgical, no element re-render.
|
|
170
|
-
Layers on top of any static `class="…"` in the skeleton (classList is additive). */
|
|
171
|
-
if (attr.kind === 'class') {
|
|
172
|
-
return `$$watch(${namedThunk(`class_${attr.name}`, `${varName}.classList.toggle(${JSON.stringify(attr.name)}, !!(${lowerExpression(attr.code)}));`)});\n`
|
|
173
|
-
}
|
|
174
|
-
/* `style:<property>` — write one inline style / custom property reactively. */
|
|
175
|
-
if (attr.kind === 'style') {
|
|
176
|
-
return `$$watch(${namedThunk(`style_${attr.property}`, `${varName}.style.setProperty(${JSON.stringify(attr.property)}, String(${lowerExpression(attr.code)}));`)});\n`
|
|
177
|
-
}
|
|
178
|
-
if (attr.property === 'group') {
|
|
179
|
-
/* Grouped two-way: radio binds the path to the single checked `value`;
|
|
180
|
-
checkbox treats the path as an array, adding/removing `value` on toggle.
|
|
181
|
-
Membership reads the array via the lowered path and calls native
|
|
182
|
-
`.includes`/`.indexOf` (the doc API has no array search); mutations go
|
|
183
|
-
through `push`/`delete`, which lower to `add`/`remove` patches that the
|
|
184
|
-
doc reindexes. */
|
|
185
|
-
const { valueCode, isRadio } = groupBindParts(node)
|
|
186
|
-
const value = lowerExpression(valueCode)
|
|
187
|
-
if (isRadio) {
|
|
188
|
-
return (
|
|
189
|
-
`$$watch(${namedThunk('bind_group', `${varName}.checked = (${lowerExpression(attr.code)}) === (${value});`)});\n` +
|
|
190
|
-
`$$on(${varName}, "change", () => { if (${varName}.checked) { ${lowerStatement(`${attr.code} = ${valueCode}`)} } });\n`
|
|
191
|
-
)
|
|
192
|
-
}
|
|
193
|
-
return (
|
|
194
|
-
`$$watch(${namedThunk('bind_group', `${varName}.checked = (${lowerExpression(attr.code)}).includes(${value});`)});\n` +
|
|
195
|
-
`$$on(${varName}, "change", () => { const $groupValue = ${value}; if (${varName}.checked) { if (!(${lowerExpression(attr.code)}).includes($groupValue)) { ${lowerStatement(`${attr.code}.push($groupValue)`)} } } else { const $groupIndex = (${lowerExpression(attr.code)}).indexOf($groupValue); if ($groupIndex !== -1) { ${lowerStatement(`delete ${attr.code}[$groupIndex]`)} } } });\n`
|
|
196
|
-
)
|
|
197
|
-
}
|
|
198
|
-
/* `<select bind:value>` — options frequently mount after this binding runs (a
|
|
199
|
-
`{#for}` child, an async list) and the browser drops a `value` set naming a
|
|
200
|
-
not-yet-present option, so route to `bindSelectValue`: it re-applies on option
|
|
201
|
-
changes via a MutationObserver and switches single/array semantics on `multiple`
|
|
202
|
-
(`<select multiple>` binds an array of the selected option values). The read/write
|
|
203
|
-
are the same lvalue/accessor forms every bind uses; the helper decides how to
|
|
204
|
-
apply and collect them. */
|
|
205
|
-
if (attr.property === 'value' && node.tag === 'select') {
|
|
206
|
-
const multiple = staticAttrValue(node, 'multiple') !== undefined
|
|
207
|
-
return `$$bindSelectValue(${varName}, () => (${bindRead(attr.code)}), ($selectValue) => { ${bindWrite(attr.code, '$selectValue')} }, ${multiple});\n`
|
|
208
|
-
}
|
|
209
|
-
/* Two-way: drive the property from the bind target, and write it back on the
|
|
210
|
-
property's native event (`input` for most fields, but `toggle` for
|
|
211
|
-
`<details open>`, `change` for checked/select). An lvalue target reads as
|
|
212
|
-
itself and writes by assignment; an accessor object (`{ get, set }`) reads via
|
|
213
|
-
`.get()` and writes via `.set(v)` — see `bindRead`/`bindWrite`. A numeric input
|
|
214
|
-
(`type="number"`/`"range"`) reports its edit as a string on `el.value`, which
|
|
215
|
-
would corrupt number-typed state; source the write-back from `valueAsNumber`
|
|
216
|
-
instead (empty field → `undefined`), gated on a statically-known type. */
|
|
217
|
-
const event = bindListenEvent(attr.property)
|
|
218
|
-
const staticType = staticAttrValue(node, 'type')
|
|
219
|
-
const isNumericInput =
|
|
220
|
-
attr.property === 'value' &&
|
|
221
|
-
node.tag === 'input' &&
|
|
222
|
-
(staticType === 'number' || staticType === 'range')
|
|
223
|
-
const writeSource = isNumericInput
|
|
224
|
-
? `(${varName}.value === '' ? undefined : ${varName}.valueAsNumber)`
|
|
225
|
-
: `${varName}.${attr.property}`
|
|
226
|
-
return (
|
|
227
|
-
`$$watch(${namedThunk(`bind_${attr.property}`, `${varName}.${attr.property} = ${bindRead(attr.code)};`)});\n` +
|
|
228
|
-
`$$on(${varName}, ${JSON.stringify(event)}, () => { ${bindWrite(attr.code, writeSource)} });\n`
|
|
229
|
-
)
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/* Renders a skeletonable node to its marker-stamped skeleton markup, appending each
|
|
233
|
-
hole's wiring to `binds`. Children are walked in document order, so the holes number
|
|
234
|
-
in the order the runtime produces them: element holes (reactive attr / text-leaf
|
|
235
|
-
text) by element-only path (`sk.el`, pre-order); anchor holes (interleaved reactive
|
|
236
|
-
text, control-flow blocks, slots) by document-order scan (`sk.an`). A control-flow
|
|
237
|
-
block or slot drops an `<!--a-->` anchor at its position and mounts there (see
|
|
238
|
-
`anchorCursor`), so it can sit ANYWHERE among static siblings. Static descendants are
|
|
239
|
-
plain markup. */
|
|
240
|
-
/* The skeleton anchor var for an anchor-positioned node: declares `an<n> = sk.an[i]` as
|
|
241
|
-
a bind and returns the var name. The three anchored kinds (control-flow/component,
|
|
242
|
-
outlet, slot) all mount at this `<!--a-->` anchor, so they number through this ONE
|
|
243
|
-
site (`anIndex`) — no per-branch copy of the lookup to drift from the runtime scan. */
|
|
244
|
-
function anchorVarAt(node: TemplateNode, skVar: string, binds: string[]): string {
|
|
245
|
-
const anchorVar = nextVar('an')
|
|
246
|
-
binds.push(`const ${anchorVar} = ${skVar}.an[${holeIndex(anIndex, node)}];\n`)
|
|
247
|
-
return anchorVar
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
function skeletonMarkup(node: TemplateNode, skVar: string, binds: string[]): string {
|
|
251
|
-
if (node.kind === 'text') {
|
|
252
|
-
/* Reactive text reached here is INTERLEAVED with element siblings (a text-leaf
|
|
253
|
-
is bound via `generateChildren` instead). It can't be element-positioned, so
|
|
254
|
-
it gets an `<!--a-->` anchor — kept in both SSR and client (like a control-flow
|
|
255
|
-
range marker), located by document-order scan (`sk.an`). */
|
|
256
|
-
return node.parts
|
|
257
|
-
.map((part) => {
|
|
258
|
-
if (part.kind === 'static') {
|
|
259
|
-
return staticTextPart(part.value)
|
|
260
|
-
}
|
|
261
|
-
binds.push(
|
|
262
|
-
`$$appendTextAt(${skVar}.an[${holeIndex(anIndex, part)}], ${namedThunk('text', `return (${lowerExpression(part.code)})`)});\n`,
|
|
263
|
-
)
|
|
264
|
-
return ANCHOR_COMMENT
|
|
265
|
-
})
|
|
266
|
-
.join('')
|
|
267
|
-
}
|
|
268
|
-
if (isControlFlow(node) || node.kind === 'component') {
|
|
269
|
-
/* A control-flow block OR a child component at its position: an `<!--a-->` anchor
|
|
270
|
-
in the clone, its content mounted as a marker-bounded range at it. `anchorCursor`
|
|
271
|
-
parks the hydrate cursor past the anchor and returns the create insertion
|
|
272
|
-
reference; the parent is the located element the anchor was cloned into
|
|
273
|
-
(`anchor.parentNode`). A component takes an anchor like a block — no wrapper
|
|
274
|
-
element — so its root lays out as a true direct child of `anchor.parentNode`. */
|
|
275
|
-
const anchorVar = anchorVarAt(node, skVar, binds)
|
|
276
|
-
binds.push(
|
|
277
|
-
generateChild(node, `${anchorVar}.parentNode`, `$$anchorCursor(${anchorVar})`),
|
|
278
|
-
)
|
|
279
|
-
return ANCHOR_COMMENT
|
|
280
|
-
}
|
|
281
|
-
if (node.kind === 'script') {
|
|
282
|
-
/* A nested `<script>` (scoped reactive block) emits no markup — its lowered body
|
|
283
|
-
runs as a bind, in document order, so its signals are declared before the later
|
|
284
|
-
siblings that deref them (the enclosing `withNestedScripts` puts those names in
|
|
285
|
-
scope). */
|
|
286
|
-
binds.push(`${lowerScript(node.code)}\n`)
|
|
287
|
-
return ''
|
|
288
|
-
}
|
|
289
|
-
if (node.kind === 'snippet') {
|
|
290
|
-
/* A `<template name>` snippet declares a hoisted builder, appending nothing here —
|
|
291
|
-
`{name(args)}` mounts it. Emit the declaration as a bind. */
|
|
292
|
-
binds.push(generateSnippet(node))
|
|
293
|
-
return ''
|
|
294
|
-
}
|
|
295
|
-
if (node.kind !== 'element') {
|
|
296
|
-
return '' // <style> emits no markup
|
|
297
|
-
}
|
|
298
|
-
if (node.tag === OUTLET_TAG) {
|
|
299
|
-
/* A layout's router fill point at its position: an `<!--a-->` anchor, an empty
|
|
300
|
-
`outlet` boundary the router fills with the next chain layer (`fillBoundary`).
|
|
301
|
-
No wrapper element — the filled child lays out as a direct child of the parent. */
|
|
302
|
-
const anchorVar = anchorVarAt(node, skVar, binds)
|
|
303
|
-
binds.push(`$$outlet(${anchorVar}.parentNode, $$anchorCursor(${anchorVar}));\n`)
|
|
304
|
-
return ANCHOR_COMMENT
|
|
305
|
-
}
|
|
306
|
-
if (node.tag === 'slot') {
|
|
307
|
-
/* A `<slot>` outlet at its position: an `<!--a-->` anchor, the slot's content
|
|
308
|
-
mounted as a marker-bounded range (`mountSlot`) so it positions like a block. */
|
|
309
|
-
const anchorVar = anchorVarAt(node, skVar, binds)
|
|
310
|
-
const hostVar = nextVar('host')
|
|
311
|
-
binds.push(
|
|
312
|
-
`$$mountSlot(${anchorVar}.parentNode, (${hostVar}) => {\n${generateSlot(node, hostVar)}}, $$anchorCursor(${anchorVar}));\n`,
|
|
313
|
-
)
|
|
314
|
-
return ANCHOR_COMMENT
|
|
315
|
-
}
|
|
316
|
-
const hasReactiveAttr = node.attrs.some((attr) => attr.kind !== 'static')
|
|
317
|
-
const reactiveTextChild = node.children.find(
|
|
318
|
-
(child) => child.kind === 'text' && child.parts.some((part) => part.kind !== 'static'),
|
|
319
|
-
)
|
|
320
|
-
/* A text-leaf (only text/style children) with reactive text binds marker-free via
|
|
321
|
-
`generateChildren` on the located element; otherwise reactive text is interleaved
|
|
322
|
-
and uses `<!--a-->` anchors during the child recursion below. The shared context
|
|
323
|
-
records the leaf's text as NOT interleaved (`markText` false) — read that flag the
|
|
324
|
-
SSR back-end also reads, rather than re-deriving leaf-ness via `isTextLeaf` here. */
|
|
325
|
-
const textLeafBind =
|
|
326
|
-
reactiveTextChild !== undefined && markText.get(reactiveTextChild) === false
|
|
327
|
-
/* The shared per-element emission DECISION (one site both back-ends consult): each
|
|
328
|
-
attribute classified + tagged with its merge status, the class/style/directive merge
|
|
329
|
-
folded in, and void-tag status. The composed `classParts`/`styleParts` and the
|
|
330
|
-
merge triggers come from the same plan SSR renders, so neither the attribute set nor
|
|
331
|
-
the merged value can drift. Build still RENDERS each kind below as live wiring. */
|
|
332
|
-
const plan = elementPlan(node, lowerExpression)
|
|
333
|
-
let openTag = `<${node.tag}`
|
|
334
|
-
let elVar = ''
|
|
335
|
-
if (hasReactiveAttr || textLeafBind) {
|
|
336
|
-
/* The element is a located hole (for attr binds or text-leaf text). Take its
|
|
337
|
-
index BEFORE recursing, so holes number in pre-order — the order the runtime's
|
|
338
|
-
path walk produces them. */
|
|
339
|
-
elVar = nextVar('el')
|
|
340
|
-
binds.push(`const ${elVar} = ${skVar}.el[${holeIndex(elIndex, node)}];\n`)
|
|
341
|
-
openTag += ` ${HOLE_ATTRIBUTE}`
|
|
342
|
-
/* An interpolated (reactive) class/style base can't layer additive directive toggles
|
|
343
|
-
on top — re-setting the base would wipe them — so base + its directives collapse
|
|
344
|
-
into ONE effect computing the whole value (`mergeClassBuild`/`mergeStyleBuild`,
|
|
345
|
-
the build trigger); their attrs are then skipped (`mergedBuild`) in the dispatch
|
|
346
|
-
below. A STATIC base keeps the surgical-toggle model (the base sits in the cloned
|
|
347
|
-
skeleton). */
|
|
348
|
-
if (plan.merge.mergeClassBuild) {
|
|
349
|
-
binds.push(
|
|
350
|
-
`$$watch(${namedThunk('class_merge', `${elVar}.setAttribute("class", [${plan.merge.classParts.join(', ')}].filter(Boolean).join(' '));`)});\n`,
|
|
351
|
-
)
|
|
352
|
-
}
|
|
353
|
-
if (plan.merge.mergeStyleBuild) {
|
|
354
|
-
binds.push(
|
|
355
|
-
`$$watch(${namedThunk('style_merge', `${elVar}.setAttribute("style", [${plan.merge.styleParts.join(', ')}].filter(Boolean).join(';'));`)});\n`,
|
|
356
|
-
)
|
|
357
|
-
}
|
|
358
|
-
for (const { attr, mergedBuild } of plan.attrs) {
|
|
359
|
-
/* Skip the attrs already folded into a merged class/style effect. */
|
|
360
|
-
if (mergedBuild) {
|
|
361
|
-
continue
|
|
362
|
-
}
|
|
363
|
-
if (attr.kind === 'spread') {
|
|
364
|
-
/* `{...expr}` onto the element: each key binds as a reactive attribute
|
|
365
|
-
(or an `on<event>` function as a listener) via `spreadAttrs`, skipping
|
|
366
|
-
any key explicitly named on the element (the explicit attr wins). */
|
|
367
|
-
binds.push(
|
|
368
|
-
`$$spreadAttrs(${elVar}, ${namedThunk('spread', `return (${lowerExpression(attr.code)})`)}, ${JSON.stringify(spreadExcludedNames(node.attrs))});\n`,
|
|
369
|
-
)
|
|
370
|
-
} else if (attr.kind !== 'static') {
|
|
371
|
-
binds.push(dynamicAttr(node, attr, elVar))
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
for (const scope of node.scopes ?? []) {
|
|
376
|
-
openTag += scopeAttr(scope)
|
|
377
|
-
}
|
|
378
|
-
/* Static attrs sit in the cloned skeleton markup — emitted here regardless of whether
|
|
379
|
-
the element is a hole. A static class/style folded into a merged attribute (build
|
|
380
|
-
trigger) is skipped, since the merge effect re-sets the whole value. */
|
|
381
|
-
for (const { attr, mergedBuild } of plan.attrs) {
|
|
382
|
-
if (attr.kind === 'static' && !mergedBuild) {
|
|
383
|
-
openTag += staticAttr(attr.name, attr.value)
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
openTag += '>'
|
|
387
|
-
if (plan.isVoid) {
|
|
388
|
-
return openTag
|
|
389
|
-
}
|
|
390
|
-
if (textLeafBind) {
|
|
391
|
-
/* Clone the element empty, build its text on the located node with the
|
|
392
|
-
imperative path — handles static/reactive/snippet/raw-html text. */
|
|
393
|
-
binds.push(generateChildren(node.children, elVar))
|
|
394
|
-
return `${openTag}</${node.tag}>`
|
|
395
|
-
}
|
|
396
|
-
/* A nested `<script>` among the children scopes its bindings to this subtree (its
|
|
397
|
-
later siblings auto-deref them); pop after. */
|
|
398
|
-
const inner = withNestedScripts(node.children, () =>
|
|
399
|
-
node.children.map((child) => skeletonMarkup(child, skVar, binds)).join(''),
|
|
400
|
-
)
|
|
401
|
-
return `${openTag}${inner}</${node.tag}>`
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
/* Emits a skeletonable subtree via the skeleton path: a marker-stamped static
|
|
405
|
-
skeleton string (parsed once, cloned per mount) plus each hole's wiring against
|
|
406
|
-
its located node. */
|
|
407
|
-
function generateSkeleton(
|
|
408
|
-
node: Extract<TemplateNode, { kind: 'element' }>,
|
|
409
|
-
parentVar: string,
|
|
410
|
-
): string {
|
|
411
|
-
const skVar = nextVar('sk')
|
|
412
|
-
const binds: string[] = []
|
|
413
|
-
const html = skeletonMarkup(node, skVar, binds)
|
|
414
|
-
return `const ${skVar} = $$skeleton(${parentVar}, ${JSON.stringify(html)});\n${binds.join('')}`
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
/* Emits code appending `node` to `parentVar`. */
|
|
418
|
-
function generateChild(node: TemplateNode, parentVar: string, before = 'null'): string {
|
|
419
|
-
if (node.kind === 'script') {
|
|
420
|
-
return `${lowerScript(node.code)}\n`
|
|
421
|
-
}
|
|
422
|
-
/* A `<style>` emits no DOM — its CSS is bundled and its scope attribute is
|
|
423
|
-
already stamped onto the elements it covers (see `staticHtml`/`skeletonMarkup`). */
|
|
424
|
-
if (node.kind === 'style') {
|
|
425
|
-
return ''
|
|
426
|
-
}
|
|
427
|
-
if (node.kind === 'text') {
|
|
428
|
-
/* The non-whitespace parts share one merged SSR text node, so on hydrate
|
|
429
|
-
each must split off its own portion. Every consumer but the last passes
|
|
430
|
-
`splitAlways` so it leaves a node behind even on an exact-length consume
|
|
431
|
-
(e.g. an interpolation that renders empty) — the last keeps the cheaper
|
|
432
|
-
split-only-when-shorter path. */
|
|
433
|
-
const consumers = node.parts.filter(
|
|
434
|
-
(part) => part.kind !== 'static' || part.value.trim() !== '',
|
|
435
|
-
)
|
|
436
|
-
return consumers
|
|
437
|
-
.map((part, index) => {
|
|
438
|
-
const splitAlways = index < consumers.length - 1 ? ', true' : ''
|
|
439
|
-
return part.kind === 'static'
|
|
440
|
-
? `$$appendStatic(${parentVar}, ${JSON.stringify(part.value)}${splitAlways});\n`
|
|
441
|
-
: `$$appendText(${parentVar}, ${namedThunk('text', `return (${lowerExpression(part.code)})`)}${splitAlways});\n`
|
|
442
|
-
})
|
|
443
|
-
.join('')
|
|
444
|
-
}
|
|
445
|
-
if (node.kind === 'element' && node.tag === OUTLET_TAG) {
|
|
446
|
-
/* A standalone layout outlet (a top-level/element-nested `<slot/>` rewritten by
|
|
447
|
-
`asOutlet`, reached outside any skeleton): an empty `outlet` boundary at
|
|
448
|
-
`before`, no anchor — the router fills it with the next chain layer. */
|
|
449
|
-
return `$$outlet(${parentVar}, ${before});\n`
|
|
450
|
-
}
|
|
451
|
-
if (node.kind === 'element' && node.tag === 'slot') {
|
|
452
|
-
/* In a layout, `<slot/>` is the router's page outlet (`outlet` boundary the
|
|
453
|
-
router fills with the next chain layer). Top-level/element-nested layout slots
|
|
454
|
-
are rewritten to `OUTLET_TAG` up front by `asOutlet` and handled above; this
|
|
455
|
-
covers a layout slot reached inside a control-flow branch. */
|
|
456
|
-
if (isLayout) {
|
|
457
|
-
return `$$outlet(${parentVar}, ${before});\n`
|
|
458
|
-
}
|
|
459
|
-
return generateSlot(node, parentVar)
|
|
460
|
-
}
|
|
461
|
-
if (node.kind === 'element') {
|
|
462
|
-
/* Every bound element builds through the parser-backed skeleton (one clone +
|
|
463
|
-
located holes / anchors, correct foreign namespaces). A fully-static element
|
|
464
|
-
never reaches here — `generateChildren` coalesces it into a `cloneStatic` run —
|
|
465
|
-
so a non-slot element here always carries a hole and is skeletonable. */
|
|
466
|
-
return generateSkeleton(node, parentVar)
|
|
467
|
-
}
|
|
468
|
-
if (node.kind === 'if') {
|
|
469
|
-
return generateIf(node, parentVar, before)
|
|
470
|
-
}
|
|
471
|
-
if (node.kind === 'await') {
|
|
472
|
-
return generateAwait(node, parentVar, before)
|
|
473
|
-
}
|
|
474
|
-
if (node.kind === 'try') {
|
|
475
|
-
return generateTry(node, parentVar, before)
|
|
476
|
-
}
|
|
477
|
-
if (node.kind === 'branch') {
|
|
478
|
-
return '' // branches are consumed by their await block, never standalone
|
|
479
|
-
}
|
|
480
|
-
if (node.kind === 'component') {
|
|
481
|
-
/* A standalone component (top-level, or a bare child of a branch/row/slot) mounts
|
|
482
|
-
directly as a marker range on `parentVar` at `before` — no anchor, no wrapper,
|
|
483
|
-
same as a standalone control-flow block routes through `generateIf`/etc. */
|
|
484
|
-
return generateChildComponent(node, parentVar, before)
|
|
485
|
-
}
|
|
486
|
-
if (node.kind === 'switch') {
|
|
487
|
-
return generateSwitch(node, parentVar, before)
|
|
488
|
-
}
|
|
489
|
-
if (node.kind === 'case') {
|
|
490
|
-
return '' // cases are consumed by their switch/if, never standalone
|
|
491
|
-
}
|
|
492
|
-
if (node.kind === 'snippet') {
|
|
493
|
-
return generateSnippet(node)
|
|
494
|
-
}
|
|
495
|
-
if (node.kind === 'each') {
|
|
496
|
-
return generateEach(node, parentVar, before)
|
|
497
|
-
}
|
|
498
|
-
/* Every TemplateNode kind is handled above; `node` is `never` here. A new kind
|
|
499
|
-
reaching this point is a compiler gap — fail loud instead of silently routing
|
|
500
|
-
it to the wrong branch. */
|
|
501
|
-
return assertExhaustive(node, 'template node kind')
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
/* Builds a sibling list, coalescing maximal runs of fully-static element subtrees
|
|
505
|
-
into one `cloneStatic` clone (a single cloneNode in place of the N create/append
|
|
506
|
-
calls the imperative path would emit). Whitespace-only text is transparent — it
|
|
507
|
-
neither breaks a run nor adds markup, matching both back-ends dropping it. Every
|
|
508
|
-
other child flushes the pending run and builds imperatively, preserving order. */
|
|
509
|
-
function generateChildren(children: TemplateNode[], parentVar: string): string {
|
|
510
|
-
let code = ''
|
|
511
|
-
let runHtml = ''
|
|
512
|
-
const flush = (): void => {
|
|
513
|
-
if (runHtml !== '') {
|
|
514
|
-
code += `$$cloneStatic(${parentVar}, ${JSON.stringify(runHtml)});\n`
|
|
515
|
-
runHtml = ''
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
for (const child of children) {
|
|
519
|
-
if (isStaticCloneableElement(child)) {
|
|
520
|
-
runHtml += staticHtml(child)
|
|
521
|
-
} else if (!isWhitespaceText(child)) {
|
|
522
|
-
flush()
|
|
523
|
-
code += generateChild(child, parentVar)
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
flush()
|
|
527
|
-
return code
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
/* A snippet declaration: a hoisted function returning a `snippet`-branded builder
|
|
531
|
-
that appends its body into the host it is mounted on. The function closes over
|
|
532
|
-
the component scope (its `model`/cells); `args` are plain parameters bound by
|
|
533
|
-
the call. Appends nothing at the declaration site — `{name(args)}` mounts it. */
|
|
534
|
-
function generateSnippet(node: Extract<TemplateNode, { kind: 'snippet' }>): string {
|
|
535
|
-
const plan = snippetPlan(node)
|
|
536
|
-
/* `args` are plain call parameters, not component cells — `withBindings` registers the
|
|
537
|
-
plan's `plain` bindings so the body reads the bare local, shadowing a same-named
|
|
538
|
-
component signal rather than reading it. */
|
|
539
|
-
const body = withBindings(withShadow, plan.bindings, buildBindingKind, () =>
|
|
540
|
-
plan.children.map((child) => generateChild(child, '$host')).join(''),
|
|
541
|
-
)
|
|
542
|
-
return `function ${plan.name}(${plan.params ?? ''}) {\nreturn $$snippet(($host) => {\n${body}});\n}\n`
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
/* A switch: each `case` is `{ match: () => value, render }`, the default is
|
|
546
|
-
`{ match: undefined, render }`. */
|
|
547
|
-
function generateSwitch(
|
|
548
|
-
node: Extract<TemplateNode, { kind: 'switch' }>,
|
|
549
|
-
parentVar: string,
|
|
550
|
-
before: string,
|
|
551
|
-
): string {
|
|
552
|
-
const cases = switchPlan(node)
|
|
553
|
-
.cases.map((branch) => {
|
|
554
|
-
const match =
|
|
555
|
-
branch.match === undefined
|
|
556
|
-
? 'undefined'
|
|
557
|
-
: `() => (${lowerExpression(branch.match)})`
|
|
558
|
-
return `{ match: ${match}, render: ${branchThunk(branch.children)} }`
|
|
559
|
-
})
|
|
560
|
-
.join(', ')
|
|
561
|
-
/* A bare async subject holds the whole switch while the cell is pending — no case, not
|
|
562
|
-
even the default — then matches on the settled value's peek. */
|
|
563
|
-
if (node.asyncSubject === true) {
|
|
564
|
-
const cell = node.subject.trim()
|
|
565
|
-
return `$$switchBlock(${parentVar}, () => $$readCell(${cell}), [${cases}], ${before}, () => $$cellPending(${cell}));\n`
|
|
566
|
-
}
|
|
567
|
-
return `$$switchBlock(${parentVar}, () => (${lowerExpression(node.subject)}), [${cases}], ${before});\n`
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
/* A component `{children()}` fill point: mount the `children` prop (a `Snippet`) by
|
|
571
|
-
calling it and mounting the resulting value through the snippet interpolation path,
|
|
572
|
-
exactly as any `{snippet(args)}`. `lowerExpression('children()')` reads the destructured
|
|
573
|
-
`children` computed and calls it → a `SnippetValue`, which `appendText` routes to
|
|
574
|
-
`appendSnippet`. A fallback is now an authored `{#if children}…{:else}…{/if}`, so the slot
|
|
575
|
-
node carries no children. Layouts never reach here — their slots are rewritten to `outlet`
|
|
576
|
-
elements by `asOutlet`. */
|
|
577
|
-
function generateSlot(
|
|
578
|
-
_node: Extract<TemplateNode, { kind: 'element' }>,
|
|
579
|
-
parentVar: string,
|
|
580
|
-
): string {
|
|
581
|
-
return `$$appendText(${parentVar}, () => (${lowerExpression('children()')}));\n`
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
/* Slot content as a zero-arg `Snippet` under the `children` key — a callable returning a
|
|
585
|
-
`$$snippet`-branded builder, so it unifies with a passed `children={snippet}` and mounts
|
|
586
|
-
through the standard snippet interpolation path. `composeProps` wraps it in the prop-bag
|
|
587
|
-
thunk, so the final bag value is `() => (Snippet callable)`. */
|
|
588
|
-
function slotPart(node: Extract<TemplateNode, { kind: 'component' }>): string | undefined {
|
|
589
|
-
const slotCode = generateChildren(node.children, '$slot')
|
|
590
|
-
return slotCode.trim() === ''
|
|
591
|
-
? undefined
|
|
592
|
-
: `"children": () => (() => $$snippet(($slot) => {\n${slotCode}}))`
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/* The props bag a child mount receives — composed by the shared `composeProps` so the
|
|
596
|
-
build and SSR back-ends emit the same last-wins layering. */
|
|
597
|
-
function propsArg(node: Extract<TemplateNode, { kind: 'component' }>): string {
|
|
598
|
-
return composeProps(node.props, lowerExpression, slotPart(node), bindRead, bindWrite)
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/* Mounts a child component as a marker-bounded range on `parentVar`, positioned at
|
|
602
|
-
`before` (a skeleton anchor's `anchorCursor`, or `null` for a standalone child).
|
|
603
|
-
`mountRange` opens the `[`/`]` markers and builds the child between them — no
|
|
604
|
-
wrapper element — so the child's root is a true direct child of `parentVar`.
|
|
605
|
-
Hydration stays ambient, so the child claims its server range in place. */
|
|
606
|
-
function generateChildComponent(
|
|
607
|
-
node: Extract<TemplateNode, { kind: 'component' }>,
|
|
608
|
-
parentVar: string,
|
|
609
|
-
before: string,
|
|
610
|
-
): string {
|
|
611
|
-
/* The tag lowers through `lowerExpression` like any other reference: a static
|
|
612
|
-
module import (`Button`) is left bare, but a reactive binding — a `{#for}`
|
|
613
|
-
item, an `await` `then` value, a component signal — derefs to its `.value`
|
|
614
|
-
cell, so `<Icon>` from `{#for {icon: Icon} of …}` mounts the component the cell
|
|
615
|
-
holds, not the cell object (whose `.build` is undefined → `build is not a
|
|
616
|
-
function`). SSR emits the same lowering for congruence. */
|
|
617
|
-
/* `mountChild` is dual-mode (ADR-0039): on hydrate it probes the cursor to adopt an
|
|
618
|
-
inlined `[ … ]` range OR a streamed `abide:await` boundary, so the client build
|
|
619
|
-
needs no hoistable-child knowledge — inline-vs-stream is decided server-side per
|
|
620
|
-
render, and the adopter reads which happened off the markup. */
|
|
621
|
-
return `$$mountChild(${parentVar}, ${lowerExpression(node.name)}, ${propsArg(node)}, ${before}, ${childOrdinal(node)});\n`
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
/* An await block: pending → resolved(value) / error branches. Each branch is a
|
|
625
|
-
void render thunk `(parent[, value]) => void` that builds its content into `parent`. */
|
|
626
|
-
function generateAwait(
|
|
627
|
-
node: Extract<TemplateNode, { kind: 'await' }>,
|
|
628
|
-
parentVar: string,
|
|
629
|
-
before: string,
|
|
630
|
-
): string {
|
|
631
|
-
const plan = awaitPlan(node)
|
|
632
|
-
/* The resolved value is reactive: a re-settle updates it in place rather than
|
|
633
|
-
rebuilding the branch (see awaitBlock). The branch reads it as a `.value` cell.
|
|
634
|
-
Build settles blocking and streaming uniformly through `awaitBlock`, so the plan's
|
|
635
|
-
resolved content/binding feeds one thunk regardless of mode. */
|
|
636
|
-
const thenThunk = branchThunk(
|
|
637
|
-
plan.resolvedChildren,
|
|
638
|
-
plan.resolvedBindings,
|
|
639
|
-
plan.finallyChildren,
|
|
640
|
-
)
|
|
641
|
-
/* Neither catch nor finally → pass `undefined` so awaitBlock re-throws the
|
|
642
|
-
rejection (surfacing it) instead of rendering an empty branch. A finally-only
|
|
643
|
-
block keeps a catch thunk that renders just finally. */
|
|
644
|
-
const catchThunk = plan.surfaceRejection
|
|
645
|
-
? 'undefined'
|
|
646
|
-
: branchThunk(plan.catchChildren, plan.catchBindings, plan.finallyChildren)
|
|
647
|
-
const pendingThunk = hasRenderableContent(plan.pending)
|
|
648
|
-
? branchThunk(plan.pending)
|
|
649
|
-
: 'undefined'
|
|
650
|
-
/* The subject lowers through the ONE shared ADR-0047 decision site (`awaitSubjectExpr`),
|
|
651
|
-
so the bare-cell classification can't drift from the SSR back-end's. */
|
|
652
|
-
const subject = awaitSubjectExpr(node.promise, cellReadNames, isShadowed, lowerExpression)
|
|
653
|
-
return (
|
|
654
|
-
`$$awaitBlock(${parentVar}, $$nextBlockId(), () => (${subject}), ` +
|
|
655
|
-
`${pendingThunk}, ` +
|
|
656
|
-
`${thenThunk}, ` +
|
|
657
|
-
`${catchThunk}, ${before});\n`
|
|
658
|
-
)
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
/* A branch's content as a void render thunk `(parent[, value]) => void` that
|
|
662
|
-
builds its children — and an optional trailing `finally` branch — into
|
|
663
|
-
`parent`. The full-range model tracks the built content between markers, so a
|
|
664
|
-
branch holds ANY content (components, text, nested control-flow, snippets) and
|
|
665
|
-
is generated exactly like a normal child list. `bindings` are the value param(s)
|
|
666
|
-
the plan declared (an `await` `then` value → `reactive`; a `catch` error → `plain`)
|
|
667
|
-
— at most one. Names flow to the deref scope ONLY through `withBindings` over the
|
|
668
|
-
plan's bindings; the cell wiring of a `reactive` binding is arranged by
|
|
669
|
-
`reactiveBinding`. Nested `<script>`s are emitted in document order by
|
|
670
|
-
`generateChildren`; `withNestedScripts` puts their bindings in deref scope. */
|
|
671
|
-
function branchThunk(
|
|
672
|
-
children: TemplateNode[],
|
|
673
|
-
bindings: Binding[] = [],
|
|
674
|
-
finallyChildren: TemplateNode[] = [],
|
|
675
|
-
): string {
|
|
676
|
-
const parentParam = nextVar('p')
|
|
677
|
-
/* A `reactive` binding arrives as a `.value` cell the runtime can set in place (the
|
|
678
|
-
branch re-runs in place on a re-settle); `reactiveBinding` renders its cell param +
|
|
679
|
-
per-leaf reader prefix. A `plain` binding is the author param verbatim — a real arrow
|
|
680
|
-
parameter `withBindings` registers under `plain`, read as the bare local. */
|
|
681
|
-
const reactive = bindings.find((binding) => binding.classification === 'reactive')
|
|
682
|
-
const wiring =
|
|
683
|
-
reactive === undefined ? undefined : reactiveBinding(reactive, nextVar, lowerStatement)
|
|
684
|
-
const plainBinding = bindings.find((binding) => binding.classification === 'plain')
|
|
685
|
-
const param = wiring?.param ?? plainBinding?.name
|
|
686
|
-
const prefix = wiring?.prefix ?? ''
|
|
687
|
-
const head = param === undefined ? `(${parentParam})` : `(${parentParam}, ${param})`
|
|
688
|
-
const body = withNestedScripts(children, () =>
|
|
689
|
-
withBindings(withShadow, bindings, buildBindingKind, () =>
|
|
690
|
-
generateChildren(children, parentParam),
|
|
691
|
-
),
|
|
692
|
-
)
|
|
693
|
-
const finallyBody =
|
|
694
|
-
finallyChildren.length > 0
|
|
695
|
-
? withNestedScripts(finallyChildren, () =>
|
|
696
|
-
generateChildren(finallyChildren, parentParam),
|
|
697
|
-
)
|
|
698
|
-
: ''
|
|
699
|
-
return `${head} => {\n${prefix}${body}${finallyBody}}`
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
/* True when a branch has content worth a render thunk — vs an absent/empty branch
|
|
703
|
-
a block represents with `undefined` (an `await` with no pending markup). */
|
|
704
|
-
function hasRenderableContent(children: TemplateNode[]): boolean {
|
|
705
|
-
return children.some(
|
|
706
|
-
(child) =>
|
|
707
|
-
child.kind === 'element' ||
|
|
708
|
-
child.kind === 'component' ||
|
|
709
|
-
isControlFlow(child) ||
|
|
710
|
-
child.kind === 'snippet' ||
|
|
711
|
-
(child.kind === 'text' && !isWhitespaceText(child)),
|
|
712
|
-
)
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
/* A sync error boundary: build the guarded subtree (++ finally); a throw while
|
|
716
|
-
building swaps to the catch branch (++ finally). No catch → `undefined`, which
|
|
717
|
-
makes the runtime re-throw to the nearest enclosing boundary. */
|
|
718
|
-
function generateTry(
|
|
719
|
-
node: Extract<TemplateNode, { kind: 'try' }>,
|
|
720
|
-
parentVar: string,
|
|
721
|
-
before: string,
|
|
722
|
-
): string {
|
|
723
|
-
const plan = tryPlan(node)
|
|
724
|
-
const tryThunk = branchThunk(plan.guarded, [], plan.finallyChildren)
|
|
725
|
-
const catchThunk = plan.hasCatch
|
|
726
|
-
? branchThunk(plan.catchChildren, plan.catchBindings, plan.finallyChildren)
|
|
727
|
-
: 'undefined'
|
|
728
|
-
return `$$tryBlock(${parentVar}, $$nextBlockId(), ${tryThunk}, ${catchThunk}, ${before});\n`
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
/* A conditional with an optional nested `<template else>` (a `case` child). Each
|
|
732
|
-
branch is a content range the runtime tracks between markers. */
|
|
733
|
-
function generateIf(
|
|
734
|
-
node: Extract<TemplateNode, { kind: 'if' }>,
|
|
735
|
-
parentVar: string,
|
|
736
|
-
before: string,
|
|
737
|
-
): string {
|
|
738
|
-
/* The `case` children are the chain's `elseif`/`else` branches in source order;
|
|
739
|
-
the rest are the `then` content. */
|
|
740
|
-
const plan = ifPlan(node)
|
|
741
|
-
/* Fast path: a plain `if` (with optional `else`) is the binary `when` runtime. */
|
|
742
|
-
if (!plan.hasElseif) {
|
|
743
|
-
const thenThunk = branchThunk(plan.thenChildren)
|
|
744
|
-
const elseThunk =
|
|
745
|
-
plan.elseBranch === undefined ? 'undefined' : branchThunk(plan.elseBranch.children)
|
|
746
|
-
/* A bare async subject (`{#if getX()}`) passes `when` a pending probe so a
|
|
747
|
-
still-loading cell renders NO branch; the condition itself is the plain peek read
|
|
748
|
-
(`$$readCell`), evaluated only once no longer pending. */
|
|
749
|
-
if (node.asyncSubject === true) {
|
|
750
|
-
const cell = node.condition.trim()
|
|
751
|
-
return `$$when(${parentVar}, () => $$readCell(${cell}), ${thenThunk}, ${elseThunk}, ${before}, () => $$cellPending(${cell}));\n`
|
|
752
|
-
}
|
|
753
|
-
return `$$when(${parentVar}, () => (${lowerExpression(node.condition)}), ${thenThunk}, ${elseThunk}, ${before});\n`
|
|
754
|
-
}
|
|
755
|
-
/* if/elseif/else is a cond-chain — reuse `switchBlock` over a constant `true`
|
|
756
|
-
subject with `Boolean`-coerced match thunks, so the first truthy branch wins
|
|
757
|
-
(`else` is the match-less default). A branch whose own condition is a bare async
|
|
758
|
-
subject carries a `pending` probe: `switchBlock` holds the chain there while it loads,
|
|
759
|
-
so sync and async branches interleave and each resolves at render time — a pending
|
|
760
|
-
async branch never lets a later branch render on its not-yet-known condition. */
|
|
761
|
-
const condEntry = (
|
|
762
|
-
condition: string,
|
|
763
|
-
asyncSubject: boolean | undefined,
|
|
764
|
-
children: TemplateNode[],
|
|
765
|
-
): string => {
|
|
766
|
-
const pending =
|
|
767
|
-
asyncSubject === true ? `, pending: () => $$cellPending(${condition.trim()})` : ''
|
|
768
|
-
return `{ match: () => Boolean(${lowerExpression(condition)}), render: ${branchThunk(children)}${pending} }`
|
|
769
|
-
}
|
|
770
|
-
const entries = [
|
|
771
|
-
condEntry(node.condition, node.asyncSubject, plan.thenChildren),
|
|
772
|
-
...plan.branches.map((branch) =>
|
|
773
|
-
branch.condition !== undefined
|
|
774
|
-
? condEntry(branch.condition, branch.asyncSubject, branch.children)
|
|
775
|
-
: `{ match: undefined, render: ${branchThunk(branch.children)} }`,
|
|
776
|
-
),
|
|
777
|
-
]
|
|
778
|
-
return `$$switchBlock(${parentVar}, () => true, [${entries.join(', ')}], ${before});\n`
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
/* A keyed each. Each row is a content RANGE (any content, tracked between the
|
|
782
|
-
row's markers), built by a `(rowParent, item) => void` thunk. */
|
|
783
|
-
function generateEach(
|
|
784
|
-
node: Extract<TemplateNode, { kind: 'each' }>,
|
|
785
|
-
parentVar: string,
|
|
786
|
-
before: string,
|
|
787
|
-
): string {
|
|
788
|
-
const plan = eachPlan(node)
|
|
789
|
-
const rowParam = nextVar('p')
|
|
790
|
-
/* The item is a reactive `.value` cell so a re-key with a changed value updates the row
|
|
791
|
-
in place (no rebuild). `keyOf` receives the RAW item; the key expression is lowered
|
|
792
|
-
with the author name plain — derive it BEFORE the row body puts that name in the
|
|
793
|
-
deref scope. With no explicit `key`, default the key to the item's own identity: a
|
|
794
|
-
plain `as` returns its name; a destructuring `as` binds a fresh param and returns
|
|
795
|
-
THAT, not the pattern re-wrapped (`[i,crumb]` → `[i,crumb]` would allocate a fresh
|
|
796
|
-
array per reconcile, so keys never match and every row rebuilds). An explicit `key`
|
|
797
|
-
destructures the item via `plan.as` to read its leaves. */
|
|
798
|
-
const rawItemParam = isPlainIdentifier(plan.as) ? plan.as : nextVar('k')
|
|
799
|
-
const keyParam = plan.key === undefined ? rawItemParam : plan.as
|
|
800
|
-
/* The key callback binds the RAW item via `plan.as`, so lower the key expression with
|
|
801
|
-
the item's names shadowed as PLAIN locals — otherwise a `by item.id` whose `item`
|
|
802
|
-
collides with a component signal rewrites to `$$model.read("item/id")` (every row
|
|
803
|
-
keys off the same signal → keyed reconciliation degenerates). The plain kind (not
|
|
804
|
-
the row body's reactive `.value` kind) keeps it the bare param the callback binds. */
|
|
805
|
-
const keyExpression =
|
|
806
|
-
plan.key === undefined
|
|
807
|
-
? rawItemParam
|
|
808
|
-
: withBindings(
|
|
809
|
-
withShadow,
|
|
810
|
-
[plan.bindings[0] as Binding],
|
|
811
|
-
() => 'plain',
|
|
812
|
-
() => lowerExpression(plan.key as string),
|
|
813
|
-
)
|
|
814
|
-
/* The item is the row's `reactive` binding (its `.value` cell + per-leaf reader prefix
|
|
815
|
-
rendered by `reactiveBinding`); `index="i"` is a second reactive cell param, a plain
|
|
816
|
-
identifier read as `i.value` (no prefix). The names of BOTH enter the deref scope via
|
|
817
|
-
`withBindings` over `plan.bindings`, not a hand-built list. */
|
|
818
|
-
const itemWiring = reactiveBinding(plan.bindings[0] as Binding, nextVar, lowerStatement)
|
|
819
|
-
const indexParam = plan.index === undefined ? '' : `, ${plan.index}`
|
|
820
|
-
/* The row body builds its children (a `<script>` declares per-row local signals,
|
|
821
|
-
emitted in document order) into the row parent. A `<template catch>` child is
|
|
822
|
-
consumed by the async-each, not the row — `generateChildren` skips it. */
|
|
823
|
-
const rowBody = withNestedScripts(plan.children, () =>
|
|
824
|
-
withBindings(withShadow, plan.bindings, buildBindingKind, () =>
|
|
825
|
-
generateChildren(plan.children, rowParam),
|
|
826
|
-
),
|
|
827
|
-
)
|
|
828
|
-
/* `await` → the AsyncIterable runtime, drained row-by-row on the client, with an
|
|
829
|
-
optional `<template catch>` branch rendered (after the streamed rows) when the
|
|
830
|
-
iterator rejects. Absent → `undefined`, so the rejection surfaces instead. */
|
|
831
|
-
const fn = plan.async ? '$$eachAsync' : '$$each'
|
|
832
|
-
const catchArg = plan.async
|
|
833
|
-
? `, ${plan.hasCatch ? branchThunk(plan.catchChildren, plan.catchBindings) : 'undefined'}`
|
|
834
|
-
: ''
|
|
835
|
-
/* Whether the each has an explicit `by` key — the row then keys its render-path segment
|
|
836
|
-
on the stable key rather than its position (see `each`/`eachAsync`). */
|
|
837
|
-
const keyed = plan.key !== undefined
|
|
838
|
-
return (
|
|
839
|
-
`${fn}(${parentVar}, () => (${lowerExpression(plan.items)}), ` +
|
|
840
|
-
`(${keyParam}) => (${keyExpression}), (${rowParam}, ${itemWiring.param}${indexParam}) => {\n${itemWiring.prefix}${rowBody}}${catchArg}, ${before}, ${keyed});\n`
|
|
841
|
-
)
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
return generateChildren(rootNodes, hostVar)
|
|
845
|
-
}
|
|
846
|
-
|
|
847
|
-
/*
|
|
848
|
-
Whether an element subtree is fully static — no reactive/event/bind attributes,
|
|
849
|
-
no nested `<script>`, and every descendant likewise static (static text, static
|
|
850
|
-
child elements, or scope-only `<style>`). Such a subtree builds to fixed DOM with
|
|
851
|
-
no per-instance wiring, so it can be cloned from a template instead of built call
|
|
852
|
-
by call. Only ELEMENTS qualify as run members: a static element never merges with
|
|
853
|
-
an adjacent dynamic text node, whereas a bare static text sibling shares one
|
|
854
|
-
merged SSR text node with its neighbour (the `splitAlways` hazard) — those stay
|
|
855
|
-
imperative. Static text and elements nested INSIDE a qualifying element are fine,
|
|
856
|
-
enclosed by its tags.
|
|
857
|
-
*/
|
|
858
|
-
function isStaticCloneableElement(node: TemplateNode): boolean {
|
|
859
|
-
if (node.kind !== 'element' || node.tag === 'slot' || node.tag === OUTLET_TAG) {
|
|
860
|
-
return false
|
|
861
|
-
}
|
|
862
|
-
if (node.attrs.some((attr) => attr.kind !== 'static')) {
|
|
863
|
-
return false
|
|
864
|
-
}
|
|
865
|
-
return node.children.every(
|
|
866
|
-
(child) =>
|
|
867
|
-
child.kind === 'style' ||
|
|
868
|
-
(child.kind === 'text' && child.parts.every((part) => part.kind === 'static')) ||
|
|
869
|
-
isStaticCloneableElement(child),
|
|
870
|
-
)
|
|
871
|
-
}
|
|
872
|
-
|
|
873
|
-
/*
|
|
874
|
-
Renders a fully-static node to its constant HTML, byte-identical to the SSR
|
|
875
|
-
back-end's output for the same node (same scope-attr order, same escaping, same
|
|
876
|
-
void-tag handling, same whitespace-only-text dropping) — so the client clone
|
|
877
|
-
template and the server markup parse to the same DOM. Only handles the shapes
|
|
878
|
-
`isStaticCloneableElement` admits.
|
|
879
|
-
*/
|
|
880
|
-
function staticHtml(node: TemplateNode): string {
|
|
881
|
-
if (node.kind === 'text') {
|
|
882
|
-
return node.parts
|
|
883
|
-
.map((part) => (part.kind === 'static' ? staticTextPart(part.value) : ''))
|
|
884
|
-
.join('')
|
|
885
|
-
}
|
|
886
|
-
if (node.kind !== 'element') {
|
|
887
|
-
return '' // <style> and any non-element emit no markup
|
|
888
|
-
}
|
|
889
|
-
let html = `<${node.tag}`
|
|
890
|
-
for (const scope of node.scopes ?? []) {
|
|
891
|
-
html += scopeAttr(scope)
|
|
892
|
-
}
|
|
893
|
-
for (const attr of node.attrs) {
|
|
894
|
-
if (attr.kind === 'static') {
|
|
895
|
-
html += staticAttr(attr.name, attr.value)
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
html += '>'
|
|
899
|
-
if (VOID_TAGS.has(node.tag)) {
|
|
900
|
-
return html
|
|
901
|
-
}
|
|
902
|
-
return `${html}${node.children.map(staticHtml).join('')}</${node.tag}>`
|
|
903
|
-
}
|