@abide/abide 0.58.0 → 0.101.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 +11 -1774
- package/bin/abide.ts +793 -204
- package/package.json +35 -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 +112 -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 +550 -0
- package/src/server/answerSocket.ts +585 -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 +100 -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 +641 -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 +505 -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 +13 -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 +217 -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 +424 -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 +4501 -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 +552 -0
- package/src/shared/reactive/watch.ts +314 -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 +501 -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
|
@@ -0,0 +1,781 @@
|
|
|
1
|
+
import { REGION_CLOSE, REGION_OPEN, ROW_OPEN } from '#shared/ANCHORS.ts'
|
|
2
|
+
import { anchorMarkup, regionMarkup } from '#shared/anchorMarkup.ts'
|
|
3
|
+
import { armAnchor } from '#shared/armAnchor.ts'
|
|
4
|
+
import { CHILDREN } from '#shared/CHILDREN.ts'
|
|
5
|
+
import { escapeQuote } from '#shared/escapeText.ts'
|
|
6
|
+
import { headKeyOf } from '#shared/headKeyOf.ts'
|
|
7
|
+
import { Cursor, type PlacedNode, placeTemplate } from './Cursor.ts'
|
|
8
|
+
import {
|
|
9
|
+
attributeOf,
|
|
10
|
+
type ClassifiedAttribute,
|
|
11
|
+
classifyAttributes,
|
|
12
|
+
holdsSetup,
|
|
13
|
+
isComponentTag,
|
|
14
|
+
isSingleRooted,
|
|
15
|
+
isSlot,
|
|
16
|
+
type MergeGroup,
|
|
17
|
+
} from './classifyTemplate.ts'
|
|
18
|
+
import { invocationProps, passedName } from './invocationProps.ts'
|
|
19
|
+
import { type Lowering, PROPS } from './Lowering.ts'
|
|
20
|
+
import type { AbideFile } from './parseAbide.ts'
|
|
21
|
+
import { shareScope } from './shareScope.ts'
|
|
22
|
+
import type {
|
|
23
|
+
Attribute,
|
|
24
|
+
ElementNode,
|
|
25
|
+
InlineComponent,
|
|
26
|
+
TemplateNode,
|
|
27
|
+
} from './TemplateNode.ts'
|
|
28
|
+
import { VOID_ELEMENTS } from './VOID_ELEMENTS.ts'
|
|
29
|
+
|
|
30
|
+
// A TEMPLATE AS MARKUP, as one emitted expression, for either module that writes it: the server's,
|
|
31
|
+
// which renders a document, and the client's, which renders a region the browser makes — an arm,
|
|
32
|
+
// a row, a page navigated to. Rendered from what `placeTemplate` placed, the same positions a build
|
|
33
|
+
// constructs from and a mount walks, so there is one escaping rule and one description of where a
|
|
34
|
+
// node stands, whichever side writes it.
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Which module a markup is rendered into, and what that module leaves to another to fill.
|
|
38
|
+
*
|
|
39
|
+
* THE SERVER RENDERS EVERYTHING: a component by CALLING it, a slot by its fallback or the caller's
|
|
40
|
+
* thunk, and a region's inline components declared ahead of its markup. THE CLIENT renders where
|
|
41
|
+
* the child's server module is not reachable and the bindings are the mount's own: so where another
|
|
42
|
+
* module fills a region — the child, the slot's own unit, a block's own swap — it writes the anchor
|
|
43
|
+
* pair for that module to fill, and it declares nothing, because the mount does (`emitClient`).
|
|
44
|
+
*/
|
|
45
|
+
export type MarkupLane = {
|
|
46
|
+
/** What stands for a node another module fills, or `undefined` where this lane renders it. */
|
|
47
|
+
leftEmpty: (node: TemplateNode) => string | undefined
|
|
48
|
+
/** 32.43 — the statements declaring a region's inline components ahead of its markup. */
|
|
49
|
+
declarations: (sink: Cursor, lowering: Lowering) => string
|
|
50
|
+
/**
|
|
51
|
+
* 41.24 — the open anchor of an `{#if}` arm that painted, as a string literal.
|
|
52
|
+
*
|
|
53
|
+
* The server's names the arm, for the hydrating swap to check; the client's does not, because
|
|
54
|
+
* the browser adopts what it rendered in the turn it chose the arm.
|
|
55
|
+
*/
|
|
56
|
+
armAnchor: (arm: number) => string
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export const SERVER_LANE: MarkupLane = {
|
|
60
|
+
leftEmpty: () => undefined,
|
|
61
|
+
declarations: (sink, lowering) => definitions(sink, lowering),
|
|
62
|
+
armAnchor: (arm) => JSON.stringify(anchorMarkup(armAnchor(arm))),
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const CLIENT_LANE: MarkupLane = {
|
|
66
|
+
leftEmpty: (node) => {
|
|
67
|
+
// 32.18 — the slot's own unit fills it with the caller's children or this file's fallback,
|
|
68
|
+
// by building whichever it is (`emitClient`'s `emitSlot`). Writing either here would make
|
|
69
|
+
// the caller hand its children over as a string as well as a build.
|
|
70
|
+
if (isSlot(node)) return EMPTY_REGION
|
|
71
|
+
// 34.7 — A BLOCK WITH A BRANCH-LOCAL `<script>` IS LEFT EMPTY, for its own swap or list to
|
|
72
|
+
// fill. Rendered inline here the script ran once for the markup and again in the setup its
|
|
73
|
+
// mount closes over, so each arm or row the browser built ran it twice — and the first
|
|
74
|
+
// run's watches had no scope to land in (12.13). An empty region is what the block already
|
|
75
|
+
// fills without a word (32.17, 41.4), so it costs one more fill and adds nothing.
|
|
76
|
+
if (holdsSetup(node)) return `${OPEN_ANCHOR} + ${CLOSE_ANCHOR}`
|
|
77
|
+
// 32.17 — the child's own client module fills its region.
|
|
78
|
+
if (node.kind === 'element' && isComponentTag(node.tag))
|
|
79
|
+
return EMPTY_REGION
|
|
80
|
+
return undefined
|
|
81
|
+
},
|
|
82
|
+
declarations: () => '',
|
|
83
|
+
armAnchor: () => OPEN_ANCHOR,
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// A region's anchors, as the JS string literals the emitted server render concatenates.
|
|
87
|
+
const OPEN_ANCHOR = JSON.stringify(anchorMarkup(REGION_OPEN))
|
|
88
|
+
const CLOSE_ANCHOR = JSON.stringify(anchorMarkup(REGION_CLOSE))
|
|
89
|
+
// 32.16 — the catch is the `{#try}`'s arm 1, named so the client hydrates the catch the server
|
|
90
|
+
// painted rather than walking it as the body.
|
|
91
|
+
const CAUGHT_ANCHOR = JSON.stringify(anchorMarkup(armAnchor(1)))
|
|
92
|
+
const ROW_ANCHOR = JSON.stringify(anchorMarkup(ROW_OPEN))
|
|
93
|
+
const EMPTY_REGION = JSON.stringify(regionMarkup(''))
|
|
94
|
+
|
|
95
|
+
// Where a component's own head contributions land. Under `__` for the reason every framework name
|
|
96
|
+
// in an emitted module is.
|
|
97
|
+
export const HEADS = '__heads'
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* A lowered markup position wrapped in `slotValue` where it is live, so an unlanded read aborts it.
|
|
101
|
+
*
|
|
102
|
+
* 32.23 and 41.4 — THE POSITION ABORTS, NOT THE DOCUMENT. `emitComponent` builds the markup as
|
|
103
|
+
* ONE concatenation, so an unlanded read anywhere in it threw out of `Component()` and took the
|
|
104
|
+
* static markup, every other position and the `<head>` with it. Passed as a THUNK because the
|
|
105
|
+
* throw happens while the expression is being evaluated, so nothing a helper is HANDED can catch
|
|
106
|
+
* it; `slotValue` says what that costs.
|
|
107
|
+
*
|
|
108
|
+
* EVERY MARKUP POSITION THAT EVALUATES AN AUTHOR EXPRESSION, rather than the two that were found
|
|
109
|
+
* first. A GUARD HERE IS HALF A MECHANISM — it trades a throw for a HOLE, and something on the
|
|
110
|
+
* client has to fill that hole once the value lands: a text slot has `runHere` and `textHere`, a
|
|
111
|
+
* `{#for}` has `List.hydrate`'s count check, an attribute has its own binding re-running on the
|
|
112
|
+
* value that landed (32.3), and the `{#if}` chain has `isEmptyRegion` — which is why that one is
|
|
113
|
+
* guarded at the REGION rather than per subject, and says so at its own arm. The ESCAPER STAYS
|
|
114
|
+
* OUTSIDE: absence is `undefined` here and what it means is already decided where it lands (see
|
|
115
|
+
* `slotValue`).
|
|
116
|
+
*
|
|
117
|
+
* ONLY WHERE THE POSITION IS LIVE (`Lowering.isLive`), because a position the checker proved reads
|
|
118
|
+
* nothing reactive cannot be unlanded — and one it could not prove can, through a function it
|
|
119
|
+
* calls as much as through a name it reads. A row body reading its own item — `{row.title}`, which
|
|
120
|
+
* is most slots on most pages — is proven, and wrapping it anyway put a closure in the hot loop:
|
|
121
|
+
* the card bench went 0.9 µs -> 1.7 µs at 10 cards and 0.70x -> 1.20x against the hand-written
|
|
122
|
+
* page, which is the headline ratio inverted for a guard that could never fire.
|
|
123
|
+
*/
|
|
124
|
+
export function unlandable(
|
|
125
|
+
lowering: Lowering,
|
|
126
|
+
holder: object,
|
|
127
|
+
lowered: string,
|
|
128
|
+
): string {
|
|
129
|
+
if (!lowering.isLive(holder)) return lowered
|
|
130
|
+
return slotValueOf(lowering, lowered)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* A lowered expression wrapped in `slotValue`, whatever `isLive` says.
|
|
135
|
+
*
|
|
136
|
+
* The wrap itself, apart from the `isLive` that decides it. The `{#if}` chain asks that question
|
|
137
|
+
* of its BRANCHES rather than of one holder (see its arm), so it cannot call `unlandable` — but it
|
|
138
|
+
* emits the same call, and one spelling is what keeps it the same call.
|
|
139
|
+
*/
|
|
140
|
+
function slotValueOf(lowering: Lowering, lowered: string): string {
|
|
141
|
+
return `${lowering.use('slotValue')}(() => ${lowered})`
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* One position's markup, as an emitted expression.
|
|
146
|
+
*
|
|
147
|
+
* The markup is RENDERED from what `placeTemplate` placed, the same positions a build constructs
|
|
148
|
+
* from and a mount walks, rather than written by a walk of its own.
|
|
149
|
+
*
|
|
150
|
+
* `lane` is the module this markup is for (`MarkupLane`).
|
|
151
|
+
*/
|
|
152
|
+
function renderPosition(
|
|
153
|
+
at: PlacedNode,
|
|
154
|
+
lowering: Lowering,
|
|
155
|
+
lane: MarkupLane,
|
|
156
|
+
): string {
|
|
157
|
+
const node = at.holder
|
|
158
|
+
|
|
159
|
+
// A RUN OF ADJACENT TEXT AND EXPRESSIONS is written as ONE concatenation and carries no marker.
|
|
160
|
+
// The client finds it by its position, so nothing has to be put in the document to mark it —
|
|
161
|
+
// and nothing added is the only scheme that leaves CSS and `childNodes` answering what they
|
|
162
|
+
// would have answered for the page the author wrote.
|
|
163
|
+
//
|
|
164
|
+
// 32.1 — an expression is escaped at run time, never at compile time: the value is not known
|
|
165
|
+
// here. The escaping is OUTSIDE the guard: `escapeText` reads the abort's `undefined` as '', so
|
|
166
|
+
// a slot still in flight and one that genuinely answered nothing render the same.
|
|
167
|
+
if (at.kind === 'text') {
|
|
168
|
+
const parts: string[] = []
|
|
169
|
+
for (const piece of at.run)
|
|
170
|
+
parts.push(
|
|
171
|
+
piece.kind === 'text'
|
|
172
|
+
? JSON.stringify(piece.text)
|
|
173
|
+
: `${lowering.use('escapeText')}(${unlandable(lowering, piece, lowering.expression(piece))})`,
|
|
174
|
+
)
|
|
175
|
+
// 32.30 — A RUN THAT CAN HOLD MARKUP IS ANCHORED WHILE IT DOES (`markupRun`), so the client
|
|
176
|
+
// finds the end of what a `Raw` part parsed into. The count is read BEFORE the parts are
|
|
177
|
+
// escaped: arguments are evaluated in order.
|
|
178
|
+
if (lowering.holdsMarkup(at.run))
|
|
179
|
+
return `${lowering.use('markupRun')}(${lowering.use('RAW_WRITES')}.count, ${parts.join(' + ')})`
|
|
180
|
+
return parts.join(' + ')
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const left = lane.leftEmpty(node)
|
|
184
|
+
if (left !== undefined) return left
|
|
185
|
+
|
|
186
|
+
if (isSlot(node)) return slotMarkup(at, lowering)
|
|
187
|
+
|
|
188
|
+
if (node.kind === 'block' && node.block === 'for') {
|
|
189
|
+
// 32.13 — the body repeats. 32.22: an absent subject iterates zero times, which is what
|
|
190
|
+
// the guard is for rather than a `?? []` that would also swallow a genuine mistake.
|
|
191
|
+
// 32.21: the subject is read ONCE for the whole block, not once per row.
|
|
192
|
+
const subject = lowering.expression(node)
|
|
193
|
+
const row = rowMarkup(
|
|
194
|
+
at.inner[0] as Cursor,
|
|
195
|
+
!isSingleRooted(node.children),
|
|
196
|
+
lowering,
|
|
197
|
+
lane,
|
|
198
|
+
)
|
|
199
|
+
const index = node.index === '' ? '__at' : node.index
|
|
200
|
+
const item = node.item
|
|
201
|
+
// 32.15 and 41.3 — AN ASYNC SUBJECT WRITES NO ROWS INLINE. The render is not held for an
|
|
202
|
+
// unfinished stream, and an async iterable has produced nothing at the moment a document
|
|
203
|
+
// is generated; the client appends each item as it arrives instead.
|
|
204
|
+
//
|
|
205
|
+
// THE SAME TEST THE CLIENT MAKES, because it is the same function: `listOf` answers an
|
|
206
|
+
// array for everything a row can be built from now and hands an async iterable back as
|
|
207
|
+
// itself, on both sides. Two copies of the test disagreed once — a stream carrying a
|
|
208
|
+
// convenience `[Symbol.iterator]` was async here and sync there, so the page was blank
|
|
209
|
+
// without JS and whole after hydration.
|
|
210
|
+
const listOf = lowering.use('listOf')
|
|
211
|
+
// AND 41.4 FOR A SUBJECT STILL IN FLIGHT. The read is the block's one expression, so an
|
|
212
|
+
// unlanded one aborts it and nothing else: the abort answers `undefined`, `listOf` reads
|
|
213
|
+
// that as absent, and 32.22's zero rows is already what absent means here. Read ONCE for
|
|
214
|
+
// the block (32.21), so the thunk is per block rather than per row.
|
|
215
|
+
const guarded = unlandable(lowering, node, subject)
|
|
216
|
+
// 14.8 — the row's branch-local `<script>`, run at the head of each row, untracked like the
|
|
217
|
+
// component's own setup (14.7) since the render tracks nothing.
|
|
218
|
+
// 32.43 — and the components it declares, each closing over the row.
|
|
219
|
+
const setup = `${node.setup === null ? '' : `${lowering.setup(node.setup)}\n`}${lane.declarations(at.inner[0] as Cursor, lowering)}`
|
|
220
|
+
return `${OPEN_ANCHOR} + ((__list) => {
|
|
221
|
+
if (!Array.isArray(__list)) return ''
|
|
222
|
+
let __out = ''
|
|
223
|
+
let ${index} = 0
|
|
224
|
+
for (const ${item} of __list) { ${setup}__out += ${row}; ${index} += 1 }
|
|
225
|
+
return __out
|
|
226
|
+
})(${listOf}(${guarded})) + ${CLOSE_ANCHOR}`
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// 32.16 — THE BODY, AND WHERE IT THROWS, THE CATCH IN ITS PLACE: rendered whole, so a failure
|
|
230
|
+
// anywhere in the body replaces all of it rather than leaving the markup up to the hole that
|
|
231
|
+
// raised it. The catch arm reads the failure under the name the author bound, and opens on the
|
|
232
|
+
// anchor that tells the client which arm it is standing on.
|
|
233
|
+
if (node.kind === 'block' && node.block === 'try') {
|
|
234
|
+
const body = renderMarkup(at.inner[0] as Cursor, lowering, lane)
|
|
235
|
+
const rescue = renderMarkup(at.inner[1] as Cursor, lowering, lane)
|
|
236
|
+
const bound = node.error === '' ? '__failure' : node.error
|
|
237
|
+
return `(() => {
|
|
238
|
+
try {
|
|
239
|
+
${lane.declarations(at.inner[0] as Cursor, lowering)}return ${OPEN_ANCHOR} + ${body}
|
|
240
|
+
} catch (__thrown) {
|
|
241
|
+
return ${CAUGHT_ANCHOR} + ((${bound}) => ${scoped(lane.declarations(at.inner[1] as Cursor, lowering), rescue)})(__thrown)
|
|
242
|
+
}
|
|
243
|
+
})() + ${CLOSE_ANCHOR}`
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (node.kind === 'block') {
|
|
247
|
+
// 32.12 — ONE branch renders. The anchors go in whichever one that is, and stay when the
|
|
248
|
+
// branch changes, which is what keeps every sibling after the region addressable.
|
|
249
|
+
//
|
|
250
|
+
// 41.4 ABORTS THE REGION, NOT THE ARM, and that is why the guard is around the WHOLE
|
|
251
|
+
// chain rather than around each subject the way every other position takes it. Guarded
|
|
252
|
+
// per subject, an unlanded first condition is `undefined`, which is falsy — so the chain
|
|
253
|
+
// walks on and paints the `{:else}` arm, a decision the client then has no way to know
|
|
254
|
+
// was never really made. It reads the landed value a turn later, picks the other arm, and
|
|
255
|
+
// hydrates its bindings against the arm the server actually wrote; where that arm has no
|
|
256
|
+
// bindings there is nothing to walk, so 41.10 never fires and the region stays wrong for
|
|
257
|
+
// as long as the condition does not CHANGE.
|
|
258
|
+
//
|
|
259
|
+
// AN EMPTY REGION IS THE ONE SIGNAL THAT ALREADY MEANS "NOBODY PAINTED THIS" — 32.17 gave
|
|
260
|
+
// it to a component whose row the browser grew, and `isEmptyRegion` is how the client
|
|
261
|
+
// reads it. So an aborted chain writes the anchor pair and nothing between it, and the
|
|
262
|
+
// block's first run fills it from the arm it picks instead of hydrating markup that is
|
|
263
|
+
// not there. Nothing is added to the document to carry any of this.
|
|
264
|
+
//
|
|
265
|
+
// A GENUINELY EMPTY ARM TAKES THE SAME PATH and costs a `fillRegion` with no build — no
|
|
266
|
+
// node removed and none made. One answer for both beats a second way of saying
|
|
267
|
+
// which arm was painted.
|
|
268
|
+
// EACH ARM IS ITS OWN REGION ROOT — one sink apiece, so two arms may hold the same slot
|
|
269
|
+
// names and neither can see the other's.
|
|
270
|
+
// 14.8 — an arm's branch-local `<script>` runs before its markup, in a scope of its own.
|
|
271
|
+
const bodies = node.branches.map((branch, arm) =>
|
|
272
|
+
scoped(
|
|
273
|
+
`${branch.setup === null ? '' : `${lowering.setup(branch.setup)}\n`}${lane.declarations(at.inner[arm] as Cursor, lowering)}`,
|
|
274
|
+
renderMarkup(at.inner[arm] as Cursor, lowering, lane),
|
|
275
|
+
),
|
|
276
|
+
)
|
|
277
|
+
// 41.24 — EACH ARM OPENS ON ITS OWN ANCHOR, which on the server names it. The floor and an
|
|
278
|
+
// aborted chain paint nothing, and the plain open is all an empty region needs.
|
|
279
|
+
let expression = `(${chosenArm(node.branches, lowering, (arm) => `${lane.armAnchor(arm)} + (${bodies[arm]})`, OPEN_ANCHOR)})`
|
|
280
|
+
// ONLY WHERE A SUBJECT IS LIVE, for `unlandable`'s reason: nothing else can be
|
|
281
|
+
// unlanded, and the thunk is a closure per region per render where it is emitted. Asked
|
|
282
|
+
// of the SUBJECTS alone — a slot inside an arm carries its own guard already, so a body
|
|
283
|
+
// cannot be what throws through here.
|
|
284
|
+
//
|
|
285
|
+
// `?? OPEN_ANCHOR` IS THE ABORT'S OWN ANSWER, not a fallback decided twice: `slotValue` hands
|
|
286
|
+
// back `undefined` and what `undefined` MEANS here is the empty region above.
|
|
287
|
+
if (lowering.isLiveChain(node.branches))
|
|
288
|
+
expression = `(${slotValueOf(lowering, expression)} ?? ${OPEN_ANCHOR})`
|
|
289
|
+
return `${expression} + ${CLOSE_ANCHOR}`
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// EVERYTHING LEFT IS AN ELEMENT: a run returned above as a text position, and every block as a
|
|
293
|
+
// region. A position of either kind holding anything else is the walk disagreeing with itself.
|
|
294
|
+
if (node.kind !== 'element')
|
|
295
|
+
throw new Error(
|
|
296
|
+
`abide: a ${at.kind} position holds a ${node.kind} node.`,
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
// 32.17 — A CAPITALISED TAG IS AN INVOCATION, and the capital is the whole of the
|
|
300
|
+
// distinction. It is emitted as a CALL, so the child's own module renders it.
|
|
301
|
+
if (isComponentTag(node.tag)) return invocationMarkup(node, at, lowering)
|
|
302
|
+
|
|
303
|
+
const parts: string[] = []
|
|
304
|
+
let open = `<${node.tag}`
|
|
305
|
+
// WHAT IS NOT MARKUP IS NOT WRITTEN: a listener, `bind:element`, a refused URL, a bind whose
|
|
306
|
+
// value is not an attribute, and every merge member after the one the group is written at.
|
|
307
|
+
for (const one of classifyAttributes(node, lowering)) {
|
|
308
|
+
if (one.kind === 'static') {
|
|
309
|
+
if (one.bytes !== undefined) open += staticMarkup(one, one.bytes)
|
|
310
|
+
continue
|
|
311
|
+
}
|
|
312
|
+
if (one.kind === 'bound') {
|
|
313
|
+
if (one.reflects === undefined) continue
|
|
314
|
+
parts.push(JSON.stringify(open), boundMarkup(one, lowering))
|
|
315
|
+
open = ''
|
|
316
|
+
continue
|
|
317
|
+
}
|
|
318
|
+
if (one.kind === 'spread') {
|
|
319
|
+
parts.push(
|
|
320
|
+
JSON.stringify(open),
|
|
321
|
+
`${lowering.use('spreadAttributes')}(${unlandable(lowering, one.attribute, lowering.expression(one.attribute))}, ${JSON.stringify(one.explicit)})`,
|
|
322
|
+
)
|
|
323
|
+
open = ''
|
|
324
|
+
continue
|
|
325
|
+
}
|
|
326
|
+
// 32.37 — a whole-value attribute may be absent, so it writes its own name and quotes.
|
|
327
|
+
if (one.kind === 'dynamic') {
|
|
328
|
+
parts.push(
|
|
329
|
+
JSON.stringify(open),
|
|
330
|
+
dynamicMarkup(one.attribute, lowering),
|
|
331
|
+
)
|
|
332
|
+
open = ''
|
|
333
|
+
continue
|
|
334
|
+
}
|
|
335
|
+
if (one.kind !== 'merged' || one.group === undefined) continue
|
|
336
|
+
// A computed value breaks the static run: what precedes it is a literal, the value is an
|
|
337
|
+
// expression, and the tag carries on after it.
|
|
338
|
+
parts.push(
|
|
339
|
+
JSON.stringify(`${open} ${one.group.name}="`),
|
|
340
|
+
mergedValue(one.group, lowering, markupRender(lowering)),
|
|
341
|
+
"'\"'",
|
|
342
|
+
)
|
|
343
|
+
open = ''
|
|
344
|
+
}
|
|
345
|
+
open += '>'
|
|
346
|
+
parts.push(JSON.stringify(open))
|
|
347
|
+
|
|
348
|
+
// Folded for the reason `parseAbide` folds: `<BR>` is the same void element as
|
|
349
|
+
// `<br>`, and a close tag written for one is markup no browser accepts.
|
|
350
|
+
if (node.children.length === 0 && VOID_ELEMENTS.has(node.lowerTag))
|
|
351
|
+
return parts.join(' + ')
|
|
352
|
+
const children = renderLevel(at.children, lowering, lane)
|
|
353
|
+
return [...parts, ...children, JSON.stringify(`</${node.tag}>`)].join(' + ')
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* A `<slot/>`'s markup: the caller's children, or the fallback where there are none, anchored.
|
|
358
|
+
*
|
|
359
|
+
* 32.18 — A REGION, for the reason an invocation is one: what stands here is another file's
|
|
360
|
+
* markup, so the siblings after it cannot be addressed by counting through it.
|
|
361
|
+
*
|
|
362
|
+
* THE TWO LANES CARRY DIFFERENT THINGS UNDER THE SAME KEY. On the server the caller passes a
|
|
363
|
+
* thunk of its rendered markup, because a server writes markup and never addresses it; in the
|
|
364
|
+
* browser it passes a build AND the mount for it, because the bindings between those tags are the
|
|
365
|
+
* CALLER's and only the caller's module has them — so the client lane leaves the slot empty
|
|
366
|
+
* (`MarkupLane`).
|
|
367
|
+
*
|
|
368
|
+
* THE FALLBACK IS THE CHILD'S OWN REGION, placed from the slot's anchors exactly as an arm is
|
|
369
|
+
* (`placeTemplate`). What the CALLER passed instead is the caller's markup and the caller's
|
|
370
|
+
* addressing, so it is not this file's to place.
|
|
371
|
+
*/
|
|
372
|
+
function slotMarkup(at: PlacedNode, lowering: Lowering): string {
|
|
373
|
+
const given = `${PROPS}[${JSON.stringify(CHILDREN)}]`
|
|
374
|
+
const fallback = renderMarkup(at.inner[0] as Cursor, lowering, SERVER_LANE)
|
|
375
|
+
return `${OPEN_ANCHOR} + (${given} === undefined ? ${scoped(definitions(at.inner[0] as Cursor, lowering), fallback)} : ${given}()) + ${CLOSE_ANCHOR}`
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* One component invocation's markup: the child called, its markup landing between the anchors.
|
|
380
|
+
*
|
|
381
|
+
* The child is a function taking a record of ACCESSORS (33.4, 33.5): the prop is the caller's
|
|
382
|
+
* expression, not a snapshot of it, so the child re-reads when the parent's value moves and
|
|
383
|
+
* neither of them arranges that.
|
|
384
|
+
*
|
|
385
|
+
* A REGION, ANCHORED. The child's markup is written inline, and how many top-level nodes it has is
|
|
386
|
+
* a fact about ANOTHER FILE — so the parent cannot address the siblings that follow it by
|
|
387
|
+
* counting, the way it does for an element whose shape it can see. The anchors are what make the
|
|
388
|
+
* child's nodes one addressable thing, and they are the same pair `{#if}` uses.
|
|
389
|
+
*/
|
|
390
|
+
function invocationMarkup(
|
|
391
|
+
node: ElementNode,
|
|
392
|
+
at: PlacedNode,
|
|
393
|
+
lowering: Lowering,
|
|
394
|
+
): string {
|
|
395
|
+
// 33.16 — `children` IS NEVER DECLARED, so a caller writing it as an attribute beside a body
|
|
396
|
+
// is passing the same prop twice; the record would carry the key twice and the last one
|
|
397
|
+
// would silently win.
|
|
398
|
+
if (
|
|
399
|
+
node.children.length > 0 &&
|
|
400
|
+
node.attributes.some((attribute) => attribute.name === CHILDREN)
|
|
401
|
+
)
|
|
402
|
+
throw new Error(
|
|
403
|
+
`abide: <${node.tag}> is given children as an attribute and between its tags. RULEBOOK 33.16.`,
|
|
404
|
+
)
|
|
405
|
+
const props = invocationProps(node, lowering)
|
|
406
|
+
// THE CALLER WRITES THE ANCHORS AND THE CHILD FILLS THEM: here by calling the child, and in the
|
|
407
|
+
// browser by the child's own module (`MarkupLane`).
|
|
408
|
+
// 32.18 — THE CHILDREN ARE THE CALLER'S MARKUP, handed over as a thunk under the one key the
|
|
409
|
+
// compiler owns. Not a prop the child declares: `props<T>()` is a shape an author wrote and
|
|
410
|
+
// this is the tag's own body, so the child reaches it through `<slot/>` and nothing else.
|
|
411
|
+
if (node.children.length > 0)
|
|
412
|
+
props.push(
|
|
413
|
+
`${JSON.stringify(CHILDREN)}: () => ${scoped(definitions(at.inner[0] as Cursor, lowering), `(${renderMarkup(at.inner[0] as Cursor, lowering, SERVER_LANE)})`)}`,
|
|
414
|
+
)
|
|
415
|
+
return `${lowering.use('renderComponent')}(${lowering.chosenTag(node) ?? node.tag}, { ${props.join(', ')} }, ${HEADS})`
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* A file's head contributions, merged and placed.
|
|
420
|
+
*
|
|
421
|
+
* Merged before it is placed (39.12), so the head is the one markup placed here rather than
|
|
422
|
+
* rendered from positions the template walk already placed. 39.6 — and placed for both lanes: a
|
|
423
|
+
* page the reader NAVIGATED to was never rendered by a server, so its `<title>` and its `<meta>`
|
|
424
|
+
* exist nowhere unless its own client module carries them, through the same merge so the two
|
|
425
|
+
* lanes cannot disagree about which contribution won.
|
|
426
|
+
*/
|
|
427
|
+
export function headSink(file: AbideFile): Cursor {
|
|
428
|
+
const sink = new Cursor()
|
|
429
|
+
placeTemplate(mergeHead(file.head), sink)
|
|
430
|
+
return sink
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* A region's markup, as an emitted expression, rendered from its positions.
|
|
435
|
+
*
|
|
436
|
+
* Exported because a region made once is filled from it on the CLIENT too — a branch swap on a
|
|
437
|
+
* page re-renders the arm — and a second emitter for it would be a second escaping rule.
|
|
438
|
+
*/
|
|
439
|
+
export function renderMarkup(
|
|
440
|
+
sink: Cursor,
|
|
441
|
+
lowering: Lowering,
|
|
442
|
+
lane: MarkupLane,
|
|
443
|
+
): string {
|
|
444
|
+
return concat(renderLevel(sink.top, lowering, lane))
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/** Each position's markup, apart: the server's body reads them before it joins them. */
|
|
448
|
+
export function renderLevel(
|
|
449
|
+
positions: PlacedNode[],
|
|
450
|
+
lowering: Lowering,
|
|
451
|
+
lane: MarkupLane,
|
|
452
|
+
): string[] {
|
|
453
|
+
const out: string[] = []
|
|
454
|
+
for (const at of positions) out.push(renderPosition(at, lowering, lane))
|
|
455
|
+
return out
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Which arm of an `{#if}` chain takes, as one expression: each subject in turn, then `{:else}`, and
|
|
460
|
+
* `none` where no arm takes.
|
|
461
|
+
*
|
|
462
|
+
* 32.12, 41.24 — ONE FOLD FOR BOTH SIDES, because the arm the server paints is the arm the client
|
|
463
|
+
* hydrates against: `arm` is what each side makes of the arm it chose.
|
|
464
|
+
*/
|
|
465
|
+
export function chosenArm(
|
|
466
|
+
branches: readonly { subject: string }[],
|
|
467
|
+
lowering: Lowering,
|
|
468
|
+
arm: (index: number) => string,
|
|
469
|
+
none: string,
|
|
470
|
+
): string {
|
|
471
|
+
let chosen = none
|
|
472
|
+
for (let index = branches.length - 1; index >= 0; index -= 1) {
|
|
473
|
+
const branch = branches[index] as { subject: string }
|
|
474
|
+
chosen =
|
|
475
|
+
branch.subject === ''
|
|
476
|
+
? arm(index)
|
|
477
|
+
: `(${lowering.expression(branch)}) ? ${arm(index)} : ${chosen}`
|
|
478
|
+
}
|
|
479
|
+
return chosen
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* One `{#for}` row's markup, led by a row anchor where `anchored`.
|
|
484
|
+
*
|
|
485
|
+
* A row with several top-level nodes has no node that IS the row, so it carries one anchor; a
|
|
486
|
+
* single-element row carries nothing.
|
|
487
|
+
*/
|
|
488
|
+
export function rowMarkup(
|
|
489
|
+
row: Cursor,
|
|
490
|
+
anchored: boolean,
|
|
491
|
+
lowering: Lowering,
|
|
492
|
+
lane: MarkupLane,
|
|
493
|
+
): string {
|
|
494
|
+
const markup = renderMarkup(row, lowering, lane)
|
|
495
|
+
return anchored ? `${ROW_ANCHOR} + ${markup}` : markup
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* The statements declaring a region's inline components on the server: the ones its body declares
|
|
500
|
+
* (32.43), each under its name, and the ones an invocation in it is passed (32.50), each under
|
|
501
|
+
* `passedName`.
|
|
502
|
+
*
|
|
503
|
+
* 32.42 — DECLARED WHERE THE REGION IS BUILT, so each is a closure over every name in scope there:
|
|
504
|
+
* the setup's, a row's item, an arm's own, an enclosing component's props.
|
|
505
|
+
*/
|
|
506
|
+
export function definitions(sink: Cursor, lowering: Lowering): string {
|
|
507
|
+
let out = ''
|
|
508
|
+
for (const component of sink.components)
|
|
509
|
+
out += `${serverComponent(component, lowering)}\n`
|
|
510
|
+
for (const at of sink.positions)
|
|
511
|
+
if (at.kind === 'region' && at.holder.kind === 'element')
|
|
512
|
+
for (const passed of at.holder.passed)
|
|
513
|
+
out += `const ${passedName(passed)} = ${serverComponent(passed, lowering)}\n`
|
|
514
|
+
return out
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* An inline component on the server: the function a file component's module exports, declared in
|
|
519
|
+
* place.
|
|
520
|
+
*
|
|
521
|
+
* 32.17, 32.40 — CALLED AS A FILE COMPONENT IS (`renderComponent`), with the record of accessors its
|
|
522
|
+
* pattern binds from, and answering its head and its body apart. It has no head of its own (39.2).
|
|
523
|
+
*/
|
|
524
|
+
function serverComponent(
|
|
525
|
+
component: InlineComponent,
|
|
526
|
+
lowering: Lowering,
|
|
527
|
+
): string {
|
|
528
|
+
const sink = new Cursor()
|
|
529
|
+
sink.components = component.components
|
|
530
|
+
placeTemplate(component.children, sink)
|
|
531
|
+
const head =
|
|
532
|
+
component.pattern === '' ? '' : `${lowering.setup(component)}\n`
|
|
533
|
+
const setup =
|
|
534
|
+
component.setup === null ? '' : `${lowering.setup(component.setup)}\n`
|
|
535
|
+
// 10.5, 32.46 — AN INSTANCE OPENS ITS OWN SHARE SCOPE, as a file component's does: two of it
|
|
536
|
+
// standing side by side are two instances, each creating what no ancestor holds (10.6).
|
|
537
|
+
const { opened, closed } = shareScope(lowering, '')
|
|
538
|
+
return `function ${component.name}(${PROPS} = {}) {
|
|
539
|
+
${opened}${head}${setup}${definitions(sink, lowering)}return { head: '', body: ${renderMarkup(sink, lowering, SERVER_LANE)} }${closed}
|
|
540
|
+
}`
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/** `markup` with `prelude` run ahead of it, in a scope of its own where there is one. */
|
|
544
|
+
function scoped(prelude: string, markup: string): string {
|
|
545
|
+
return prelude === ''
|
|
546
|
+
? markup
|
|
547
|
+
: `(() => {\n${prelude}\nreturn ${markup}\n})()`
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/** Emitted parts as one concatenation, and the empty string for none. */
|
|
551
|
+
export function concat(parts: string[]): string {
|
|
552
|
+
return parts.length === 0 ? "''" : parts.join(' + ')
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* An expression attribute's markup at render, through `attributeMarkup`.
|
|
557
|
+
*
|
|
558
|
+
* 32.3 — an expression attribute is reactive. Its CURRENT value is written here, and
|
|
559
|
+
* `emitClient`'s own attribute loop is what keeps writing it after hydration.
|
|
560
|
+
*
|
|
561
|
+
* 32.20 IS THE INTERPOLATION'S CLAUSE: `<a href={u}>` is where untrusted data actually arrives, not
|
|
562
|
+
* the literal `href`. The value is not known here, so the guard is a call in the emitted markup —
|
|
563
|
+
* `attributeMarkup`, which also decides 32.37's absence, and which the client's binding answers
|
|
564
|
+
* through the same `attributeText`.
|
|
565
|
+
*
|
|
566
|
+
* 41.4 INSIDE BOTH GUARDS. The abort is nearest the read and the scheme check wraps it, so a `href`
|
|
567
|
+
* still in flight is checked as the empty value it renders as rather than skipping 32.20 on its way
|
|
568
|
+
* past.
|
|
569
|
+
*/
|
|
570
|
+
function dynamicMarkup(attribute: Attribute, lowering: Lowering): string {
|
|
571
|
+
const value = unlandable(
|
|
572
|
+
lowering,
|
|
573
|
+
attribute,
|
|
574
|
+
lowering.expression(attribute),
|
|
575
|
+
)
|
|
576
|
+
return `${lowering.use('attributeMarkup')}(${JSON.stringify(attribute.name)}, ${value})`
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* A bind's value at render, as the attribute its property reflects.
|
|
581
|
+
*
|
|
582
|
+
* 32.5, 32.7, 32.8 — under 41.4's guard: a value still in flight writes nothing, which is what an
|
|
583
|
+
* empty input and an unchecked box already are.
|
|
584
|
+
*/
|
|
585
|
+
function boundMarkup(
|
|
586
|
+
written: ClassifiedAttribute & { kind: 'bound' },
|
|
587
|
+
lowering: Lowering,
|
|
588
|
+
): string {
|
|
589
|
+
const read = slotValueOf(
|
|
590
|
+
lowering,
|
|
591
|
+
`${lowering.use('boundValue')}(${lowering.reference(written.attribute)})`,
|
|
592
|
+
)
|
|
593
|
+
if (written.bind === 'value')
|
|
594
|
+
return `' value="' + ${lowering.use('escapeAttribute')}(${read}) + '"'`
|
|
595
|
+
const on =
|
|
596
|
+
written.bind === 'group'
|
|
597
|
+
? `${lowering.use('groupHolds')}(${read}, ${JSON.stringify(written.own)})`
|
|
598
|
+
: read
|
|
599
|
+
return `(${on} ? ' ${written.reflects}' : '')`
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* A static attribute's markup: the bare name, or the name and its value's bytes (`staticBytes`).
|
|
604
|
+
*
|
|
605
|
+
* 32.27 — STATIC TEMPLATE TEXT IS MARKUP, in an attribute value as much as in body text, so
|
|
606
|
+
* `title="AT&T"` renders `AT&T` on the page as the same six characters between two tags do.
|
|
607
|
+
*/
|
|
608
|
+
function staticMarkup(one: ClassifiedAttribute, bytes: string): string {
|
|
609
|
+
const { name, value } = one.attribute
|
|
610
|
+
return value === '' ? ` ${name}` : ` ${name}="${bytes}"`
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* A file's `<head>` contributions merged by key, the LAST one for a key kept.
|
|
615
|
+
*
|
|
616
|
+
* 39.4, 39.11, 39.12 — 39.11 gives the key: the tag for the two elements a document holds one of,
|
|
617
|
+
* the `name` or `property` for a `<meta>`, and `rel` with `href` for a `<link>`. Anything else has
|
|
618
|
+
* no key and keeps its place, which is 39.5 and is what walking the list once and dropping only
|
|
619
|
+
* the shadowed entries gives.
|
|
620
|
+
*
|
|
621
|
+
* WITHIN ONE FILE IS ALL OF IT HERE. 39.4's deepest contributor needs a layout to be deeper than,
|
|
622
|
+
* and a page and its layouts are composed at run time (`render`), not in this compiler — so there
|
|
623
|
+
* is no depth to order by here, and nothing here stands in for one.
|
|
624
|
+
*/
|
|
625
|
+
function mergeHead(children: TemplateNode[]): TemplateNode[] {
|
|
626
|
+
const keys: (string | undefined)[] = []
|
|
627
|
+
const winner = new Map<string, number>()
|
|
628
|
+
for (let at = 0; at < children.length; at += 1) {
|
|
629
|
+
const key = headKey(children[at] as TemplateNode)
|
|
630
|
+
keys.push(key)
|
|
631
|
+
if (key !== undefined) winner.set(key, at)
|
|
632
|
+
}
|
|
633
|
+
if (winner.size === 0) return children
|
|
634
|
+
const kept: TemplateNode[] = []
|
|
635
|
+
for (let at = 0; at < children.length; at += 1) {
|
|
636
|
+
const key = keys[at]
|
|
637
|
+
if (key !== undefined && winner.get(key) !== at) continue
|
|
638
|
+
kept.push(children[at] as TemplateNode)
|
|
639
|
+
}
|
|
640
|
+
return kept
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/**
|
|
644
|
+
* The key a head contribution merges by, or `undefined` for one that appends.
|
|
645
|
+
*
|
|
646
|
+
* 39.11 THROUGH THE ONE GRAMMAR (`headKeyOf`), asked with what the COMPILER can read: an expression
|
|
647
|
+
* is present but unknown, so `<meta name={x}>` appends under 39.5 rather than merging against a
|
|
648
|
+
* string that is not its value. `<TITLE>` is the same singleton as `<title>`, which `lowerTag`
|
|
649
|
+
* already gives.
|
|
650
|
+
*/
|
|
651
|
+
function headKey(node: TemplateNode): string | undefined {
|
|
652
|
+
if (node.kind !== 'element') return undefined
|
|
653
|
+
return headKeyOf(node.lowerTag, (name) => {
|
|
654
|
+
const attribute = attributeOf(node, name)
|
|
655
|
+
if (attribute === undefined) return null
|
|
656
|
+
return attribute.expression ? undefined : attribute.value
|
|
657
|
+
})
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* How a merged value's pieces are written: escaped for markup, or as a built row writes them.
|
|
662
|
+
*
|
|
663
|
+
* Which is all that differs between the two ways of making an element. The markup ESCAPES — the
|
|
664
|
+
* bytes are parsed — and a built row writes what the parser would have made of them. The
|
|
665
|
+
* STRUCTURE — the order, the separators, which names — is `styleValue` and `classValue`'s alone,
|
|
666
|
+
* so a built `style` and a served one are the same string.
|
|
667
|
+
*/
|
|
668
|
+
export type ValueRender = {
|
|
669
|
+
/** A whole attribute's value from an expression. */
|
|
670
|
+
dynamic: (attribute: Attribute) => string
|
|
671
|
+
/** One `style:prop`'s value from an expression — cut at its first `;` on both sides. */
|
|
672
|
+
declaration: (attribute: Attribute) => string
|
|
673
|
+
/** The author's own bytes, as the server writes them (32.27). */
|
|
674
|
+
bytes: (bytes: string) => string
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
/** The `ValueRender` for server markup: every interpolated piece escaped. */
|
|
678
|
+
function markupRender(lowering: Lowering): ValueRender {
|
|
679
|
+
return {
|
|
680
|
+
dynamic: (attribute) =>
|
|
681
|
+
`${lowering.use('escapeAttribute')}(${unlandable(lowering, attribute, lowering.expression(attribute))})`,
|
|
682
|
+
declaration: (attribute) =>
|
|
683
|
+
`${lowering.use('escapeStyleValue')}(${unlandable(lowering, attribute, lowering.expression(attribute))})`,
|
|
684
|
+
bytes: (bytes) => JSON.stringify(bytes),
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/** A merged `style` or `class` group's value, as an emitted expression, rendered by `render`. */
|
|
689
|
+
export function mergedValue(
|
|
690
|
+
group: MergeGroup,
|
|
691
|
+
lowering: Lowering,
|
|
692
|
+
render: ValueRender,
|
|
693
|
+
): string {
|
|
694
|
+
return group.name === 'style'
|
|
695
|
+
? styleValue(group.plain, group.directives, render)
|
|
696
|
+
: classValue(group.plain, group.directives, lowering, render)
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* The declaration list a set of `style:prop` attributes renders as.
|
|
701
|
+
*
|
|
702
|
+
* Each value takes the same rewrite the whole-value path takes, so one attribute has one answer
|
|
703
|
+
* however the author spelled it: 32.27 for a STATIC declaration, which is the author's own markup,
|
|
704
|
+
* and the full escape for an interpolated one, which is 32.1's.
|
|
705
|
+
*/
|
|
706
|
+
function styleValue(
|
|
707
|
+
plain: Attribute | undefined,
|
|
708
|
+
styles: readonly Attribute[],
|
|
709
|
+
render: ValueRender,
|
|
710
|
+
): string {
|
|
711
|
+
const parts: string[] = []
|
|
712
|
+
if (plain !== undefined)
|
|
713
|
+
parts.push(
|
|
714
|
+
plain.expression
|
|
715
|
+
? render.dynamic(plain)
|
|
716
|
+
: render.bytes(escapeQuote(plain.value)),
|
|
717
|
+
render.bytes('; '),
|
|
718
|
+
)
|
|
719
|
+
for (const attribute of styles) {
|
|
720
|
+
const property = attribute.name.slice('style:'.length)
|
|
721
|
+
const lead = parts.length === 0 ? '' : '; '
|
|
722
|
+
if (!attribute.expression) {
|
|
723
|
+
parts.push(
|
|
724
|
+
render.bytes(
|
|
725
|
+
`${lead}${property}: ${escapeQuote(attribute.value)}`,
|
|
726
|
+
),
|
|
727
|
+
)
|
|
728
|
+
continue
|
|
729
|
+
}
|
|
730
|
+
parts.push(
|
|
731
|
+
render.bytes(`${lead}${property}: `),
|
|
732
|
+
render.declaration(attribute),
|
|
733
|
+
)
|
|
734
|
+
}
|
|
735
|
+
return concat(parts)
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
/**
|
|
739
|
+
* The class list a set of `class:name` attributes renders as.
|
|
740
|
+
*
|
|
741
|
+
* 32.10 — A NAME IS MARKUP AND A VALUE IS A CONDITION, which is the whole of what makes this
|
|
742
|
+
* shorter than its `style` sibling: the name is the author's own source and takes 32.27's rewrite
|
|
743
|
+
* where the module is emitted, and the expression decides only whether it is written at all.
|
|
744
|
+
*
|
|
745
|
+
* EACH NAME CARRIES ITS OWN LEADING SPACE rather than a separator being computed between them,
|
|
746
|
+
* because how many of them render is not known until the values are read. A run of spaces and a
|
|
747
|
+
* leading one are both nothing in a class attribute — the value is split on whitespace — where
|
|
748
|
+
* `style`'s `;` has to be counted.
|
|
749
|
+
*/
|
|
750
|
+
function classValue(
|
|
751
|
+
plain: Attribute | undefined,
|
|
752
|
+
classes: readonly Attribute[],
|
|
753
|
+
lowering: Lowering,
|
|
754
|
+
render: ValueRender,
|
|
755
|
+
): string {
|
|
756
|
+
const parts: string[] = []
|
|
757
|
+
if (plain !== undefined)
|
|
758
|
+
parts.push(
|
|
759
|
+
plain.expression
|
|
760
|
+
? render.dynamic(plain)
|
|
761
|
+
: render.bytes(escapeQuote(plain.value)),
|
|
762
|
+
)
|
|
763
|
+
for (const attribute of classes) {
|
|
764
|
+
const written = render.bytes(
|
|
765
|
+
` ${escapeQuote(attribute.name.slice('class:'.length))}`,
|
|
766
|
+
)
|
|
767
|
+
// A `class:name` WITH NO EXPRESSION is a name with no condition on it — `class:active`
|
|
768
|
+
// alone, or `class:active="anything"` — and a name that is always written is exactly what
|
|
769
|
+
// the author's own `class` attribute is. Rendered as one rather than refused: there is
|
|
770
|
+
// nothing about it a clause forbids and nothing for a build error to save.
|
|
771
|
+
//
|
|
772
|
+
// THE CONDITION IS ECMASCRIPT'S ToBoolean, which `setClass`'s `Boolean(on)` is too, so a
|
|
773
|
+
// hydrated page never flips a class it was served with (`classifyAttributes.test.ts`).
|
|
774
|
+
parts.push(
|
|
775
|
+
attribute.expression
|
|
776
|
+
? `(${unlandable(lowering, attribute, lowering.expression(attribute))} ? ${written} : '')`
|
|
777
|
+
: written,
|
|
778
|
+
)
|
|
779
|
+
}
|
|
780
|
+
return concat(parts)
|
|
781
|
+
}
|