@abide/abide 0.58.0 → 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1781
- package/bin/abide.ts +788 -204
- package/package.json +30 -152
- package/scaffold/src/server/app.ts +6 -0
- package/scaffold/src/shared/.gitkeep +0 -0
- package/scaffold/src/ui/app.html +8 -0
- package/scaffold/src/ui/pages/page.abide +13 -0
- package/src/compiler/CHARACTER_REFERENCES.ts +2242 -0
- package/src/compiler/CheckerAnswer.ts +62 -0
- package/src/compiler/Cursor.ts +367 -0
- package/src/compiler/Finding.ts +2 -0
- package/src/compiler/Lowering.ts +648 -0
- package/src/compiler/PositionTable.ts +125 -0
- package/src/compiler/REACTIVE_MEMBERS.ts +36 -0
- package/src/compiler/SHARED_NAMES.ts +45 -0
- package/src/compiler/SPECIFIERS.ts +16 -0
- package/src/compiler/ShadowMap.ts +144 -0
- package/src/compiler/TemplateNode.ts +176 -0
- package/src/compiler/TypeSession.ts +1079 -0
- package/src/compiler/VOID_ELEMENTS.ts +22 -0
- package/src/compiler/aliasedSymbol.ts +15 -0
- package/src/compiler/ambientReadsIn.ts +152 -0
- package/src/compiler/argsDefaultsIn.ts +173 -0
- package/src/compiler/argsSchemaOf.ts +230 -0
- package/src/compiler/checkApp.ts +117 -0
- package/src/compiler/checkedShadow.ts +182 -0
- package/src/compiler/classifyRead.ts +577 -0
- package/src/compiler/classifyTemplate.ts +501 -0
- package/src/compiler/compileApp.ts +559 -0
- package/src/compiler/compiledEntry.ts +141 -0
- package/src/compiler/componentGraph.ts +139 -0
- package/src/compiler/declaredExports.ts +645 -0
- package/src/compiler/decodeCharacterReferences.ts +111 -0
- package/src/compiler/emitClient.ts +1343 -0
- package/src/compiler/emitComponent.ts +162 -0
- package/src/compiler/emitSource.ts +91 -0
- package/src/compiler/formatDiagnosis.ts +19 -0
- package/src/compiler/handlersUnder.ts +109 -0
- package/src/compiler/index.ts +15 -0
- package/src/compiler/invocationProps.ts +67 -0
- package/src/compiler/isNamedAlone.ts +9 -0
- package/src/compiler/lineOf.ts +38 -0
- package/src/compiler/parseAbide.ts +1341 -0
- package/src/compiler/projectShadow.ts +643 -0
- package/src/compiler/reactiveOptions.ts +82 -0
- package/src/compiler/reactiveTypes.ts +222 -0
- package/src/compiler/readSources.ts +100 -0
- package/src/compiler/readsIn.ts +1023 -0
- package/src/compiler/renderMarkup.ts +781 -0
- package/src/compiler/scaffold.ts +105 -0
- package/src/compiler/scopeStyles.ts +309 -0
- package/src/compiler/serveLanguage.ts +405 -0
- package/src/compiler/shareScope.ts +51 -0
- package/src/compiler/sharedModuleWrites.ts +88 -0
- package/src/compiler/splitImports.ts +387 -0
- package/src/compiler/templateWarnings.ts +128 -0
- package/src/compiler/tokenize.ts +317 -0
- package/src/compiler/trackingWarnings.ts +279 -0
- package/src/compiler/writeDefaultProject.ts +42 -0
- package/src/server/BRIDGE_VERSION.ts +3 -0
- package/src/server/CLIENT_BUILD.ts +56 -0
- package/src/server/DEFAULT_PORT.ts +6 -0
- package/src/server/DOCUMENT_HEADERS.ts +11 -0
- package/src/server/Inbox.ts +36 -0
- package/src/server/LogPanel.ts +239 -0
- package/src/server/MCP_PROTOCOL_VERSION.ts +3 -0
- package/src/server/SETTLE_MILLISECONDS.ts +7 -0
- package/src/server/VIRTUAL_DIRECTORY.ts +6 -0
- package/src/server/answerFailure.ts +91 -0
- package/src/server/answerRequest.ts +560 -0
- package/src/server/answerRpc.ts +537 -0
- package/src/server/answerSocket.ts +537 -0
- package/src/server/answerValue.ts +375 -0
- package/src/server/appDirectories.ts +9 -0
- package/src/server/appKit.ts +204 -0
- package/src/server/appPlugins.ts +26 -0
- package/src/server/argsFor.ts +40 -0
- package/src/server/assistant.ts +163 -0
- package/src/server/banner.ts +43 -0
- package/src/server/bridgeRelay.ts +249 -0
- package/src/server/buildDirectory.ts +10 -0
- package/src/server/callerOf.ts +60 -0
- package/src/server/claudeApi.ts +224 -0
- package/src/server/claudeCode.ts +187 -0
- package/src/server/clientBuildOptions.ts +49 -0
- package/src/server/coerceArgs.ts +110 -0
- package/src/server/commands.ts +442 -0
- package/src/server/componentImports.ts +56 -0
- package/src/server/componentModules.d.ts +9 -0
- package/src/server/compressAnswer.ts +66 -0
- package/src/server/config.ts +192 -0
- package/src/server/configFields.ts +92 -0
- package/src/server/createApp.ts +428 -0
- package/src/server/crossingOrigin.ts +49 -0
- package/src/server/csp.ts +77 -0
- package/src/server/devWorker.ts +613 -0
- package/src/server/faultPolicy.ts +59 -0
- package/src/server/fenceServer.ts +48 -0
- package/src/server/generatedSurfaces.ts +430 -0
- package/src/server/hooks.ts +190 -0
- package/src/server/index.ts +87 -0
- package/src/server/installServer.ts +47 -0
- package/src/server/launcherOptions.ts +62 -0
- package/src/server/launcherPage.ts +156 -0
- package/src/server/manifestOf.ts +114 -0
- package/src/server/muxUpgrade.ts +72 -0
- package/src/server/namesUnder.ts +15 -0
- package/src/server/nativeMenu.ts +296 -0
- package/src/server/negotiateEncoding.ts +39 -0
- package/src/server/plainAnswer.ts +19 -0
- package/src/server/prefers.ts +25 -0
- package/src/server/principal.ts +261 -0
- package/src/server/qualitiesOf.ts +22 -0
- package/src/server/randomToken.ts +9 -0
- package/src/server/reachable.ts +31 -0
- package/src/server/refuseAddressCollision.ts +30 -0
- package/src/server/remote.ts +242 -0
- package/src/server/render.ts +464 -0
- package/src/server/renderComponent.ts +33 -0
- package/src/server/reportHealth.ts +46 -0
- package/src/server/requestScope.ts +435 -0
- package/src/server/responseHelpers.ts +75 -0
- package/src/server/runCompiled.ts +44 -0
- package/src/server/runDesktop.ts +572 -0
- package/src/server/seedBuffer.ts +293 -0
- package/src/server/serveBuild.ts +198 -0
- package/src/server/serveDev.ts +499 -0
- package/src/server/shell.ts +506 -0
- package/src/server/surfaceOf.ts +47 -0
- package/src/server/testBuild.ts +237 -0
- package/src/server/trace.ts +151 -0
- package/src/server/versionOf.ts +109 -0
- package/src/server/withoutTrailingSlash.ts +4 -0
- package/src/shared/ADDRESSES.ts +69 -0
- package/src/shared/ANCHORS.ts +54 -0
- package/src/shared/Attributes.ts +339 -0
- package/src/shared/BOOLEAN_ATTRIBUTES.ts +41 -0
- package/src/shared/CHILDREN.ts +11 -0
- package/src/shared/CURRENT_ROUTER.ts +25 -0
- package/src/shared/CopyOptions.ts +19 -0
- package/src/shared/DEBUG_META.ts +6 -0
- package/src/shared/EARLY_CALLS.ts +8 -0
- package/src/shared/FAILURE_STATUS_TEXT.ts +48 -0
- package/src/shared/Failed.ts +146 -0
- package/src/shared/GLOBAL_GETS.ts +7 -0
- package/src/shared/Issues.ts +49 -0
- package/src/shared/JsonValue.ts +18 -0
- package/src/shared/LOAD_SIGNAL.ts +10 -0
- package/src/shared/MOUNT_META.ts +6 -0
- package/src/shared/Middleware.ts +34 -0
- package/src/shared/NAVIGATION_HEADER.ts +7 -0
- package/src/shared/PRINCIPAL_HEADER.ts +6 -0
- package/src/shared/RPC_SERVER.ts +67 -0
- package/src/shared/Raw.ts +90 -0
- package/src/shared/Schema.ts +229 -0
- package/src/shared/UNEXPECTED.ts +11 -0
- package/src/shared/URL_ATTRIBUTES.ts +19 -0
- package/src/shared/VERSION_HEADER.ts +6 -0
- package/src/shared/WORK.ts +37 -0
- package/src/shared/anchorMarkup.ts +15 -0
- package/src/shared/answerOf.ts +141 -0
- package/src/shared/applyPatch.ts +173 -0
- package/src/shared/armAnchor.ts +17 -0
- package/src/shared/attributeText.ts +50 -0
- package/src/shared/boundValue.ts +58 -0
- package/src/shared/cookies.ts +271 -0
- package/src/shared/csp.ts +55 -0
- package/src/shared/decodedOrKept.ts +14 -0
- package/src/shared/escapeText.ts +103 -0
- package/src/shared/framing.ts +131 -0
- package/src/shared/headKeyOf.ts +34 -0
- package/src/shared/health.ts +51 -0
- package/src/shared/index.ts +117 -0
- package/src/shared/isEventName.ts +10 -0
- package/src/shared/isRecord.ts +4 -0
- package/src/shared/issuesOf.ts +18 -0
- package/src/shared/jsonSchema.ts +50 -0
- package/src/shared/listOf.ts +20 -0
- package/src/shared/log.ts +284 -0
- package/src/shared/matchRoute.ts +99 -0
- package/src/shared/menuItem.ts +80 -0
- package/src/shared/mount.ts +45 -0
- package/src/shared/muxFrames.ts +35 -0
- package/src/shared/navigate.ts +26 -0
- package/src/shared/note.ts +24 -0
- package/src/shared/numberFromText.ts +10 -0
- package/src/shared/online.ts +19 -0
- package/src/shared/paint.ts +4 -0
- package/src/shared/principal.ts +145 -0
- package/src/shared/principalRotated.ts +47 -0
- package/src/shared/propCell.ts +99 -0
- package/src/shared/props.ts +24 -0
- package/src/shared/putOwn.ts +24 -0
- package/src/shared/queryText.ts +18 -0
- package/src/shared/reactive/CELL.ts +8 -0
- package/src/shared/reactive/Cursor.ts +223 -0
- package/src/shared/reactive/ENTRY_LIVES.ts +7 -0
- package/src/shared/reactive/Expiry.ts +103 -0
- package/src/shared/reactive/FOLLOWED.ts +8 -0
- package/src/shared/reactive/KEYED_BRAND.ts +8 -0
- package/src/shared/reactive/Keyed.ts +423 -0
- package/src/shared/reactive/MUTATION.ts +5 -0
- package/src/shared/reactive/NO_INITIAL.ts +6 -0
- package/src/shared/reactive/NotLanded.ts +21 -0
- package/src/shared/reactive/PATCHES.ts +11 -0
- package/src/shared/reactive/PATCH_SINKS.ts +26 -0
- package/src/shared/reactive/REACTIVE_BRAND.ts +9 -0
- package/src/shared/reactive/RESHAPING.ts +13 -0
- package/src/shared/reactive/Reactive.ts +4480 -0
- package/src/shared/reactive/SELECTION_MEMBERS.ts +12 -0
- package/src/shared/reactive/STREAMING.ts +5 -0
- package/src/shared/reactive/argsContract.ts +97 -0
- package/src/shared/reactive/byOf.ts +18 -0
- package/src/shared/reactive/callLoad.ts +200 -0
- package/src/shared/reactive/canonicalKey.ts +95 -0
- package/src/shared/reactive/chunksOfStream.ts +51 -0
- package/src/shared/reactive/index.ts +542 -0
- package/src/shared/reactive/isReactive.ts +19 -0
- package/src/shared/reactive/isThenable.ts +14 -0
- package/src/shared/reactive/matchesPattern.ts +16 -0
- package/src/shared/reactive/pairReactive.ts +41 -0
- package/src/shared/reactive/parameterDefaults.ts +356 -0
- package/src/shared/reactive/recordWrites.ts +472 -0
- package/src/shared/reactive/scoped.ts +157 -0
- package/src/shared/reactive/scoping.ts +64 -0
- package/src/shared/reactive/share.ts +91 -0
- package/src/shared/reactive/structural.ts +62 -0
- package/src/shared/reactive/tracking.ts +418 -0
- package/src/shared/reactive/watch.ts +310 -0
- package/src/shared/refuse.ts +224 -0
- package/src/shared/route.ts +29 -0
- package/src/shared/routePattern.ts +146 -0
- package/src/shared/rpc.ts +496 -0
- package/src/shared/rpcRequest.ts +73 -0
- package/src/shared/safeUrl.ts +68 -0
- package/src/shared/seededDocument.ts +36 -0
- package/src/shared/setUpLevels.ts +53 -0
- package/src/shared/slotValue.ts +34 -0
- package/src/shared/spread.ts +79 -0
- package/src/shared/takeEarlyCall.ts +86 -0
- package/src/shared/url.ts +140 -0
- package/src/shared/validateJson.ts +578 -0
- package/src/shared/versionInEtag.ts +14 -0
- package/src/shared/writePath.ts +95 -0
- package/src/ui/ArmRegion.ts +185 -0
- package/src/ui/LAYER_NAMES.ts +30 -0
- package/src/ui/List.ts +273 -0
- package/src/ui/Mismatch.ts +32 -0
- package/src/ui/RawRun.ts +99 -0
- package/src/ui/Router.ts +698 -0
- package/src/ui/Scope.ts +115 -0
- package/src/ui/TryRegion.ts +278 -0
- package/src/ui/adoptWalk.ts +126 -0
- package/src/ui/applyHead.ts +146 -0
- package/src/ui/bindElement.ts +44 -0
- package/src/ui/bindProperty.ts +79 -0
- package/src/ui/bindSpread.ts +44 -0
- package/src/ui/escapeless.ts +14 -0
- package/src/ui/index.ts +64 -0
- package/src/ui/leave.ts +35 -0
- package/src/ui/listenForRoutes.ts +92 -0
- package/src/ui/measureLayer.ts +34 -0
- package/src/ui/menuBridge.ts +19 -0
- package/src/ui/moveNode.ts +34 -0
- package/src/ui/parseMarkup.ts +35 -0
- package/src/ui/reconcile.ts +368 -0
- package/src/ui/regions.ts +137 -0
- package/src/ui/reportMenu.ts +57 -0
- package/src/ui/routing.ts +18 -0
- package/src/ui/rowKeyOf.ts +19 -0
- package/src/ui/rows.ts +99 -0
- package/src/ui/setAttribute.ts +37 -0
- package/src/ui/setClass.ts +27 -0
- package/src/ui/setMarkup.ts +20 -0
- package/src/ui/setStyleProperty.ts +30 -0
- package/src/ui/setText.ts +28 -0
- package/src/ui/socketWire.ts +258 -0
- package/src/ui/wire.ts +141 -0
- package/AGENTS.md +0 -446
- package/README.md +0 -249
- package/src/abideLsp.ts +0 -251
- package/src/abideModules.d.ts +0 -8
- package/src/abideResolverPlugin.ts +0 -1101
- package/src/appEntry.ts +0 -161
- package/src/assets/app.html +0 -12
- package/src/build.ts +0 -189
- package/src/buildCli.ts +0 -125
- package/src/buildDisconnected.ts +0 -117
- package/src/bundleApp.ts +0 -146
- package/src/bundleDisconnectedEntry.ts +0 -14
- package/src/checkAbide.ts +0 -145
- package/src/cliEntry.ts +0 -25
- package/src/clientBuildPlugins.ts +0 -33
- package/src/clientEntry.ts +0 -17
- package/src/compile.ts +0 -61
- package/src/controlServerWorker.ts +0 -433
- package/src/devEntry.ts +0 -381
- package/src/discoveryEntry.ts +0 -82
- package/src/initAgent.ts +0 -50
- package/src/lib/bundle/BundleMenu.ts +0 -12
- package/src/lib/bundle/BundleMenuItem.ts +0 -25
- package/src/lib/bundle/BundleWindow.ts +0 -37
- package/src/lib/bundle/WEBVIEW_BUILD_REVISION.ts +0 -9
- package/src/lib/bundle/WEBVIEW_VERSION.ts +0 -7
- package/src/lib/bundle/bindConnectedFlag.ts +0 -29
- package/src/lib/bundle/bindRequestNavigate.ts +0 -34
- package/src/lib/bundle/buildWebviewLib.ts +0 -111
- package/src/lib/bundle/bundled.ts +0 -35
- package/src/lib/bundle/disconnected.abide +0 -265
- package/src/lib/bundle/disconnected.css +0 -9
- package/src/lib/bundle/ensureWebviewLib.ts +0 -20
- package/src/lib/bundle/exitWithParent.ts +0 -30
- package/src/lib/bundle/infoPlist.ts +0 -52
- package/src/lib/bundle/installDownloads.ts +0 -34
- package/src/lib/bundle/installMacMenu.ts +0 -49
- package/src/lib/bundle/listenLocalControlServer.ts +0 -19
- package/src/lib/bundle/native/abideMenu.mm +0 -422
- package/src/lib/bundle/native/webview.h +0 -4557
- package/src/lib/bundle/onMenu.ts +0 -42
- package/src/lib/bundle/openWebview.ts +0 -104
- package/src/lib/bundle/pngToIcns.ts +0 -47
- package/src/lib/bundle/probeAbideServer.ts +0 -57
- package/src/lib/bundle/resolveServerBinary.ts +0 -12
- package/src/lib/bundle/resolveWebviewLib.ts +0 -53
- package/src/lib/bundle/serverBinaryFilename.ts +0 -8
- package/src/lib/bundle/signMacApp.ts +0 -37
- package/src/lib/bundle/spawnEmbeddedServer.ts +0 -73
- package/src/lib/bundle/stableLocalPort.ts +0 -19
- package/src/lib/bundle/waitForServer.ts +0 -28
- package/src/lib/bundle/webviewCachePath.ts +0 -23
- package/src/lib/bundle/webviewLibName.ts +0 -11
- package/src/lib/cli/completeCli.ts +0 -38
- package/src/lib/cli/connectToServer.ts +0 -23
- package/src/lib/cli/createClient.ts +0 -108
- package/src/lib/cli/dispatchCommand.ts +0 -72
- package/src/lib/cli/loadEnvFromBinaryDir.ts +0 -15
- package/src/lib/cli/parseArgvForRpc.ts +0 -131
- package/src/lib/cli/printCommandHelp.ts +0 -43
- package/src/lib/cli/printSessionHelp.ts +0 -28
- package/src/lib/cli/printSessionStatus.ts +0 -21
- package/src/lib/cli/printTopLevelHelp.ts +0 -83
- package/src/lib/cli/printTrimmed.ts +0 -8
- package/src/lib/cli/printValue.ts +0 -10
- package/src/lib/cli/renderCliCompletions.ts +0 -56
- package/src/lib/cli/resolveCliTarget.ts +0 -47
- package/src/lib/cli/runCli.ts +0 -188
- package/src/lib/cli/runSession.ts +0 -107
- package/src/lib/cli/startLocalInstance.ts +0 -14
- package/src/lib/cli/tokenizeArgvFlags.ts +0 -86
- package/src/lib/cli/tokenizeLine.ts +0 -51
- package/src/lib/cli/types/CliManifest.ts +0 -11
- package/src/lib/cli/types/CliManifestEntry.ts +0 -17
- package/src/lib/cli/types/CliTarget.ts +0 -13
- package/src/lib/mcp/annotationsForMethod.ts +0 -29
- package/src/lib/mcp/buildPrompts.ts +0 -25
- package/src/lib/mcp/createMcpResourceServer.ts +0 -113
- package/src/lib/mcp/createMcpServer.ts +0 -56
- package/src/lib/mcp/dispatchMcpRequest.ts +0 -159
- package/src/lib/mcp/mcpResourceServerSlot.ts +0 -13
- package/src/lib/mcp/mcpSurface.ts +0 -57
- package/src/lib/mcp/mcpTools.ts +0 -196
- package/src/lib/mcp/renderPrompt.ts +0 -25
- package/src/lib/mcp/toolResultFromResponse.ts +0 -100
- package/src/lib/mcp/types/JsonRpcRequest.ts +0 -12
- package/src/lib/mcp/types/JsonRpcResponse.ts +0 -20
- package/src/lib/mcp/types/McpResourceContents.ts +0 -10
- package/src/lib/mcp/types/McpResourceDescriptor.ts +0 -6
- package/src/lib/mcp/types/McpResourceServer.ts +0 -12
- package/src/lib/mcp/types/McpServer.ts +0 -9
- package/src/lib/mcp/types/McpServerOptions.ts +0 -16
- package/src/lib/mcp/types/McpSurface.ts +0 -15
- package/src/lib/mcp/types/PromptDescriptor.ts +0 -5
- package/src/lib/mcp/types/PromptMessage.ts +0 -2
- package/src/lib/mcp/types/ToolDescriptor.ts +0 -7
- package/src/lib/mcp/types/ToolResult.ts +0 -2
- package/src/lib/server/AppModule.ts +0 -47
- package/src/lib/server/DELETE.ts +0 -10
- package/src/lib/server/GET.ts +0 -10
- package/src/lib/server/HEAD.ts +0 -10
- package/src/lib/server/PATCH.ts +0 -10
- package/src/lib/server/POST.ts +0 -10
- package/src/lib/server/PUT.ts +0 -10
- package/src/lib/server/agent.ts +0 -86
- package/src/lib/server/appDataDir.ts +0 -16
- package/src/lib/server/cli/buildEnvContent.ts +0 -19
- package/src/lib/server/cli/createTarGz.ts +0 -77
- package/src/lib/server/cli/handleCliDownload.ts +0 -152
- package/src/lib/server/cli/handleCliInstall.ts +0 -37
- package/src/lib/server/cli/installScript.ts +0 -31
- package/src/lib/server/cli/maxSourceMtime.ts +0 -26
- package/src/lib/server/cookies.ts +0 -30
- package/src/lib/server/env.ts +0 -51
- package/src/lib/server/error.ts +0 -110
- package/src/lib/server/json.ts +0 -57
- package/src/lib/server/jsonl.ts +0 -47
- package/src/lib/server/prompts/definePrompt.ts +0 -21
- package/src/lib/server/prompts/promptRegistry.ts +0 -9
- package/src/lib/server/prompts/registerPrompt.ts +0 -6
- package/src/lib/server/prompts/renderPromptTemplate.ts +0 -17
- package/src/lib/server/prompts/types/Prompt.ts +0 -14
- package/src/lib/server/prompts/types/PromptOptions.ts +0 -12
- package/src/lib/server/prompts/types/PromptRegistryEntry.ts +0 -13
- package/src/lib/server/prompts/types/PromptRoutes.ts +0 -10
- package/src/lib/server/redirect.ts +0 -43
- package/src/lib/server/render.ts +0 -70
- package/src/lib/server/request.ts +0 -19
- package/src/lib/server/rpc/defineRpc.ts +0 -271
- package/src/lib/server/rpc/dispatchRpcInProcess.ts +0 -46
- package/src/lib/server/rpc/findRpcByCommandName.ts +0 -18
- package/src/lib/server/rpc/parseArgs.ts +0 -244
- package/src/lib/server/rpc/readBodyWithinLimit.ts +0 -47
- package/src/lib/server/rpc/registerRpc.ts +0 -6
- package/src/lib/server/rpc/resolveRpcJsonSchema.ts +0 -28
- package/src/lib/server/rpc/rpcRegistry.ts +0 -11
- package/src/lib/server/rpc/runWithRpcTimeout.ts +0 -58
- package/src/lib/server/rpc/types/RemoteHandler.ts +0 -31
- package/src/lib/server/rpc/types/RemoteRoutes.ts +0 -13
- package/src/lib/server/rpc/types/RpcHelper.ts +0 -185
- package/src/lib/server/rpc/types/RpcRegistryEntry.ts +0 -50
- package/src/lib/server/rpc/types/TypedError.ts +0 -18
- package/src/lib/server/rpc/types/TypedResponse.ts +0 -18
- package/src/lib/server/rpc/unprocessed.ts +0 -13
- package/src/lib/server/rpc/validationError.ts +0 -17
- package/src/lib/server/runtime/DEFAULT_PORT.ts +0 -6
- package/src/lib/server/runtime/DEV_READY_MESSAGE.ts +0 -6
- package/src/lib/server/runtime/DEV_REBUILD_MESSAGE.ts +0 -4
- package/src/lib/server/runtime/DEV_RELOAD_CLIENT_SCRIPT.ts +0 -92
- package/src/lib/server/runtime/SSR_SWAP_SCRIPT.ts +0 -19
- package/src/lib/server/runtime/STATUS_TEXT.ts +0 -22
- package/src/lib/server/runtime/STREAMED_HTML_HEADER.ts +0 -13
- package/src/lib/server/runtime/acceptsGzip.ts +0 -33
- package/src/lib/server/runtime/amendBroadcaster.ts +0 -53
- package/src/lib/server/runtime/buildCacheSnapshot.ts +0 -63
- package/src/lib/server/runtime/buildHealthPayload.ts +0 -34
- package/src/lib/server/runtime/buildInFlightSnapshot.ts +0 -35
- package/src/lib/server/runtime/buildInspectorSurface.ts +0 -47
- package/src/lib/server/runtime/buildOpenApiSpec.ts +0 -150
- package/src/lib/server/runtime/buildPreloadManifest.ts +0 -153
- package/src/lib/server/runtime/cacheControlForAsset.ts +0 -22
- package/src/lib/server/runtime/cacheStalenessBroadcaster.ts +0 -33
- package/src/lib/server/runtime/containsTraversal.ts +0 -41
- package/src/lib/server/runtime/createAppAssetServer.ts +0 -100
- package/src/lib/server/runtime/createAppRouteResolver.ts +0 -145
- package/src/lib/server/runtime/createAssetHeaderCache.ts +0 -31
- package/src/lib/server/runtime/createPlumbingRouter.ts +0 -212
- package/src/lib/server/runtime/createPublicAssetServer.ts +0 -76
- package/src/lib/server/runtime/createRouteDispatcher.ts +0 -121
- package/src/lib/server/runtime/createServer.ts +0 -605
- package/src/lib/server/runtime/createUiPageRenderer.ts +0 -489
- package/src/lib/server/runtime/crossOriginForbidden.ts +0 -17
- package/src/lib/server/runtime/crossOriginGate.ts +0 -29
- package/src/lib/server/runtime/devClientFingerprint.ts +0 -103
- package/src/lib/server/runtime/devReloadResponse.ts +0 -41
- package/src/lib/server/runtime/disableIdleTimeoutForStream.ts +0 -27
- package/src/lib/server/runtime/envSchemaStore.ts +0 -15
- package/src/lib/server/runtime/finalizeResponse.ts +0 -42
- package/src/lib/server/runtime/findOpenPort.ts +0 -21
- package/src/lib/server/runtime/flushingGzipStream.ts +0 -62
- package/src/lib/server/runtime/getActiveServer.ts +0 -6
- package/src/lib/server/runtime/globToPathSet.ts +0 -29
- package/src/lib/server/runtime/gzipResponse.ts +0 -57
- package/src/lib/server/runtime/inFlightRequests.ts +0 -13
- package/src/lib/server/runtime/inProcessServer.ts +0 -20
- package/src/lib/server/runtime/installAmbientScopeStore.ts +0 -54
- package/src/lib/server/runtime/internalErrorResponse.ts +0 -28
- package/src/lib/server/runtime/isCrossOriginRequest.ts +0 -23
- package/src/lib/server/runtime/listenOnOpenPort.ts +0 -36
- package/src/lib/server/runtime/logExposedSurfaces.ts +0 -156
- package/src/lib/server/runtime/maybeMountInspector.ts +0 -104
- package/src/lib/server/runtime/mimeForExtension.ts +0 -14
- package/src/lib/server/runtime/pageRenderSlot.ts +0 -15
- package/src/lib/server/runtime/pageUrlFromStore.ts +0 -15
- package/src/lib/server/runtime/parseIdleTimeout.ts +0 -10
- package/src/lib/server/runtime/parsePort.ts +0 -11
- package/src/lib/server/runtime/pathStore.ts +0 -15
- package/src/lib/server/runtime/registryManifests.ts +0 -66
- package/src/lib/server/runtime/renderCellBarrierStore.ts +0 -15
- package/src/lib/server/runtime/requestContext.ts +0 -5
- package/src/lib/server/runtime/resolvePageSnapshot.ts +0 -25
- package/src/lib/server/runtime/respondWithEmbeddedAsset.ts +0 -18
- package/src/lib/server/runtime/runWithRequestScope.ts +0 -165
- package/src/lib/server/runtime/serializeCacheSnapshot.ts +0 -31
- package/src/lib/server/runtime/serverSlot.ts +0 -13
- package/src/lib/server/runtime/setActiveServer.ts +0 -6
- package/src/lib/server/runtime/snapshotEntryFromCache.ts +0 -121
- package/src/lib/server/runtime/streamCacheResolutions.ts +0 -44
- package/src/lib/server/runtime/streamFromIterator.ts +0 -124
- package/src/lib/server/runtime/textResponse.ts +0 -23
- package/src/lib/server/runtime/typedErrorResponse.ts +0 -26
- package/src/lib/server/runtime/types/Assets.ts +0 -6
- package/src/lib/server/runtime/types/DevReloadStamp.ts +0 -14
- package/src/lib/server/runtime/types/InspectorCacheEntry.ts +0 -24
- package/src/lib/server/runtime/types/InspectorCacheSnapshot.ts +0 -11
- package/src/lib/server/runtime/types/InspectorContext.ts +0 -34
- package/src/lib/server/runtime/types/InspectorInFlightRequest.ts +0 -20
- package/src/lib/server/runtime/types/InspectorInFlightSnapshot.ts +0 -10
- package/src/lib/server/runtime/types/InspectorPrompt.ts +0 -15
- package/src/lib/server/runtime/types/InspectorRpc.ts +0 -27
- package/src/lib/server/runtime/types/InspectorSocket.ts +0 -17
- package/src/lib/server/runtime/types/InspectorSurface.ts +0 -16
- package/src/lib/server/runtime/types/RequestStore.ts +0 -125
- package/src/lib/server/runtime/warnUnguardedMcp.ts +0 -43
- package/src/lib/server/runtime/withResponseDefaults.ts +0 -29
- package/src/lib/server/server.ts +0 -33
- package/src/lib/server/socket.ts +0 -32
- package/src/lib/server/sockets/amendFamilyEntry.ts +0 -39
- package/src/lib/server/sockets/createSocketDispatcher.ts +0 -397
- package/src/lib/server/sockets/defineSocket.ts +0 -225
- package/src/lib/server/sockets/lookupSocket.ts +0 -6
- package/src/lib/server/sockets/registerSocket.ts +0 -18
- package/src/lib/server/sockets/socketOperations.ts +0 -36
- package/src/lib/server/sockets/socketRegistry.ts +0 -9
- package/src/lib/server/sockets/types/SocketOperation.ts +0 -22
- package/src/lib/server/sockets/types/SocketOptions.ts +0 -26
- package/src/lib/server/sockets/types/SocketRegistryEntry.ts +0 -19
- package/src/lib/server/sockets/types/SocketRoutes.ts +0 -10
- package/src/lib/server/sse.ts +0 -58
- package/src/lib/shared/ABIDE_PACKAGE_NAME.ts +0 -7
- package/src/lib/shared/ABIDE_VERSION.ts +0 -9
- package/src/lib/shared/AMEND_TOPIC_PREFIX.ts +0 -9
- package/src/lib/shared/ASYNC_CELL.ts +0 -5
- package/src/lib/shared/CACHE_CONTROL_VALUES.ts +0 -16
- package/src/lib/shared/CACHE_STALENESS_SOCKET.ts +0 -8
- package/src/lib/shared/CLI_PATH.ts +0 -7
- package/src/lib/shared/DEFER.ts +0 -8
- package/src/lib/shared/DEV_REBUILD_PATH.ts +0 -6
- package/src/lib/shared/DEV_RELOAD_PATH.ts +0 -6
- package/src/lib/shared/HEALTH_PATH.ts +0 -7
- package/src/lib/shared/HTTP_METHODS.ts +0 -6
- package/src/lib/shared/HttpError.ts +0 -30
- package/src/lib/shared/IDENTITY_PATH.ts +0 -6
- package/src/lib/shared/INSPECTOR_PATH.ts +0 -7
- package/src/lib/shared/MCP_PATH.ts +0 -6
- package/src/lib/shared/NAV_HEADER.ts +0 -8
- package/src/lib/shared/OFFLINE_HEADER.ts +0 -8
- package/src/lib/shared/PROXIED_SERVER_SUBDIRS.ts +0 -15
- package/src/lib/shared/REF_JSON_HEADER.ts +0 -9
- package/src/lib/shared/REF_JSON_TAGS.ts +0 -43
- package/src/lib/shared/REMOTE_FUNCTION.ts +0 -8
- package/src/lib/shared/REPLAYABLE_METHODS.ts +0 -12
- package/src/lib/shared/RESERVED_SOCKET_PREFIX.ts +0 -8
- package/src/lib/shared/RPC_ARGS_TYPE.ts +0 -7
- package/src/lib/shared/RPC_SHIM_GLOBALS.ts +0 -9
- package/src/lib/shared/SEEDS.ts +0 -33
- package/src/lib/shared/SOCKETS_PATH.ts +0 -7
- package/src/lib/shared/SOCKET_SEED.ts +0 -12
- package/src/lib/shared/SSR_SCRIPT_ID.ts +0 -11
- package/src/lib/shared/STREAMING_CONTENT_TYPES.ts +0 -12
- package/src/lib/shared/SocketDisconnectedError.ts +0 -13
- package/src/lib/shared/TEXT_PLAIN.ts +0 -7
- package/src/lib/shared/abideImportName.ts +0 -44
- package/src/lib/shared/abideLog.ts +0 -38
- package/src/lib/shared/activeCacheStore.ts +0 -12
- package/src/lib/shared/activePage.ts +0 -12
- package/src/lib/shared/amend.ts +0 -48
- package/src/lib/shared/amendBroadcastSlot.ts +0 -19
- package/src/lib/shared/appDataDir.ts +0 -34
- package/src/lib/shared/appNameSlot.ts +0 -10
- package/src/lib/shared/applyAmendLocally.ts +0 -20
- package/src/lib/shared/applyCacheStalenessLocally.ts +0 -18
- package/src/lib/shared/assertExhaustive.ts +0 -14
- package/src/lib/shared/attachRpcSelectorMethods.ts +0 -44
- package/src/lib/shared/attachSocketSelectorMethods.ts +0 -34
- package/src/lib/shared/augmentModule.ts +0 -18
- package/src/lib/shared/basePath.ts +0 -11
- package/src/lib/shared/basePathFromAppUrl.ts +0 -20
- package/src/lib/shared/baseSlot.ts +0 -9
- package/src/lib/shared/binaryDirEnvPath.ts +0 -12
- package/src/lib/shared/bodyValueForKind.ts +0 -34
- package/src/lib/shared/browserClientFlags.ts +0 -10
- package/src/lib/shared/buildArtifact.ts +0 -20
- package/src/lib/shared/buildRpcProxy.ts +0 -39
- package/src/lib/shared/buildRpcRequest.ts +0 -81
- package/src/lib/shared/buildSocketOverChannel.ts +0 -102
- package/src/lib/shared/bundleGraphFromMetafile.ts +0 -68
- package/src/lib/shared/bundleLayout.ts +0 -36
- package/src/lib/shared/cache.ts +0 -1584
- package/src/lib/shared/cacheEntryFromSnapshot.ts +0 -77
- package/src/lib/shared/cacheManagedSlot.ts +0 -10
- package/src/lib/shared/cacheReaderSocketSlot.ts +0 -11
- package/src/lib/shared/cacheStalenessSlot.ts +0 -21
- package/src/lib/shared/cacheStoreSlot.ts +0 -12
- package/src/lib/shared/cacheStores.ts +0 -10
- package/src/lib/shared/canonicalJson.ts +0 -86
- package/src/lib/shared/carriesBodyArgs.ts +0 -13
- package/src/lib/shared/changeAffectsClient.ts +0 -40
- package/src/lib/shared/clearLastConnection.ts +0 -7
- package/src/lib/shared/commandNameForUrl.ts +0 -17
- package/src/lib/shared/contentBodyKind.ts +0 -27
- package/src/lib/shared/contentTypeOf.ts +0 -6
- package/src/lib/shared/createCacheStore.ts +0 -147
- package/src/lib/shared/createChannelLog.ts +0 -146
- package/src/lib/shared/createLifecycleChannel.ts +0 -62
- package/src/lib/shared/createLivenessWatch.ts +0 -118
- package/src/lib/shared/createPushIterator.ts +0 -132
- package/src/lib/shared/createReachable.ts +0 -78
- package/src/lib/shared/createRemoteFunction.ts +0 -210
- package/src/lib/shared/createResolverSlot.ts +0 -30
- package/src/lib/shared/createRpcServerProgram.ts +0 -1007
- package/src/lib/shared/createSocketSubRegistry.ts +0 -112
- package/src/lib/shared/createSubscriber.ts +0 -55
- package/src/lib/shared/createTraceContext.ts +0 -21
- package/src/lib/shared/dataDirEnvPath.ts +0 -12
- package/src/lib/shared/debugGate.ts +0 -90
- package/src/lib/shared/decodeRefJson.ts +0 -112
- package/src/lib/shared/decodeResponse.ts +0 -54
- package/src/lib/shared/decodeWireBody.ts +0 -35
- package/src/lib/shared/detectRpcMethod.ts +0 -24
- package/src/lib/shared/detectTarget.ts +0 -27
- package/src/lib/shared/docSnapshotsSlot.ts +0 -13
- package/src/lib/shared/done.ts +0 -20
- package/src/lib/shared/emitLogRecord.ts +0 -217
- package/src/lib/shared/encodeRefJson.ts +0 -108
- package/src/lib/shared/encodeSeedValue.ts +0 -24
- package/src/lib/shared/encodeWireBody.ts +0 -18
- package/src/lib/shared/escapeHtml.ts +0 -15
- package/src/lib/shared/escapeRegex.ts +0 -9
- package/src/lib/shared/exeSuffix.ts +0 -9
- package/src/lib/shared/exitOnBuildFailure.ts +0 -18
- package/src/lib/shared/extraForwardHeaders.ts +0 -16
- package/src/lib/shared/fieldErrorsFromIssues.ts +0 -27
- package/src/lib/shared/fileName.ts +0 -9
- package/src/lib/shared/fileStem.ts +0 -11
- package/src/lib/shared/findExportCallSite.ts +0 -233
- package/src/lib/shared/formatTraceparent.ts +0 -6
- package/src/lib/shared/forwardHeaders.ts +0 -44
- package/src/lib/shared/generateDeclarations.ts +0 -72
- package/src/lib/shared/getRemoteMeta.ts +0 -5
- package/src/lib/shared/hasSeedableRequest.ts +0 -25
- package/src/lib/shared/health.ts +0 -179
- package/src/lib/shared/healthReadSlot.ts +0 -11
- package/src/lib/shared/healthSeedSlot.ts +0 -12
- package/src/lib/shared/html.ts +0 -19
- package/src/lib/shared/httpErrorFor.ts +0 -26
- package/src/lib/shared/hydrationWindow.ts +0 -53
- package/src/lib/shared/importNamesToStrip.ts +0 -13
- package/src/lib/shared/invalidate.ts +0 -39
- package/src/lib/shared/invalidateEvent.ts +0 -11
- package/src/lib/shared/invalidateTripwire.ts +0 -40
- package/src/lib/shared/isAbideHealthPayload.ts +0 -11
- package/src/lib/shared/isAsciiWhitespace.ts +0 -5
- package/src/lib/shared/isAsyncCell.ts +0 -11
- package/src/lib/shared/isAsyncIterable.ts +0 -8
- package/src/lib/shared/isCompileTarget.ts +0 -21
- package/src/lib/shared/isDebugEnabled.ts +0 -19
- package/src/lib/shared/isDebugNegated.ts +0 -17
- package/src/lib/shared/isIdentPart.ts +0 -9
- package/src/lib/shared/isIdentStart.ts +0 -8
- package/src/lib/shared/isLayoutFile.ts +0 -12
- package/src/lib/shared/isModuleNotFound.ts +0 -18
- package/src/lib/shared/isReadOnlyMethod.ts +0 -14
- package/src/lib/shared/isReplayableMethod.ts +0 -7
- package/src/lib/shared/isStreamingResponse.ts +0 -12
- package/src/lib/shared/isSubscribable.ts +0 -15
- package/src/lib/shared/isThenable.ts +0 -9
- package/src/lib/shared/jsonSchemaForPromptArguments.ts +0 -29
- package/src/lib/shared/jsonSchemaForSchema.ts +0 -39
- package/src/lib/shared/jsonSchemaForType.ts +0 -245
- package/src/lib/shared/jsonlErrorFrame.ts +0 -24
- package/src/lib/shared/keyForRemoteCall.ts +0 -30
- package/src/lib/shared/keyMatchesPrefix.ts +0 -9
- package/src/lib/shared/keyPrefixForRemote.ts +0 -12
- package/src/lib/shared/lastConnectionPath.ts +0 -7
- package/src/lib/shared/layoutChainForRoute.ts +0 -22
- package/src/lib/shared/lenientDecode.ts +0 -15
- package/src/lib/shared/loadEnvFile.ts +0 -17
- package/src/lib/shared/loadEnvFromDataDir.ts +0 -14
- package/src/lib/shared/loadProjectTsConfig.ts +0 -28
- package/src/lib/shared/log.ts +0 -24
- package/src/lib/shared/logClosingRecord.ts +0 -28
- package/src/lib/shared/logTapSlot.ts +0 -13
- package/src/lib/shared/manifestModule.ts +0 -39
- package/src/lib/shared/markFrameworkSourcesIgnored.ts +0 -47
- package/src/lib/shared/matchRoute.ts +0 -165
- package/src/lib/shared/matcherFromEnvelope.ts +0 -31
- package/src/lib/shared/memoizeByKey.ts +0 -32
- package/src/lib/shared/messageFromError.ts +0 -6
- package/src/lib/shared/normalizePathname.ts +0 -11
- package/src/lib/shared/normalizeTarget.ts +0 -10
- package/src/lib/shared/online.ts +0 -51
- package/src/lib/shared/page.ts +0 -30
- package/src/lib/shared/pageSlot.ts +0 -17
- package/src/lib/shared/pageUrlForFile.ts +0 -14
- package/src/lib/shared/parseBoundedEnvInt.ts +0 -20
- package/src/lib/shared/parseEnv.ts +0 -41
- package/src/lib/shared/parsePromptMarkdown.ts +0 -35
- package/src/lib/shared/parseRouteSegments.ts +0 -31
- package/src/lib/shared/parseTraceparent.ts +0 -26
- package/src/lib/shared/peek.ts +0 -46
- package/src/lib/shared/pending.ts +0 -36
- package/src/lib/shared/pendingAsyncCellsSlot.ts +0 -13
- package/src/lib/shared/prepareRemoteExport.ts +0 -40
- package/src/lib/shared/prepareRpcModule.ts +0 -240
- package/src/lib/shared/prepareSocketModule.ts +0 -46
- package/src/lib/shared/probeRegistries.ts +0 -68
- package/src/lib/shared/producerKey.ts +0 -32
- package/src/lib/shared/programNameForPackage.ts +0 -16
- package/src/lib/shared/promptNameForFile.ts +0 -10
- package/src/lib/shared/queryStringFromArgs.ts +0 -38
- package/src/lib/shared/randomHexId.ts +0 -14
- package/src/lib/shared/reachable.ts +0 -99
- package/src/lib/shared/readEnvFile.ts +0 -15
- package/src/lib/shared/readLastConnection.ts +0 -18
- package/src/lib/shared/readPackageJson.ts +0 -9
- package/src/lib/shared/recordRemoteMeta.ts +0 -5
- package/src/lib/shared/refresh.ts +0 -39
- package/src/lib/shared/refreshing.ts +0 -37
- package/src/lib/shared/remoteMetaStore.ts +0 -16
- package/src/lib/shared/requestScopeSlot.ts +0 -13
- package/src/lib/shared/resolveClientFlags.ts +0 -20
- package/src/lib/shared/resolvedCellsSlot.ts +0 -13
- package/src/lib/shared/responseBodyKind.ts +0 -35
- package/src/lib/shared/responseErrorText.ts +0 -9
- package/src/lib/shared/reviveWireField.ts +0 -49
- package/src/lib/shared/reviveWireOutput.ts +0 -36
- package/src/lib/shared/routeParamsShape.ts +0 -20
- package/src/lib/shared/rpcErrorRegistry.ts +0 -69
- package/src/lib/shared/rpcServerForRoot.ts +0 -25
- package/src/lib/shared/rpcTimeoutSlot.ts +0 -9
- package/src/lib/shared/rpcUrlForFile.ts +0 -19
- package/src/lib/shared/runningAsStandaloneBinary.ts +0 -13
- package/src/lib/shared/safeJsonForScript.ts +0 -17
- package/src/lib/shared/scanPages.ts +0 -25
- package/src/lib/shared/selectorMatcher.ts +0 -55
- package/src/lib/shared/selectorPrefix.ts +0 -32
- package/src/lib/shared/serializeEnv.ts +0 -30
- package/src/lib/shared/serializeSelector.ts +0 -69
- package/src/lib/shared/setAppName.ts +0 -5
- package/src/lib/shared/setOwnProperty.ts +0 -19
- package/src/lib/shared/setsIntersect.ts +0 -15
- package/src/lib/shared/sharedCacheStore.ts +0 -14
- package/src/lib/shared/sharedCacheStoreSlot.ts +0 -10
- package/src/lib/shared/skipNonCode.ts +0 -230
- package/src/lib/shared/snapshotShippable.ts +0 -23
- package/src/lib/shared/snippet.ts +0 -30
- package/src/lib/shared/socketNameForFile.ts +0 -11
- package/src/lib/shared/socketTailsSlot.ts +0 -13
- package/src/lib/shared/socketTapSlot.ts +0 -12
- package/src/lib/shared/sseErrorFrame.ts +0 -29
- package/src/lib/shared/streamResponse.ts +0 -180
- package/src/lib/shared/streamedCellsSlot.ts +0 -14
- package/src/lib/shared/stripImport.ts +0 -29
- package/src/lib/shared/subscribableFromResponse.ts +0 -51
- package/src/lib/shared/subscribableProbes.ts +0 -111
- package/src/lib/shared/tailProbeSlot.ts +0 -23
- package/src/lib/shared/toTagSet.ts +0 -4
- package/src/lib/shared/trace.ts +0 -16
- package/src/lib/shared/types/AmendApply.ts +0 -15
- package/src/lib/shared/types/AsyncComputed.ts +0 -20
- package/src/lib/shared/types/AsyncState.ts +0 -13
- package/src/lib/shared/types/CacheEntry.ts +0 -100
- package/src/lib/shared/types/CacheInvalidation.ts +0 -9
- package/src/lib/shared/types/CacheOnContext.ts +0 -15
- package/src/lib/shared/types/CacheOptions.ts +0 -53
- package/src/lib/shared/types/CachePolicy.ts +0 -31
- package/src/lib/shared/types/CacheReaderHook.ts +0 -11
- package/src/lib/shared/types/CacheSelector.ts +0 -17
- package/src/lib/shared/types/CacheSnapshotEntry.ts +0 -32
- package/src/lib/shared/types/CacheStalenessApply.ts +0 -13
- package/src/lib/shared/types/CacheStalenessFrame.ts +0 -24
- package/src/lib/shared/types/CacheStats.ts +0 -13
- package/src/lib/shared/types/CacheStore.ts +0 -45
- package/src/lib/shared/types/ChannelLog.ts +0 -13
- package/src/lib/shared/types/ClientFlags.ts +0 -13
- package/src/lib/shared/types/CompileTarget.ts +0 -6
- package/src/lib/shared/types/DebugGate.ts +0 -10
- package/src/lib/shared/types/DocSnapshots.ts +0 -12
- package/src/lib/shared/types/ErrorJsonSchemas.ts +0 -8
- package/src/lib/shared/types/ErrorSpec.ts +0 -11
- package/src/lib/shared/types/FrameworkLog.ts +0 -13
- package/src/lib/shared/types/HttpMethod.ts +0 -3
- package/src/lib/shared/types/InputCoercion.ts +0 -17
- package/src/lib/shared/types/LastConnection.ts +0 -9
- package/src/lib/shared/types/Log.ts +0 -13
- package/src/lib/shared/types/LogRecord.ts +0 -42
- package/src/lib/shared/types/LogVoice.ts +0 -7
- package/src/lib/shared/types/NamedAsyncIterable.ts +0 -26
- package/src/lib/shared/types/OutputWirePlan.ts +0 -17
- package/src/lib/shared/types/PageSnapshot.ts +0 -14
- package/src/lib/shared/types/PagesScan.ts +0 -7
- package/src/lib/shared/types/PendingAsyncCells.ts +0 -10
- package/src/lib/shared/types/PromptArgument.ts +0 -12
- package/src/lib/shared/types/RawRemoteFunction.ts +0 -20
- package/src/lib/shared/types/RemoteCallable.ts +0 -40
- package/src/lib/shared/types/RemoteFunction.ts +0 -116
- package/src/lib/shared/types/ReplayableMethod.ts +0 -7
- package/src/lib/shared/types/RequestScopeInfo.ts +0 -16
- package/src/lib/shared/types/ResolvedCells.ts +0 -11
- package/src/lib/shared/types/ResolverSlot.ts +0 -13
- package/src/lib/shared/types/ReturnBody.ts +0 -15
- package/src/lib/shared/types/RpcBuildStamps.ts +0 -32
- package/src/lib/shared/types/RpcError.ts +0 -26
- package/src/lib/shared/types/RpcErrorGuard.ts +0 -35
- package/src/lib/shared/types/RpcInvoker.ts +0 -6
- package/src/lib/shared/types/RpcOptions.ts +0 -22
- package/src/lib/shared/types/Socket.ts +0 -54
- package/src/lib/shared/types/SocketChannel.ts +0 -17
- package/src/lib/shared/types/SocketClientFrame.ts +0 -19
- package/src/lib/shared/types/SocketServerFrame.ts +0 -24
- package/src/lib/shared/types/SocketSubCallbacks.ts +0 -13
- package/src/lib/shared/types/SocketTails.ts +0 -13
- package/src/lib/shared/types/SourceMap.ts +0 -14
- package/src/lib/shared/types/SsrBootState.ts +0 -27
- package/src/lib/shared/types/SsrPayload.ts +0 -36
- package/src/lib/shared/types/StandardSchemaV1.ts +0 -56
- package/src/lib/shared/types/StreamPolicy.ts +0 -11
- package/src/lib/shared/types/StreamedCells.ts +0 -19
- package/src/lib/shared/types/StreamedResolution.ts +0 -28
- package/src/lib/shared/types/TailHooks.ts +0 -13
- package/src/lib/shared/types/TraceContext.ts +0 -17
- package/src/lib/shared/types/ValidationErrorData.ts +0 -20
- package/src/lib/shared/types/WireKind.ts +0 -11
- package/src/lib/shared/url.ts +0 -141
- package/src/lib/shared/validationHttpError.ts +0 -33
- package/src/lib/shared/warmSeedKey.ts +0 -16
- package/src/lib/shared/wireJsonReplacer.ts +0 -30
- package/src/lib/shared/withBase.ts +0 -10
- package/src/lib/shared/withBaseUrl.ts +0 -17
- package/src/lib/shared/withCacheManaged.ts +0 -18
- package/src/lib/shared/withJsonSchema.ts +0 -21
- package/src/lib/shared/writeDts.ts +0 -19
- package/src/lib/shared/writeHealthDts.ts +0 -36
- package/src/lib/shared/writeLastConnection.ts +0 -13
- package/src/lib/shared/writePublicAssetsDts.ts +0 -27
- package/src/lib/shared/writeRoutesDts.ts +0 -41
- package/src/lib/shared/writeRpcDts.ts +0 -60
- package/src/lib/shared/writeTestRpcDts.ts +0 -45
- package/src/lib/shared/writeTestSocketsDts.ts +0 -34
- package/src/lib/test/assertAgentFrameConformance.ts +0 -73
- package/src/lib/test/createScriptedSurface.ts +0 -45
- package/src/lib/test/createTestApp.ts +0 -242
- package/src/lib/test/createTestSocketChannel.ts +0 -85
- package/src/lib/ui/README.md +0 -86
- package/src/lib/ui/activePendingCells.ts +0 -14
- package/src/lib/ui/amendReaderHook.ts +0 -125
- package/src/lib/ui/compile/ABIDE_SEMANTIC_TOKENS_LEGEND.ts +0 -79
- package/src/lib/ui/compile/AbideCompileError.ts +0 -16
- package/src/lib/ui/compile/BLOCK_KEYWORDS.ts +0 -21
- package/src/lib/ui/compile/SSR_ESCAPE.ts +0 -40
- package/src/lib/ui/compile/TS_PRINTER.ts +0 -7
- package/src/lib/ui/compile/UI_RUNTIME_IMPORTS.ts +0 -86
- package/src/lib/ui/compile/VOID_TAGS.ts +0 -22
- package/src/lib/ui/compile/abideUiPlugin.ts +0 -109
- package/src/lib/ui/compile/analyzeComponent.ts +0 -222
- package/src/lib/ui/compile/asOutlet.ts +0 -30
- package/src/lib/ui/compile/assertTranspiles.ts +0 -19
- package/src/lib/ui/compile/assetModulesFile.ts +0 -32
- package/src/lib/ui/compile/assignmentTargetNames.ts +0 -54
- package/src/lib/ui/compile/asyncInterpolationFields.ts +0 -152
- package/src/lib/ui/compile/asyncValuePositionError.ts +0 -21
- package/src/lib/ui/compile/asyncValuePositionInterpolations.ts +0 -64
- package/src/lib/ui/compile/attrLiftPosition.ts +0 -18
- package/src/lib/ui/compile/awaitPlan.ts +0 -60
- package/src/lib/ui/compile/awaitSubjectExpr.ts +0 -23
- package/src/lib/ui/compile/bindListenEvent.ts +0 -18
- package/src/lib/ui/compile/cachedShadowProgram.ts +0 -39
- package/src/lib/ui/compile/cachedSourceFile.ts +0 -40
- package/src/lib/ui/compile/catchBinding.ts +0 -10
- package/src/lib/ui/compile/classStyleMergePlan.ts +0 -108
- package/src/lib/ui/compile/classifyInterpolationType.ts +0 -46
- package/src/lib/ui/compile/collectAbideDiagnostics.ts +0 -166
- package/src/lib/ui/compile/compileComponent.ts +0 -46
- package/src/lib/ui/compile/compileModule.ts +0 -306
- package/src/lib/ui/compile/compileSSR.ts +0 -119
- package/src/lib/ui/compile/compileShadow.ts +0 -1326
- package/src/lib/ui/compile/componentOrdinals.ts +0 -39
- package/src/lib/ui/compile/composeProps.ts +0 -64
- package/src/lib/ui/compile/createShadowLanguageService.ts +0 -348
- package/src/lib/ui/compile/createShadowProgram.ts +0 -127
- package/src/lib/ui/compile/createShadowScope.ts +0 -42
- package/src/lib/ui/compile/declaredNames.ts +0 -36
- package/src/lib/ui/compile/decodeHtmlEntities.ts +0 -53
- package/src/lib/ui/compile/destructureBindingNames.ts +0 -38
- package/src/lib/ui/compile/desugarSignals.ts +0 -1113
- package/src/lib/ui/compile/eachPlan.ts +0 -61
- package/src/lib/ui/compile/elementPlan.ts +0 -55
- package/src/lib/ui/compile/encodeSemanticTokens.ts +0 -60
- package/src/lib/ui/compile/expressionIsPrefixEvaluable.ts +0 -19
- package/src/lib/ui/compile/generateBuild.ts +0 -903
- package/src/lib/ui/compile/generateSSR.ts +0 -973
- package/src/lib/ui/compile/groupBindParts.ts +0 -28
- package/src/lib/ui/compile/hasTopLevelAwait.ts +0 -28
- package/src/lib/ui/compile/hoistCells.ts +0 -120
- package/src/lib/ui/compile/hoistableAwaits.ts +0 -183
- package/src/lib/ui/compile/hoistableChildRenders.ts +0 -112
- package/src/lib/ui/compile/identifierReferencePattern.ts +0 -13
- package/src/lib/ui/compile/ifPlan.ts +0 -36
- package/src/lib/ui/compile/interpolatedTemplateLiteral.ts +0 -27
- package/src/lib/ui/compile/interpolationClassifierForRoot.ts +0 -32
- package/src/lib/ui/compile/isAnchorPositioned.ts +0 -19
- package/src/lib/ui/compile/isControlFlow.ts +0 -20
- package/src/lib/ui/compile/isFunctionScopeBoundary.ts +0 -20
- package/src/lib/ui/compile/isPlainIdentifier.ts +0 -7
- package/src/lib/ui/compile/isSpuriousAsyncReadDiagnostic.ts +0 -215
- package/src/lib/ui/compile/isTextLeaf.ts +0 -16
- package/src/lib/ui/compile/isWhitespaceText.ts +0 -19
- package/src/lib/ui/compile/liftAsyncSubExpressions.ts +0 -166
- package/src/lib/ui/compile/liftScriptSeed.ts +0 -47
- package/src/lib/ui/compile/loadShadowTsConfig.ts +0 -31
- package/src/lib/ui/compile/lowerAsyncInterpolations.ts +0 -92
- package/src/lib/ui/compile/lowerCompoundAssignment.ts +0 -49
- package/src/lib/ui/compile/lowerContext.ts +0 -167
- package/src/lib/ui/compile/lowerDocAccess.ts +0 -302
- package/src/lib/ui/compile/lowerScript.ts +0 -190
- package/src/lib/ui/compile/lowerUpdateExpression.ts +0 -32
- package/src/lib/ui/compile/makeVarNamer.ts +0 -10
- package/src/lib/ui/compile/nearestProjectRoot.ts +0 -16
- package/src/lib/ui/compile/nodeAtShadowOffset.ts +0 -28
- package/src/lib/ui/compile/offsetToLineColumn.ts +0 -16
- package/src/lib/ui/compile/offsetToPosition.ts +0 -9
- package/src/lib/ui/compile/pagePropsType.ts +0 -23
- package/src/lib/ui/compile/parseTemplate.ts +0 -25
- package/src/lib/ui/compile/parseTemplateRecovering.ts +0 -1385
- package/src/lib/ui/compile/prepareNestedScript.ts +0 -62
- package/src/lib/ui/compile/reactiveBinding.ts +0 -47
- package/src/lib/ui/compile/referencedIdentifiers.ts +0 -35
- package/src/lib/ui/compile/remapShadowDiagnostic.ts +0 -30
- package/src/lib/ui/compile/renameSignalRefs.ts +0 -425
- package/src/lib/ui/compile/resolveAbideImports.ts +0 -29
- package/src/lib/ui/compile/resolveBranches.ts +0 -21
- package/src/lib/ui/compile/resolveReactiveExport.ts +0 -92
- package/src/lib/ui/compile/scopeAttr.ts +0 -9
- package/src/lib/ui/compile/scopeCss.ts +0 -138
- package/src/lib/ui/compile/seedTypeClassifierForRoot.ts +0 -60
- package/src/lib/ui/compile/shadowInterpolationClassifier.ts +0 -47
- package/src/lib/ui/compile/shadowNaming.ts +0 -11
- package/src/lib/ui/compile/signalCallee.ts +0 -24
- package/src/lib/ui/compile/skeletonContext.ts +0 -133
- package/src/lib/ui/compile/skeletonable.ts +0 -68
- package/src/lib/ui/compile/snippetPlan.ts +0 -28
- package/src/lib/ui/compile/sourceFileOptionsSignature.ts +0 -20
- package/src/lib/ui/compile/sourceToShadowOffset.ts +0 -24
- package/src/lib/ui/compile/spreadExcludedNames.ts +0 -27
- package/src/lib/ui/compile/staticAttr.ts +0 -11
- package/src/lib/ui/compile/staticAttrValue.ts +0 -13
- package/src/lib/ui/compile/staticTextPart.ts +0 -12
- package/src/lib/ui/compile/stripEffects.ts +0 -48
- package/src/lib/ui/compile/structuralHeadTokens.ts +0 -107
- package/src/lib/ui/compile/switchPlan.ts +0 -28
- package/src/lib/ui/compile/templateAnchorAdapter.ts +0 -61
- package/src/lib/ui/compile/templateElementAdapter.ts +0 -44
- package/src/lib/ui/compile/templateSemanticTokens.ts +0 -21
- package/src/lib/ui/compile/templateStartOffset.ts +0 -15
- package/src/lib/ui/compile/tryPlan.ts +0 -37
- package/src/lib/ui/compile/types/AbideDiagnostic.ts +0 -14
- package/src/lib/ui/compile/types/AnalyzedComponent.ts +0 -42
- package/src/lib/ui/compile/types/AsyncInterpolationField.ts +0 -19
- package/src/lib/ui/compile/types/Binding.ts +0 -24
- package/src/lib/ui/compile/types/CompiledShadow.ts +0 -27
- package/src/lib/ui/compile/types/ElementPlan.ts +0 -43
- package/src/lib/ui/compile/types/InterpolationClassifier.ts +0 -12
- package/src/lib/ui/compile/types/InterpolationKind.ts +0 -7
- package/src/lib/ui/compile/types/ParseDiagnostic.ts +0 -8
- package/src/lib/ui/compile/types/SeedTypeClassifier.ts +0 -15
- package/src/lib/ui/compile/types/SemanticToken.ts +0 -11
- package/src/lib/ui/compile/types/ShadowKind.ts +0 -9
- package/src/lib/ui/compile/types/ShadowScope.ts +0 -19
- package/src/lib/ui/compile/types/SkeletonContext.ts +0 -21
- package/src/lib/ui/compile/types/TemplateAttr.ts +0 -34
- package/src/lib/ui/compile/types/TemplateNode.ts +0 -137
- package/src/lib/ui/compile/types/TextPart.ts +0 -8
- package/src/lib/ui/compile/types/ValuePositionInterpolation.ts +0 -13
- package/src/lib/ui/compile/unwrapParens.ts +0 -10
- package/src/lib/ui/compile/walkAnchorOrder.ts +0 -57
- package/src/lib/ui/compile/walkElementOrder.ts +0 -60
- package/src/lib/ui/compile/withBindings.ts +0 -45
- package/src/lib/ui/compile/wrapReactionCellSources.ts +0 -121
- package/src/lib/ui/compile/wrapReactiveSeeds.ts +0 -44
- package/src/lib/ui/compile/wrapSeed.ts +0 -28
- package/src/lib/ui/compile/writtenTemplateNames.ts +0 -84
- package/src/lib/ui/computed.ts +0 -75
- package/src/lib/ui/createScope.ts +0 -157
- package/src/lib/ui/dom/MATHML_NAMESPACE.ts +0 -6
- package/src/lib/ui/dom/SVG_NAMESPACE.ts +0 -8
- package/src/lib/ui/dom/adoptRange.ts +0 -27
- package/src/lib/ui/dom/anchorCursor.ts +0 -25
- package/src/lib/ui/dom/anchoredBranch.ts +0 -153
- package/src/lib/ui/dom/appendSnippet.ts +0 -75
- package/src/lib/ui/dom/appendStatic.ts +0 -26
- package/src/lib/ui/dom/appendText.ts +0 -160
- package/src/lib/ui/dom/appendTextAt.ts +0 -39
- package/src/lib/ui/dom/assertClaimedText.ts +0 -30
- package/src/lib/ui/dom/attach.ts +0 -25
- package/src/lib/ui/dom/attr.ts +0 -57
- package/src/lib/ui/dom/awaitBlock.ts +0 -314
- package/src/lib/ui/dom/awaitSubject.ts +0 -118
- package/src/lib/ui/dom/bindProp.ts +0 -22
- package/src/lib/ui/dom/bindSelectValue.ts +0 -48
- package/src/lib/ui/dom/bindableProp.ts +0 -47
- package/src/lib/ui/dom/buildDetachedRange.ts +0 -31
- package/src/lib/ui/dom/cellPending.ts +0 -24
- package/src/lib/ui/dom/claimText.ts +0 -38
- package/src/lib/ui/dom/clearBetween.ts +0 -16
- package/src/lib/ui/dom/cloneStatic.ts +0 -69
- package/src/lib/ui/dom/commentData.ts +0 -14
- package/src/lib/ui/dom/depthZeroNodes.ts +0 -34
- package/src/lib/ui/dom/discardAndRebuild.ts +0 -23
- package/src/lib/ui/dom/discardBoundary.ts +0 -46
- package/src/lib/ui/dom/disposeRange.ts +0 -18
- package/src/lib/ui/dom/domAnchorAdapter.ts +0 -29
- package/src/lib/ui/dom/domElementAdapter.ts +0 -20
- package/src/lib/ui/dom/each.ts +0 -253
- package/src/lib/ui/dom/eachAsync.ts +0 -188
- package/src/lib/ui/dom/effectiveChildNamespace.ts +0 -13
- package/src/lib/ui/dom/enterNamespace.ts +0 -20
- package/src/lib/ui/dom/fillBefore.ts +0 -42
- package/src/lib/ui/dom/fillBoundary.ts +0 -38
- package/src/lib/ui/dom/fillRange.ts +0 -30
- package/src/lib/ui/dom/foreignWrapperTag.ts +0 -22
- package/src/lib/ui/dom/hydrate.ts +0 -34
- package/src/lib/ui/dom/inheritedNamespace.ts +0 -19
- package/src/lib/ui/dom/isComment.ts +0 -6
- package/src/lib/ui/dom/isElement.ts +0 -6
- package/src/lib/ui/dom/markerDepthDelta.ts +0 -19
- package/src/lib/ui/dom/matchingRangeClose.ts +0 -29
- package/src/lib/ui/dom/mergeProps.ts +0 -32
- package/src/lib/ui/dom/mount.ts +0 -30
- package/src/lib/ui/dom/mountChild.ts +0 -129
- package/src/lib/ui/dom/mountRange.ts +0 -48
- package/src/lib/ui/dom/mountSlot.ts +0 -38
- package/src/lib/ui/dom/mountSwappableRange.ts +0 -122
- package/src/lib/ui/dom/moveRange.ts +0 -19
- package/src/lib/ui/dom/mutateDocContainer.ts +0 -65
- package/src/lib/ui/dom/on.ts +0 -33
- package/src/lib/ui/dom/openMarker.ts +0 -22
- package/src/lib/ui/dom/outlet.ts +0 -63
- package/src/lib/ui/dom/parseRawNodes.ts +0 -17
- package/src/lib/ui/dom/readCall.ts +0 -29
- package/src/lib/ui/dom/readCell.ts +0 -55
- package/src/lib/ui/dom/readTextOrSuspend.ts +0 -21
- package/src/lib/ui/dom/removeRange.ts +0 -18
- package/src/lib/ui/dom/replaceRange.ts +0 -24
- package/src/lib/ui/dom/restProps.ts +0 -32
- package/src/lib/ui/dom/skeleton.ts +0 -153
- package/src/lib/ui/dom/spreadAttrs.ts +0 -95
- package/src/lib/ui/dom/spreadProps.ts +0 -31
- package/src/lib/ui/dom/switchBlock.ts +0 -80
- package/src/lib/ui/dom/templateFor.ts +0 -28
- package/src/lib/ui/dom/tryBlock.ts +0 -263
- package/src/lib/ui/dom/types/EachRow.ts +0 -21
- package/src/lib/ui/dom/types/SkeletonHoles.ts +0 -10
- package/src/lib/ui/dom/types/SwitchCase.ts +0 -11
- package/src/lib/ui/dom/when.ts +0 -58
- package/src/lib/ui/dom/withScope.ts +0 -37
- package/src/lib/ui/dom/withSuspense.ts +0 -22
- package/src/lib/ui/dom/writeCell.ts +0 -22
- package/src/lib/ui/effect.ts +0 -24
- package/src/lib/ui/enterScope.ts +0 -18
- package/src/lib/ui/exitScope.ts +0 -8
- package/src/lib/ui/finalizeStreamedChildren.ts +0 -88
- package/src/lib/ui/flight.ts +0 -56
- package/src/lib/ui/html.ts +0 -39
- package/src/lib/ui/isolateCellBarrier.ts +0 -17
- package/src/lib/ui/linked.ts +0 -125
- package/src/lib/ui/navigate.ts +0 -77
- package/src/lib/ui/probeNavigation.ts +0 -33
- package/src/lib/ui/props.ts +0 -17
- package/src/lib/ui/remoteProxy.ts +0 -256
- package/src/lib/ui/renderChain.ts +0 -113
- package/src/lib/ui/renderToStream.ts +0 -128
- package/src/lib/ui/resumeSeedScript.ts +0 -27
- package/src/lib/ui/router.ts +0 -649
- package/src/lib/ui/runtime/AsyncCellError.ts +0 -21
- package/src/lib/ui/runtime/BRANCH_SEGMENT.ts +0 -24
- package/src/lib/ui/runtime/CELL_SEED.ts +0 -12
- package/src/lib/ui/runtime/CHILD_PRESENT.ts +0 -8
- package/src/lib/ui/runtime/CURRENT_BOUNDARY.ts +0 -11
- package/src/lib/ui/runtime/CURRENT_PATH.ts +0 -29
- package/src/lib/ui/runtime/CURRENT_SCOPE.ts +0 -23
- package/src/lib/ui/runtime/DOC_SEED.ts +0 -10
- package/src/lib/ui/runtime/HOLE_ATTRIBUTE.ts +0 -9
- package/src/lib/ui/runtime/NODE_STATE.ts +0 -22
- package/src/lib/ui/runtime/OUTLET_MARKER.ts +0 -10
- package/src/lib/ui/runtime/OUTLET_TAG.ts +0 -7
- package/src/lib/ui/runtime/OWNER.ts +0 -8
- package/src/lib/ui/runtime/PENDING_OUTLET.ts +0 -8
- package/src/lib/ui/runtime/RANGE_MARKER.ts +0 -18
- package/src/lib/ui/runtime/REACTIVE_CONTEXT.ts +0 -20
- package/src/lib/ui/runtime/RENDER.ts +0 -35
- package/src/lib/ui/runtime/REQUEST_SUPERSEDED.ts +0 -8
- package/src/lib/ui/runtime/RESUME.ts +0 -21
- package/src/lib/ui/runtime/SEED_MARKS.ts +0 -14
- package/src/lib/ui/runtime/STREAMED_CELLS.ts +0 -57
- package/src/lib/ui/runtime/SuspenseSignal.ts +0 -24
- package/src/lib/ui/runtime/abortNode.ts +0 -22
- package/src/lib/ui/runtime/ambientPathBacking.ts +0 -32
- package/src/lib/ui/runtime/ambientScopeBacking.ts +0 -26
- package/src/lib/ui/runtime/applyPatchToTree.ts +0 -54
- package/src/lib/ui/runtime/batch.ts +0 -22
- package/src/lib/ui/runtime/blockId.ts +0 -31
- package/src/lib/ui/runtime/boundaryFor.ts +0 -11
- package/src/lib/ui/runtime/cellBarrierBacking.ts +0 -30
- package/src/lib/ui/runtime/claimChild.ts +0 -8
- package/src/lib/ui/runtime/claimExpected.ts +0 -27
- package/src/lib/ui/runtime/claimMarker.ts +0 -13
- package/src/lib/ui/runtime/claimRun.ts +0 -22
- package/src/lib/ui/runtime/clientPage.ts +0 -116
- package/src/lib/ui/runtime/consumeSeed.ts +0 -38
- package/src/lib/ui/runtime/createAsyncCell.ts +0 -358
- package/src/lib/ui/runtime/createComputedNode.ts +0 -19
- package/src/lib/ui/runtime/createDoc.ts +0 -334
- package/src/lib/ui/runtime/createEffectNode.ts +0 -81
- package/src/lib/ui/runtime/createSignalNode.ts +0 -19
- package/src/lib/ui/runtime/currentAbortSignal.ts +0 -26
- package/src/lib/ui/runtime/detachLink.ts +0 -21
- package/src/lib/ui/runtime/endTracking.ts +0 -24
- package/src/lib/ui/runtime/enterRenderPass.ts +0 -13
- package/src/lib/ui/runtime/escapeKey.ts +0 -19
- package/src/lib/ui/runtime/exitRenderPass.ts +0 -7
- package/src/lib/ui/runtime/flushEffects.ts +0 -91
- package/src/lib/ui/runtime/generationGuard.ts +0 -40
- package/src/lib/ui/runtime/historyEntries.ts +0 -151
- package/src/lib/ui/runtime/inScope.ts +0 -19
- package/src/lib/ui/runtime/isAsyncFunction.ts +0 -14
- package/src/lib/ui/runtime/nextBlockId.ts +0 -12
- package/src/lib/ui/runtime/parkCursor.ts +0 -10
- package/src/lib/ui/runtime/pathSegments.ts +0 -10
- package/src/lib/ui/runtime/reactiveAbortState.ts +0 -15
- package/src/lib/ui/runtime/readNode.ts +0 -38
- package/src/lib/ui/runtime/renderPath.ts +0 -16
- package/src/lib/ui/runtime/reportHydrationDivergence.ts +0 -30
- package/src/lib/ui/runtime/routeBareSeed.ts +0 -28
- package/src/lib/ui/runtime/runHydrationPass.ts +0 -69
- package/src/lib/ui/runtime/runNode.ts +0 -75
- package/src/lib/ui/runtime/runtimePath.ts +0 -9
- package/src/lib/ui/runtime/scope.ts +0 -46
- package/src/lib/ui/runtime/scopeGroup.ts +0 -40
- package/src/lib/ui/runtime/toTeardown.ts +0 -38
- package/src/lib/ui/runtime/track.ts +0 -60
- package/src/lib/ui/runtime/trigger.ts +0 -74
- package/src/lib/ui/runtime/types/AbideHistoryState.ts +0 -9
- package/src/lib/ui/runtime/types/Boundary.ts +0 -9
- package/src/lib/ui/runtime/types/Cell.ts +0 -7
- package/src/lib/ui/runtime/types/Computed.ts +0 -3
- package/src/lib/ui/runtime/types/Doc.ts +0 -24
- package/src/lib/ui/runtime/types/EffectResult.ts +0 -10
- package/src/lib/ui/runtime/types/HydrationCursor.ts +0 -8
- package/src/lib/ui/runtime/types/NavVerdict.ts +0 -9
- package/src/lib/ui/runtime/types/Patch.ts +0 -11
- package/src/lib/ui/runtime/types/PathWalk.ts +0 -10
- package/src/lib/ui/runtime/types/ReactiveLink.ts +0 -21
- package/src/lib/ui/runtime/types/ReactiveNode.ts +0 -33
- package/src/lib/ui/runtime/types/RenderContext.ts +0 -10
- package/src/lib/ui/runtime/types/Route.ts +0 -9
- package/src/lib/ui/runtime/types/RouteLoader.ts +0 -7
- package/src/lib/ui/runtime/types/SsrRender.ts +0 -34
- package/src/lib/ui/runtime/types/State.ts +0 -3
- package/src/lib/ui/runtime/types/Teardown.ts +0 -5
- package/src/lib/ui/runtime/types/UiComponent.ts +0 -24
- package/src/lib/ui/runtime/types/UiProps.ts +0 -12
- package/src/lib/ui/runtime/unescapeKey.ts +0 -12
- package/src/lib/ui/runtime/unlinkDeps.ts +0 -28
- package/src/lib/ui/runtime/untrack.ts +0 -20
- package/src/lib/ui/runtime/updateIfNecessary.ts +0 -40
- package/src/lib/ui/runtime/walkPath.ts +0 -41
- package/src/lib/ui/runtime/withOptionalPath.ts +0 -8
- package/src/lib/ui/runtime/withPath.ts +0 -16
- package/src/lib/ui/runtime/withPathFrom.ts +0 -20
- package/src/lib/ui/runtime/withoutHydration.ts +0 -22
- package/src/lib/ui/runtime/writeNode.ts +0 -16
- package/src/lib/ui/scope.ts +0 -20
- package/src/lib/ui/seedBootState.ts +0 -53
- package/src/lib/ui/seedStreamedResolution.ts +0 -56
- package/src/lib/ui/settleAsyncCells.ts +0 -51
- package/src/lib/ui/socketChannel.ts +0 -156
- package/src/lib/ui/socketProxy.ts +0 -47
- package/src/lib/ui/startClient.ts +0 -156
- package/src/lib/ui/state.ts +0 -77
- package/src/lib/ui/subscribeCacheStaleness.ts +0 -85
- package/src/lib/ui/trackedComputed.ts +0 -68
- package/src/lib/ui/tryEncodeResume.ts +0 -11
- package/src/lib/ui/types/Layouts.ts +0 -9
- package/src/lib/ui/types/Pages.ts +0 -8
- package/src/lib/ui/types/Scope.ts +0 -68
- package/src/lib/ui/watch.ts +0 -150
- package/src/preload.ts +0 -19
- package/src/scaffold.ts +0 -153
- package/src/serverBuildPlugins.ts +0 -25
- package/src/serverEntry.ts +0 -138
- package/src/zodCjsPlugin.ts +0 -51
- package/template/.zed/settings.json +0 -10
- package/template/CLAUDE.md +0 -22
- package/template/bunfig.toml +0 -4
- package/template/package.json +0 -21
- package/template/src/app.ts +0 -28
- package/template/src/bundle/icon.png +0 -0
- package/template/src/cli/banner.txt +0 -3
- package/template/src/cli/footer.txt +0 -1
- package/template/src/server/config.ts +0 -17
- package/template/src/server/rpc/getHello.ts +0 -38
- package/template/src/ui/app.css +0 -21
- package/template/src/ui/app.html +0 -24
- package/template/src/ui/pages/about/page.abide +0 -7
- package/template/src/ui/pages/layout.abide +0 -19
- package/template/src/ui/pages/page.abide +0 -19
- package/template/test/app.test.ts +0 -30
- package/template/tsconfig.json +0 -18
- package/tsconfig.app.json +0 -17
|
@@ -1,1101 +0,0 @@
|
|
|
1
|
-
// node:fs existsSync — Bun plugin onResolve is sync-only; Bun.file().exists() is async
|
|
2
|
-
import { existsSync, statSync } from 'node:fs'
|
|
3
|
-
import type { BunPlugin } from 'bun'
|
|
4
|
-
import { Glob } from 'bun'
|
|
5
|
-
import { abideImportName } from './lib/shared/abideImportName.ts'
|
|
6
|
-
import { abideLog } from './lib/shared/abideLog.ts'
|
|
7
|
-
import { bundleGraphFromMetafile } from './lib/shared/bundleGraphFromMetafile.ts'
|
|
8
|
-
import type { RpcServerProgram } from './lib/shared/createRpcServerProgram.ts'
|
|
9
|
-
import { escapeRegex } from './lib/shared/escapeRegex.ts'
|
|
10
|
-
import { fileStem } from './lib/shared/fileStem.ts'
|
|
11
|
-
import { jsonSchemaForPromptArguments } from './lib/shared/jsonSchemaForPromptArguments.ts'
|
|
12
|
-
import { manifestModule } from './lib/shared/manifestModule.ts'
|
|
13
|
-
import { PROXIED_SERVER_SUBDIRS } from './lib/shared/PROXIED_SERVER_SUBDIRS.ts'
|
|
14
|
-
import { pageUrlForFile } from './lib/shared/pageUrlForFile.ts'
|
|
15
|
-
import { parsePromptMarkdown } from './lib/shared/parsePromptMarkdown.ts'
|
|
16
|
-
import { prepareRpcModule } from './lib/shared/prepareRpcModule.ts'
|
|
17
|
-
import { prepareSocketModule } from './lib/shared/prepareSocketModule.ts'
|
|
18
|
-
import { programNameForPackage } from './lib/shared/programNameForPackage.ts'
|
|
19
|
-
import { promptNameForFile } from './lib/shared/promptNameForFile.ts'
|
|
20
|
-
import {
|
|
21
|
-
DEFINE_RPC_GLOBAL,
|
|
22
|
-
DEFINE_SOCKET_GLOBAL,
|
|
23
|
-
REMOTE_PROXY_GLOBAL,
|
|
24
|
-
} from './lib/shared/RPC_SHIM_GLOBALS.ts'
|
|
25
|
-
import { readPackageJson } from './lib/shared/readPackageJson.ts'
|
|
26
|
-
import { rpcServerForRoot } from './lib/shared/rpcServerForRoot.ts'
|
|
27
|
-
import { rpcUrlForFile } from './lib/shared/rpcUrlForFile.ts'
|
|
28
|
-
import { scanPages } from './lib/shared/scanPages.ts'
|
|
29
|
-
import { socketNameForFile } from './lib/shared/socketNameForFile.ts'
|
|
30
|
-
|
|
31
|
-
/*
|
|
32
|
-
Resolves a bare directory or extensionless path to a concrete file. Mirrors
|
|
33
|
-
Node-style resolution (path.ts, path.js, path/index.ts, path/index.js) so
|
|
34
|
-
project code can use `$`-prefixed aliases like `$shared/foo/utils` that point
|
|
35
|
-
at directories with an index file. The (path → resolved) mapping is
|
|
36
|
-
deterministic per build, so cache it — every module that imports a `$shared`
|
|
37
|
-
alias hits this twice or more, and each call would otherwise do up to nine
|
|
38
|
-
filesystem stats.
|
|
39
|
-
*/
|
|
40
|
-
const resolveExtensionCache = new Map<string, string>()
|
|
41
|
-
function resolveExtension(path: string): string {
|
|
42
|
-
const cached = resolveExtensionCache.get(path)
|
|
43
|
-
if (cached !== undefined) {
|
|
44
|
-
return cached
|
|
45
|
-
}
|
|
46
|
-
const resolved = resolveExtensionUncached(path)
|
|
47
|
-
resolveExtensionCache.set(path, resolved)
|
|
48
|
-
return resolved
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const RESOLVE_EXTENSIONS = ['.ts', '.js', '.tsx', '.jsx']
|
|
52
|
-
|
|
53
|
-
function resolveExtensionUncached(path: string): string {
|
|
54
|
-
if (existsSync(path) && !statSync(path).isDirectory()) {
|
|
55
|
-
return path
|
|
56
|
-
}
|
|
57
|
-
for (const extension of RESOLVE_EXTENSIONS) {
|
|
58
|
-
if (existsSync(`${path}${extension}`)) {
|
|
59
|
-
return `${path}${extension}`
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
for (const extension of RESOLVE_EXTENSIONS) {
|
|
63
|
-
const indexPath = `${path}/index${extension}`
|
|
64
|
-
if (existsSync(indexPath)) {
|
|
65
|
-
return indexPath
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return path
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const NS = 'abide-virtual'
|
|
72
|
-
|
|
73
|
-
/* Per-input source-byte budget for the client bundle-hygiene diagnostic (ADR-0031 D2): a single
|
|
74
|
-
project module that SURVIVES tree-shaking into the client bundle heavier than this earns a
|
|
75
|
-
non-blocking build warning, so an accidentally-huge module (an inlined dataset, a fat vendored
|
|
76
|
-
dep pulled into src) is observable without a new bundler pass. Never fails the build — the only
|
|
77
|
-
hard onEnd failure stays the real side-crossing violation. */
|
|
78
|
-
const CLIENT_BUNDLE_INPUT_BUDGET_BYTES = 512 * 1024
|
|
79
|
-
|
|
80
|
-
/* Memoises a zero-arg async producer so repeat calls reuse the first in-flight promise. */
|
|
81
|
-
function once<T>(produce: () => Promise<T>): () => Promise<T> {
|
|
82
|
-
let promise: Promise<T> | undefined
|
|
83
|
-
return () => {
|
|
84
|
-
if (!promise) {
|
|
85
|
-
promise = produce()
|
|
86
|
-
}
|
|
87
|
-
return promise
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/*
|
|
92
|
-
Bun plugin that wires every virtual import abide produces at build time:
|
|
93
|
-
- `abide:rpc` — { rpcUrl: () => import(rpc-module) } HTTP-method manifest
|
|
94
|
-
- `abide:sockets` — { socketName: () => import(socket-module) } socket manifest
|
|
95
|
-
- `abide:pages` — { pageUrl: () => import(page.abide) } manifest
|
|
96
|
-
- `abide:layouts` — { layoutUrl: () => import(layout.abide) } layout manifest
|
|
97
|
-
- `abide:prompts` — { promptName: () => import(prompt-module) } manifest
|
|
98
|
-
- `abide:app` — { init?, handle?, handleError?, health?, forwardHeaders? } from src/app.ts
|
|
99
|
-
- `abide:config` — re-exports src/server/config.ts for boot-time env validation
|
|
100
|
-
- `abide:assets` — gzip-compressed chunk bytes embedded for standalone compile
|
|
101
|
-
- `abide:public-assets` — gzip-embedded src/ui/public files
|
|
102
|
-
- `abide:mcp-resources` — gzip-embedded src/mcp/resources files
|
|
103
|
-
- `abide:mcp` — generated MCP server (createMcpServer)
|
|
104
|
-
- `abide:shell` — app.html content (custom or default)
|
|
105
|
-
- `abide:app-info` — { name, version } from package.json for OpenAPI info
|
|
106
|
-
- `abide:cli-manifest` — baked per-rpc manifest for the CLI binary
|
|
107
|
-
- `abide:cli-name` — program name from package.json
|
|
108
|
-
- `abide:cli-chrome` — banner/footer text from src/cli/
|
|
109
|
-
- `abide:bundle-window` — optional bundle window config
|
|
110
|
-
- `abide:bundle-disconnected` — baked connect-screen HTML
|
|
111
|
-
- `abide:bundle-disconnected-component` — connect-screen abide-ui component
|
|
112
|
-
|
|
113
|
-
Also rewrites modules under src/server/rpc and src/server/sockets:
|
|
114
|
-
- src/server/rpc/<file>.ts: each HTTP-method export is bound to a runtime
|
|
115
|
-
implementation — defineRpc on the server, remoteProxy on the client.
|
|
116
|
-
- src/server/sockets/<file>.ts: each `socket(opts)` export is bound to
|
|
117
|
-
defineSocket on the server (with the socket name + opts) or
|
|
118
|
-
socketProxy on the client (name only — opts are server-side).
|
|
119
|
-
*/
|
|
120
|
-
// @documentation plumbing
|
|
121
|
-
export function abideResolverPlugin({
|
|
122
|
-
cwd = process.cwd(),
|
|
123
|
-
embedAssets = false,
|
|
124
|
-
target = 'server',
|
|
125
|
-
}: {
|
|
126
|
-
cwd?: string
|
|
127
|
-
embedAssets?: boolean
|
|
128
|
-
target?: 'server' | 'client'
|
|
129
|
-
} = {}): BunPlugin {
|
|
130
|
-
const serverDir = `${cwd}/src/server`
|
|
131
|
-
const uiDir = `${cwd}/src/ui`
|
|
132
|
-
const sharedDir = `${cwd}/src/shared`
|
|
133
|
-
const mcpDir = `${cwd}/src/mcp`
|
|
134
|
-
const cliDir = `${cwd}/src/cli`
|
|
135
|
-
const rpcDir = `${serverDir}/rpc`
|
|
136
|
-
const socketsDir = `${serverDir}/sockets`
|
|
137
|
-
const pagesDir = `${uiDir}/pages`
|
|
138
|
-
const publicDir = `${uiDir}/public`
|
|
139
|
-
const promptsDir = `${mcpDir}/prompts`
|
|
140
|
-
const resourcesDir = `${mcpDir}/resources`
|
|
141
|
-
|
|
142
|
-
/*
|
|
143
|
-
The bare specifier the project imports abide under (canonical
|
|
144
|
-
`abide` or a package alias). Resolved once from the project's
|
|
145
|
-
package.json and threaded into every generated module so the codegen's
|
|
146
|
-
imports resolve regardless of which install style the project uses.
|
|
147
|
-
*/
|
|
148
|
-
const abideImportNameOnce = once(() => abideImportName(cwd))
|
|
149
|
-
/*
|
|
150
|
-
The whole-tree validation + per-leaf classification only needs to run
|
|
151
|
-
once per build. Memoise the promise so the virtual manifests
|
|
152
|
-
(rpc/sockets/pages/layouts) share a single scan instead of each one
|
|
153
|
-
re-globbing the trees. The shell read is memoised the same way so two
|
|
154
|
-
passes don't re-read app.html from disk.
|
|
155
|
-
*/
|
|
156
|
-
const scanPagesOnce = once(() => scanPages(pagesDir))
|
|
157
|
-
const scanRpcOnce = once(() => scanDir(rpcDir, '**/*.ts'))
|
|
158
|
-
const scanSocketsOnce = once(() => scanDir(socketsDir, '**/*.ts'))
|
|
159
|
-
/*
|
|
160
|
-
Globs public/ once per build; the public-assets virtual reuses the returned
|
|
161
|
-
list for its embed. (.d.ts codegen — publicAssets.d.ts and its siblings —
|
|
162
|
-
moved to generateDeclarations, owned by build().)
|
|
163
|
-
*/
|
|
164
|
-
const scanPublicOnce = once(async () =>
|
|
165
|
-
existsSync(publicDir)
|
|
166
|
-
? await Array.fromAsync(new Glob('**/*').scan({ cwd: publicDir, onlyFiles: true }))
|
|
167
|
-
: [],
|
|
168
|
-
)
|
|
169
|
-
const scanPromptsOnce = once(() => scanDir(promptsDir, '**/*.md'))
|
|
170
|
-
const loadShellOnce = once(() => loadShell(cwd))
|
|
171
|
-
/* Project package.json read once per build — three virtuals (cli-name,
|
|
172
|
-
app-info, mcp identity) derive fields from it. */
|
|
173
|
-
const readPackageJsonOnce = once(() => readPackageJson(cwd))
|
|
174
|
-
|
|
175
|
-
const rpcFilter = new RegExp(`^${escapeRegex(rpcDir)}/.*\\.ts$`)
|
|
176
|
-
const socketsFilter = new RegExp(`^${escapeRegex(socketsDir)}/.*\\.ts$`)
|
|
177
|
-
const promptsFilter = new RegExp(`^${escapeRegex(promptsDir)}/.*\\.md$`)
|
|
178
|
-
|
|
179
|
-
/*
|
|
180
|
-
Side-crossing guard (client target only). The client bundle must never ship server-only
|
|
181
|
-
code to the browser. A registered rpc/socket is the carve-out — `$server/rpc/*` and
|
|
182
|
-
`$server/sockets/*` are replaced with remoteProxy/socketProxy stubs by the onLoad hooks —
|
|
183
|
-
so a violation is a SURVIVING module under src/server/ that isn't one of those, or the
|
|
184
|
-
public `abide/server/*` names.
|
|
185
|
-
|
|
186
|
-
ADR-0022 D3 makes the project-server edge REACHABILITY-based rather than
|
|
187
|
-
presence-at-resolve: the D2 client rpc transform keeps the real module (handler elided),
|
|
188
|
-
so the elided handler's now-dead `$server/*` / `abide/server/*` imports are textually
|
|
189
|
-
present until tree-shaking removes them. A resolve-time throw would false-positive on
|
|
190
|
-
those. So the authority is a post-bundle `build.onEnd` pass that walks `metafile.inputs`
|
|
191
|
-
(the DCE-accurate graph) and flags any server-only module that SURVIVED. The one guard
|
|
192
|
-
that still fires at resolve is the public `abide/server/*` names reaching a genuine client
|
|
193
|
-
module — those live in node_modules, outside `serverDir`, so the metafile classifier can't
|
|
194
|
-
see them; the kept rpc module (proxied) is exempted so its dead handler imports don't
|
|
195
|
-
reject before DCE.
|
|
196
|
-
*/
|
|
197
|
-
/* Absolute proxied-server dirs, derived from the shared PROXIED_SERVER_SUBDIRS authority so this
|
|
198
|
-
resolver and the dev orchestrator's changeAffectsClient classify the same set — adding a
|
|
199
|
-
proxied dir is one edit there, not a silent lockstep across both. */
|
|
200
|
-
const proxiedServerDirPrefixes = PROXIED_SERVER_SUBDIRS.map(
|
|
201
|
-
(subdir) => `${serverDir}/${subdir}/`,
|
|
202
|
-
)
|
|
203
|
-
const isProxiedServerModule = (path: string): boolean =>
|
|
204
|
-
proxiedServerDirPrefixes.some((prefix) => path.startsWith(prefix))
|
|
205
|
-
const isServerOnlyModule = (path: string): boolean =>
|
|
206
|
-
path.startsWith(`${serverDir}/`) && !isProxiedServerModule(path)
|
|
207
|
-
const showPath = (path: string): string =>
|
|
208
|
-
path.startsWith(`${cwd}/`) ? path.slice(cwd.length + 1) : path
|
|
209
|
-
/* Renders a root→offender absolute-path chain (from the bundle graph seam) as the cwd-relative
|
|
210
|
-
`a\n → b\n → c` evidence the onEnd diagnostics print — the same shape the resolve-time guard
|
|
211
|
-
gives. */
|
|
212
|
-
const formatChain = (chain: string[]): string => chain.map(showPath).join('\n → ')
|
|
213
|
-
|
|
214
|
-
/* Warm per-root rpc server program (ADR-0025 D1). Lives in the setup closure so one build
|
|
215
|
-
reuses a single `ts.Program` across every rpc transform (streaming/method queries);
|
|
216
|
-
built lazily on the first rpc onLoad (so a build with no rpc modules never pays for it) and
|
|
217
|
-
failing open to undefined, in which case each query stays on its char-scan/regex. (The
|
|
218
|
-
rpc.d.ts codegen builds its own program in generateDeclarations, owned by build().) */
|
|
219
|
-
const rpcServerByRoot = new Map<string, RpcServerProgram | undefined>()
|
|
220
|
-
|
|
221
|
-
return {
|
|
222
|
-
name: 'abide-resolver',
|
|
223
|
-
setup(build) {
|
|
224
|
-
/* Fresh edge graph + resolution cache each build (dev watch reuses the
|
|
225
|
-
plugin instance). The resolution cache memoises (path → resolved file)
|
|
226
|
-
within a build; clearing it per build keeps the memo but stops a stale
|
|
227
|
-
miss — a path resolved before its file existed — surviving into the next
|
|
228
|
-
build, so a freshly-created file resolves instead of staying "not found".
|
|
229
|
-
onStart is build-time only — absent in the runtime/preload plugin context. */
|
|
230
|
-
build.onStart?.(() => {
|
|
231
|
-
resolveExtensionCache.clear()
|
|
232
|
-
})
|
|
233
|
-
|
|
234
|
-
/*
|
|
235
|
-
Reachability-based side-crossing guard (client target, ADR-0022 D3). After the
|
|
236
|
-
bundle is built, `metafile.inputs` is the post-DCE module graph: a textually-imported
|
|
237
|
-
but tree-shaken module is ABSENT, a surviving one PRESENT. So walk it, flag any
|
|
238
|
-
server-only module that survived (the elided rpc handler's dead `$server/*` imports
|
|
239
|
-
are gone by now; a policy or page that LIVE-reaches server-only code is not), and on a
|
|
240
|
-
hit reconstruct the import chain from the graph's own edges. This is the sole authority
|
|
241
|
-
for the project-server edge — the resolve-time throw was relaxed so the kept rpc module
|
|
242
|
-
can carry its handler's imports until DCE. metafile.inputs keys are relative to
|
|
243
|
-
process.cwd(); edge `path`s are absolute — resolve both to absolute to match serverDir.
|
|
244
|
-
*/
|
|
245
|
-
build.onEnd?.((result) => {
|
|
246
|
-
if (target !== 'client' || !result.metafile) {
|
|
247
|
-
return
|
|
248
|
-
}
|
|
249
|
-
/* The post-DCE graph, walked once (ADR-0031 D2). Both consumers below read it — the
|
|
250
|
-
side-crossing guard and the bundle-budget diagnostic — instead of each re-walking
|
|
251
|
-
the metafile. */
|
|
252
|
-
const graph = bundleGraphFromMetafile(result.metafile, process.cwd())
|
|
253
|
-
|
|
254
|
-
/* Side-crossing guard (ADR-0022 D3): the FIRST surviving server-only module is a real
|
|
255
|
-
violation — throw with its import chain. The sole hard onEnd failure. */
|
|
256
|
-
const offender = graph.modules.find((module) => isServerOnlyModule(module.path))
|
|
257
|
-
if (offender !== undefined) {
|
|
258
|
-
throw new Error(
|
|
259
|
-
`[abide] a client module reaches the server-only name \`${showPath(offender.path)}\` — server code must not reach the browser bundle. Move it to src/shared/ or behind an RPC. Import chain:\n ${formatChain(graph.importerChain(offender.path))}`,
|
|
260
|
-
)
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/* Bundle-budget diagnostic (ADR-0031 D2), first consumer of the seam: a project src
|
|
264
|
-
module that survived DCE heavier than the budget earns a NON-BLOCKING warn with its
|
|
265
|
-
import chain — never fails the build. Scoped to files under cwd (excluding
|
|
266
|
-
node_modules) so the warning is about code the author owns and can act on. */
|
|
267
|
-
for (const module of graph.modules) {
|
|
268
|
-
if (
|
|
269
|
-
module.bytes > CLIENT_BUNDLE_INPUT_BUDGET_BYTES &&
|
|
270
|
-
module.path.startsWith(`${cwd}/`) &&
|
|
271
|
-
!module.path.includes('/node_modules/')
|
|
272
|
-
) {
|
|
273
|
-
abideLog.warn(
|
|
274
|
-
`client bundle input \`${showPath(module.path)}\` is ${(module.bytes / 1024).toFixed(1)} KiB (over the ${CLIENT_BUNDLE_INPUT_BUDGET_BYTES / 1024} KiB budget) — consider splitting or lazy-loading it. Import chain:\n ${formatChain(graph.importerChain(module.path))}`,
|
|
275
|
-
)
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
})
|
|
279
|
-
|
|
280
|
-
/*
|
|
281
|
-
The public `abide/server/*` names are server-only and live in node_modules — outside
|
|
282
|
-
`serverDir`, so the onEnd metafile classifier can't see them; this stays the resolve-time
|
|
283
|
-
guard for them (the canonical `abide` and `@abide/abide` specifiers; a custom package
|
|
284
|
-
alias falls through to the reachability guard). A genuine client module importing one is a
|
|
285
|
-
side-crossing. The kept rpc/socket module (proxied) is EXEMPTED: the D2 client transform
|
|
286
|
-
leaves its elided handler's `abide/server/*` imports textually present until DCE drops
|
|
287
|
-
them, so rejecting here would false-positive. The server target resolves these normally.
|
|
288
|
-
*/
|
|
289
|
-
build.onResolve({ filter: /(^|\/)abide\/server\// }, (args) => {
|
|
290
|
-
if (
|
|
291
|
-
target === 'client' &&
|
|
292
|
-
args.importer &&
|
|
293
|
-
!isServerOnlyModule(args.importer) &&
|
|
294
|
-
!isProxiedServerModule(args.importer)
|
|
295
|
-
) {
|
|
296
|
-
throw new Error(
|
|
297
|
-
`[abide] a client module imports the server-only name \`${args.path}\` — server code must not reach the browser bundle. Move it to src/shared/ or behind an RPC. Import chain:\n ${showPath(args.importer)}\n → ${args.path}`,
|
|
298
|
-
)
|
|
299
|
-
}
|
|
300
|
-
return undefined
|
|
301
|
-
})
|
|
302
|
-
|
|
303
|
-
build.onResolve(
|
|
304
|
-
{
|
|
305
|
-
filter: /\/_virtual\/(rpc|sockets|prompts|pages|layouts|app|config|mcp-resources|mcp|assets|public-assets|shell|app-info|cli-manifest|cli-name|cli-chrome|bundle-window|bundle-disconnected-component|bundle-disconnected)\.ts$/,
|
|
306
|
-
},
|
|
307
|
-
(args) => {
|
|
308
|
-
const name = fileStem(args.path)
|
|
309
|
-
if (!name) {
|
|
310
|
-
return undefined
|
|
311
|
-
}
|
|
312
|
-
return { path: `abide:${name}`, namespace: NS }
|
|
313
|
-
},
|
|
314
|
-
)
|
|
315
|
-
|
|
316
|
-
/*
|
|
317
|
-
User-facing aliases are the five top-level project directories.
|
|
318
|
-
Sub-paths fall out of them: `$server/rpc/getThing`,
|
|
319
|
-
`$ui/pages/...`, `$mcp/prompts/...`, `$mcp/resources/...`.
|
|
320
|
-
`lib/` is userland — projects declare their own lib aliases.
|
|
321
|
-
*/
|
|
322
|
-
const dirAliases: Record<string, string> = {
|
|
323
|
-
$server: serverDir,
|
|
324
|
-
$ui: uiDir,
|
|
325
|
-
$shared: sharedDir,
|
|
326
|
-
$mcp: mcpDir,
|
|
327
|
-
$cli: cliDir,
|
|
328
|
-
}
|
|
329
|
-
for (const [alias, baseDir] of Object.entries(dirAliases)) {
|
|
330
|
-
build.onResolve({ filter: new RegExp(`^\\${alias}(\\/.*)?$`) }, (args) => {
|
|
331
|
-
const subpath = args.path.slice(alias.length)
|
|
332
|
-
const resolved = resolveExtension(subpath ? `${baseDir}${subpath}` : baseDir)
|
|
333
|
-
/* No resolve-time side-crossing throw: a `$server/*` import that only the
|
|
334
|
-
elided rpc handler reaches is dead code DCE removes. Whether server-only
|
|
335
|
-
code actually survives into the client bundle is decided post-bundle by the
|
|
336
|
-
onEnd metafile reachability guard (ADR-0022 D3). */
|
|
337
|
-
return { path: resolved }
|
|
338
|
-
})
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/*
|
|
342
|
-
Root-absolute url() references in stylesheets (e.g.
|
|
343
|
-
`url(/fonts/x.woff2)`) point at files served from public/ at the
|
|
344
|
-
site root at runtime, not at anything on disk at build time. Bun's
|
|
345
|
-
CSS bundler otherwise tries to resolve them against the project
|
|
346
|
-
root and fails the whole build. Mark them external so the literal
|
|
347
|
-
`/…` path survives into the emitted CSS, where
|
|
348
|
-
createPublicAssetServer serves it. Scoped to CSS importers: abide-ui
|
|
349
|
-
<style> blocks compile to injected JS strings and never reach the
|
|
350
|
-
CSS bundler, and abide's own absolute-path JS imports come from
|
|
351
|
-
.ts/virtual importers — neither is a `.css` importer, so both are
|
|
352
|
-
untouched. Relative url()s (`./x.png`) still resolve and bundle
|
|
353
|
-
normally.
|
|
354
|
-
*/
|
|
355
|
-
build.onResolve({ filter: /^\// }, (args) => {
|
|
356
|
-
if (args.importer.endsWith('.css')) {
|
|
357
|
-
return { path: args.path, external: true }
|
|
358
|
-
}
|
|
359
|
-
return undefined
|
|
360
|
-
})
|
|
361
|
-
|
|
362
|
-
build.onLoad({ filter: rpcFilter }, async (args) => {
|
|
363
|
-
if (!args.path.startsWith(`${rpcDir}/`)) {
|
|
364
|
-
return undefined
|
|
365
|
-
}
|
|
366
|
-
const relativePath = args.path.slice(rpcDir.length + 1)
|
|
367
|
-
const source = await Bun.file(args.path).text()
|
|
368
|
-
const url = rpcUrlForFile(relativePath)
|
|
369
|
-
const importName = await abideImportNameOnce()
|
|
370
|
-
/* Ask the warm server program for this handler's streaming verdict (return-type
|
|
371
|
-
query — a stream returned via a wrapper function is seen); undefined when no
|
|
372
|
-
program built or the node didn't resolve, so prepareRpcModule falls open to its
|
|
373
|
-
char-scan (ADR-0025 D2). */
|
|
374
|
-
const rpcServerProgram = rpcServerForRoot(rpcServerByRoot, cwd, rpcDir)
|
|
375
|
-
const streamingOverride = rpcServerProgram?.streamingForModule(args.path)
|
|
376
|
-
/* The numeric/boolean input fields the server rewrite stamps as a `coerce` plan so
|
|
377
|
-
parseArgs turns a string query/form value into the typed value the schema
|
|
378
|
-
expects (ADR-0028). undefined (no program / unresolvable Args / no coercible
|
|
379
|
-
field) stamps no plan — a GET field stays a string, exactly as today. */
|
|
380
|
-
const coercion = rpcServerProgram?.inputCoercionForModule(args.path)
|
|
381
|
-
/* The handler's return type projected to JSON Schema, stamped as `outputJsonSchema` so
|
|
382
|
-
the runtime OpenAPI 200 / MCP outputSchema / inspector surface renders the real
|
|
383
|
-
response shape without an author-declared `schemas.output` (ADR-0030 D2). undefined
|
|
384
|
-
(no program / unprojectable body / an explicit override wins at runtime) stamps
|
|
385
|
-
nothing — the surface falls back to today's behavior. */
|
|
386
|
-
const returnBodySchema = rpcServerProgram?.returnBodySchemaForModule(args.path)
|
|
387
|
-
/* The handler's typed-error branches projected to a status-keyed JSON-Schema map,
|
|
388
|
-
stamped as `errorJsonSchemas` so the runtime OpenAPI surface documents each typed
|
|
389
|
-
error's status + data payload alongside the 200 (ADR-0030). undefined (no program /
|
|
390
|
-
no typed errors / unresolvable branch) stamps nothing — the surface omits the error
|
|
391
|
-
responses exactly as today. */
|
|
392
|
-
const errorSchemas = rpcServerProgram?.errorSchemasForModule(args.path)
|
|
393
|
-
/* The handler's structured success fields, baked onto the CLIENT stub as
|
|
394
|
-
`outputWirePlan` so the proxy revives a `Set`/`Map`/`bigint`/`Date` off a decoded
|
|
395
|
-
response the server encoded to honest JSON (ADR-0029 output path). undefined (no
|
|
396
|
-
program / unresolvable body / no structured field) bakes nothing — a response array
|
|
397
|
-
stays an array. */
|
|
398
|
-
const outputWirePlan = rpcServerProgram?.outputWirePlanForModule(args.path)
|
|
399
|
-
/* The client-only reachability plan: the top-level statements the emitted client
|
|
400
|
-
module retains, rooted at the endpoint `opts` (imports + declarations opts
|
|
401
|
-
transitively needs). Present → rewriteForClient emits a MINIMAL module so the
|
|
402
|
-
handler and its server-only imports are never emitted — nothing server-side loads
|
|
403
|
-
or trips the reachability guard (ADR-0022 addendum). Only the client target needs
|
|
404
|
-
it; the server rewrite keeps the whole handler. undefined (no warm program /
|
|
405
|
-
unresolvable call) falls open to the keep-the-file rewrite. */
|
|
406
|
-
const clientKeep =
|
|
407
|
-
target === 'client'
|
|
408
|
-
? rpcServerProgram?.clientKeepForModule(args.path)
|
|
409
|
-
: undefined
|
|
410
|
-
/* The handler's input args projected to JSON Schema, stamped as `inputJsonSchema` so the
|
|
411
|
-
runtime OpenAPI parameters/body / MCP inputSchema / inspector input surface renders the
|
|
412
|
-
real input shape (and the endpoint becomes advertisable) without an author-declared
|
|
413
|
-
`schemas.input` — mirroring the `outputJsonSchema` output-side path (ADR-0030). A
|
|
414
|
-
declared `schemas.input` VALIDATOR still overrides it at runtime. undefined (no program
|
|
415
|
-
/ unresolvable Args / File-only body) stamps nothing — the surface behaves as today. */
|
|
416
|
-
const inputSchema = rpcServerProgram?.inputSchemaForModule(args.path)
|
|
417
|
-
const prepared = prepareRpcModule(source, importName, {
|
|
418
|
-
streaming: streamingOverride,
|
|
419
|
-
coercion,
|
|
420
|
-
inputSchema,
|
|
421
|
-
outputSchema: returnBodySchema,
|
|
422
|
-
errorSchemas,
|
|
423
|
-
outputWirePlan,
|
|
424
|
-
clientKeep,
|
|
425
|
-
})
|
|
426
|
-
if (!prepared) {
|
|
427
|
-
throw new Error(
|
|
428
|
-
`[abide] src/server/rpc/${relativePath} has no \`export const <name> = <METHOD>(...)\` — every $rpc module must declare exactly one remote function`,
|
|
429
|
-
)
|
|
430
|
-
}
|
|
431
|
-
const expectedName = fileStem(relativePath)
|
|
432
|
-
if (prepared.exportName !== expectedName) {
|
|
433
|
-
throw new Error(
|
|
434
|
-
`[abide] src/server/rpc/${relativePath} exports \`${prepared.exportName}\` but the filename expects \`${expectedName}\` — the export name must match the file's stem`,
|
|
435
|
-
)
|
|
436
|
-
}
|
|
437
|
-
/*
|
|
438
|
-
Client bundle: keep the real module but swap the METHOD( call for a remoteProxy(
|
|
439
|
-
call with the handler ELIDED (ADR-0022 D2), symmetric with the server rewrite
|
|
440
|
-
below. The handler body and the top-level imports only it used become dead code the
|
|
441
|
-
bundler tree-shakes out; the endpoint `opts` (schemas/cache/stream) rides through as
|
|
442
|
-
a LIVE expression, so policy can reference imports and separate modules. The
|
|
443
|
-
surviving-server-module reachability guard (build.onEnd) is the authority that no
|
|
444
|
-
server-only code leaks — resolve-time presence of the elided handler's imports is no
|
|
445
|
-
longer a violation.
|
|
446
|
-
*/
|
|
447
|
-
if (target === 'client') {
|
|
448
|
-
const banner = `import { remoteProxy as ${REMOTE_PROXY_GLOBAL} } from '${importName}/ui/remoteProxy';
|
|
449
|
-
`
|
|
450
|
-
return {
|
|
451
|
-
contents: `${banner}${prepared.rewriteForClient(url)}`,
|
|
452
|
-
loader: 'ts',
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
/*
|
|
456
|
-
Server target: strip the user's rpc import, then rewrite
|
|
457
|
-
the `<METHOD>(` call so the method (from the identifier) and
|
|
458
|
-
the URL (from the file path) are threaded into the
|
|
459
|
-
runtime constructor — defineRpc. The user's handler body
|
|
460
|
-
stays intact between the parens; any generics on the call
|
|
461
|
-
are dropped (they carry no runtime info). Rewriting is
|
|
462
|
-
tokenizer-driven so `GET` mentions inside strings and
|
|
463
|
-
comments are left alone.
|
|
464
|
-
*/
|
|
465
|
-
const banner = `import { defineRpc as ${DEFINE_RPC_GLOBAL} } from '${importName}/server/rpc/defineRpc';
|
|
466
|
-
`
|
|
467
|
-
return { contents: `${banner}${prepared.rewriteForServer(url)}`, loader: 'ts' }
|
|
468
|
-
})
|
|
469
|
-
|
|
470
|
-
build.onLoad({ filter: socketsFilter }, async (args) => {
|
|
471
|
-
if (!args.path.startsWith(`${socketsDir}/`)) {
|
|
472
|
-
return undefined
|
|
473
|
-
}
|
|
474
|
-
const relativePath = args.path.slice(socketsDir.length + 1)
|
|
475
|
-
const source = await Bun.file(args.path).text()
|
|
476
|
-
const name = socketNameForFile(relativePath)
|
|
477
|
-
const importName = await abideImportNameOnce()
|
|
478
|
-
const prepared = prepareSocketModule(source, importName)
|
|
479
|
-
if (!prepared) {
|
|
480
|
-
throw new Error(
|
|
481
|
-
`[abide] src/server/sockets/${relativePath} has no \`export const <name> = socket(...)\` — every $sockets module must declare exactly one socket`,
|
|
482
|
-
)
|
|
483
|
-
}
|
|
484
|
-
const expectedName = fileStem(relativePath)
|
|
485
|
-
if (prepared.exportName !== expectedName) {
|
|
486
|
-
throw new Error(
|
|
487
|
-
`[abide] src/server/sockets/${relativePath} exports \`${prepared.exportName}\` but the filename expects \`${expectedName}\` — the export name must match the file's stem`,
|
|
488
|
-
)
|
|
489
|
-
}
|
|
490
|
-
if (target === 'client') {
|
|
491
|
-
/*
|
|
492
|
-
Client bundle gets a name-only stub — opts (tail,
|
|
493
|
-
clientPublish) are server-side state and don't
|
|
494
|
-
affect the client's wire behaviour.
|
|
495
|
-
*/
|
|
496
|
-
const contents = `import { socketProxy as __abideSocketProxy__ } from '${importName}/ui/socketProxy';
|
|
497
|
-
export const ${prepared.exportName} = __abideSocketProxy__(${JSON.stringify(name)});
|
|
498
|
-
`
|
|
499
|
-
return { contents, loader: 'ts' }
|
|
500
|
-
}
|
|
501
|
-
const banner = `import { defineSocket as ${DEFINE_SOCKET_GLOBAL} } from '${importName}/server/sockets/defineSocket';
|
|
502
|
-
`
|
|
503
|
-
return {
|
|
504
|
-
contents: `${banner}${prepared.rewriteForServer(name)}`,
|
|
505
|
-
loader: 'ts',
|
|
506
|
-
}
|
|
507
|
-
})
|
|
508
|
-
|
|
509
|
-
build.onLoad({ filter: promptsFilter }, async (args) => {
|
|
510
|
-
if (!args.path.startsWith(`${promptsDir}/`)) {
|
|
511
|
-
return undefined
|
|
512
|
-
}
|
|
513
|
-
/*
|
|
514
|
-
Prompts are MCP-only — no client-side counterpart. The
|
|
515
|
-
client bundle never imports a prompts module, but emit an
|
|
516
|
-
empty stub for the client target defensively so a stray
|
|
517
|
-
import can't drag the prompt body into the browser bundle.
|
|
518
|
-
*/
|
|
519
|
-
if (target === 'client') {
|
|
520
|
-
return { contents: 'export {}', loader: 'ts' }
|
|
521
|
-
}
|
|
522
|
-
/*
|
|
523
|
-
Server target: a `.md` prompt is data, not code. Parse the
|
|
524
|
-
frontmatter (description + arguments) and body once, then
|
|
525
|
-
generate a module that registers the prompt via definePrompt
|
|
526
|
-
— the body is embedded as a string literal and the render
|
|
527
|
-
closure interpolates `{{name}}` placeholders at call time.
|
|
528
|
-
*/
|
|
529
|
-
const relativePath = args.path.slice(promptsDir.length + 1)
|
|
530
|
-
const source = await Bun.file(args.path).text()
|
|
531
|
-
const name = promptNameForFile(relativePath)
|
|
532
|
-
const importName = await abideImportNameOnce()
|
|
533
|
-
const parsed = parsePromptMarkdown(source)
|
|
534
|
-
const jsonSchema = jsonSchemaForPromptArguments(parsed.arguments)
|
|
535
|
-
const optionLines = [
|
|
536
|
-
parsed.description
|
|
537
|
-
? ` description: ${JSON.stringify(parsed.description)},`
|
|
538
|
-
: undefined,
|
|
539
|
-
jsonSchema ? ` jsonSchema: ${JSON.stringify(jsonSchema)},` : undefined,
|
|
540
|
-
` render: (args) => __abideRenderPromptTemplate__(__template__, args),`,
|
|
541
|
-
]
|
|
542
|
-
.filter((line) => line !== undefined)
|
|
543
|
-
.join('\n')
|
|
544
|
-
const contents = `import { definePrompt as __abideDefinePrompt__ } from '${importName}/server/prompts/definePrompt'
|
|
545
|
-
import { renderPromptTemplate as __abideRenderPromptTemplate__ } from '${importName}/server/prompts/renderPromptTemplate'
|
|
546
|
-
const __template__ = ${JSON.stringify(parsed.body)}
|
|
547
|
-
export const prompt = __abideDefinePrompt__(${JSON.stringify(name)}, {
|
|
548
|
-
${optionLines}
|
|
549
|
-
})
|
|
550
|
-
`
|
|
551
|
-
return { contents, loader: 'ts' }
|
|
552
|
-
})
|
|
553
|
-
|
|
554
|
-
build.onLoad({ filter: /.*/, namespace: NS }, async (args) => {
|
|
555
|
-
if (args.path === 'abide:rpc') {
|
|
556
|
-
return manifestModule({
|
|
557
|
-
files: await scanRpcOnce(),
|
|
558
|
-
keyForFile: rpcUrlForFile,
|
|
559
|
-
importDir: rpcDir,
|
|
560
|
-
exportName: 'rpc',
|
|
561
|
-
})
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
if (args.path === 'abide:sockets') {
|
|
565
|
-
return manifestModule({
|
|
566
|
-
files: await scanSocketsOnce(),
|
|
567
|
-
keyForFile: socketNameForFile,
|
|
568
|
-
importDir: socketsDir,
|
|
569
|
-
exportName: 'sockets',
|
|
570
|
-
})
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
if (args.path === 'abide:prompts') {
|
|
574
|
-
return manifestModule({
|
|
575
|
-
files: await scanPromptsOnce(),
|
|
576
|
-
keyForFile: promptNameForFile,
|
|
577
|
-
importDir: promptsDir,
|
|
578
|
-
exportName: 'prompts',
|
|
579
|
-
label: 'prompt modules',
|
|
580
|
-
})
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
if (args.path === 'abide:pages') {
|
|
584
|
-
const { pageFiles } = await scanPagesOnce()
|
|
585
|
-
return manifestModule({
|
|
586
|
-
files: pageFiles,
|
|
587
|
-
keyForFile: pageUrlForFile,
|
|
588
|
-
importDir: pagesDir,
|
|
589
|
-
exportName: 'pages',
|
|
590
|
-
})
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
if (args.path === 'abide:layouts') {
|
|
594
|
-
const { layoutFiles } = await scanPagesOnce()
|
|
595
|
-
return manifestModule({
|
|
596
|
-
files: layoutFiles,
|
|
597
|
-
keyForFile: pageUrlForFile,
|
|
598
|
-
importDir: pagesDir,
|
|
599
|
-
exportName: 'layouts',
|
|
600
|
-
})
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
if (args.path === 'abide:app') {
|
|
604
|
-
const userApp = `${cwd}/src/app.ts`
|
|
605
|
-
const hasAppModule = await Bun.file(userApp).exists()
|
|
606
|
-
if (hasAppModule) {
|
|
607
|
-
abideLog.info('using custom src/app.ts')
|
|
608
|
-
return {
|
|
609
|
-
contents: `export * from ${JSON.stringify(userApp)}`,
|
|
610
|
-
loader: 'js',
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
return { contents: 'export {};', loader: 'js' }
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
if (args.path === 'abide:config') {
|
|
617
|
-
/*
|
|
618
|
-
Re-exports src/server/config.ts so serverEntry can eager-import
|
|
619
|
-
it at boot — running its `env(schema)` validation once the env
|
|
620
|
-
layers are merged, before the server starts. Optional: an empty
|
|
621
|
-
stub when absent, so an app with no config builds and boots the
|
|
622
|
-
same (it just reads Bun.env directly).
|
|
623
|
-
*/
|
|
624
|
-
const userConfig = `${serverDir}/config.ts`
|
|
625
|
-
if (await Bun.file(userConfig).exists()) {
|
|
626
|
-
abideLog.info('using src/server/config.ts')
|
|
627
|
-
return {
|
|
628
|
-
contents: `export * from ${JSON.stringify(userConfig)}`,
|
|
629
|
-
loader: 'js',
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
return { contents: 'export {};', loader: 'js' }
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
if (args.path === 'abide:cli-manifest') {
|
|
636
|
-
/*
|
|
637
|
-
The CLI binary's bake-time manifest. Discovery (a
|
|
638
|
-
one-shot script the bundler runs separately) writes
|
|
639
|
-
`${cwd}/dist/cli-manifest.json` from the populated
|
|
640
|
-
rpcRegistry; this virtual splices that JSON in as a
|
|
641
|
-
default-exported object. Empty manifest when the
|
|
642
|
-
discovery file is missing — the binary still works
|
|
643
|
-
but exposes no subcommands until the user runs the
|
|
644
|
-
full `abide cli` flow.
|
|
645
|
-
*/
|
|
646
|
-
const manifestPath = `${cwd}/dist/cli-manifest.json`
|
|
647
|
-
if (!existsSync(manifestPath)) {
|
|
648
|
-
return { contents: 'export default {}', loader: 'js' }
|
|
649
|
-
}
|
|
650
|
-
const json = await Bun.file(manifestPath).text()
|
|
651
|
-
return { contents: `export default ${json}`, loader: 'js' }
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
if (args.path === 'abide:cli-name') {
|
|
655
|
-
/*
|
|
656
|
-
Program name shown in `<program> --help`. Reads the
|
|
657
|
-
project's package.json `name` field (scoped names keep
|
|
658
|
-
only the final segment), falling back to `app` when
|
|
659
|
-
missing.
|
|
660
|
-
*/
|
|
661
|
-
const pkg = await readPackageJsonOnce()
|
|
662
|
-
const name = programNameForPackage(pkg?.name as string | undefined)
|
|
663
|
-
return { contents: `export default ${JSON.stringify(name)}`, loader: 'js' }
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
if (args.path === 'abide:bundle-window') {
|
|
667
|
-
/*
|
|
668
|
-
Optional bundle window config (title/size/menu) baked into
|
|
669
|
-
the bundled launcher. Re-exports the default from
|
|
670
|
-
src/bundle/window.ts when present; otherwise an empty
|
|
671
|
-
object so the launcher falls back to its defaults.
|
|
672
|
-
*/
|
|
673
|
-
const userFile = `${cwd}/src/bundle/window.ts`
|
|
674
|
-
if (existsSync(userFile)) {
|
|
675
|
-
abideLog.info('using custom src/bundle/window.ts')
|
|
676
|
-
return {
|
|
677
|
-
contents: `export { default } from ${JSON.stringify(userFile)}`,
|
|
678
|
-
loader: 'js',
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
return { contents: 'export default {}', loader: 'js' }
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
if (args.path === 'abide:bundle-disconnected') {
|
|
685
|
-
/*
|
|
686
|
-
The connect screen HTML baked into the launcher. buildDisconnected
|
|
687
|
-
writes `${cwd}/dist/bundle-disconnected.html`; this virtual splices
|
|
688
|
-
it in as a string export. A minimal inline fallback keeps the
|
|
689
|
-
launcher buildable when the file is missing (the screen still loads,
|
|
690
|
-
just unstyled) — bundleApp always builds it first.
|
|
691
|
-
*/
|
|
692
|
-
const htmlPath = `${cwd}/dist/bundle-disconnected.html`
|
|
693
|
-
if (!existsSync(htmlPath)) {
|
|
694
|
-
const fallback =
|
|
695
|
-
'<!doctype html><html><body><div id="app">abide</div></body></html>'
|
|
696
|
-
return {
|
|
697
|
-
contents: `export const disconnectedHtml = ${JSON.stringify(fallback)}`,
|
|
698
|
-
loader: 'js',
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
const html = await Bun.file(htmlPath).text()
|
|
702
|
-
return {
|
|
703
|
-
contents: `export const disconnectedHtml = ${JSON.stringify(html)}`,
|
|
704
|
-
loader: 'js',
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
if (args.path === 'abide:bundle-disconnected-component') {
|
|
709
|
-
/*
|
|
710
|
-
The abide-ui component the connect-screen build mounts: the project's
|
|
711
|
-
src/bundle/disconnected.abide override when present, otherwise the lib
|
|
712
|
-
default. Re-exports the default like abide:bundle-window; the abide-ui
|
|
713
|
-
`.abide` loader compiles the target either way.
|
|
714
|
-
*/
|
|
715
|
-
const userFile = `${cwd}/src/bundle/disconnected.abide`
|
|
716
|
-
if (existsSync(userFile)) {
|
|
717
|
-
abideLog.info('using custom src/bundle/disconnected.abide')
|
|
718
|
-
return {
|
|
719
|
-
contents: `export { default } from ${JSON.stringify(userFile)}`,
|
|
720
|
-
loader: 'js',
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
const defaultFile = new URL('./lib/bundle/disconnected.abide', import.meta.url)
|
|
724
|
-
.pathname
|
|
725
|
-
return {
|
|
726
|
-
contents: `export { default } from ${JSON.stringify(defaultFile)}`,
|
|
727
|
-
loader: 'js',
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
if (args.path === 'abide:cli-chrome') {
|
|
732
|
-
/*
|
|
733
|
-
Optional CLI help chrome baked into the binary: src/cli/
|
|
734
|
-
banner.txt prints atop top-level help, footer.txt prints
|
|
735
|
-
below it. Missing files emit empty strings (no chrome).
|
|
736
|
-
Read as plain text, like abide:shell.
|
|
737
|
-
*/
|
|
738
|
-
const readChrome = async (name: string) => {
|
|
739
|
-
const file = Bun.file(`${cliDir}/${name}`)
|
|
740
|
-
return (await file.exists()) ? await file.text() : ''
|
|
741
|
-
}
|
|
742
|
-
const [banner, footer] = await Promise.all([
|
|
743
|
-
readChrome('banner.txt'),
|
|
744
|
-
readChrome('footer.txt'),
|
|
745
|
-
])
|
|
746
|
-
return {
|
|
747
|
-
contents: `export const banner = ${JSON.stringify(banner)}
|
|
748
|
-
export const footer = ${JSON.stringify(footer)}
|
|
749
|
-
`,
|
|
750
|
-
loader: 'js',
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
if (args.path === 'abide:app-info') {
|
|
755
|
-
/*
|
|
756
|
-
Project identity ({ name, version }) read from
|
|
757
|
-
package.json, surfaced in the OpenAPI document's `info`
|
|
758
|
-
block. Falls back to placeholder values when the file
|
|
759
|
-
is missing so the spec still emits.
|
|
760
|
-
*/
|
|
761
|
-
const pkg = await readPackageJsonOnce()
|
|
762
|
-
const info = {
|
|
763
|
-
name: (pkg?.name as string | undefined) ?? 'app',
|
|
764
|
-
version: (pkg?.version as string | undefined) ?? '0.0.0',
|
|
765
|
-
}
|
|
766
|
-
return {
|
|
767
|
-
contents: `export const appInfo = ${JSON.stringify(info)}`,
|
|
768
|
-
loader: 'js',
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
|
|
772
|
-
if (args.path === 'abide:mcp') {
|
|
773
|
-
/*
|
|
774
|
-
The MCP server is fully framework-generated — tools from
|
|
775
|
-
the rpc registry, prompts from src/mcp/prompts, resources
|
|
776
|
-
from src/mcp/resources. createMcpServer is internal; there
|
|
777
|
-
is no user-authored server module. Server identity comes
|
|
778
|
-
from package.json so the `mcp__<name>__*` permission prefix
|
|
779
|
-
is stable and app-specific; absent a name, createMcpServer
|
|
780
|
-
falls back to its own default.
|
|
781
|
-
*/
|
|
782
|
-
const importName = await abideImportNameOnce()
|
|
783
|
-
const pkg = await readPackageJsonOnce()
|
|
784
|
-
/* JSON.stringify drops undefined keys, so an absent name/version
|
|
785
|
-
leaves createMcpServer to apply its own defaults. */
|
|
786
|
-
const identity = JSON.stringify({
|
|
787
|
-
name: pkg?.name as string | undefined,
|
|
788
|
-
version: pkg?.version as string | undefined,
|
|
789
|
-
})
|
|
790
|
-
return {
|
|
791
|
-
contents: `import { createMcpServer } from '${importName}/mcp/createMcpServer'\nexport default createMcpServer(${identity})\n`,
|
|
792
|
-
loader: 'js',
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
if (args.path === 'abide:assets') {
|
|
797
|
-
if (!embedAssets) {
|
|
798
|
-
return { contents: 'export const assets = undefined', loader: 'js' }
|
|
799
|
-
}
|
|
800
|
-
const appDir = `${cwd}/dist/_app`
|
|
801
|
-
const files = await Array.fromAsync(
|
|
802
|
-
new Glob('**/*.gz').scan({ cwd: appDir, onlyFiles: true }),
|
|
803
|
-
)
|
|
804
|
-
const contents = await embedGzipDir({
|
|
805
|
-
dir: appDir,
|
|
806
|
-
files,
|
|
807
|
-
keyFor: (file) => `/_app/${file.replace(/\.gz$/, '')}`,
|
|
808
|
-
precompressed: true,
|
|
809
|
-
exportName: 'assets',
|
|
810
|
-
label: 'gzip assets',
|
|
811
|
-
source: 'dist/_app/',
|
|
812
|
-
})
|
|
813
|
-
return { contents, loader: 'js' }
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
if (args.path === 'abide:public-assets') {
|
|
817
|
-
/*
|
|
818
|
-
Embeds every file under public/ (gzip level 9, paid
|
|
819
|
-
once at compile) keyed by its site-root path so the
|
|
820
|
-
standalone binary serves them without a public/ dir on
|
|
821
|
-
disk. Mirrors abide:assets. Empty/undefined when not
|
|
822
|
-
embedding (dev + `abide start` read public/ off disk).
|
|
823
|
-
*/
|
|
824
|
-
// Globs public/ and writes publicAssets.d.ts every build; reuse the list to embed.
|
|
825
|
-
const files = await scanPublicOnce()
|
|
826
|
-
if (!embedAssets || files.length === 0) {
|
|
827
|
-
return {
|
|
828
|
-
contents: 'export const publicAssets = undefined',
|
|
829
|
-
loader: 'js',
|
|
830
|
-
}
|
|
831
|
-
}
|
|
832
|
-
const contents = await embedGzipDir({
|
|
833
|
-
dir: publicDir,
|
|
834
|
-
files,
|
|
835
|
-
keyFor: (file) => `/${file}`,
|
|
836
|
-
precompressed: false,
|
|
837
|
-
exportName: 'publicAssets',
|
|
838
|
-
label: 'public files',
|
|
839
|
-
source: 'public/',
|
|
840
|
-
})
|
|
841
|
-
return { contents, loader: 'js' }
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
if (args.path === 'abide:mcp-resources') {
|
|
845
|
-
/*
|
|
846
|
-
Embeds every file under src/mcp/resources/ (gzip level
|
|
847
|
-
9) keyed by its path relative to that dir, so the
|
|
848
|
-
standalone binary serves MCP resources without the folder
|
|
849
|
-
on disk. Mirrors abide:public-assets. Undefined when not
|
|
850
|
-
embedding (dev + `abide start` read off disk).
|
|
851
|
-
*/
|
|
852
|
-
if (!embedAssets || !existsSync(resourcesDir)) {
|
|
853
|
-
return {
|
|
854
|
-
contents: 'export const mcpResources = undefined',
|
|
855
|
-
loader: 'js',
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
const files = await Array.fromAsync(
|
|
859
|
-
new Glob('**/*').scan({ cwd: resourcesDir, onlyFiles: true }),
|
|
860
|
-
)
|
|
861
|
-
if (files.length === 0) {
|
|
862
|
-
return {
|
|
863
|
-
contents: 'export const mcpResources = undefined',
|
|
864
|
-
loader: 'js',
|
|
865
|
-
}
|
|
866
|
-
}
|
|
867
|
-
const contents = await embedGzipDir({
|
|
868
|
-
dir: resourcesDir,
|
|
869
|
-
files,
|
|
870
|
-
keyFor: (file) => file,
|
|
871
|
-
precompressed: false,
|
|
872
|
-
exportName: 'mcpResources',
|
|
873
|
-
label: 'mcp resources',
|
|
874
|
-
source: 'src/mcp/resources/',
|
|
875
|
-
})
|
|
876
|
-
return { contents, loader: 'js' }
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
if (args.path === 'abide:shell') {
|
|
880
|
-
const content = await loadShellOnce()
|
|
881
|
-
return {
|
|
882
|
-
contents: `export const shell = ${JSON.stringify(content)}`,
|
|
883
|
-
loader: 'js',
|
|
884
|
-
}
|
|
885
|
-
}
|
|
886
|
-
|
|
887
|
-
return undefined
|
|
888
|
-
})
|
|
889
|
-
},
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
|
|
893
|
-
/*
|
|
894
|
-
Encodes every file in `files` (relative to `dir`) into a base64 gzip map and
|
|
895
|
-
emits `export const <exportName> = { "<key>": _d("<base64>") }`. `keyFor` maps
|
|
896
|
-
a relative path to its lookup key; `precompressed` true means the files are
|
|
897
|
-
already `.gz` on disk (read + base64 as-is), false means compress here at
|
|
898
|
-
level 9. Shared by the abide:assets / abide:public-assets / abide:mcp-resources
|
|
899
|
-
virtuals, which differ only in source dir, key shape, and whether the inputs
|
|
900
|
-
are pre-compressed.
|
|
901
|
-
*/
|
|
902
|
-
async function embedGzipDir({
|
|
903
|
-
dir,
|
|
904
|
-
files,
|
|
905
|
-
keyFor,
|
|
906
|
-
precompressed,
|
|
907
|
-
exportName,
|
|
908
|
-
label,
|
|
909
|
-
source,
|
|
910
|
-
}: {
|
|
911
|
-
dir: string
|
|
912
|
-
files: string[]
|
|
913
|
-
keyFor: (file: string) => string
|
|
914
|
-
precompressed: boolean
|
|
915
|
-
exportName: string
|
|
916
|
-
label: string
|
|
917
|
-
source: string
|
|
918
|
-
}): Promise<string> {
|
|
919
|
-
const encoded = await Promise.all(
|
|
920
|
-
files.map(async (file) => {
|
|
921
|
-
const raw = await Bun.file(`${dir}/${file}`).bytes()
|
|
922
|
-
const bytes = precompressed ? raw : Bun.gzipSync(raw, { level: 9 })
|
|
923
|
-
return {
|
|
924
|
-
line: ` ${JSON.stringify(keyFor(file))}: _d(${JSON.stringify(bytes.toBase64())}),`,
|
|
925
|
-
bytes: bytes.byteLength,
|
|
926
|
-
}
|
|
927
|
-
}),
|
|
928
|
-
)
|
|
929
|
-
const totalBytes = encoded.reduce((total, entry) => total + entry.bytes, 0)
|
|
930
|
-
const unit = precompressed ? 'KiB' : 'KiB gzip'
|
|
931
|
-
abideLog.info(
|
|
932
|
-
`embedded ${encoded.length} ${label} from ${source} (${(totalBytes / 1024).toFixed(1)} ${unit})`,
|
|
933
|
-
)
|
|
934
|
-
return `const _d = (s) => Uint8Array.fromBase64(s)
|
|
935
|
-
export const ${exportName} = {
|
|
936
|
-
${encoded.map((entry) => entry.line).join('\n')}
|
|
937
|
-
}
|
|
938
|
-
`
|
|
939
|
-
}
|
|
940
|
-
|
|
941
|
-
/*
|
|
942
|
-
Walks one registry directory once: src/server/rpc (every `.ts` file is an
|
|
943
|
-
HTTP-method rpc handler), src/server/sockets (each `.ts` file declares one
|
|
944
|
-
socket, loaded lazily on first sub/pub frame), or src/mcp/prompts (each `.md`
|
|
945
|
-
file declares one MCP prompt — frontmatter for metadata, body for the
|
|
946
|
-
template). Returns an empty list when the directory doesn't exist so an app
|
|
947
|
-
missing the folder builds the same.
|
|
948
|
-
*/
|
|
949
|
-
async function scanDir(dir: string, pattern: string): Promise<string[]> {
|
|
950
|
-
if (!existsSync(dir)) {
|
|
951
|
-
return []
|
|
952
|
-
}
|
|
953
|
-
return await Array.fromAsync(new Glob(pattern).scan({ cwd: dir }))
|
|
954
|
-
}
|
|
955
|
-
|
|
956
|
-
/*
|
|
957
|
-
Picks `src/ui/app.html` when it exists, otherwise the bundled default
|
|
958
|
-
shell. Reads the file once per build so the resolver's two virtual passes share
|
|
959
|
-
a single disk hit. Rewrites the literal `/_app/client.js` and `/_app/client.css`
|
|
960
|
-
references to the hashed entry filenames emitted by the client build so the
|
|
961
|
-
entry bundles can be served with `immutable` cache headers like the chunks.
|
|
962
|
-
*/
|
|
963
|
-
async function loadShell(cwd: string): Promise<string> {
|
|
964
|
-
const userShell = `${cwd}/src/ui/app.html`
|
|
965
|
-
const defaultShell = new URL('./assets/app.html', import.meta.url).pathname
|
|
966
|
-
const filepath = (await Bun.file(userShell).exists()) ? userShell : defaultShell
|
|
967
|
-
if (filepath === userShell) {
|
|
968
|
-
abideLog.info('using custom src/ui/app.html')
|
|
969
|
-
}
|
|
970
|
-
const content = await Bun.file(filepath).text()
|
|
971
|
-
return await rewriteHashedClientEntries(injectShellAssets(content), cwd)
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
/*
|
|
975
|
-
Injects the framework's client entry references so app.html stays a clean
|
|
976
|
-
template — page structure plus the SSR markers, no framework asset bookkeeping.
|
|
977
|
-
The css <link> and the entry's <link rel="modulepreload"> land before </head>,
|
|
978
|
-
the module <script> before </body>. Each is skipped when the shell already
|
|
979
|
-
carries that reference, so a custom app.html that still spells the tags out (or
|
|
980
|
-
one already processed) doesn't get a duplicate. rewriteHashedClientEntries then
|
|
981
|
-
swaps every reference for the hashed entry filenames.
|
|
982
|
-
|
|
983
|
-
The modulepreload makes the browser fetch the entry during a streamed render —
|
|
984
|
-
the closing </body> <script> tag arrives only after the whole stream, so without
|
|
985
|
-
it the entry download is serialized after the body. Execution still defers to
|
|
986
|
-
parse-end (module script), so hydration ordering is unchanged; only the transfer
|
|
987
|
-
overlaps the stream.
|
|
988
|
-
*/
|
|
989
|
-
function injectShellAssets(shell: string): string {
|
|
990
|
-
let result = shell
|
|
991
|
-
if (!result.includes('/_app/client.css')) {
|
|
992
|
-
result = injectBeforeTag(
|
|
993
|
-
result,
|
|
994
|
-
'<link rel="stylesheet" href="/_app/client.css" />',
|
|
995
|
-
'head',
|
|
996
|
-
'src/ui/app.html has no </head>',
|
|
997
|
-
)
|
|
998
|
-
}
|
|
999
|
-
if (!result.includes('rel="modulepreload"')) {
|
|
1000
|
-
result = injectBeforeTag(
|
|
1001
|
-
result,
|
|
1002
|
-
'<link rel="modulepreload" href="/_app/client.js" />',
|
|
1003
|
-
'head',
|
|
1004
|
-
'src/ui/app.html has no </head>',
|
|
1005
|
-
)
|
|
1006
|
-
}
|
|
1007
|
-
// Guard on `src=` so the modulepreload's matching href doesn't mask a missing <script>.
|
|
1008
|
-
if (!result.includes('src="/_app/client.js"')) {
|
|
1009
|
-
result = injectBeforeTag(
|
|
1010
|
-
result,
|
|
1011
|
-
'<script type="module" src="/_app/client.js"></script>',
|
|
1012
|
-
'body',
|
|
1013
|
-
'src/ui/app.html has no </body>',
|
|
1014
|
-
)
|
|
1015
|
-
}
|
|
1016
|
-
return result
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
/*
|
|
1020
|
-
Inserts `snippet` before the shell's closing `</tag>` (case-insensitive, so an
|
|
1021
|
-
uppercase or oddly-cased custom app.html still works). When the tag is absent
|
|
1022
|
-
the asset would otherwise be silently dropped, leaving the page unstyled /
|
|
1023
|
-
unhydrated; instead warn and append the snippet so it still ships.
|
|
1024
|
-
*/
|
|
1025
|
-
function injectBeforeTag(
|
|
1026
|
-
shell: string,
|
|
1027
|
-
snippet: string,
|
|
1028
|
-
tag: 'head' | 'body',
|
|
1029
|
-
missingMessage: string,
|
|
1030
|
-
): string {
|
|
1031
|
-
const closing = new RegExp(`</${tag}\\s*>`, 'i')
|
|
1032
|
-
if (closing.test(shell)) {
|
|
1033
|
-
return shell.replace(closing, (match) => `${snippet}\n${match}`)
|
|
1034
|
-
}
|
|
1035
|
-
abideLog.warn(`${missingMessage} — appending the reference at the end of the document`)
|
|
1036
|
-
return `${shell}\n${snippet}`
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
/*
|
|
1040
|
-
Scans the client-bundle directory for the hashed client entry filenames produced
|
|
1041
|
-
by build.ts (e.g. `client-abc12345.js`, `client-abc12345.css`) and swaps the
|
|
1042
|
-
shell's literal `/_app/client.js` and `/_app/client.css` references for them. The
|
|
1043
|
-
js reference appears twice (the modulepreload <link> and the entry <script>), so
|
|
1044
|
-
replaceAll covers both. When the directory is missing (someone running the server
|
|
1045
|
-
before a build) the shell is returned unchanged so the existing broken-asset
|
|
1046
|
-
behaviour is preserved.
|
|
1047
|
-
|
|
1048
|
-
The directory is `dist/_app` for a production build, but under `abide dev` the
|
|
1049
|
-
orchestrator serves each build generation from its own `_app.gen-<id>` dir and
|
|
1050
|
-
passes it as `ABIDE_APP_DIR` (this runs in the worker, which resolves `abide:shell`
|
|
1051
|
-
at boot). Reading that env keeps the shell's entry ref, the preload manifest, and
|
|
1052
|
-
the asset server all pointed at the one generation this worker owns — never a
|
|
1053
|
-
sibling generation a concurrent worker is serving. Each generation dir holds
|
|
1054
|
-
exactly one entry, so `.find` is unambiguous.
|
|
1055
|
-
*/
|
|
1056
|
-
async function rewriteHashedClientEntries(shell: string, cwd: string): Promise<string> {
|
|
1057
|
-
const appDir = process.env.ABIDE_APP_DIR ?? `${cwd}/dist/_app`
|
|
1058
|
-
if (!existsSync(appDir)) {
|
|
1059
|
-
return shell
|
|
1060
|
-
}
|
|
1061
|
-
const entries = await Array.fromAsync(
|
|
1062
|
-
new Glob('client-*').scan({ cwd: appDir, onlyFiles: true }),
|
|
1063
|
-
)
|
|
1064
|
-
const jsEntry = entries.find((file) => /^client-[a-z0-9]+\.js$/i.test(file))
|
|
1065
|
-
const cssEntry = entries.find((file) => /^client-[a-z0-9]+\.css$/i.test(file))
|
|
1066
|
-
let result = shell
|
|
1067
|
-
if (jsEntry) {
|
|
1068
|
-
result = result.replaceAll('/_app/client.js', `/_app/${jsEntry}`)
|
|
1069
|
-
result = await injectEntryDepPreloads(result, `${appDir}/${jsEntry}`)
|
|
1070
|
-
}
|
|
1071
|
-
if (cssEntry) {
|
|
1072
|
-
result = result.replace('/_app/client.css', `/_app/${cssEntry}`)
|
|
1073
|
-
}
|
|
1074
|
-
return result
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
/* Static-import specifiers in the built entry: `import {…} from "./chunk.js"` and
|
|
1078
|
-
side-effect `import "./chunk.js"`, minified (no spaces) or not. The leading
|
|
1079
|
-
`import` plus the `[^"'()]` guard excludes dynamic `import("./page-….js")`, so
|
|
1080
|
-
only the runtime graph matches — route chunks stay lazy. */
|
|
1081
|
-
const ENTRY_STATIC_IMPORT = /import\s*(?:[^"'()]*?\bfrom\s*)?["']\.\/([\w.-]+\.js)["']/g
|
|
1082
|
-
|
|
1083
|
-
/*
|
|
1084
|
-
SPIKE: preload the entry's static dependency chunks. The entry <script> statically
|
|
1085
|
-
imports the abide-ui runtime as ~60 one-export `clientEntry-<hash>.js` chunks; the
|
|
1086
|
-
browser can't discover them until it has downloaded and PARSED the entry, which on a
|
|
1087
|
-
streamed page is ~stream-close — so the runtime waterfalls in a second wave after the
|
|
1088
|
-
body finishes. Emitting a <link rel="modulepreload"> for each static dep into <head>
|
|
1089
|
-
lets the whole graph transfer DURING the stream alongside the entry, so hydration is
|
|
1090
|
-
network-ready at stream-close instead of after it. Route chunks (`import("./page-…")`)
|
|
1091
|
-
are dynamic, so they don't match and stay lazy — code-splitting still pays off.
|
|
1092
|
-
*/
|
|
1093
|
-
async function injectEntryDepPreloads(shell: string, entryPath: string): Promise<string> {
|
|
1094
|
-
const source = await Bun.file(entryPath).text()
|
|
1095
|
-
const deps = [...new Set([...source.matchAll(ENTRY_STATIC_IMPORT)].map((match) => match[1]))]
|
|
1096
|
-
if (deps.length === 0) {
|
|
1097
|
-
return shell
|
|
1098
|
-
}
|
|
1099
|
-
const links = deps.map((dep) => `<link rel="modulepreload" href="/_app/${dep}" />`).join('\n')
|
|
1100
|
-
return injectBeforeTag(shell, links, 'head', 'src/ui/app.html has no </head>')
|
|
1101
|
-
}
|