@abide/abide 0.57.1 → 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1773
- package/bin/abide.ts +788 -204
- package/package.json +30 -152
- package/scaffold/src/server/app.ts +6 -0
- package/scaffold/src/shared/.gitkeep +0 -0
- package/scaffold/src/ui/app.html +8 -0
- package/scaffold/src/ui/pages/page.abide +13 -0
- package/src/compiler/CHARACTER_REFERENCES.ts +2242 -0
- package/src/compiler/CheckerAnswer.ts +62 -0
- package/src/compiler/Cursor.ts +367 -0
- package/src/compiler/Finding.ts +2 -0
- package/src/compiler/Lowering.ts +648 -0
- package/src/compiler/PositionTable.ts +125 -0
- package/src/compiler/REACTIVE_MEMBERS.ts +36 -0
- package/src/compiler/SHARED_NAMES.ts +45 -0
- package/src/compiler/SPECIFIERS.ts +16 -0
- package/src/compiler/ShadowMap.ts +144 -0
- package/src/compiler/TemplateNode.ts +176 -0
- package/src/compiler/TypeSession.ts +1079 -0
- package/src/compiler/VOID_ELEMENTS.ts +22 -0
- package/src/compiler/aliasedSymbol.ts +15 -0
- package/src/compiler/ambientReadsIn.ts +152 -0
- package/src/compiler/argsDefaultsIn.ts +173 -0
- package/src/compiler/argsSchemaOf.ts +230 -0
- package/src/compiler/checkApp.ts +117 -0
- package/src/compiler/checkedShadow.ts +182 -0
- package/src/compiler/classifyRead.ts +577 -0
- package/src/compiler/classifyTemplate.ts +501 -0
- package/src/compiler/compileApp.ts +559 -0
- package/src/compiler/compiledEntry.ts +141 -0
- package/src/compiler/componentGraph.ts +139 -0
- package/src/compiler/declaredExports.ts +645 -0
- package/src/compiler/decodeCharacterReferences.ts +111 -0
- package/src/compiler/emitClient.ts +1343 -0
- package/src/compiler/emitComponent.ts +162 -0
- package/src/compiler/emitSource.ts +91 -0
- package/src/compiler/formatDiagnosis.ts +19 -0
- package/src/compiler/handlersUnder.ts +109 -0
- package/src/compiler/index.ts +15 -0
- package/src/compiler/invocationProps.ts +67 -0
- package/src/compiler/isNamedAlone.ts +9 -0
- package/src/compiler/lineOf.ts +38 -0
- package/src/compiler/parseAbide.ts +1341 -0
- package/src/compiler/projectShadow.ts +643 -0
- package/src/compiler/reactiveOptions.ts +82 -0
- package/src/compiler/reactiveTypes.ts +222 -0
- package/src/compiler/readSources.ts +100 -0
- package/src/compiler/readsIn.ts +1023 -0
- package/src/compiler/renderMarkup.ts +781 -0
- package/src/compiler/scaffold.ts +105 -0
- package/src/compiler/scopeStyles.ts +309 -0
- package/src/compiler/serveLanguage.ts +405 -0
- package/src/compiler/shareScope.ts +51 -0
- package/src/compiler/sharedModuleWrites.ts +88 -0
- package/src/compiler/splitImports.ts +387 -0
- package/src/compiler/templateWarnings.ts +128 -0
- package/src/compiler/tokenize.ts +317 -0
- package/src/compiler/trackingWarnings.ts +279 -0
- package/src/compiler/writeDefaultProject.ts +42 -0
- package/src/server/BRIDGE_VERSION.ts +3 -0
- package/src/server/CLIENT_BUILD.ts +56 -0
- package/src/server/DEFAULT_PORT.ts +6 -0
- package/src/server/DOCUMENT_HEADERS.ts +11 -0
- package/src/server/Inbox.ts +36 -0
- package/src/server/LogPanel.ts +239 -0
- package/src/server/MCP_PROTOCOL_VERSION.ts +3 -0
- package/src/server/SETTLE_MILLISECONDS.ts +7 -0
- package/src/server/VIRTUAL_DIRECTORY.ts +6 -0
- package/src/server/answerFailure.ts +91 -0
- package/src/server/answerRequest.ts +560 -0
- package/src/server/answerRpc.ts +537 -0
- package/src/server/answerSocket.ts +537 -0
- package/src/server/answerValue.ts +375 -0
- package/src/server/appDirectories.ts +9 -0
- package/src/server/appKit.ts +204 -0
- package/src/server/appPlugins.ts +26 -0
- package/src/server/argsFor.ts +40 -0
- package/src/server/assistant.ts +163 -0
- package/src/server/banner.ts +43 -0
- package/src/server/bridgeRelay.ts +249 -0
- package/src/server/buildDirectory.ts +10 -0
- package/src/server/callerOf.ts +60 -0
- package/src/server/claudeApi.ts +224 -0
- package/src/server/claudeCode.ts +187 -0
- package/src/server/clientBuildOptions.ts +49 -0
- package/src/server/coerceArgs.ts +110 -0
- package/src/server/commands.ts +442 -0
- package/src/server/componentImports.ts +56 -0
- package/src/server/componentModules.d.ts +9 -0
- package/src/server/compressAnswer.ts +66 -0
- package/src/server/config.ts +192 -0
- package/src/server/configFields.ts +92 -0
- package/src/server/createApp.ts +428 -0
- package/src/server/crossingOrigin.ts +49 -0
- package/src/server/csp.ts +77 -0
- package/src/server/devWorker.ts +613 -0
- package/src/server/faultPolicy.ts +59 -0
- package/src/server/fenceServer.ts +48 -0
- package/src/server/generatedSurfaces.ts +430 -0
- package/src/server/hooks.ts +190 -0
- package/src/server/index.ts +87 -0
- package/src/server/installServer.ts +47 -0
- package/src/server/launcherOptions.ts +62 -0
- package/src/server/launcherPage.ts +156 -0
- package/src/server/manifestOf.ts +114 -0
- package/src/server/muxUpgrade.ts +72 -0
- package/src/server/namesUnder.ts +15 -0
- package/src/server/nativeMenu.ts +296 -0
- package/src/server/negotiateEncoding.ts +39 -0
- package/src/server/plainAnswer.ts +19 -0
- package/src/server/prefers.ts +25 -0
- package/src/server/principal.ts +261 -0
- package/src/server/qualitiesOf.ts +22 -0
- package/src/server/randomToken.ts +9 -0
- package/src/server/reachable.ts +31 -0
- package/src/server/refuseAddressCollision.ts +30 -0
- package/src/server/remote.ts +242 -0
- package/src/server/render.ts +464 -0
- package/src/server/renderComponent.ts +33 -0
- package/src/server/reportHealth.ts +46 -0
- package/src/server/requestScope.ts +435 -0
- package/src/server/responseHelpers.ts +75 -0
- package/src/server/runCompiled.ts +44 -0
- package/src/server/runDesktop.ts +572 -0
- package/src/server/seedBuffer.ts +293 -0
- package/src/server/serveBuild.ts +198 -0
- package/src/server/serveDev.ts +499 -0
- package/src/server/shell.ts +506 -0
- package/src/server/surfaceOf.ts +47 -0
- package/src/server/testBuild.ts +237 -0
- package/src/server/trace.ts +151 -0
- package/src/server/versionOf.ts +109 -0
- package/src/server/withoutTrailingSlash.ts +4 -0
- package/src/shared/ADDRESSES.ts +69 -0
- package/src/shared/ANCHORS.ts +54 -0
- package/src/shared/Attributes.ts +339 -0
- package/src/shared/BOOLEAN_ATTRIBUTES.ts +41 -0
- package/src/shared/CHILDREN.ts +11 -0
- package/src/shared/CURRENT_ROUTER.ts +25 -0
- package/src/shared/CopyOptions.ts +19 -0
- package/src/shared/DEBUG_META.ts +6 -0
- package/src/shared/EARLY_CALLS.ts +8 -0
- package/src/shared/FAILURE_STATUS_TEXT.ts +48 -0
- package/src/shared/Failed.ts +146 -0
- package/src/shared/GLOBAL_GETS.ts +7 -0
- package/src/shared/Issues.ts +49 -0
- package/src/shared/JsonValue.ts +18 -0
- package/src/shared/LOAD_SIGNAL.ts +10 -0
- package/src/shared/MOUNT_META.ts +6 -0
- package/src/shared/Middleware.ts +34 -0
- package/src/shared/NAVIGATION_HEADER.ts +7 -0
- package/src/shared/PRINCIPAL_HEADER.ts +6 -0
- package/src/shared/RPC_SERVER.ts +67 -0
- package/src/shared/Raw.ts +90 -0
- package/src/shared/Schema.ts +229 -0
- package/src/shared/UNEXPECTED.ts +11 -0
- package/src/shared/URL_ATTRIBUTES.ts +19 -0
- package/src/shared/VERSION_HEADER.ts +6 -0
- package/src/shared/WORK.ts +37 -0
- package/src/shared/anchorMarkup.ts +15 -0
- package/src/shared/answerOf.ts +141 -0
- package/src/shared/applyPatch.ts +173 -0
- package/src/shared/armAnchor.ts +17 -0
- package/src/shared/attributeText.ts +50 -0
- package/src/shared/boundValue.ts +58 -0
- package/src/shared/cookies.ts +271 -0
- package/src/shared/csp.ts +55 -0
- package/src/shared/decodedOrKept.ts +14 -0
- package/src/shared/escapeText.ts +103 -0
- package/src/shared/framing.ts +131 -0
- package/src/shared/headKeyOf.ts +34 -0
- package/src/shared/health.ts +51 -0
- package/src/shared/index.ts +117 -0
- package/src/shared/isEventName.ts +10 -0
- package/src/shared/isRecord.ts +4 -0
- package/src/shared/issuesOf.ts +18 -0
- package/src/shared/jsonSchema.ts +50 -0
- package/src/shared/listOf.ts +20 -0
- package/src/shared/log.ts +284 -0
- package/src/shared/matchRoute.ts +99 -0
- package/src/shared/menuItem.ts +80 -0
- package/src/shared/mount.ts +45 -0
- package/src/shared/muxFrames.ts +35 -0
- package/src/shared/navigate.ts +26 -0
- package/src/shared/note.ts +24 -0
- package/src/shared/numberFromText.ts +10 -0
- package/src/shared/online.ts +19 -0
- package/src/shared/paint.ts +4 -0
- package/src/shared/principal.ts +145 -0
- package/src/shared/principalRotated.ts +47 -0
- package/src/shared/propCell.ts +99 -0
- package/src/shared/props.ts +24 -0
- package/src/shared/putOwn.ts +24 -0
- package/src/shared/queryText.ts +18 -0
- package/src/shared/reactive/CELL.ts +8 -0
- package/src/shared/reactive/Cursor.ts +223 -0
- package/src/shared/reactive/ENTRY_LIVES.ts +7 -0
- package/src/shared/reactive/Expiry.ts +103 -0
- package/src/shared/reactive/FOLLOWED.ts +8 -0
- package/src/shared/reactive/KEYED_BRAND.ts +8 -0
- package/src/shared/reactive/Keyed.ts +423 -0
- package/src/shared/reactive/MUTATION.ts +5 -0
- package/src/shared/reactive/NO_INITIAL.ts +6 -0
- package/src/shared/reactive/NotLanded.ts +21 -0
- package/src/shared/reactive/PATCHES.ts +11 -0
- package/src/shared/reactive/PATCH_SINKS.ts +26 -0
- package/src/shared/reactive/REACTIVE_BRAND.ts +9 -0
- package/src/shared/reactive/RESHAPING.ts +13 -0
- package/src/shared/reactive/Reactive.ts +4480 -0
- package/src/shared/reactive/SELECTION_MEMBERS.ts +12 -0
- package/src/shared/reactive/STREAMING.ts +5 -0
- package/src/shared/reactive/argsContract.ts +97 -0
- package/src/shared/reactive/byOf.ts +18 -0
- package/src/shared/reactive/callLoad.ts +200 -0
- package/src/shared/reactive/canonicalKey.ts +95 -0
- package/src/shared/reactive/chunksOfStream.ts +51 -0
- package/src/shared/reactive/index.ts +542 -0
- package/src/shared/reactive/isReactive.ts +19 -0
- package/src/shared/reactive/isThenable.ts +14 -0
- package/src/shared/reactive/matchesPattern.ts +16 -0
- package/src/shared/reactive/pairReactive.ts +41 -0
- package/src/shared/reactive/parameterDefaults.ts +356 -0
- package/src/shared/reactive/recordWrites.ts +472 -0
- package/src/shared/reactive/scoped.ts +157 -0
- package/src/shared/reactive/scoping.ts +64 -0
- package/src/shared/reactive/share.ts +91 -0
- package/src/shared/reactive/structural.ts +62 -0
- package/src/shared/reactive/tracking.ts +418 -0
- package/src/shared/reactive/watch.ts +310 -0
- package/src/shared/refuse.ts +224 -0
- package/src/shared/route.ts +29 -0
- package/src/shared/routePattern.ts +146 -0
- package/src/shared/rpc.ts +496 -0
- package/src/shared/rpcRequest.ts +73 -0
- package/src/shared/safeUrl.ts +68 -0
- package/src/shared/seededDocument.ts +36 -0
- package/src/shared/setUpLevels.ts +53 -0
- package/src/shared/slotValue.ts +34 -0
- package/src/shared/spread.ts +79 -0
- package/src/shared/takeEarlyCall.ts +86 -0
- package/src/shared/url.ts +140 -0
- package/src/shared/validateJson.ts +578 -0
- package/src/shared/versionInEtag.ts +14 -0
- package/src/shared/writePath.ts +95 -0
- package/src/ui/ArmRegion.ts +185 -0
- package/src/ui/LAYER_NAMES.ts +30 -0
- package/src/ui/List.ts +273 -0
- package/src/ui/Mismatch.ts +32 -0
- package/src/ui/RawRun.ts +99 -0
- package/src/ui/Router.ts +698 -0
- package/src/ui/Scope.ts +115 -0
- package/src/ui/TryRegion.ts +278 -0
- package/src/ui/adoptWalk.ts +126 -0
- package/src/ui/applyHead.ts +146 -0
- package/src/ui/bindElement.ts +44 -0
- package/src/ui/bindProperty.ts +79 -0
- package/src/ui/bindSpread.ts +44 -0
- package/src/ui/escapeless.ts +14 -0
- package/src/ui/index.ts +64 -0
- package/src/ui/leave.ts +35 -0
- package/src/ui/listenForRoutes.ts +92 -0
- package/src/ui/measureLayer.ts +34 -0
- package/src/ui/menuBridge.ts +19 -0
- package/src/ui/moveNode.ts +34 -0
- package/src/ui/parseMarkup.ts +35 -0
- package/src/ui/reconcile.ts +368 -0
- package/src/ui/regions.ts +137 -0
- package/src/ui/reportMenu.ts +57 -0
- package/src/ui/routing.ts +18 -0
- package/src/ui/rowKeyOf.ts +19 -0
- package/src/ui/rows.ts +99 -0
- package/src/ui/setAttribute.ts +37 -0
- package/src/ui/setClass.ts +27 -0
- package/src/ui/setMarkup.ts +20 -0
- package/src/ui/setStyleProperty.ts +30 -0
- package/src/ui/setText.ts +28 -0
- package/src/ui/socketWire.ts +258 -0
- package/src/ui/wire.ts +141 -0
- package/AGENTS.md +0 -446
- package/README.md +0 -249
- package/src/abideLsp.ts +0 -251
- package/src/abideModules.d.ts +0 -8
- package/src/abideResolverPlugin.ts +0 -1101
- package/src/appEntry.ts +0 -161
- package/src/assets/app.html +0 -12
- package/src/build.ts +0 -189
- package/src/buildCli.ts +0 -125
- package/src/buildDisconnected.ts +0 -117
- package/src/bundleApp.ts +0 -146
- package/src/bundleDisconnectedEntry.ts +0 -14
- package/src/checkAbide.ts +0 -145
- package/src/cliEntry.ts +0 -25
- package/src/clientBuildPlugins.ts +0 -33
- package/src/clientEntry.ts +0 -17
- package/src/compile.ts +0 -61
- package/src/controlServerWorker.ts +0 -433
- package/src/devEntry.ts +0 -381
- package/src/discoveryEntry.ts +0 -82
- package/src/initAgent.ts +0 -50
- package/src/lib/bundle/BundleMenu.ts +0 -12
- package/src/lib/bundle/BundleMenuItem.ts +0 -25
- package/src/lib/bundle/BundleWindow.ts +0 -37
- package/src/lib/bundle/WEBVIEW_BUILD_REVISION.ts +0 -9
- package/src/lib/bundle/WEBVIEW_VERSION.ts +0 -7
- package/src/lib/bundle/bindConnectedFlag.ts +0 -29
- package/src/lib/bundle/bindRequestNavigate.ts +0 -34
- package/src/lib/bundle/buildWebviewLib.ts +0 -111
- package/src/lib/bundle/bundled.ts +0 -35
- package/src/lib/bundle/disconnected.abide +0 -265
- package/src/lib/bundle/disconnected.css +0 -9
- package/src/lib/bundle/ensureWebviewLib.ts +0 -20
- package/src/lib/bundle/exitWithParent.ts +0 -30
- package/src/lib/bundle/infoPlist.ts +0 -52
- package/src/lib/bundle/installDownloads.ts +0 -34
- package/src/lib/bundle/installMacMenu.ts +0 -49
- package/src/lib/bundle/listenLocalControlServer.ts +0 -19
- package/src/lib/bundle/native/abideMenu.mm +0 -422
- package/src/lib/bundle/native/webview.h +0 -4557
- package/src/lib/bundle/onMenu.ts +0 -42
- package/src/lib/bundle/openWebview.ts +0 -104
- package/src/lib/bundle/pngToIcns.ts +0 -47
- package/src/lib/bundle/probeAbideServer.ts +0 -57
- package/src/lib/bundle/resolveServerBinary.ts +0 -12
- package/src/lib/bundle/resolveWebviewLib.ts +0 -53
- package/src/lib/bundle/serverBinaryFilename.ts +0 -8
- package/src/lib/bundle/signMacApp.ts +0 -37
- package/src/lib/bundle/spawnEmbeddedServer.ts +0 -73
- package/src/lib/bundle/stableLocalPort.ts +0 -19
- package/src/lib/bundle/waitForServer.ts +0 -28
- package/src/lib/bundle/webviewCachePath.ts +0 -23
- package/src/lib/bundle/webviewLibName.ts +0 -11
- package/src/lib/cli/completeCli.ts +0 -38
- package/src/lib/cli/connectToServer.ts +0 -23
- package/src/lib/cli/createClient.ts +0 -108
- package/src/lib/cli/dispatchCommand.ts +0 -72
- package/src/lib/cli/loadEnvFromBinaryDir.ts +0 -15
- package/src/lib/cli/parseArgvForRpc.ts +0 -131
- package/src/lib/cli/printCommandHelp.ts +0 -43
- package/src/lib/cli/printSessionHelp.ts +0 -28
- package/src/lib/cli/printSessionStatus.ts +0 -21
- package/src/lib/cli/printTopLevelHelp.ts +0 -83
- package/src/lib/cli/printTrimmed.ts +0 -8
- package/src/lib/cli/printValue.ts +0 -10
- package/src/lib/cli/renderCliCompletions.ts +0 -56
- package/src/lib/cli/resolveCliTarget.ts +0 -47
- package/src/lib/cli/runCli.ts +0 -188
- package/src/lib/cli/runSession.ts +0 -107
- package/src/lib/cli/startLocalInstance.ts +0 -14
- package/src/lib/cli/tokenizeArgvFlags.ts +0 -86
- package/src/lib/cli/tokenizeLine.ts +0 -51
- package/src/lib/cli/types/CliManifest.ts +0 -11
- package/src/lib/cli/types/CliManifestEntry.ts +0 -17
- package/src/lib/cli/types/CliTarget.ts +0 -13
- package/src/lib/mcp/annotationsForMethod.ts +0 -29
- package/src/lib/mcp/buildPrompts.ts +0 -25
- package/src/lib/mcp/createMcpResourceServer.ts +0 -113
- package/src/lib/mcp/createMcpServer.ts +0 -56
- package/src/lib/mcp/dispatchMcpRequest.ts +0 -159
- package/src/lib/mcp/mcpResourceServerSlot.ts +0 -13
- package/src/lib/mcp/mcpSurface.ts +0 -57
- package/src/lib/mcp/mcpTools.ts +0 -196
- package/src/lib/mcp/renderPrompt.ts +0 -25
- package/src/lib/mcp/toolResultFromResponse.ts +0 -100
- package/src/lib/mcp/types/JsonRpcRequest.ts +0 -12
- package/src/lib/mcp/types/JsonRpcResponse.ts +0 -20
- package/src/lib/mcp/types/McpResourceContents.ts +0 -10
- package/src/lib/mcp/types/McpResourceDescriptor.ts +0 -6
- package/src/lib/mcp/types/McpResourceServer.ts +0 -12
- package/src/lib/mcp/types/McpServer.ts +0 -9
- package/src/lib/mcp/types/McpServerOptions.ts +0 -16
- package/src/lib/mcp/types/McpSurface.ts +0 -15
- package/src/lib/mcp/types/PromptDescriptor.ts +0 -5
- package/src/lib/mcp/types/PromptMessage.ts +0 -2
- package/src/lib/mcp/types/ToolDescriptor.ts +0 -7
- package/src/lib/mcp/types/ToolResult.ts +0 -2
- package/src/lib/server/AppModule.ts +0 -47
- package/src/lib/server/DELETE.ts +0 -10
- package/src/lib/server/GET.ts +0 -10
- package/src/lib/server/HEAD.ts +0 -10
- package/src/lib/server/PATCH.ts +0 -10
- package/src/lib/server/POST.ts +0 -10
- package/src/lib/server/PUT.ts +0 -10
- package/src/lib/server/agent.ts +0 -86
- package/src/lib/server/appDataDir.ts +0 -16
- package/src/lib/server/cli/buildEnvContent.ts +0 -19
- package/src/lib/server/cli/createTarGz.ts +0 -77
- package/src/lib/server/cli/handleCliDownload.ts +0 -152
- package/src/lib/server/cli/handleCliInstall.ts +0 -37
- package/src/lib/server/cli/installScript.ts +0 -31
- package/src/lib/server/cli/maxSourceMtime.ts +0 -26
- package/src/lib/server/cookies.ts +0 -30
- package/src/lib/server/env.ts +0 -51
- package/src/lib/server/error.ts +0 -110
- package/src/lib/server/json.ts +0 -57
- package/src/lib/server/jsonl.ts +0 -47
- package/src/lib/server/prompts/definePrompt.ts +0 -21
- package/src/lib/server/prompts/promptRegistry.ts +0 -9
- package/src/lib/server/prompts/registerPrompt.ts +0 -6
- package/src/lib/server/prompts/renderPromptTemplate.ts +0 -17
- package/src/lib/server/prompts/types/Prompt.ts +0 -14
- package/src/lib/server/prompts/types/PromptOptions.ts +0 -12
- package/src/lib/server/prompts/types/PromptRegistryEntry.ts +0 -13
- package/src/lib/server/prompts/types/PromptRoutes.ts +0 -10
- package/src/lib/server/redirect.ts +0 -43
- package/src/lib/server/render.ts +0 -70
- package/src/lib/server/request.ts +0 -19
- package/src/lib/server/rpc/defineRpc.ts +0 -271
- package/src/lib/server/rpc/dispatchRpcInProcess.ts +0 -46
- package/src/lib/server/rpc/findRpcByCommandName.ts +0 -18
- package/src/lib/server/rpc/parseArgs.ts +0 -244
- package/src/lib/server/rpc/readBodyWithinLimit.ts +0 -47
- package/src/lib/server/rpc/registerRpc.ts +0 -6
- package/src/lib/server/rpc/resolveRpcJsonSchema.ts +0 -28
- package/src/lib/server/rpc/rpcRegistry.ts +0 -11
- package/src/lib/server/rpc/runWithRpcTimeout.ts +0 -58
- package/src/lib/server/rpc/types/RemoteHandler.ts +0 -31
- package/src/lib/server/rpc/types/RemoteRoutes.ts +0 -13
- package/src/lib/server/rpc/types/RpcHelper.ts +0 -185
- package/src/lib/server/rpc/types/RpcRegistryEntry.ts +0 -50
- package/src/lib/server/rpc/types/TypedError.ts +0 -18
- package/src/lib/server/rpc/types/TypedResponse.ts +0 -18
- package/src/lib/server/rpc/unprocessed.ts +0 -13
- package/src/lib/server/rpc/validationError.ts +0 -17
- package/src/lib/server/runtime/DEFAULT_PORT.ts +0 -6
- package/src/lib/server/runtime/DEV_READY_MESSAGE.ts +0 -6
- package/src/lib/server/runtime/DEV_REBUILD_MESSAGE.ts +0 -4
- package/src/lib/server/runtime/DEV_RELOAD_CLIENT_SCRIPT.ts +0 -92
- package/src/lib/server/runtime/SSR_SWAP_SCRIPT.ts +0 -19
- package/src/lib/server/runtime/STATUS_TEXT.ts +0 -22
- package/src/lib/server/runtime/STREAMED_HTML_HEADER.ts +0 -13
- package/src/lib/server/runtime/acceptsGzip.ts +0 -33
- package/src/lib/server/runtime/amendBroadcaster.ts +0 -53
- package/src/lib/server/runtime/buildCacheSnapshot.ts +0 -63
- package/src/lib/server/runtime/buildHealthPayload.ts +0 -34
- package/src/lib/server/runtime/buildInFlightSnapshot.ts +0 -35
- package/src/lib/server/runtime/buildInspectorSurface.ts +0 -47
- package/src/lib/server/runtime/buildOpenApiSpec.ts +0 -150
- package/src/lib/server/runtime/buildPreloadManifest.ts +0 -153
- package/src/lib/server/runtime/cacheControlForAsset.ts +0 -22
- package/src/lib/server/runtime/cacheStalenessBroadcaster.ts +0 -33
- package/src/lib/server/runtime/containsTraversal.ts +0 -41
- package/src/lib/server/runtime/createAppAssetServer.ts +0 -100
- package/src/lib/server/runtime/createAppRouteResolver.ts +0 -145
- package/src/lib/server/runtime/createAssetHeaderCache.ts +0 -31
- package/src/lib/server/runtime/createPlumbingRouter.ts +0 -212
- package/src/lib/server/runtime/createPublicAssetServer.ts +0 -76
- package/src/lib/server/runtime/createRouteDispatcher.ts +0 -121
- package/src/lib/server/runtime/createServer.ts +0 -605
- package/src/lib/server/runtime/createUiPageRenderer.ts +0 -489
- package/src/lib/server/runtime/crossOriginForbidden.ts +0 -17
- package/src/lib/server/runtime/crossOriginGate.ts +0 -29
- package/src/lib/server/runtime/devClientFingerprint.ts +0 -103
- package/src/lib/server/runtime/devReloadResponse.ts +0 -41
- package/src/lib/server/runtime/disableIdleTimeoutForStream.ts +0 -27
- package/src/lib/server/runtime/envSchemaStore.ts +0 -15
- package/src/lib/server/runtime/finalizeResponse.ts +0 -42
- package/src/lib/server/runtime/findOpenPort.ts +0 -21
- package/src/lib/server/runtime/flushingGzipStream.ts +0 -62
- package/src/lib/server/runtime/getActiveServer.ts +0 -6
- package/src/lib/server/runtime/globToPathSet.ts +0 -29
- package/src/lib/server/runtime/gzipResponse.ts +0 -57
- package/src/lib/server/runtime/inFlightRequests.ts +0 -13
- package/src/lib/server/runtime/inProcessServer.ts +0 -20
- package/src/lib/server/runtime/installAmbientScopeStore.ts +0 -54
- package/src/lib/server/runtime/internalErrorResponse.ts +0 -28
- package/src/lib/server/runtime/isCrossOriginRequest.ts +0 -23
- package/src/lib/server/runtime/listenOnOpenPort.ts +0 -36
- package/src/lib/server/runtime/logExposedSurfaces.ts +0 -156
- package/src/lib/server/runtime/maybeMountInspector.ts +0 -104
- package/src/lib/server/runtime/mimeForExtension.ts +0 -14
- package/src/lib/server/runtime/pageRenderSlot.ts +0 -15
- package/src/lib/server/runtime/pageUrlFromStore.ts +0 -15
- package/src/lib/server/runtime/parseIdleTimeout.ts +0 -10
- package/src/lib/server/runtime/parsePort.ts +0 -11
- package/src/lib/server/runtime/pathStore.ts +0 -15
- package/src/lib/server/runtime/registryManifests.ts +0 -66
- package/src/lib/server/runtime/renderCellBarrierStore.ts +0 -15
- package/src/lib/server/runtime/requestContext.ts +0 -5
- package/src/lib/server/runtime/resolvePageSnapshot.ts +0 -25
- package/src/lib/server/runtime/respondWithEmbeddedAsset.ts +0 -18
- package/src/lib/server/runtime/runWithRequestScope.ts +0 -165
- package/src/lib/server/runtime/serializeCacheSnapshot.ts +0 -31
- package/src/lib/server/runtime/serverSlot.ts +0 -13
- package/src/lib/server/runtime/setActiveServer.ts +0 -6
- package/src/lib/server/runtime/snapshotEntryFromCache.ts +0 -121
- package/src/lib/server/runtime/streamCacheResolutions.ts +0 -44
- package/src/lib/server/runtime/streamFromIterator.ts +0 -124
- package/src/lib/server/runtime/textResponse.ts +0 -23
- package/src/lib/server/runtime/typedErrorResponse.ts +0 -26
- package/src/lib/server/runtime/types/Assets.ts +0 -6
- package/src/lib/server/runtime/types/DevReloadStamp.ts +0 -14
- package/src/lib/server/runtime/types/InspectorCacheEntry.ts +0 -24
- package/src/lib/server/runtime/types/InspectorCacheSnapshot.ts +0 -11
- package/src/lib/server/runtime/types/InspectorContext.ts +0 -34
- package/src/lib/server/runtime/types/InspectorInFlightRequest.ts +0 -20
- package/src/lib/server/runtime/types/InspectorInFlightSnapshot.ts +0 -10
- package/src/lib/server/runtime/types/InspectorPrompt.ts +0 -15
- package/src/lib/server/runtime/types/InspectorRpc.ts +0 -27
- package/src/lib/server/runtime/types/InspectorSocket.ts +0 -17
- package/src/lib/server/runtime/types/InspectorSurface.ts +0 -16
- package/src/lib/server/runtime/types/RequestStore.ts +0 -125
- package/src/lib/server/runtime/warnUnguardedMcp.ts +0 -43
- package/src/lib/server/runtime/withResponseDefaults.ts +0 -29
- package/src/lib/server/server.ts +0 -33
- package/src/lib/server/socket.ts +0 -32
- package/src/lib/server/sockets/amendFamilyEntry.ts +0 -39
- package/src/lib/server/sockets/createSocketDispatcher.ts +0 -397
- package/src/lib/server/sockets/defineSocket.ts +0 -225
- package/src/lib/server/sockets/lookupSocket.ts +0 -6
- package/src/lib/server/sockets/registerSocket.ts +0 -18
- package/src/lib/server/sockets/socketOperations.ts +0 -36
- package/src/lib/server/sockets/socketRegistry.ts +0 -9
- package/src/lib/server/sockets/types/SocketOperation.ts +0 -22
- package/src/lib/server/sockets/types/SocketOptions.ts +0 -26
- package/src/lib/server/sockets/types/SocketRegistryEntry.ts +0 -19
- package/src/lib/server/sockets/types/SocketRoutes.ts +0 -10
- package/src/lib/server/sse.ts +0 -58
- package/src/lib/shared/ABIDE_PACKAGE_NAME.ts +0 -7
- package/src/lib/shared/ABIDE_VERSION.ts +0 -9
- package/src/lib/shared/AMEND_TOPIC_PREFIX.ts +0 -9
- package/src/lib/shared/ASYNC_CELL.ts +0 -5
- package/src/lib/shared/CACHE_CONTROL_VALUES.ts +0 -16
- package/src/lib/shared/CACHE_STALENESS_SOCKET.ts +0 -8
- package/src/lib/shared/CLI_PATH.ts +0 -7
- package/src/lib/shared/DEFER.ts +0 -8
- package/src/lib/shared/DEV_REBUILD_PATH.ts +0 -6
- package/src/lib/shared/DEV_RELOAD_PATH.ts +0 -6
- package/src/lib/shared/HEALTH_PATH.ts +0 -7
- package/src/lib/shared/HTTP_METHODS.ts +0 -6
- package/src/lib/shared/HttpError.ts +0 -30
- package/src/lib/shared/IDENTITY_PATH.ts +0 -6
- package/src/lib/shared/INSPECTOR_PATH.ts +0 -7
- package/src/lib/shared/MCP_PATH.ts +0 -6
- package/src/lib/shared/NAV_HEADER.ts +0 -8
- package/src/lib/shared/OFFLINE_HEADER.ts +0 -8
- package/src/lib/shared/PROXIED_SERVER_SUBDIRS.ts +0 -15
- package/src/lib/shared/REF_JSON_HEADER.ts +0 -9
- package/src/lib/shared/REF_JSON_TAGS.ts +0 -43
- package/src/lib/shared/REMOTE_FUNCTION.ts +0 -8
- package/src/lib/shared/REPLAYABLE_METHODS.ts +0 -12
- package/src/lib/shared/RESERVED_SOCKET_PREFIX.ts +0 -8
- package/src/lib/shared/RPC_ARGS_TYPE.ts +0 -7
- package/src/lib/shared/RPC_SHIM_GLOBALS.ts +0 -9
- package/src/lib/shared/SEEDS.ts +0 -33
- package/src/lib/shared/SOCKETS_PATH.ts +0 -7
- package/src/lib/shared/SOCKET_SEED.ts +0 -12
- package/src/lib/shared/SSR_SCRIPT_ID.ts +0 -11
- package/src/lib/shared/STREAMING_CONTENT_TYPES.ts +0 -12
- package/src/lib/shared/SocketDisconnectedError.ts +0 -13
- package/src/lib/shared/TEXT_PLAIN.ts +0 -7
- package/src/lib/shared/abideImportName.ts +0 -44
- package/src/lib/shared/abideLog.ts +0 -38
- package/src/lib/shared/activeCacheStore.ts +0 -12
- package/src/lib/shared/activePage.ts +0 -12
- package/src/lib/shared/amend.ts +0 -48
- package/src/lib/shared/amendBroadcastSlot.ts +0 -19
- package/src/lib/shared/appDataDir.ts +0 -34
- package/src/lib/shared/appNameSlot.ts +0 -10
- package/src/lib/shared/applyAmendLocally.ts +0 -20
- package/src/lib/shared/applyCacheStalenessLocally.ts +0 -18
- package/src/lib/shared/assertExhaustive.ts +0 -14
- package/src/lib/shared/attachRpcSelectorMethods.ts +0 -44
- package/src/lib/shared/attachSocketSelectorMethods.ts +0 -34
- package/src/lib/shared/augmentModule.ts +0 -18
- package/src/lib/shared/basePath.ts +0 -11
- package/src/lib/shared/basePathFromAppUrl.ts +0 -20
- package/src/lib/shared/baseSlot.ts +0 -9
- package/src/lib/shared/binaryDirEnvPath.ts +0 -12
- package/src/lib/shared/bodyValueForKind.ts +0 -34
- package/src/lib/shared/browserClientFlags.ts +0 -10
- package/src/lib/shared/buildArtifact.ts +0 -20
- package/src/lib/shared/buildRpcProxy.ts +0 -39
- package/src/lib/shared/buildRpcRequest.ts +0 -81
- package/src/lib/shared/buildSocketOverChannel.ts +0 -102
- package/src/lib/shared/bundleGraphFromMetafile.ts +0 -68
- package/src/lib/shared/bundleLayout.ts +0 -36
- package/src/lib/shared/cache.ts +0 -1584
- package/src/lib/shared/cacheEntryFromSnapshot.ts +0 -77
- package/src/lib/shared/cacheManagedSlot.ts +0 -10
- package/src/lib/shared/cacheReaderSocketSlot.ts +0 -11
- package/src/lib/shared/cacheStalenessSlot.ts +0 -21
- package/src/lib/shared/cacheStoreSlot.ts +0 -12
- package/src/lib/shared/cacheStores.ts +0 -10
- package/src/lib/shared/canonicalJson.ts +0 -86
- package/src/lib/shared/carriesBodyArgs.ts +0 -13
- package/src/lib/shared/changeAffectsClient.ts +0 -40
- package/src/lib/shared/clearLastConnection.ts +0 -7
- package/src/lib/shared/commandNameForUrl.ts +0 -17
- package/src/lib/shared/contentBodyKind.ts +0 -27
- package/src/lib/shared/contentTypeOf.ts +0 -6
- package/src/lib/shared/createCacheStore.ts +0 -147
- package/src/lib/shared/createChannelLog.ts +0 -146
- package/src/lib/shared/createLifecycleChannel.ts +0 -62
- package/src/lib/shared/createLivenessWatch.ts +0 -118
- package/src/lib/shared/createPushIterator.ts +0 -132
- package/src/lib/shared/createReachable.ts +0 -78
- package/src/lib/shared/createRemoteFunction.ts +0 -210
- package/src/lib/shared/createResolverSlot.ts +0 -30
- package/src/lib/shared/createRpcServerProgram.ts +0 -1007
- package/src/lib/shared/createSocketSubRegistry.ts +0 -112
- package/src/lib/shared/createSubscriber.ts +0 -55
- package/src/lib/shared/createTraceContext.ts +0 -21
- package/src/lib/shared/dataDirEnvPath.ts +0 -12
- package/src/lib/shared/debugGate.ts +0 -90
- package/src/lib/shared/decodeRefJson.ts +0 -112
- package/src/lib/shared/decodeResponse.ts +0 -54
- package/src/lib/shared/decodeWireBody.ts +0 -35
- package/src/lib/shared/detectRpcMethod.ts +0 -24
- package/src/lib/shared/detectTarget.ts +0 -27
- package/src/lib/shared/docSnapshotsSlot.ts +0 -13
- package/src/lib/shared/done.ts +0 -20
- package/src/lib/shared/emitLogRecord.ts +0 -217
- package/src/lib/shared/encodeRefJson.ts +0 -108
- package/src/lib/shared/encodeSeedValue.ts +0 -24
- package/src/lib/shared/encodeWireBody.ts +0 -18
- package/src/lib/shared/escapeHtml.ts +0 -15
- package/src/lib/shared/escapeRegex.ts +0 -9
- package/src/lib/shared/exeSuffix.ts +0 -9
- package/src/lib/shared/exitOnBuildFailure.ts +0 -18
- package/src/lib/shared/extraForwardHeaders.ts +0 -16
- package/src/lib/shared/fieldErrorsFromIssues.ts +0 -27
- package/src/lib/shared/fileName.ts +0 -9
- package/src/lib/shared/fileStem.ts +0 -11
- package/src/lib/shared/findExportCallSite.ts +0 -233
- package/src/lib/shared/formatTraceparent.ts +0 -6
- package/src/lib/shared/forwardHeaders.ts +0 -44
- package/src/lib/shared/generateDeclarations.ts +0 -72
- package/src/lib/shared/getRemoteMeta.ts +0 -5
- package/src/lib/shared/hasSeedableRequest.ts +0 -25
- package/src/lib/shared/health.ts +0 -179
- package/src/lib/shared/healthReadSlot.ts +0 -11
- package/src/lib/shared/healthSeedSlot.ts +0 -12
- package/src/lib/shared/html.ts +0 -19
- package/src/lib/shared/httpErrorFor.ts +0 -26
- package/src/lib/shared/hydrationWindow.ts +0 -53
- package/src/lib/shared/importNamesToStrip.ts +0 -13
- package/src/lib/shared/invalidate.ts +0 -39
- package/src/lib/shared/invalidateEvent.ts +0 -11
- package/src/lib/shared/invalidateTripwire.ts +0 -40
- package/src/lib/shared/isAbideHealthPayload.ts +0 -11
- package/src/lib/shared/isAsciiWhitespace.ts +0 -5
- package/src/lib/shared/isAsyncCell.ts +0 -11
- package/src/lib/shared/isAsyncIterable.ts +0 -8
- package/src/lib/shared/isCompileTarget.ts +0 -21
- package/src/lib/shared/isDebugEnabled.ts +0 -19
- package/src/lib/shared/isDebugNegated.ts +0 -17
- package/src/lib/shared/isIdentPart.ts +0 -9
- package/src/lib/shared/isIdentStart.ts +0 -8
- package/src/lib/shared/isLayoutFile.ts +0 -12
- package/src/lib/shared/isModuleNotFound.ts +0 -18
- package/src/lib/shared/isReadOnlyMethod.ts +0 -14
- package/src/lib/shared/isReplayableMethod.ts +0 -7
- package/src/lib/shared/isStreamingResponse.ts +0 -12
- package/src/lib/shared/isSubscribable.ts +0 -15
- package/src/lib/shared/isThenable.ts +0 -9
- package/src/lib/shared/jsonSchemaForPromptArguments.ts +0 -29
- package/src/lib/shared/jsonSchemaForSchema.ts +0 -39
- package/src/lib/shared/jsonSchemaForType.ts +0 -245
- package/src/lib/shared/jsonlErrorFrame.ts +0 -24
- package/src/lib/shared/keyForRemoteCall.ts +0 -30
- package/src/lib/shared/keyMatchesPrefix.ts +0 -9
- package/src/lib/shared/keyPrefixForRemote.ts +0 -12
- package/src/lib/shared/lastConnectionPath.ts +0 -7
- package/src/lib/shared/layoutChainForRoute.ts +0 -22
- package/src/lib/shared/lenientDecode.ts +0 -15
- package/src/lib/shared/loadEnvFile.ts +0 -17
- package/src/lib/shared/loadEnvFromDataDir.ts +0 -14
- package/src/lib/shared/loadProjectTsConfig.ts +0 -28
- package/src/lib/shared/log.ts +0 -24
- package/src/lib/shared/logClosingRecord.ts +0 -28
- package/src/lib/shared/logTapSlot.ts +0 -13
- package/src/lib/shared/manifestModule.ts +0 -39
- package/src/lib/shared/markFrameworkSourcesIgnored.ts +0 -47
- package/src/lib/shared/matchRoute.ts +0 -165
- package/src/lib/shared/matcherFromEnvelope.ts +0 -31
- package/src/lib/shared/memoizeByKey.ts +0 -32
- package/src/lib/shared/messageFromError.ts +0 -6
- package/src/lib/shared/normalizePathname.ts +0 -11
- package/src/lib/shared/normalizeTarget.ts +0 -10
- package/src/lib/shared/online.ts +0 -51
- package/src/lib/shared/page.ts +0 -30
- package/src/lib/shared/pageSlot.ts +0 -17
- package/src/lib/shared/pageUrlForFile.ts +0 -14
- package/src/lib/shared/parseBoundedEnvInt.ts +0 -20
- package/src/lib/shared/parseEnv.ts +0 -41
- package/src/lib/shared/parsePromptMarkdown.ts +0 -35
- package/src/lib/shared/parseRouteSegments.ts +0 -31
- package/src/lib/shared/parseTraceparent.ts +0 -26
- package/src/lib/shared/peek.ts +0 -46
- package/src/lib/shared/pending.ts +0 -36
- package/src/lib/shared/pendingAsyncCellsSlot.ts +0 -13
- package/src/lib/shared/prepareRemoteExport.ts +0 -40
- package/src/lib/shared/prepareRpcModule.ts +0 -240
- package/src/lib/shared/prepareSocketModule.ts +0 -46
- package/src/lib/shared/probeRegistries.ts +0 -68
- package/src/lib/shared/producerKey.ts +0 -32
- package/src/lib/shared/programNameForPackage.ts +0 -16
- package/src/lib/shared/promptNameForFile.ts +0 -10
- package/src/lib/shared/queryStringFromArgs.ts +0 -38
- package/src/lib/shared/randomHexId.ts +0 -14
- package/src/lib/shared/reachable.ts +0 -99
- package/src/lib/shared/readEnvFile.ts +0 -15
- package/src/lib/shared/readLastConnection.ts +0 -18
- package/src/lib/shared/readPackageJson.ts +0 -9
- package/src/lib/shared/recordRemoteMeta.ts +0 -5
- package/src/lib/shared/refresh.ts +0 -39
- package/src/lib/shared/refreshing.ts +0 -37
- package/src/lib/shared/remoteMetaStore.ts +0 -16
- package/src/lib/shared/requestScopeSlot.ts +0 -13
- package/src/lib/shared/resolveClientFlags.ts +0 -20
- package/src/lib/shared/resolvedCellsSlot.ts +0 -13
- package/src/lib/shared/responseBodyKind.ts +0 -35
- package/src/lib/shared/responseErrorText.ts +0 -9
- package/src/lib/shared/reviveWireField.ts +0 -49
- package/src/lib/shared/reviveWireOutput.ts +0 -36
- package/src/lib/shared/routeParamsShape.ts +0 -20
- package/src/lib/shared/rpcErrorRegistry.ts +0 -69
- package/src/lib/shared/rpcServerForRoot.ts +0 -25
- package/src/lib/shared/rpcTimeoutSlot.ts +0 -9
- package/src/lib/shared/rpcUrlForFile.ts +0 -19
- package/src/lib/shared/runningAsStandaloneBinary.ts +0 -13
- package/src/lib/shared/safeJsonForScript.ts +0 -17
- package/src/lib/shared/scanPages.ts +0 -25
- package/src/lib/shared/selectorMatcher.ts +0 -55
- package/src/lib/shared/selectorPrefix.ts +0 -32
- package/src/lib/shared/serializeEnv.ts +0 -30
- package/src/lib/shared/serializeSelector.ts +0 -69
- package/src/lib/shared/setAppName.ts +0 -5
- package/src/lib/shared/setOwnProperty.ts +0 -19
- package/src/lib/shared/setsIntersect.ts +0 -15
- package/src/lib/shared/sharedCacheStore.ts +0 -14
- package/src/lib/shared/sharedCacheStoreSlot.ts +0 -10
- package/src/lib/shared/skipNonCode.ts +0 -230
- package/src/lib/shared/snapshotShippable.ts +0 -23
- package/src/lib/shared/snippet.ts +0 -30
- package/src/lib/shared/socketNameForFile.ts +0 -11
- package/src/lib/shared/socketTailsSlot.ts +0 -13
- package/src/lib/shared/socketTapSlot.ts +0 -12
- package/src/lib/shared/sseErrorFrame.ts +0 -29
- package/src/lib/shared/streamResponse.ts +0 -180
- package/src/lib/shared/streamedCellsSlot.ts +0 -14
- package/src/lib/shared/stripImport.ts +0 -29
- package/src/lib/shared/subscribableFromResponse.ts +0 -51
- package/src/lib/shared/subscribableProbes.ts +0 -111
- package/src/lib/shared/tailProbeSlot.ts +0 -23
- package/src/lib/shared/toTagSet.ts +0 -4
- package/src/lib/shared/trace.ts +0 -16
- package/src/lib/shared/types/AmendApply.ts +0 -15
- package/src/lib/shared/types/AsyncComputed.ts +0 -20
- package/src/lib/shared/types/AsyncState.ts +0 -13
- package/src/lib/shared/types/CacheEntry.ts +0 -100
- package/src/lib/shared/types/CacheInvalidation.ts +0 -9
- package/src/lib/shared/types/CacheOnContext.ts +0 -15
- package/src/lib/shared/types/CacheOptions.ts +0 -53
- package/src/lib/shared/types/CachePolicy.ts +0 -31
- package/src/lib/shared/types/CacheReaderHook.ts +0 -11
- package/src/lib/shared/types/CacheSelector.ts +0 -17
- package/src/lib/shared/types/CacheSnapshotEntry.ts +0 -32
- package/src/lib/shared/types/CacheStalenessApply.ts +0 -13
- package/src/lib/shared/types/CacheStalenessFrame.ts +0 -24
- package/src/lib/shared/types/CacheStats.ts +0 -13
- package/src/lib/shared/types/CacheStore.ts +0 -45
- package/src/lib/shared/types/ChannelLog.ts +0 -13
- package/src/lib/shared/types/ClientFlags.ts +0 -13
- package/src/lib/shared/types/CompileTarget.ts +0 -6
- package/src/lib/shared/types/DebugGate.ts +0 -10
- package/src/lib/shared/types/DocSnapshots.ts +0 -12
- package/src/lib/shared/types/ErrorJsonSchemas.ts +0 -8
- package/src/lib/shared/types/ErrorSpec.ts +0 -11
- package/src/lib/shared/types/FrameworkLog.ts +0 -13
- package/src/lib/shared/types/HttpMethod.ts +0 -3
- package/src/lib/shared/types/InputCoercion.ts +0 -17
- package/src/lib/shared/types/LastConnection.ts +0 -9
- package/src/lib/shared/types/Log.ts +0 -13
- package/src/lib/shared/types/LogRecord.ts +0 -42
- package/src/lib/shared/types/LogVoice.ts +0 -7
- package/src/lib/shared/types/NamedAsyncIterable.ts +0 -26
- package/src/lib/shared/types/OutputWirePlan.ts +0 -17
- package/src/lib/shared/types/PageSnapshot.ts +0 -14
- package/src/lib/shared/types/PagesScan.ts +0 -7
- package/src/lib/shared/types/PendingAsyncCells.ts +0 -10
- package/src/lib/shared/types/PromptArgument.ts +0 -12
- package/src/lib/shared/types/RawRemoteFunction.ts +0 -20
- package/src/lib/shared/types/RemoteCallable.ts +0 -40
- package/src/lib/shared/types/RemoteFunction.ts +0 -116
- package/src/lib/shared/types/ReplayableMethod.ts +0 -7
- package/src/lib/shared/types/RequestScopeInfo.ts +0 -16
- package/src/lib/shared/types/ResolvedCells.ts +0 -11
- package/src/lib/shared/types/ResolverSlot.ts +0 -13
- package/src/lib/shared/types/ReturnBody.ts +0 -15
- package/src/lib/shared/types/RpcBuildStamps.ts +0 -32
- package/src/lib/shared/types/RpcError.ts +0 -26
- package/src/lib/shared/types/RpcErrorGuard.ts +0 -35
- package/src/lib/shared/types/RpcInvoker.ts +0 -6
- package/src/lib/shared/types/RpcOptions.ts +0 -22
- package/src/lib/shared/types/Socket.ts +0 -54
- package/src/lib/shared/types/SocketChannel.ts +0 -17
- package/src/lib/shared/types/SocketClientFrame.ts +0 -19
- package/src/lib/shared/types/SocketServerFrame.ts +0 -24
- package/src/lib/shared/types/SocketSubCallbacks.ts +0 -13
- package/src/lib/shared/types/SocketTails.ts +0 -13
- package/src/lib/shared/types/SourceMap.ts +0 -14
- package/src/lib/shared/types/SsrBootState.ts +0 -27
- package/src/lib/shared/types/SsrPayload.ts +0 -36
- package/src/lib/shared/types/StandardSchemaV1.ts +0 -56
- package/src/lib/shared/types/StreamPolicy.ts +0 -11
- package/src/lib/shared/types/StreamedCells.ts +0 -19
- package/src/lib/shared/types/StreamedResolution.ts +0 -28
- package/src/lib/shared/types/TailHooks.ts +0 -13
- package/src/lib/shared/types/TraceContext.ts +0 -17
- package/src/lib/shared/types/ValidationErrorData.ts +0 -20
- package/src/lib/shared/types/WireKind.ts +0 -11
- package/src/lib/shared/url.ts +0 -141
- package/src/lib/shared/validationHttpError.ts +0 -33
- package/src/lib/shared/warmSeedKey.ts +0 -16
- package/src/lib/shared/wireJsonReplacer.ts +0 -30
- package/src/lib/shared/withBase.ts +0 -10
- package/src/lib/shared/withBaseUrl.ts +0 -17
- package/src/lib/shared/withCacheManaged.ts +0 -18
- package/src/lib/shared/withJsonSchema.ts +0 -21
- package/src/lib/shared/writeDts.ts +0 -19
- package/src/lib/shared/writeHealthDts.ts +0 -36
- package/src/lib/shared/writeLastConnection.ts +0 -13
- package/src/lib/shared/writePublicAssetsDts.ts +0 -27
- package/src/lib/shared/writeRoutesDts.ts +0 -41
- package/src/lib/shared/writeRpcDts.ts +0 -60
- package/src/lib/shared/writeTestRpcDts.ts +0 -45
- package/src/lib/shared/writeTestSocketsDts.ts +0 -34
- package/src/lib/test/assertAgentFrameConformance.ts +0 -73
- package/src/lib/test/createScriptedSurface.ts +0 -45
- package/src/lib/test/createTestApp.ts +0 -242
- package/src/lib/test/createTestSocketChannel.ts +0 -85
- package/src/lib/ui/README.md +0 -86
- package/src/lib/ui/activePendingCells.ts +0 -14
- package/src/lib/ui/amendReaderHook.ts +0 -125
- package/src/lib/ui/compile/ABIDE_SEMANTIC_TOKENS_LEGEND.ts +0 -79
- package/src/lib/ui/compile/AbideCompileError.ts +0 -16
- package/src/lib/ui/compile/BLOCK_KEYWORDS.ts +0 -21
- package/src/lib/ui/compile/SSR_ESCAPE.ts +0 -40
- package/src/lib/ui/compile/TS_PRINTER.ts +0 -7
- package/src/lib/ui/compile/UI_RUNTIME_IMPORTS.ts +0 -86
- package/src/lib/ui/compile/VOID_TAGS.ts +0 -22
- package/src/lib/ui/compile/abideUiPlugin.ts +0 -109
- package/src/lib/ui/compile/analyzeComponent.ts +0 -222
- package/src/lib/ui/compile/asOutlet.ts +0 -30
- package/src/lib/ui/compile/assertTranspiles.ts +0 -19
- package/src/lib/ui/compile/assetModulesFile.ts +0 -32
- package/src/lib/ui/compile/assignmentTargetNames.ts +0 -54
- package/src/lib/ui/compile/asyncInterpolationFields.ts +0 -152
- package/src/lib/ui/compile/asyncValuePositionError.ts +0 -21
- package/src/lib/ui/compile/asyncValuePositionInterpolations.ts +0 -64
- package/src/lib/ui/compile/attrLiftPosition.ts +0 -18
- package/src/lib/ui/compile/awaitPlan.ts +0 -60
- package/src/lib/ui/compile/awaitSubjectExpr.ts +0 -23
- package/src/lib/ui/compile/bindListenEvent.ts +0 -18
- package/src/lib/ui/compile/cachedShadowProgram.ts +0 -39
- package/src/lib/ui/compile/cachedSourceFile.ts +0 -40
- package/src/lib/ui/compile/catchBinding.ts +0 -10
- package/src/lib/ui/compile/classStyleMergePlan.ts +0 -108
- package/src/lib/ui/compile/classifyInterpolationType.ts +0 -46
- package/src/lib/ui/compile/collectAbideDiagnostics.ts +0 -166
- package/src/lib/ui/compile/compileComponent.ts +0 -46
- package/src/lib/ui/compile/compileModule.ts +0 -306
- package/src/lib/ui/compile/compileSSR.ts +0 -119
- package/src/lib/ui/compile/compileShadow.ts +0 -1326
- package/src/lib/ui/compile/componentOrdinals.ts +0 -39
- package/src/lib/ui/compile/composeProps.ts +0 -64
- package/src/lib/ui/compile/createShadowLanguageService.ts +0 -348
- package/src/lib/ui/compile/createShadowProgram.ts +0 -127
- package/src/lib/ui/compile/createShadowScope.ts +0 -42
- package/src/lib/ui/compile/declaredNames.ts +0 -36
- package/src/lib/ui/compile/decodeHtmlEntities.ts +0 -53
- package/src/lib/ui/compile/destructureBindingNames.ts +0 -38
- package/src/lib/ui/compile/desugarSignals.ts +0 -1113
- package/src/lib/ui/compile/eachPlan.ts +0 -61
- package/src/lib/ui/compile/elementPlan.ts +0 -55
- package/src/lib/ui/compile/encodeSemanticTokens.ts +0 -60
- package/src/lib/ui/compile/expressionIsPrefixEvaluable.ts +0 -19
- package/src/lib/ui/compile/generateBuild.ts +0 -903
- package/src/lib/ui/compile/generateSSR.ts +0 -967
- package/src/lib/ui/compile/groupBindParts.ts +0 -28
- package/src/lib/ui/compile/hasTopLevelAwait.ts +0 -28
- package/src/lib/ui/compile/hoistCells.ts +0 -120
- package/src/lib/ui/compile/hoistableAwaits.ts +0 -183
- package/src/lib/ui/compile/hoistableChildRenders.ts +0 -112
- package/src/lib/ui/compile/identifierReferencePattern.ts +0 -13
- package/src/lib/ui/compile/ifPlan.ts +0 -36
- package/src/lib/ui/compile/interpolatedTemplateLiteral.ts +0 -27
- package/src/lib/ui/compile/interpolationClassifierForRoot.ts +0 -32
- package/src/lib/ui/compile/isAnchorPositioned.ts +0 -19
- package/src/lib/ui/compile/isControlFlow.ts +0 -20
- package/src/lib/ui/compile/isFunctionScopeBoundary.ts +0 -20
- package/src/lib/ui/compile/isPlainIdentifier.ts +0 -7
- package/src/lib/ui/compile/isSpuriousAsyncReadDiagnostic.ts +0 -215
- package/src/lib/ui/compile/isTextLeaf.ts +0 -16
- package/src/lib/ui/compile/isWhitespaceText.ts +0 -19
- package/src/lib/ui/compile/liftAsyncSubExpressions.ts +0 -166
- package/src/lib/ui/compile/liftScriptSeed.ts +0 -47
- package/src/lib/ui/compile/loadShadowTsConfig.ts +0 -31
- package/src/lib/ui/compile/lowerAsyncInterpolations.ts +0 -92
- package/src/lib/ui/compile/lowerCompoundAssignment.ts +0 -49
- package/src/lib/ui/compile/lowerContext.ts +0 -167
- package/src/lib/ui/compile/lowerDocAccess.ts +0 -302
- package/src/lib/ui/compile/lowerScript.ts +0 -190
- package/src/lib/ui/compile/lowerUpdateExpression.ts +0 -32
- package/src/lib/ui/compile/makeVarNamer.ts +0 -10
- package/src/lib/ui/compile/nearestProjectRoot.ts +0 -16
- package/src/lib/ui/compile/nodeAtShadowOffset.ts +0 -28
- package/src/lib/ui/compile/offsetToLineColumn.ts +0 -16
- package/src/lib/ui/compile/offsetToPosition.ts +0 -9
- package/src/lib/ui/compile/pagePropsType.ts +0 -23
- package/src/lib/ui/compile/parseTemplate.ts +0 -25
- package/src/lib/ui/compile/parseTemplateRecovering.ts +0 -1385
- package/src/lib/ui/compile/prepareNestedScript.ts +0 -62
- package/src/lib/ui/compile/reactiveBinding.ts +0 -47
- package/src/lib/ui/compile/referencedIdentifiers.ts +0 -35
- package/src/lib/ui/compile/remapShadowDiagnostic.ts +0 -30
- package/src/lib/ui/compile/renameSignalRefs.ts +0 -425
- package/src/lib/ui/compile/resolveAbideImports.ts +0 -29
- package/src/lib/ui/compile/resolveBranches.ts +0 -21
- package/src/lib/ui/compile/resolveReactiveExport.ts +0 -92
- package/src/lib/ui/compile/scopeAttr.ts +0 -9
- package/src/lib/ui/compile/scopeCss.ts +0 -138
- package/src/lib/ui/compile/seedTypeClassifierForRoot.ts +0 -60
- package/src/lib/ui/compile/shadowInterpolationClassifier.ts +0 -47
- package/src/lib/ui/compile/shadowNaming.ts +0 -11
- package/src/lib/ui/compile/signalCallee.ts +0 -24
- package/src/lib/ui/compile/skeletonContext.ts +0 -133
- package/src/lib/ui/compile/skeletonable.ts +0 -68
- package/src/lib/ui/compile/snippetPlan.ts +0 -28
- package/src/lib/ui/compile/sourceFileOptionsSignature.ts +0 -20
- package/src/lib/ui/compile/sourceToShadowOffset.ts +0 -24
- package/src/lib/ui/compile/spreadExcludedNames.ts +0 -27
- package/src/lib/ui/compile/staticAttr.ts +0 -11
- package/src/lib/ui/compile/staticAttrValue.ts +0 -13
- package/src/lib/ui/compile/staticTextPart.ts +0 -12
- package/src/lib/ui/compile/stripEffects.ts +0 -48
- package/src/lib/ui/compile/structuralHeadTokens.ts +0 -107
- package/src/lib/ui/compile/switchPlan.ts +0 -28
- package/src/lib/ui/compile/templateAnchorAdapter.ts +0 -61
- package/src/lib/ui/compile/templateElementAdapter.ts +0 -44
- package/src/lib/ui/compile/templateSemanticTokens.ts +0 -21
- package/src/lib/ui/compile/templateStartOffset.ts +0 -15
- package/src/lib/ui/compile/tryPlan.ts +0 -37
- package/src/lib/ui/compile/types/AbideDiagnostic.ts +0 -14
- package/src/lib/ui/compile/types/AnalyzedComponent.ts +0 -42
- package/src/lib/ui/compile/types/AsyncInterpolationField.ts +0 -19
- package/src/lib/ui/compile/types/Binding.ts +0 -24
- package/src/lib/ui/compile/types/CompiledShadow.ts +0 -27
- package/src/lib/ui/compile/types/ElementPlan.ts +0 -43
- package/src/lib/ui/compile/types/InterpolationClassifier.ts +0 -12
- package/src/lib/ui/compile/types/InterpolationKind.ts +0 -7
- package/src/lib/ui/compile/types/ParseDiagnostic.ts +0 -8
- package/src/lib/ui/compile/types/SeedTypeClassifier.ts +0 -15
- package/src/lib/ui/compile/types/SemanticToken.ts +0 -11
- package/src/lib/ui/compile/types/ShadowKind.ts +0 -9
- package/src/lib/ui/compile/types/ShadowScope.ts +0 -19
- package/src/lib/ui/compile/types/SkeletonContext.ts +0 -21
- package/src/lib/ui/compile/types/TemplateAttr.ts +0 -34
- package/src/lib/ui/compile/types/TemplateNode.ts +0 -137
- package/src/lib/ui/compile/types/TextPart.ts +0 -8
- package/src/lib/ui/compile/types/ValuePositionInterpolation.ts +0 -13
- package/src/lib/ui/compile/unwrapParens.ts +0 -10
- package/src/lib/ui/compile/walkAnchorOrder.ts +0 -57
- package/src/lib/ui/compile/walkElementOrder.ts +0 -60
- package/src/lib/ui/compile/withBindings.ts +0 -45
- package/src/lib/ui/compile/wrapReactionCellSources.ts +0 -121
- package/src/lib/ui/compile/wrapReactiveSeeds.ts +0 -44
- package/src/lib/ui/compile/wrapSeed.ts +0 -28
- package/src/lib/ui/compile/writtenTemplateNames.ts +0 -84
- package/src/lib/ui/computed.ts +0 -75
- package/src/lib/ui/createScope.ts +0 -157
- package/src/lib/ui/dom/MATHML_NAMESPACE.ts +0 -6
- package/src/lib/ui/dom/SVG_NAMESPACE.ts +0 -8
- package/src/lib/ui/dom/anchorCursor.ts +0 -25
- package/src/lib/ui/dom/anchoredBranch.ts +0 -153
- package/src/lib/ui/dom/appendSnippet.ts +0 -75
- package/src/lib/ui/dom/appendStatic.ts +0 -26
- package/src/lib/ui/dom/appendText.ts +0 -160
- package/src/lib/ui/dom/appendTextAt.ts +0 -39
- package/src/lib/ui/dom/assertClaimedText.ts +0 -30
- package/src/lib/ui/dom/attach.ts +0 -25
- package/src/lib/ui/dom/attr.ts +0 -57
- package/src/lib/ui/dom/awaitBlock.ts +0 -314
- package/src/lib/ui/dom/awaitSubject.ts +0 -118
- package/src/lib/ui/dom/bindProp.ts +0 -22
- package/src/lib/ui/dom/bindSelectValue.ts +0 -48
- package/src/lib/ui/dom/bindableProp.ts +0 -47
- package/src/lib/ui/dom/buildDetachedRange.ts +0 -31
- package/src/lib/ui/dom/cellPending.ts +0 -24
- package/src/lib/ui/dom/claimText.ts +0 -38
- package/src/lib/ui/dom/clearBetween.ts +0 -16
- package/src/lib/ui/dom/cloneStatic.ts +0 -38
- package/src/lib/ui/dom/commentData.ts +0 -14
- package/src/lib/ui/dom/depthZeroNodes.ts +0 -34
- package/src/lib/ui/dom/discardAndRebuild.ts +0 -23
- package/src/lib/ui/dom/discardBoundary.ts +0 -46
- package/src/lib/ui/dom/disposeRange.ts +0 -18
- package/src/lib/ui/dom/domAnchorAdapter.ts +0 -29
- package/src/lib/ui/dom/domElementAdapter.ts +0 -20
- package/src/lib/ui/dom/each.ts +0 -253
- package/src/lib/ui/dom/eachAsync.ts +0 -188
- package/src/lib/ui/dom/effectiveChildNamespace.ts +0 -13
- package/src/lib/ui/dom/enterNamespace.ts +0 -20
- package/src/lib/ui/dom/fillBefore.ts +0 -42
- package/src/lib/ui/dom/fillBoundary.ts +0 -38
- package/src/lib/ui/dom/fillRange.ts +0 -30
- package/src/lib/ui/dom/foreignWrapperTag.ts +0 -22
- package/src/lib/ui/dom/hydrate.ts +0 -34
- package/src/lib/ui/dom/inheritedNamespace.ts +0 -19
- package/src/lib/ui/dom/isComment.ts +0 -6
- package/src/lib/ui/dom/isElement.ts +0 -6
- package/src/lib/ui/dom/markerDepthDelta.ts +0 -19
- package/src/lib/ui/dom/matchingRangeClose.ts +0 -29
- package/src/lib/ui/dom/mergeProps.ts +0 -32
- package/src/lib/ui/dom/mount.ts +0 -30
- package/src/lib/ui/dom/mountChild.ts +0 -94
- package/src/lib/ui/dom/mountRange.ts +0 -45
- package/src/lib/ui/dom/mountSlot.ts +0 -38
- package/src/lib/ui/dom/mountSwappableRange.ts +0 -122
- package/src/lib/ui/dom/moveRange.ts +0 -19
- package/src/lib/ui/dom/mutateDocContainer.ts +0 -65
- package/src/lib/ui/dom/on.ts +0 -33
- package/src/lib/ui/dom/openMarker.ts +0 -22
- package/src/lib/ui/dom/outlet.ts +0 -63
- package/src/lib/ui/dom/parseRawNodes.ts +0 -17
- package/src/lib/ui/dom/readCall.ts +0 -29
- package/src/lib/ui/dom/readCell.ts +0 -55
- package/src/lib/ui/dom/readTextOrSuspend.ts +0 -21
- package/src/lib/ui/dom/removeRange.ts +0 -18
- package/src/lib/ui/dom/replaceRange.ts +0 -24
- package/src/lib/ui/dom/restProps.ts +0 -32
- package/src/lib/ui/dom/skeleton.ts +0 -153
- package/src/lib/ui/dom/spreadAttrs.ts +0 -95
- package/src/lib/ui/dom/spreadProps.ts +0 -31
- package/src/lib/ui/dom/switchBlock.ts +0 -80
- package/src/lib/ui/dom/templateFor.ts +0 -28
- package/src/lib/ui/dom/tryBlock.ts +0 -263
- package/src/lib/ui/dom/types/EachRow.ts +0 -21
- package/src/lib/ui/dom/types/SkeletonHoles.ts +0 -10
- package/src/lib/ui/dom/types/SwitchCase.ts +0 -11
- package/src/lib/ui/dom/when.ts +0 -58
- package/src/lib/ui/dom/withScope.ts +0 -37
- package/src/lib/ui/dom/withSuspense.ts +0 -22
- package/src/lib/ui/dom/writeCell.ts +0 -22
- package/src/lib/ui/effect.ts +0 -24
- package/src/lib/ui/enterScope.ts +0 -18
- package/src/lib/ui/exitScope.ts +0 -8
- package/src/lib/ui/finalizeStreamedChildren.ts +0 -89
- package/src/lib/ui/flight.ts +0 -56
- package/src/lib/ui/html.ts +0 -39
- package/src/lib/ui/isolateCellBarrier.ts +0 -17
- package/src/lib/ui/linked.ts +0 -125
- package/src/lib/ui/navigate.ts +0 -77
- package/src/lib/ui/probeNavigation.ts +0 -33
- package/src/lib/ui/props.ts +0 -17
- package/src/lib/ui/remoteProxy.ts +0 -256
- package/src/lib/ui/renderChain.ts +0 -113
- package/src/lib/ui/renderToStream.ts +0 -128
- package/src/lib/ui/resumeSeedScript.ts +0 -27
- package/src/lib/ui/router.ts +0 -649
- package/src/lib/ui/runtime/AsyncCellError.ts +0 -21
- package/src/lib/ui/runtime/BRANCH_SEGMENT.ts +0 -24
- package/src/lib/ui/runtime/CELL_SEED.ts +0 -12
- package/src/lib/ui/runtime/CHILD_PRESENT.ts +0 -8
- package/src/lib/ui/runtime/CURRENT_BOUNDARY.ts +0 -11
- package/src/lib/ui/runtime/CURRENT_PATH.ts +0 -29
- package/src/lib/ui/runtime/CURRENT_SCOPE.ts +0 -23
- package/src/lib/ui/runtime/DOC_SEED.ts +0 -10
- package/src/lib/ui/runtime/HOLE_ATTRIBUTE.ts +0 -9
- package/src/lib/ui/runtime/NODE_STATE.ts +0 -22
- package/src/lib/ui/runtime/OUTLET_MARKER.ts +0 -10
- package/src/lib/ui/runtime/OUTLET_TAG.ts +0 -7
- package/src/lib/ui/runtime/OWNER.ts +0 -8
- package/src/lib/ui/runtime/PENDING_OUTLET.ts +0 -8
- package/src/lib/ui/runtime/RANGE_MARKER.ts +0 -16
- package/src/lib/ui/runtime/REACTIVE_CONTEXT.ts +0 -20
- package/src/lib/ui/runtime/RENDER.ts +0 -35
- package/src/lib/ui/runtime/REQUEST_SUPERSEDED.ts +0 -8
- package/src/lib/ui/runtime/RESUME.ts +0 -21
- package/src/lib/ui/runtime/SEED_MARKS.ts +0 -14
- package/src/lib/ui/runtime/STREAMED_CELLS.ts +0 -57
- package/src/lib/ui/runtime/SuspenseSignal.ts +0 -24
- package/src/lib/ui/runtime/abortNode.ts +0 -22
- package/src/lib/ui/runtime/ambientPathBacking.ts +0 -32
- package/src/lib/ui/runtime/ambientScopeBacking.ts +0 -26
- package/src/lib/ui/runtime/applyPatchToTree.ts +0 -54
- package/src/lib/ui/runtime/batch.ts +0 -22
- package/src/lib/ui/runtime/blockId.ts +0 -31
- package/src/lib/ui/runtime/boundaryFor.ts +0 -11
- package/src/lib/ui/runtime/cellBarrierBacking.ts +0 -30
- package/src/lib/ui/runtime/claimChild.ts +0 -8
- package/src/lib/ui/runtime/claimExpected.ts +0 -27
- package/src/lib/ui/runtime/claimMarker.ts +0 -13
- package/src/lib/ui/runtime/claimRun.ts +0 -22
- package/src/lib/ui/runtime/clientPage.ts +0 -116
- package/src/lib/ui/runtime/consumeSeed.ts +0 -38
- package/src/lib/ui/runtime/createAsyncCell.ts +0 -358
- package/src/lib/ui/runtime/createComputedNode.ts +0 -19
- package/src/lib/ui/runtime/createDoc.ts +0 -334
- package/src/lib/ui/runtime/createEffectNode.ts +0 -81
- package/src/lib/ui/runtime/createSignalNode.ts +0 -19
- package/src/lib/ui/runtime/currentAbortSignal.ts +0 -26
- package/src/lib/ui/runtime/detachLink.ts +0 -21
- package/src/lib/ui/runtime/endTracking.ts +0 -24
- package/src/lib/ui/runtime/enterRenderPass.ts +0 -13
- package/src/lib/ui/runtime/escapeKey.ts +0 -19
- package/src/lib/ui/runtime/exitRenderPass.ts +0 -7
- package/src/lib/ui/runtime/flushEffects.ts +0 -91
- package/src/lib/ui/runtime/generationGuard.ts +0 -40
- package/src/lib/ui/runtime/historyEntries.ts +0 -151
- package/src/lib/ui/runtime/inScope.ts +0 -19
- package/src/lib/ui/runtime/isAsyncFunction.ts +0 -14
- package/src/lib/ui/runtime/nextBlockId.ts +0 -12
- package/src/lib/ui/runtime/parkCursor.ts +0 -10
- package/src/lib/ui/runtime/pathSegments.ts +0 -10
- package/src/lib/ui/runtime/reactiveAbortState.ts +0 -15
- package/src/lib/ui/runtime/readNode.ts +0 -38
- package/src/lib/ui/runtime/renderPath.ts +0 -16
- package/src/lib/ui/runtime/reportHydrationDivergence.ts +0 -30
- package/src/lib/ui/runtime/routeBareSeed.ts +0 -28
- package/src/lib/ui/runtime/runHydrationPass.ts +0 -69
- package/src/lib/ui/runtime/runNode.ts +0 -75
- package/src/lib/ui/runtime/runtimePath.ts +0 -9
- package/src/lib/ui/runtime/scope.ts +0 -46
- package/src/lib/ui/runtime/scopeGroup.ts +0 -40
- package/src/lib/ui/runtime/toTeardown.ts +0 -38
- package/src/lib/ui/runtime/track.ts +0 -60
- package/src/lib/ui/runtime/trigger.ts +0 -74
- package/src/lib/ui/runtime/types/AbideHistoryState.ts +0 -9
- package/src/lib/ui/runtime/types/Boundary.ts +0 -9
- package/src/lib/ui/runtime/types/Cell.ts +0 -7
- package/src/lib/ui/runtime/types/Computed.ts +0 -3
- package/src/lib/ui/runtime/types/Doc.ts +0 -24
- package/src/lib/ui/runtime/types/EffectResult.ts +0 -10
- package/src/lib/ui/runtime/types/HydrationCursor.ts +0 -8
- package/src/lib/ui/runtime/types/NavVerdict.ts +0 -9
- package/src/lib/ui/runtime/types/Patch.ts +0 -11
- package/src/lib/ui/runtime/types/PathWalk.ts +0 -10
- package/src/lib/ui/runtime/types/ReactiveLink.ts +0 -21
- package/src/lib/ui/runtime/types/ReactiveNode.ts +0 -33
- package/src/lib/ui/runtime/types/RenderContext.ts +0 -10
- package/src/lib/ui/runtime/types/Route.ts +0 -9
- package/src/lib/ui/runtime/types/RouteLoader.ts +0 -7
- package/src/lib/ui/runtime/types/SsrRender.ts +0 -34
- package/src/lib/ui/runtime/types/State.ts +0 -3
- package/src/lib/ui/runtime/types/Teardown.ts +0 -5
- package/src/lib/ui/runtime/types/UiComponent.ts +0 -24
- package/src/lib/ui/runtime/types/UiProps.ts +0 -12
- package/src/lib/ui/runtime/unescapeKey.ts +0 -12
- package/src/lib/ui/runtime/unlinkDeps.ts +0 -28
- package/src/lib/ui/runtime/untrack.ts +0 -20
- package/src/lib/ui/runtime/updateIfNecessary.ts +0 -40
- package/src/lib/ui/runtime/walkPath.ts +0 -41
- package/src/lib/ui/runtime/withOptionalPath.ts +0 -8
- package/src/lib/ui/runtime/withPath.ts +0 -16
- package/src/lib/ui/runtime/withPathFrom.ts +0 -20
- package/src/lib/ui/runtime/withoutHydration.ts +0 -22
- package/src/lib/ui/runtime/writeNode.ts +0 -16
- package/src/lib/ui/scope.ts +0 -20
- package/src/lib/ui/seedBootState.ts +0 -53
- package/src/lib/ui/seedStreamedResolution.ts +0 -56
- package/src/lib/ui/settleAsyncCells.ts +0 -51
- package/src/lib/ui/socketChannel.ts +0 -156
- package/src/lib/ui/socketProxy.ts +0 -47
- package/src/lib/ui/startClient.ts +0 -156
- package/src/lib/ui/state.ts +0 -77
- package/src/lib/ui/subscribeCacheStaleness.ts +0 -85
- package/src/lib/ui/trackedComputed.ts +0 -68
- package/src/lib/ui/tryEncodeResume.ts +0 -11
- package/src/lib/ui/types/Layouts.ts +0 -9
- package/src/lib/ui/types/Pages.ts +0 -8
- package/src/lib/ui/types/Scope.ts +0 -68
- package/src/lib/ui/watch.ts +0 -150
- package/src/preload.ts +0 -19
- package/src/scaffold.ts +0 -153
- package/src/serverBuildPlugins.ts +0 -25
- package/src/serverEntry.ts +0 -138
- package/src/zodCjsPlugin.ts +0 -51
- package/template/.zed/settings.json +0 -10
- package/template/CLAUDE.md +0 -22
- package/template/bunfig.toml +0 -4
- package/template/package.json +0 -21
- package/template/src/app.ts +0 -28
- package/template/src/bundle/icon.png +0 -0
- package/template/src/cli/banner.txt +0 -3
- package/template/src/cli/footer.txt +0 -1
- package/template/src/server/config.ts +0 -17
- package/template/src/server/rpc/getHello.ts +0 -38
- package/template/src/ui/app.css +0 -21
- package/template/src/ui/app.html +0 -24
- package/template/src/ui/pages/about/page.abide +0 -7
- package/template/src/ui/pages/layout.abide +0 -19
- package/template/src/ui/pages/page.abide +0 -19
- package/template/test/app.test.ts +0 -30
- package/template/tsconfig.json +0 -18
- package/tsconfig.app.json +0 -17
|
@@ -0,0 +1,1023 @@
|
|
|
1
|
+
import type { Node, SourceFile, TypeNode } from 'typescript/unstable/ast'
|
|
2
|
+
import { SyntaxKind } from 'typescript/unstable/ast'
|
|
3
|
+
import {
|
|
4
|
+
isArrayBindingPattern,
|
|
5
|
+
isArrayLiteralExpression,
|
|
6
|
+
isArrowFunction,
|
|
7
|
+
isBinaryExpression,
|
|
8
|
+
isCallExpression,
|
|
9
|
+
isClassDeclaration,
|
|
10
|
+
isEnumDeclaration,
|
|
11
|
+
isFunctionDeclaration,
|
|
12
|
+
isFunctionExpression,
|
|
13
|
+
isIdentifier,
|
|
14
|
+
isImportDeclaration,
|
|
15
|
+
isMethodDeclaration,
|
|
16
|
+
isNamedImports,
|
|
17
|
+
isNewExpression,
|
|
18
|
+
isObjectBindingPattern,
|
|
19
|
+
isParenthesizedExpression,
|
|
20
|
+
isPropertyAccessExpression,
|
|
21
|
+
isReturnStatement,
|
|
22
|
+
isVariableDeclaration,
|
|
23
|
+
isVariableStatement,
|
|
24
|
+
} from 'typescript/unstable/ast/is'
|
|
25
|
+
import {
|
|
26
|
+
type Symbol as CheckedSymbol,
|
|
27
|
+
type Checker,
|
|
28
|
+
SymbolFlags,
|
|
29
|
+
type Type,
|
|
30
|
+
TypeFlags,
|
|
31
|
+
} from 'typescript/unstable/async'
|
|
32
|
+
import { fileKind, routeOf } from '#shared/routePattern.ts'
|
|
33
|
+
import { aliasedSymbol } from './aliasedSymbol.ts'
|
|
34
|
+
import { CheckerAnswer } from './CheckerAnswer.ts'
|
|
35
|
+
import {
|
|
36
|
+
classifyPropRead,
|
|
37
|
+
classifyRead,
|
|
38
|
+
expressionFacts,
|
|
39
|
+
newRead,
|
|
40
|
+
provePosition,
|
|
41
|
+
type Read,
|
|
42
|
+
TRANSPARENT,
|
|
43
|
+
} from './classifyRead.ts'
|
|
44
|
+
import type { Finding } from './Finding.ts'
|
|
45
|
+
import {
|
|
46
|
+
holdsReactive,
|
|
47
|
+
type Position,
|
|
48
|
+
type PositionKind,
|
|
49
|
+
type PositionTable,
|
|
50
|
+
} from './PositionTable.ts'
|
|
51
|
+
import type { AbideFile } from './parseAbide.ts'
|
|
52
|
+
import { INLINE_PROPS, type Span } from './projectShadow.ts'
|
|
53
|
+
import { REACTIVE_MEMBERS } from './REACTIVE_MEMBERS.ts'
|
|
54
|
+
import { optionNamed, reactiveOptions } from './reactiveOptions.ts'
|
|
55
|
+
import {
|
|
56
|
+
type Abide,
|
|
57
|
+
boundInitializer,
|
|
58
|
+
isReactiveType,
|
|
59
|
+
unionMembers,
|
|
60
|
+
valueTypeOf,
|
|
61
|
+
} from './reactiveTypes.ts'
|
|
62
|
+
import { sharedModuleWrites } from './sharedModuleWrites.ts'
|
|
63
|
+
import { trackingWarnings } from './trackingWarnings.ts'
|
|
64
|
+
|
|
65
|
+
/** Where in a `.abide`'s shadow each kind of question is asked (`projectShadow`). */
|
|
66
|
+
export type ShadowSpans = {
|
|
67
|
+
/** Where the shadow's scripts end and its template begins. */
|
|
68
|
+
scriptsEnd: number
|
|
69
|
+
/** The `<script module>` bodies, and the `<script>` bodies, in the shadow. */
|
|
70
|
+
modules: Span
|
|
71
|
+
scripts: Span
|
|
72
|
+
positions: PositionTable
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const SETUP: ReadonlySet<PositionKind> = new Set(['setup'])
|
|
76
|
+
const HEAD: ReadonlySet<PositionKind> = new Set(['head'])
|
|
77
|
+
/**
|
|
78
|
+
* 14.2 — the positions whose value the template converts to a string or tests, which a proof can
|
|
79
|
+
* write once (`proveSlots`). A key, a prop, a tag and a listener are never asked `isLive`.
|
|
80
|
+
*/
|
|
81
|
+
const PROVABLE: ReadonlySet<PositionKind> = new Set([
|
|
82
|
+
'slot',
|
|
83
|
+
'attribute',
|
|
84
|
+
'condition',
|
|
85
|
+
'subject',
|
|
86
|
+
])
|
|
87
|
+
/**
|
|
88
|
+
* 32.57 — every position a template EXPRESSION stands in, whose `await` is refused
|
|
89
|
+
* (`expressionFacts`). A setup and a head are `<script>` statements, which 34.3 governs, and a tag
|
|
90
|
+
* names a component rather than computing a value.
|
|
91
|
+
*/
|
|
92
|
+
const TEMPLATE_EXPRESSIONS: ReadonlySet<PositionKind> = new Set([
|
|
93
|
+
...PROVABLE,
|
|
94
|
+
'key',
|
|
95
|
+
'listener',
|
|
96
|
+
'prop',
|
|
97
|
+
'elementBind',
|
|
98
|
+
'componentBind',
|
|
99
|
+
'untyped',
|
|
100
|
+
])
|
|
101
|
+
/**
|
|
102
|
+
* 32.25 — the positions whose value reaches markup, where a bare `raw(…)` is the framework's. In a
|
|
103
|
+
* listener, a `bind:` operand or a key the value never renders, and `raw` is what the file binds.
|
|
104
|
+
*/
|
|
105
|
+
const RAW_LOWERED: ReadonlySet<PositionKind> = new Set([...PROVABLE, 'prop'])
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The classified reactive reads in one `.abide`'s shadow, and the warnings they earn.
|
|
109
|
+
*
|
|
110
|
+
* 31.3 — THE CHECKER'S OWN TREE ANSWERS BOTH QUESTIONS. Which names the file binds is its top-level
|
|
111
|
+
* `const`/`let`/`var` statements and its imports — an inner block's name is not the page's — and
|
|
112
|
+
* which occurrences reach one is the references to that symbol. A parameter, a row's item, a
|
|
113
|
+
* key, a member, a label and a class field of the same spelling are other symbols, and are
|
|
114
|
+
* absent. What each reference DOES — a read, a write, an update, a shorthand — is read off its
|
|
115
|
+
* parents by `classifyRead`, so no token walk re-derives the grammar.
|
|
116
|
+
*
|
|
117
|
+
* Asked of one snapshot (`TypeSession.readsFor`), and every offset — a read's and a warning's — is
|
|
118
|
+
* the shadow's; the session places them in the `.abide`.
|
|
119
|
+
*/
|
|
120
|
+
export async function readsIn(
|
|
121
|
+
checker: Checker,
|
|
122
|
+
abide: Abide,
|
|
123
|
+
sourceFile: SourceFile,
|
|
124
|
+
shadowPath: string,
|
|
125
|
+
spans: ShadowSpans,
|
|
126
|
+
abidePath: string,
|
|
127
|
+
file: AbideFile,
|
|
128
|
+
): Promise<{ answer: CheckerAnswer; warnings: Finding[] }> {
|
|
129
|
+
// A destructuring pattern binds names this does not see, and that is 31.12's case.
|
|
130
|
+
const names: Node[] = []
|
|
131
|
+
const spelled = new Set<string>()
|
|
132
|
+
const bind = (name: Node): void => {
|
|
133
|
+
if (!isIdentifier(name) || spelled.has(name.text)) return
|
|
134
|
+
spelled.add(name.text)
|
|
135
|
+
names.push(name)
|
|
136
|
+
}
|
|
137
|
+
for (const statement of sourceFile.statements) {
|
|
138
|
+
if (statement.getStart() >= spans.scriptsEnd) break
|
|
139
|
+
if (isVariableStatement(statement)) {
|
|
140
|
+
for (const declaration of statement.declarationList.declarations)
|
|
141
|
+
bind(declaration.name)
|
|
142
|
+
continue
|
|
143
|
+
}
|
|
144
|
+
// 31.1 — AN IMPORT BINDS A NAME AS A DECLARATION DOES, and the clause does not
|
|
145
|
+
// tell the two apart: `onboarding` from `#shared/conversations` is read and
|
|
146
|
+
// written by name like the page's own. A NAMESPACE is not one of them — the
|
|
147
|
+
// name is bound to the module, and `ns.value` is a member of it.
|
|
148
|
+
if (!isImportDeclaration(statement)) continue
|
|
149
|
+
const clause = statement.importClause
|
|
150
|
+
if (
|
|
151
|
+
clause === undefined ||
|
|
152
|
+
clause.phaseModifier === SyntaxKind.TypeKeyword
|
|
153
|
+
)
|
|
154
|
+
continue
|
|
155
|
+
if (clause.name !== undefined) bind(clause.name)
|
|
156
|
+
const named = clause.namedBindings
|
|
157
|
+
if (named !== undefined && isNamedImports(named))
|
|
158
|
+
for (const element of named.elements)
|
|
159
|
+
if (!element.isTypeOnly) bind(element.name)
|
|
160
|
+
}
|
|
161
|
+
// 31.1 REACHES A BRANCH-LOCAL `<script>` (14.8), which stands inside the arm's braces
|
|
162
|
+
// or the row's loop rather than at the top — and a name there is spelled apart from
|
|
163
|
+
// the page's, since two arms may each declare their own `inner`.
|
|
164
|
+
const topLevel = names.length
|
|
165
|
+
// The script's own statements, as the top-level walk takes the page's: a declaration inside
|
|
166
|
+
// one of its functions is not a name the body reads.
|
|
167
|
+
for (const { node } of spans.positions.nodesIn(sourceFile, SETUP))
|
|
168
|
+
if (isVariableStatement(node))
|
|
169
|
+
for (const declaration of node.declarationList.declarations)
|
|
170
|
+
if (isIdentifier(declaration.name)) names.push(declaration.name)
|
|
171
|
+
refuseDeclared(sourceFile.statements, spans.scriptsEnd, file)
|
|
172
|
+
const reads: Read[] = []
|
|
173
|
+
// 33's pass runs whatever 31.3's found: a `props` pattern binds no name the walk
|
|
174
|
+
// above collects — `const { amount } = props()` declares a PATTERN — so a file
|
|
175
|
+
// whose only declaration is one would have returned with its props unread.
|
|
176
|
+
const props = propsReads(
|
|
177
|
+
checker,
|
|
178
|
+
abide,
|
|
179
|
+
sourceFile,
|
|
180
|
+
shadowPath,
|
|
181
|
+
spans.scriptsEnd,
|
|
182
|
+
spans.positions,
|
|
183
|
+
reads,
|
|
184
|
+
)
|
|
185
|
+
// Awaited after the round trips below, so a 33.14 refusal would reject with nothing
|
|
186
|
+
// listening and be reported unhandled; `await props` still throws it.
|
|
187
|
+
props.catch(() => {})
|
|
188
|
+
const params = routeReads(checker, abide, sourceFile, abidePath, reads)
|
|
189
|
+
// No name is no round trip to ask about none.
|
|
190
|
+
const symbols =
|
|
191
|
+
names.length === 0 ? [] : await checker.getSymbolAtLocation(names)
|
|
192
|
+
const reactive = await Promise.all(
|
|
193
|
+
symbols.map(async (symbol) =>
|
|
194
|
+
symbol !== undefined &&
|
|
195
|
+
(await isReactiveSymbol(checker, abide, symbol))
|
|
196
|
+
? symbol
|
|
197
|
+
: undefined,
|
|
198
|
+
),
|
|
199
|
+
)
|
|
200
|
+
await dropValueHolders(checker, names, reactive)
|
|
201
|
+
// 32.32 — A VALUE WHOSE `reactive(…)` DECLARES `by` keys a `{#for}` over it,
|
|
202
|
+
// wherever the value is declared.
|
|
203
|
+
const byValue = await Promise.all(
|
|
204
|
+
reactive.map(async (symbol) => {
|
|
205
|
+
if (symbol === undefined) return false
|
|
206
|
+
const options = reactiveOptions(
|
|
207
|
+
await boundInitializer(checker, symbol),
|
|
208
|
+
)
|
|
209
|
+
return (
|
|
210
|
+
options !== undefined &&
|
|
211
|
+
optionNamed(options, 'by') !== undefined
|
|
212
|
+
)
|
|
213
|
+
}),
|
|
214
|
+
)
|
|
215
|
+
const nodes = await Promise.all(
|
|
216
|
+
reactive.map(async (symbol) => {
|
|
217
|
+
if (symbol === undefined) return []
|
|
218
|
+
const references = await checker.getReferencesToSymbolInFile(
|
|
219
|
+
shadowPath,
|
|
220
|
+
symbol,
|
|
221
|
+
)
|
|
222
|
+
return Promise.all(
|
|
223
|
+
references.map((reference) => reference.resolve()),
|
|
224
|
+
)
|
|
225
|
+
}),
|
|
226
|
+
)
|
|
227
|
+
const holding: Promise<void>[] = []
|
|
228
|
+
const located: { node: Node; read: Read }[] = []
|
|
229
|
+
for (let index = 0; index < nodes.length; index += 1)
|
|
230
|
+
for (const node of nodes[index] as (Node | undefined)[]) {
|
|
231
|
+
if (node === undefined) continue
|
|
232
|
+
const read = classifyRead(node)
|
|
233
|
+
if (read === undefined) continue
|
|
234
|
+
read.byValue = byValue[index] as boolean
|
|
235
|
+
read.local = index >= topLevel
|
|
236
|
+
reads.push(read)
|
|
237
|
+
located.push({ node, read })
|
|
238
|
+
if (read.shape === 'value')
|
|
239
|
+
holding.push(
|
|
240
|
+
declaredType(checker, node).then(async (type) => {
|
|
241
|
+
if (
|
|
242
|
+
type !== undefined &&
|
|
243
|
+
(await isReactiveType(checker, abide, type, true))
|
|
244
|
+
)
|
|
245
|
+
read.shape = 'asWritten'
|
|
246
|
+
}),
|
|
247
|
+
)
|
|
248
|
+
}
|
|
249
|
+
await Promise.all(holding)
|
|
250
|
+
await props
|
|
251
|
+
await params
|
|
252
|
+
const statics = new Set<number>()
|
|
253
|
+
const expressions = spans.positions.nodesIn(
|
|
254
|
+
sourceFile,
|
|
255
|
+
TEMPLATE_EXPRESSIONS,
|
|
256
|
+
)
|
|
257
|
+
const rawCallees: Node[] = []
|
|
258
|
+
for (const { position, node } of expressions)
|
|
259
|
+
expressionFacts(
|
|
260
|
+
node,
|
|
261
|
+
RAW_LOWERED.has(position.kind) ? rawCallees : undefined,
|
|
262
|
+
)
|
|
263
|
+
// A `Reactive` the page named `raw` is a read, and the read's rewrite is the answer.
|
|
264
|
+
if (rawCallees.length > 0) {
|
|
265
|
+
const named = new Set<number>()
|
|
266
|
+
for (const one of reads) named.add(one.start)
|
|
267
|
+
for (const callee of rawCallees)
|
|
268
|
+
if (!named.has(callee.getStart()))
|
|
269
|
+
reads.push(newRead(callee.getStart(), callee.end, 'raw'))
|
|
270
|
+
}
|
|
271
|
+
await proveSlots(checker, expressions, reads, statics)
|
|
272
|
+
reads.sort(byPosition)
|
|
273
|
+
const warnings = await warningsFor(checker, located, spans.positions)
|
|
274
|
+
// 34.19.
|
|
275
|
+
for (const warning of await sharedModuleWrites(
|
|
276
|
+
checker,
|
|
277
|
+
shadowPath,
|
|
278
|
+
names.slice(0, topLevel),
|
|
279
|
+
symbols,
|
|
280
|
+
reactive,
|
|
281
|
+
spans.modules,
|
|
282
|
+
spans.scripts,
|
|
283
|
+
))
|
|
284
|
+
warnings.push(warning)
|
|
285
|
+
return { answer: new CheckerAnswer(reads, statics), warnings }
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* The tracking and type warnings a file's reactive reads earn.
|
|
290
|
+
*
|
|
291
|
+
* The syntax alone decides 14.14 to 14.16 (`trackingWarnings`);
|
|
292
|
+
* 14.17 and 31.13 ask what a read hands back, which is the return of the `Reactive`'s call.
|
|
293
|
+
*/
|
|
294
|
+
async function warningsFor(
|
|
295
|
+
checker: Checker,
|
|
296
|
+
located: { node: Node; read: Read }[],
|
|
297
|
+
positions: PositionTable,
|
|
298
|
+
): Promise<Finding[]> {
|
|
299
|
+
const starts: { start: number; name: string }[] = []
|
|
300
|
+
for (const { node, read } of located)
|
|
301
|
+
if (READING.has(read.shape))
|
|
302
|
+
starts.push({
|
|
303
|
+
start: read.start,
|
|
304
|
+
name: (node as { text?: string }).text ?? '',
|
|
305
|
+
})
|
|
306
|
+
const warnings: Finding[] = []
|
|
307
|
+
const typed: Promise<void>[] = []
|
|
308
|
+
for (const { node, read } of located) {
|
|
309
|
+
const name = (node as { text?: string }).text ?? ''
|
|
310
|
+
if (READING.has(read.shape))
|
|
311
|
+
for (const warning of trackingWarnings(
|
|
312
|
+
node,
|
|
313
|
+
name,
|
|
314
|
+
positions,
|
|
315
|
+
starts,
|
|
316
|
+
))
|
|
317
|
+
warnings.push(warning)
|
|
318
|
+
const parent = node.parent
|
|
319
|
+
const nullish =
|
|
320
|
+
read.shape === 'value' &&
|
|
321
|
+
isBinaryExpression(parent) &&
|
|
322
|
+
parent.left === node &&
|
|
323
|
+
parent.operatorToken.kind === SyntaxKind.QuestionQuestionToken
|
|
324
|
+
const member =
|
|
325
|
+
isPropertyAccessExpression(parent) &&
|
|
326
|
+
parent.expression === node &&
|
|
327
|
+
isIdentifier(parent.name) &&
|
|
328
|
+
REACTIVE_MEMBERS.has(parent.name.text)
|
|
329
|
+
? parent.name.text
|
|
330
|
+
: undefined
|
|
331
|
+
if (!nullish && member === undefined) continue
|
|
332
|
+
typed.push(
|
|
333
|
+
valueTypeOf(checker, node).then(async (value) => {
|
|
334
|
+
if (value === undefined) return
|
|
335
|
+
// 14.17 — the fallback of a read that is never nullish is never taken: an unlanded
|
|
336
|
+
// read is a hole the position fills, not an `undefined` (2.2).
|
|
337
|
+
if (nullish && !(await admitsNullish(value)))
|
|
338
|
+
warnings.push({
|
|
339
|
+
at: read.start,
|
|
340
|
+
message: `abide: \`${name} ?? …\` never takes its fallback — a read of \`${name}\` is not undefined while it loads, and its type says it is not undefined after. Ask \`${name}.ready()\` to tell the two apart. RULEBOOK 14.17.`,
|
|
341
|
+
})
|
|
342
|
+
if (member === undefined) return
|
|
343
|
+
// Per member, because a union's properties are only those every member shares, and
|
|
344
|
+
// `undefined` shares none — so `HTMLVideoElement | undefined` would declare no `error`.
|
|
345
|
+
for (const held of await unionMembers(value)) {
|
|
346
|
+
if ((held.flags & NULLISH) !== 0) continue
|
|
347
|
+
for (const property of await checker.getPropertiesOfType(
|
|
348
|
+
held,
|
|
349
|
+
))
|
|
350
|
+
if (property.name === member) {
|
|
351
|
+
const dot = (
|
|
352
|
+
parent as { questionDotToken?: unknown }
|
|
353
|
+
).questionDotToken
|
|
354
|
+
? '?.'
|
|
355
|
+
: '.'
|
|
356
|
+
warnings.push({
|
|
357
|
+
at: read.start,
|
|
358
|
+
message: `abide: \`${name}${dot}${member}\` reaches the Reactive's own \`${member}\`, and the value it holds has one too. Write \`${name}()${dot}${member}\` for the value's. RULEBOOK 31.13.`,
|
|
359
|
+
})
|
|
360
|
+
return
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}),
|
|
364
|
+
)
|
|
365
|
+
}
|
|
366
|
+
await Promise.all(typed)
|
|
367
|
+
warnings.sort((one, two) => one.at - two.at)
|
|
368
|
+
return warnings
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/** The shapes that are a read of the value, which is what tracking is about. */
|
|
372
|
+
const READING: ReadonlySet<Read['shape']> = new Set([
|
|
373
|
+
'value',
|
|
374
|
+
'call',
|
|
375
|
+
'shorthand',
|
|
376
|
+
])
|
|
377
|
+
|
|
378
|
+
const NULLISH =
|
|
379
|
+
TypeFlags.Null |
|
|
380
|
+
TypeFlags.Undefined |
|
|
381
|
+
TypeFlags.Void |
|
|
382
|
+
TypeFlags.Any |
|
|
383
|
+
TypeFlags.Unknown
|
|
384
|
+
|
|
385
|
+
async function admitsNullish(type: Type): Promise<boolean> {
|
|
386
|
+
for (const member of await unionMembers(type))
|
|
387
|
+
if ((member.flags & NULLISH) !== 0) return true
|
|
388
|
+
return false
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* The declared type of the position a read stands in: a parameter, an annotated binding or return.
|
|
393
|
+
*
|
|
394
|
+
* 31.3 — the three the clause names: a call's parameter, an annotated binding, an annotated
|
|
395
|
+
* return. An array literal
|
|
396
|
+
* passes its position through, because `watch([a, b], …)` is the parameter's own shape. Anything
|
|
397
|
+
* else is `undefined` and stays a read.
|
|
398
|
+
*
|
|
399
|
+
* THE PARAMETER IS ASKED OF THE SIGNATURE'S TARGET, the generic declaration, and never of the
|
|
400
|
+
* instantiated one: `structuredClone<T>(value: T)` INFERS `T` from this very argument, and an
|
|
401
|
+
* instantiated signature would call the argument a `Reactive` because it already is one in the
|
|
402
|
+
* shadow.
|
|
403
|
+
*/
|
|
404
|
+
async function declaredType(
|
|
405
|
+
checker: Checker,
|
|
406
|
+
node: Node,
|
|
407
|
+
): Promise<Type | undefined> {
|
|
408
|
+
let top = node
|
|
409
|
+
while (
|
|
410
|
+
isArrayLiteralExpression(top.parent) ||
|
|
411
|
+
isParenthesizedExpression(top.parent)
|
|
412
|
+
)
|
|
413
|
+
top = top.parent
|
|
414
|
+
const parent = top.parent
|
|
415
|
+
if (
|
|
416
|
+
(isCallExpression(parent) || isNewExpression(parent)) &&
|
|
417
|
+
parent.expression !== top
|
|
418
|
+
) {
|
|
419
|
+
const index = parent.arguments?.indexOf(top as never) ?? -1
|
|
420
|
+
if (index < 0) return undefined
|
|
421
|
+
const resolved = await checker.getResolvedSignature(parent)
|
|
422
|
+
if (resolved === undefined) return undefined
|
|
423
|
+
const signature = (await resolved.getTarget()) ?? resolved
|
|
424
|
+
const parameters = await signature.getParameters()
|
|
425
|
+
// A REST PARAMETER IS NOT ASKED: its type is the array it collects into, and the position
|
|
426
|
+
// is one element of it. Nothing declares a `...Reactive[]` yet, so it stays a read.
|
|
427
|
+
if (index >= parameters.length - 1 && signature.hasRestParameter)
|
|
428
|
+
return undefined
|
|
429
|
+
const parameter = parameters[index]
|
|
430
|
+
return parameter === undefined
|
|
431
|
+
? undefined
|
|
432
|
+
: checker.getTypeOfSymbol(parameter)
|
|
433
|
+
}
|
|
434
|
+
if (isVariableDeclaration(parent) && parent.initializer === top)
|
|
435
|
+
return annotated(checker, parent.type)
|
|
436
|
+
if (isReturnStatement(parent)) {
|
|
437
|
+
let holder: Node = parent.parent
|
|
438
|
+
while (
|
|
439
|
+
holder !== undefined &&
|
|
440
|
+
!isFunctionDeclaration(holder) &&
|
|
441
|
+
!isFunctionExpression(holder) &&
|
|
442
|
+
!isArrowFunction(holder) &&
|
|
443
|
+
!isMethodDeclaration(holder)
|
|
444
|
+
)
|
|
445
|
+
holder = holder.parent
|
|
446
|
+
return holder === undefined
|
|
447
|
+
? undefined
|
|
448
|
+
: annotated(checker, (holder as { type?: TypeNode }).type)
|
|
449
|
+
}
|
|
450
|
+
if (isArrowFunction(parent) && parent.body === top)
|
|
451
|
+
return annotated(checker, parent.type)
|
|
452
|
+
return undefined
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
function annotated(
|
|
456
|
+
checker: Checker,
|
|
457
|
+
type: TypeNode | undefined,
|
|
458
|
+
): Promise<Type | undefined> {
|
|
459
|
+
return type === undefined
|
|
460
|
+
? Promise.resolve(undefined)
|
|
461
|
+
: checker.getTypeFromTypeNode(type)
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Marks each template position the checker proves reads nothing reactive with a `static` read.
|
|
466
|
+
*
|
|
467
|
+
* 14.2 — the read is zero-width, at the position's start. Everything else is bound, which is the
|
|
468
|
+
* inversion: the old
|
|
469
|
+
* question — does it NAME a `Reactive` — let `{big()}` over a function reading `n` be written once.
|
|
470
|
+
*
|
|
471
|
+
* A PROOF IS THREE THINGS: no reactive read inside the span, a syntax that runs no author code
|
|
472
|
+
* but through the answers it hands back (`provePosition`), and those answers. Every member it reads
|
|
473
|
+
* resolves to a plain property — a getter is code, and a member of `any` resolves to nothing — and
|
|
474
|
+
* every value a coercion or the position itself turns into a string is a primitive, whose
|
|
475
|
+
* conversion runs nothing either.
|
|
476
|
+
*
|
|
477
|
+
* ASKED IN TWO BATCHES A FILE, the checker's round trip being what costs. Only the `PROVABLE` kinds
|
|
478
|
+
* of `expressions` are asked about.
|
|
479
|
+
*/
|
|
480
|
+
async function proveSlots(
|
|
481
|
+
checker: Checker,
|
|
482
|
+
expressions: readonly { position: Position; node: Node }[],
|
|
483
|
+
reads: Read[],
|
|
484
|
+
/** Where each position it proves static starts, added to. */
|
|
485
|
+
statics: Set<number>,
|
|
486
|
+
): Promise<void> {
|
|
487
|
+
// Reads are unsorted here; a position holding one is not asked about. A `raw` callee is the
|
|
488
|
+
// framework's name rather than a read of the page's, and `provePosition` exempts its call.
|
|
489
|
+
const read = (span: Span): boolean => {
|
|
490
|
+
for (const one of reads)
|
|
491
|
+
if (
|
|
492
|
+
one.shape !== 'raw' &&
|
|
493
|
+
one.start >= span.start &&
|
|
494
|
+
one.start < span.end
|
|
495
|
+
)
|
|
496
|
+
return true
|
|
497
|
+
return false
|
|
498
|
+
}
|
|
499
|
+
const candidates: {
|
|
500
|
+
span: Span
|
|
501
|
+
primitives: Node[]
|
|
502
|
+
members: Node[]
|
|
503
|
+
}[] = []
|
|
504
|
+
const primitives: Node[] = []
|
|
505
|
+
const members: Node[] = []
|
|
506
|
+
for (const { position: span, node } of expressions) {
|
|
507
|
+
if (!PROVABLE.has(span.kind) || read(span)) continue
|
|
508
|
+
const own = { span, primitives: [] as Node[], members: [] as Node[] }
|
|
509
|
+
if (!provePosition(node, own.primitives, own.members)) continue
|
|
510
|
+
candidates.push(own)
|
|
511
|
+
for (const one of own.primitives) primitives.push(one)
|
|
512
|
+
for (const one of own.members) members.push(one)
|
|
513
|
+
}
|
|
514
|
+
if (candidates.length === 0) return
|
|
515
|
+
const [types, symbols] = await Promise.all([
|
|
516
|
+
primitives.length === 0
|
|
517
|
+
? Promise.resolve([])
|
|
518
|
+
: checker.getTypeAtLocation(primitives),
|
|
519
|
+
members.length === 0
|
|
520
|
+
? Promise.resolve([])
|
|
521
|
+
: checker.getSymbolAtLocation(members),
|
|
522
|
+
])
|
|
523
|
+
const primitive = await Promise.all(
|
|
524
|
+
types.map((type) => type !== undefined && isPrimitiveTyped(type)),
|
|
525
|
+
)
|
|
526
|
+
let atPrimitive = 0
|
|
527
|
+
let atMember = 0
|
|
528
|
+
for (const candidate of candidates) {
|
|
529
|
+
let proven = true
|
|
530
|
+
for (let at = 0; at < candidate.primitives.length; at += 1)
|
|
531
|
+
proven &&= primitive[atPrimitive + at] === true
|
|
532
|
+
for (let at = 0; at < candidate.members.length; at += 1)
|
|
533
|
+
proven &&= isPlainProperty(symbols[atMember + at])
|
|
534
|
+
atPrimitive += candidate.primitives.length
|
|
535
|
+
atMember += candidate.members.length
|
|
536
|
+
if (proven) statics.add(candidate.span.start)
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Every member of the type is a primitive, whose string conversion and comparison run no code.
|
|
542
|
+
* `any` and `unknown` are not: what they hold at runtime is anything.
|
|
543
|
+
*/
|
|
544
|
+
async function isPrimitiveTyped(type: Type): Promise<boolean> {
|
|
545
|
+
const members = await unionMembers(type)
|
|
546
|
+
for (const member of members)
|
|
547
|
+
if ((member.flags & (TypeFlags.Primitive | TypeFlags.Never)) === 0)
|
|
548
|
+
return false
|
|
549
|
+
return true
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/**
|
|
553
|
+
* A member read that runs no code: every declaration of it is a data property, an enum member or a
|
|
554
|
+
* module's own binding. A getter is code, and a member the checker cannot resolve — every member
|
|
555
|
+
* of `any` — is nothing it can vouch for.
|
|
556
|
+
*/
|
|
557
|
+
function isPlainProperty(symbol: CheckedSymbol | undefined): boolean {
|
|
558
|
+
if (symbol === undefined) return false
|
|
559
|
+
if ((symbol.flags & SymbolFlags.Accessor) !== 0) return false
|
|
560
|
+
if (symbol.declarations.length === 0) return false
|
|
561
|
+
for (const declaration of symbol.declarations)
|
|
562
|
+
if (!PLAIN_DECLARATIONS.has(declaration.kind)) return false
|
|
563
|
+
return true
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
const PLAIN_DECLARATIONS: ReadonlySet<SyntaxKind> = new Set([
|
|
567
|
+
SyntaxKind.PropertySignature,
|
|
568
|
+
SyntaxKind.PropertyDeclaration,
|
|
569
|
+
SyntaxKind.PropertyAssignment,
|
|
570
|
+
SyntaxKind.ShorthandPropertyAssignment,
|
|
571
|
+
SyntaxKind.EnumMember,
|
|
572
|
+
SyntaxKind.VariableDeclaration,
|
|
573
|
+
])
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* Drops names that bind a reactive read's value, rather than the `Reactive`, from `reactive`.
|
|
577
|
+
*
|
|
578
|
+
* 31.3 — A BINDING OF A READ HOLDS THE VALUE, and the checker cannot see that. It types the SHADOW,
|
|
579
|
+
* where `let shown = total` is the `Reactive` itself; the lowering reads `total` there, because an
|
|
580
|
+
* un-annotated binding is not a position 31.3 holds in, so `shown` is handed the VALUE. Asked of
|
|
581
|
+
* the shadow alone, `shown` was then classified a `Reactive` too and every use of it lowered to
|
|
582
|
+
* `shown()` — a call on a number. Declared or imported, the name it binds from is the same case.
|
|
583
|
+
*
|
|
584
|
+
* SO THE ANSWER IS CORRECTED WHERE THE TWO PART COMPANY: an un-annotated binding whose initializer
|
|
585
|
+
* hands on a reactive name as its value — through parentheses, a type-only wrapper, a conditional's
|
|
586
|
+
* arms or a logical operand, the positions a read is the value in — is not a `Reactive`. A chain
|
|
587
|
+
* falls out: `let c = b` names `b`, which the shadow typed as one, so `c` holds the value too. An
|
|
588
|
+
* annotated binding is 31.3's own hold and is left alone, and so is a call: `turns(...)` is a
|
|
589
|
+
* `Reactive` in the lowered program exactly as it is in the shadow.
|
|
590
|
+
*/
|
|
591
|
+
async function dropValueHolders(
|
|
592
|
+
checker: Checker,
|
|
593
|
+
names: readonly Node[],
|
|
594
|
+
reactive: (CheckedSymbol | undefined)[],
|
|
595
|
+
): Promise<void> {
|
|
596
|
+
const reactiveIds = new Set<number>()
|
|
597
|
+
for (const symbol of reactive)
|
|
598
|
+
if (symbol !== undefined) reactiveIds.add(symbol.id)
|
|
599
|
+
const owners: number[] = []
|
|
600
|
+
const leaves: Node[] = []
|
|
601
|
+
for (let at = 0; at < names.length; at += 1) {
|
|
602
|
+
const declaration = (names[at] as Node).parent
|
|
603
|
+
if (
|
|
604
|
+
reactive[at] === undefined ||
|
|
605
|
+
!isVariableDeclaration(declaration) ||
|
|
606
|
+
declaration.type !== undefined ||
|
|
607
|
+
declaration.initializer === undefined
|
|
608
|
+
)
|
|
609
|
+
continue
|
|
610
|
+
const before = leaves.length
|
|
611
|
+
valueLeaves(declaration.initializer, leaves)
|
|
612
|
+
for (let leaf = before; leaf < leaves.length; leaf += 1) owners.push(at)
|
|
613
|
+
}
|
|
614
|
+
if (leaves.length === 0) return
|
|
615
|
+
const symbols = await checker.getSymbolAtLocation(leaves)
|
|
616
|
+
for (let leaf = 0; leaf < leaves.length; leaf += 1) {
|
|
617
|
+
const id = symbols[leaf]?.id
|
|
618
|
+
if (id !== undefined && reactiveIds.has(id))
|
|
619
|
+
reactive[owners[leaf] as number] = undefined
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* The names an initializer's value can BE, as opposed to names it merely uses: `a` in `(a)`,
|
|
625
|
+
* `a as T`, `c ? a : b` and `a ?? b`, but not in `f(a)` or `a.b`.
|
|
626
|
+
*/
|
|
627
|
+
function valueLeaves(node: Node, leaves: Node[]): void {
|
|
628
|
+
if (TRANSPARENT.has(node.kind)) {
|
|
629
|
+
valueLeaves(
|
|
630
|
+
(node as unknown as { expression: Node }).expression,
|
|
631
|
+
leaves,
|
|
632
|
+
)
|
|
633
|
+
return
|
|
634
|
+
}
|
|
635
|
+
switch (node.kind) {
|
|
636
|
+
case SyntaxKind.Identifier:
|
|
637
|
+
leaves.push(node)
|
|
638
|
+
return
|
|
639
|
+
case SyntaxKind.ConditionalExpression: {
|
|
640
|
+
const { whenTrue, whenFalse } = node as unknown as {
|
|
641
|
+
whenTrue: Node
|
|
642
|
+
whenFalse: Node
|
|
643
|
+
}
|
|
644
|
+
valueLeaves(whenTrue, leaves)
|
|
645
|
+
valueLeaves(whenFalse, leaves)
|
|
646
|
+
return
|
|
647
|
+
}
|
|
648
|
+
case SyntaxKind.BinaryExpression: {
|
|
649
|
+
const { left, right, operatorToken } = node as unknown as {
|
|
650
|
+
left: Node
|
|
651
|
+
right: Node
|
|
652
|
+
operatorToken: Node
|
|
653
|
+
}
|
|
654
|
+
if (operatorToken.kind === SyntaxKind.CommaToken) {
|
|
655
|
+
valueLeaves(right, leaves)
|
|
656
|
+
return
|
|
657
|
+
}
|
|
658
|
+
if (
|
|
659
|
+
operatorToken.kind === SyntaxKind.QuestionQuestionToken ||
|
|
660
|
+
operatorToken.kind === SyntaxKind.BarBarToken ||
|
|
661
|
+
operatorToken.kind === SyntaxKind.AmpersandAmpersandToken
|
|
662
|
+
) {
|
|
663
|
+
valueLeaves(left, leaves)
|
|
664
|
+
valueLeaves(right, leaves)
|
|
665
|
+
}
|
|
666
|
+
return
|
|
667
|
+
}
|
|
668
|
+
default:
|
|
669
|
+
return
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
// 23.1 — the four values `route` holds, each a `Reactive` of its own.
|
|
674
|
+
const ROUTE_MEMBERS = new Set(['url', 'params', 'name', 'navigating'])
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* 31.16 — `route`'s four values, each read by name as a name bound to a `Reactive` is.
|
|
678
|
+
*
|
|
679
|
+
* `route.params.id` reads `route.params().id`, and the explicit call keeps compiling (31.7). Told
|
|
680
|
+
* by the symbol, as `props` is, so an app's own `route` is not abide's.
|
|
681
|
+
*
|
|
682
|
+
* READ AS A CALL RATHER THAN THROUGH THE CHECKER'S VALUES RECORD (`local`): the record is keyed by
|
|
683
|
+
* a name, and this read is spelled as a member.
|
|
684
|
+
*
|
|
685
|
+
* 23.9 — AND `route.params` IN A PAGE OR A LAYOUT IS WHAT THAT FILE'S OWN ROUTE PROMISES. The file
|
|
686
|
+
* is the route: `ui/pages/media/[id]/page.abide` only ever renders where `id` matched, so its
|
|
687
|
+
* `route.params` has an `id`, and a layout's has its own segments and whatever a page below adds.
|
|
688
|
+
* Only the checker reads that — the running module reads the one `route` every page shares.
|
|
689
|
+
*/
|
|
690
|
+
async function routeReads(
|
|
691
|
+
checker: Checker,
|
|
692
|
+
abide: Abide,
|
|
693
|
+
sourceFile: Node,
|
|
694
|
+
abidePath: string,
|
|
695
|
+
reads: Read[],
|
|
696
|
+
): Promise<void> {
|
|
697
|
+
if (abide.route === undefined) return
|
|
698
|
+
const routed = fileKind(abidePath)
|
|
699
|
+
const kind = routed === 'page' || routed === 'layout' ? routed : undefined
|
|
700
|
+
const accesses: Node[] = []
|
|
701
|
+
const owners: Node[] = []
|
|
702
|
+
const visit = (node: Node): void => {
|
|
703
|
+
if (
|
|
704
|
+
isPropertyAccessExpression(node) &&
|
|
705
|
+
isIdentifier(node.expression) &&
|
|
706
|
+
isIdentifier(node.name) &&
|
|
707
|
+
ROUTE_MEMBERS.has(node.name.text)
|
|
708
|
+
) {
|
|
709
|
+
accesses.push(node)
|
|
710
|
+
owners.push(node.expression)
|
|
711
|
+
}
|
|
712
|
+
node.forEachChild(visit)
|
|
713
|
+
}
|
|
714
|
+
sourceFile.forEachChild(visit)
|
|
715
|
+
if (owners.length === 0) return
|
|
716
|
+
const symbols = await checker.getSymbolAtLocation(owners)
|
|
717
|
+
const pattern = routeOf(abidePath)
|
|
718
|
+
for (let at = 0; at < accesses.length; at += 1) {
|
|
719
|
+
const symbol = symbols[at]
|
|
720
|
+
if (symbol === undefined) continue
|
|
721
|
+
const declared = await aliasedSymbol(checker, symbol)
|
|
722
|
+
if (declared.valueDeclaration?.path !== abide.route) continue
|
|
723
|
+
const access = accesses[at] as Node
|
|
724
|
+
const read = classifyRead(access)
|
|
725
|
+
if (read === undefined) continue
|
|
726
|
+
read.local = true
|
|
727
|
+
if (
|
|
728
|
+
kind !== undefined &&
|
|
729
|
+
(access as { name?: { text: string } }).name?.text === 'params'
|
|
730
|
+
)
|
|
731
|
+
read.routeParams = [pattern, kind]
|
|
732
|
+
reads.push(read)
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Throws where an inline component the template's own body declares shares a name with one the
|
|
738
|
+
* file's `<script>` or `<script module>` declares.
|
|
739
|
+
*
|
|
740
|
+
* 32.55 — THE TEMPLATE'S OWN BODY IS ITS FILE'S SCOPE, so the two are one name declared twice. The
|
|
741
|
+
* checker reports it on the projection, but a build reports nothing the checker says, and the
|
|
742
|
+
* module it emits would not load. Imports are refused where the file is parsed (`parseAbide`).
|
|
743
|
+
*/
|
|
744
|
+
function refuseDeclared(
|
|
745
|
+
statements: readonly Node[],
|
|
746
|
+
scriptsEnd: number,
|
|
747
|
+
file: AbideFile,
|
|
748
|
+
): void {
|
|
749
|
+
if (file.components.length === 0) return
|
|
750
|
+
const names = new Set<string>()
|
|
751
|
+
const bind = (name: Node | undefined): void => {
|
|
752
|
+
if (name === undefined) return
|
|
753
|
+
if (isIdentifier(name)) {
|
|
754
|
+
names.add(name.text)
|
|
755
|
+
return
|
|
756
|
+
}
|
|
757
|
+
if (isObjectBindingPattern(name) || isArrayBindingPattern(name))
|
|
758
|
+
for (const element of name.elements)
|
|
759
|
+
bind((element as { name?: Node }).name)
|
|
760
|
+
}
|
|
761
|
+
for (const statement of statements) {
|
|
762
|
+
if (statement.getStart() >= scriptsEnd) break
|
|
763
|
+
if (isVariableStatement(statement))
|
|
764
|
+
for (const declaration of statement.declarationList.declarations)
|
|
765
|
+
bind(declaration.name)
|
|
766
|
+
else if (
|
|
767
|
+
isFunctionDeclaration(statement) ||
|
|
768
|
+
isClassDeclaration(statement) ||
|
|
769
|
+
isEnumDeclaration(statement)
|
|
770
|
+
)
|
|
771
|
+
bind(statement.name)
|
|
772
|
+
}
|
|
773
|
+
for (const component of file.components)
|
|
774
|
+
if (names.has(component.name))
|
|
775
|
+
throw new Error(
|
|
776
|
+
`abide: {#component ${component.name}} is declared inline and \`${component.name}\` is also declared by its file's script — one name, two things. Rename one. RULEBOOK 32.55.`,
|
|
777
|
+
)
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* The reads a `props<Props>()` destructuring contributes, pushed onto `reads`.
|
|
782
|
+
*
|
|
783
|
+
* 33 — WHAT `props<Props>()` BINDS, and it is a second question from 31.3's rather than a case of
|
|
784
|
+
* it: a prop is not a `Reactive` and is not typed as one, so no type answers this. The CALLEE
|
|
785
|
+
* does: abide's own `props`, which an app's function of that spelling is not. The pattern is flat
|
|
786
|
+
* (33.14), and every name it binds is one accessor (33.4).
|
|
787
|
+
*
|
|
788
|
+
* THREE KINDS OF READ COME BACK: the call itself, which lowers to the record the caller passed;
|
|
789
|
+
* each default, which lowers to an accessor answering it; and every occurrence of every name the
|
|
790
|
+
* pattern bound.
|
|
791
|
+
*
|
|
792
|
+
* 33.6, 33.7 — A PROP THE CHILD WRITES IS A CELL, and the child is the only side that can tell: a
|
|
793
|
+
* name assigned, updated, or handed on as a `bind:` operand. Its key rides the call's read, its
|
|
794
|
+
* default becomes a cell too, and every occurrence reads through the accessor as a `Reactive`.
|
|
795
|
+
*/
|
|
796
|
+
async function propsReads(
|
|
797
|
+
checker: Checker,
|
|
798
|
+
abide: Abide,
|
|
799
|
+
sourceFile: Node & { statements: readonly Node[] },
|
|
800
|
+
shadowPath: string,
|
|
801
|
+
scriptsEnd: number,
|
|
802
|
+
positions: PositionTable,
|
|
803
|
+
reads: Read[],
|
|
804
|
+
): Promise<void> {
|
|
805
|
+
// The spelling only says which calls are worth asking about; the callee says which are abide's.
|
|
806
|
+
const calls: { pattern: Node; call: Node; local: boolean }[] = []
|
|
807
|
+
const callees: Node[] = []
|
|
808
|
+
const take = (statement: Node, local: boolean): void => {
|
|
809
|
+
if (!isVariableStatement(statement)) return
|
|
810
|
+
for (const declaration of statement.declarationList.declarations) {
|
|
811
|
+
const call = declaration.initializer
|
|
812
|
+
if (
|
|
813
|
+
call === undefined ||
|
|
814
|
+
!isCallExpression(call) ||
|
|
815
|
+
!isIdentifier(call.expression) ||
|
|
816
|
+
call.expression.text !== (local ? INLINE_PROPS : 'props')
|
|
817
|
+
)
|
|
818
|
+
continue
|
|
819
|
+
calls.push({ pattern: declaration.name, call, local })
|
|
820
|
+
callees.push(call.expression)
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
for (const statement of sourceFile.statements) {
|
|
824
|
+
if (statement.getStart() >= scriptsEnd) break
|
|
825
|
+
take(statement, false)
|
|
826
|
+
}
|
|
827
|
+
// 32.40 — AND EACH INLINE COMPONENT'S HEAD, inside the function it is projected as. Its names
|
|
828
|
+
// are that function's, so a read of one is local as a branch-local name is (14.8).
|
|
829
|
+
for (const { node } of positions.nodesIn(sourceFile, HEAD)) take(node, true)
|
|
830
|
+
if (calls.length === 0 || abide.props === undefined) return
|
|
831
|
+
const named = await checker.getSymbolAtLocation(callees)
|
|
832
|
+
// One entry per name a pattern binds: the key it takes, the call's read its key joins where
|
|
833
|
+
// the child writes it, and its default's pair.
|
|
834
|
+
const bound: Node[] = []
|
|
835
|
+
const bindings: {
|
|
836
|
+
key: string
|
|
837
|
+
call: Read
|
|
838
|
+
defaults: Read[]
|
|
839
|
+
rest: boolean
|
|
840
|
+
local: boolean
|
|
841
|
+
}[] = []
|
|
842
|
+
for (let at = 0; at < calls.length; at += 1) {
|
|
843
|
+
const symbol = named[at]
|
|
844
|
+
if (symbol === undefined) continue
|
|
845
|
+
const callee = await aliasedSymbol(checker, symbol)
|
|
846
|
+
if (callee.valueDeclaration?.path !== abide.props) continue
|
|
847
|
+
const { pattern, call, local } = calls[at] as (typeof calls)[number]
|
|
848
|
+
const callRead = newRead(call.getStart(), call.end, 'props')
|
|
849
|
+
reads.push(callRead)
|
|
850
|
+
// 33.3 — `const all = props()` is the untyped record itself, and there is no pattern
|
|
851
|
+
// to walk. Its members are read through `all`, which the lowering leaves alone.
|
|
852
|
+
if (!isObjectBindingPattern(pattern)) continue
|
|
853
|
+
for (const element of pattern.elements) {
|
|
854
|
+
// 33.14 — FLAT: a rename, a default and a rest element, and no nested pattern.
|
|
855
|
+
const name = element.name
|
|
856
|
+
if (name === undefined || !isIdentifier(name))
|
|
857
|
+
throw new Error(
|
|
858
|
+
'abide: a props pattern is flat — a rename, a default and a rest element, and no nested pattern. RULEBOOK 33.14.',
|
|
859
|
+
)
|
|
860
|
+
const renamed = element.propertyName
|
|
861
|
+
const key =
|
|
862
|
+
renamed !== undefined && isIdentifier(renamed)
|
|
863
|
+
? renamed.text
|
|
864
|
+
: name.text
|
|
865
|
+
const defaults: Read[] = []
|
|
866
|
+
if (element.initializer !== undefined) {
|
|
867
|
+
const open = element.initializer.getStart()
|
|
868
|
+
const opening = newRead(open, open, 'defaultOpen')
|
|
869
|
+
opening.keys.push(key)
|
|
870
|
+
callRead.keys.push(key)
|
|
871
|
+
defaults.push(
|
|
872
|
+
opening,
|
|
873
|
+
newRead(
|
|
874
|
+
element.initializer.end,
|
|
875
|
+
element.initializer.end,
|
|
876
|
+
'defaultClose',
|
|
877
|
+
),
|
|
878
|
+
)
|
|
879
|
+
reads.push(...defaults)
|
|
880
|
+
} else if (element.dotDotDotToken === undefined) {
|
|
881
|
+
// 33.4 — A PROP THE CALLER LEFT OUT IS `undefined`, and has no accessor to read it
|
|
882
|
+
// through: every binding is given one, inert wherever the caller passed the key.
|
|
883
|
+
const absent = newRead(name.end, name.end, 'absent')
|
|
884
|
+
defaults.push(absent)
|
|
885
|
+
reads.push(absent)
|
|
886
|
+
}
|
|
887
|
+
bound.push(name)
|
|
888
|
+
bindings.push({
|
|
889
|
+
key,
|
|
890
|
+
call: callRead,
|
|
891
|
+
defaults,
|
|
892
|
+
rest: element.dotDotDotToken !== undefined,
|
|
893
|
+
local,
|
|
894
|
+
})
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
if (bound.length === 0) return
|
|
898
|
+
|
|
899
|
+
const symbols = await checker.getSymbolAtLocation(bound)
|
|
900
|
+
const found = await Promise.all(
|
|
901
|
+
symbols.map(async (symbol) =>
|
|
902
|
+
symbol === undefined
|
|
903
|
+
? []
|
|
904
|
+
: await Promise.all(
|
|
905
|
+
(
|
|
906
|
+
await checker.getReferencesToSymbolInFile(
|
|
907
|
+
shadowPath,
|
|
908
|
+
symbol,
|
|
909
|
+
)
|
|
910
|
+
).map((reference) => reference.resolve()),
|
|
911
|
+
),
|
|
912
|
+
),
|
|
913
|
+
)
|
|
914
|
+
for (let at = 0; at < found.length; at += 1) {
|
|
915
|
+
const binding = bindings[at] as (typeof bindings)[number]
|
|
916
|
+
if (binding.rest) {
|
|
917
|
+
restReads(found[at] as (Node | undefined)[], reads)
|
|
918
|
+
continue
|
|
919
|
+
}
|
|
920
|
+
const uses: Read[] = []
|
|
921
|
+
let written = false
|
|
922
|
+
for (const node of found[at] as (Node | undefined)[]) {
|
|
923
|
+
// The binding itself is the pattern's, and not a use of the name.
|
|
924
|
+
if (
|
|
925
|
+
node === undefined ||
|
|
926
|
+
node.parent?.kind === SyntaxKind.BindingElement
|
|
927
|
+
)
|
|
928
|
+
continue
|
|
929
|
+
const read = classifyRead(node)
|
|
930
|
+
if (read === undefined) continue
|
|
931
|
+
if (
|
|
932
|
+
read.shape === 'write' ||
|
|
933
|
+
read.shape === 'update' ||
|
|
934
|
+
isBindOperand(positions, node)
|
|
935
|
+
)
|
|
936
|
+
written = true
|
|
937
|
+
uses.push(read)
|
|
938
|
+
}
|
|
939
|
+
if (!written) {
|
|
940
|
+
for (const node of found[at] as (Node | undefined)[]) {
|
|
941
|
+
if (node === undefined) continue
|
|
942
|
+
const read = classifyPropRead(node)
|
|
943
|
+
if (read === undefined) continue
|
|
944
|
+
read.local = binding.local
|
|
945
|
+
reads.push(read)
|
|
946
|
+
}
|
|
947
|
+
continue
|
|
948
|
+
}
|
|
949
|
+
binding.call.path.push({ name: binding.key, start: 0, end: 0 })
|
|
950
|
+
for (const read of binding.defaults) read.through = true
|
|
951
|
+
for (const read of uses) {
|
|
952
|
+
read.through = true
|
|
953
|
+
read.local = binding.local
|
|
954
|
+
reads.push(read)
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
/**
|
|
960
|
+
* 33.15 — the reads of a props rest element: `rest.note`, each read of the accessor it holds.
|
|
961
|
+
*
|
|
962
|
+
* THE REST ELEMENT IS THE RECORD OF ACCESSORS the caller passed, not one of them, so the name alone
|
|
963
|
+
* is never called — `rest()` would call the record. A member read is the key's accessor called,
|
|
964
|
+
* `?.` because a key the caller left out has none (33.4), and `rest.note()` is that accessor called
|
|
965
|
+
* by hand, left alone as 31.7's is.
|
|
966
|
+
*
|
|
967
|
+
* 33.22 — HANDED ON WHOLE, IT IS THE VALUES. A `{...rest}` enumerates what it is given, and given
|
|
968
|
+
* the accessors an element's spread skipped every one as a function and a component's passed each
|
|
969
|
+
* child an accessor where its value was due.
|
|
970
|
+
*/
|
|
971
|
+
function restReads(nodes: (Node | undefined)[], reads: Read[]): void {
|
|
972
|
+
for (const node of nodes) {
|
|
973
|
+
const parent = node?.parent
|
|
974
|
+
if (
|
|
975
|
+
node === undefined ||
|
|
976
|
+
parent === undefined ||
|
|
977
|
+
parent.kind === SyntaxKind.BindingElement ||
|
|
978
|
+
parent.kind === SyntaxKind.TypeQuery
|
|
979
|
+
)
|
|
980
|
+
continue
|
|
981
|
+
if (isPropertyAccessExpression(parent) && parent.expression === node) {
|
|
982
|
+
const outer = parent.parent
|
|
983
|
+
if (isCallExpression(outer) && outer.expression === parent) continue
|
|
984
|
+
reads.push(newRead(node.getStart(), parent.end, 'restMember'))
|
|
985
|
+
continue
|
|
986
|
+
}
|
|
987
|
+
const whole = newRead(node.getStart(), node.end, 'restWhole')
|
|
988
|
+
// `{ rest }` is a key and a value, and only the value lowers.
|
|
989
|
+
if (parent.kind === SyntaxKind.ShorthandPropertyAssignment)
|
|
990
|
+
whole.keys = ['shorthand']
|
|
991
|
+
reads.push(whole)
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
/** A name standing alone as a `bind:` operand, on an element or on a component. */
|
|
996
|
+
function isBindOperand(positions: PositionTable, node: Node): boolean {
|
|
997
|
+
return holdsReactive(positions.of(node))
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
async function isReactiveSymbol(
|
|
1001
|
+
checker: Checker,
|
|
1002
|
+
abide: Abide,
|
|
1003
|
+
symbol: CheckedSymbol,
|
|
1004
|
+
): Promise<boolean> {
|
|
1005
|
+
const type = await checker.getTypeOfSymbol(symbol)
|
|
1006
|
+
return type !== undefined && isReactiveType(checker, abide, type, false)
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
/**
|
|
1010
|
+
* Orders reads by offset, a default's open before a read at the same offset and its close after.
|
|
1011
|
+
*
|
|
1012
|
+
* ASCENDING, AND AN INSERTION KNOWS WHICH SIDE IT IS ON. A default's open stands at the same
|
|
1013
|
+
* offset as the first read inside it — `currency = fallback` — and a sort by offset alone leaves
|
|
1014
|
+
* which comes first to the order the two passes happened to push in.
|
|
1015
|
+
*/
|
|
1016
|
+
function byPosition(left: Read, right: Read): number {
|
|
1017
|
+
return left.start - right.start || side(left) - side(right)
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
function side(read: Read): number {
|
|
1021
|
+
if (read.shape === 'defaultOpen') return -1
|
|
1022
|
+
return read.shape === 'defaultClose' ? 1 : 0
|
|
1023
|
+
}
|