@abide/abide 0.58.0 → 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1198) hide show
  1. package/CHANGELOG.md +3 -1781
  2. package/bin/abide.ts +788 -204
  3. package/package.json +30 -152
  4. package/scaffold/src/server/app.ts +6 -0
  5. package/scaffold/src/shared/.gitkeep +0 -0
  6. package/scaffold/src/ui/app.html +8 -0
  7. package/scaffold/src/ui/pages/page.abide +13 -0
  8. package/src/compiler/CHARACTER_REFERENCES.ts +2242 -0
  9. package/src/compiler/CheckerAnswer.ts +62 -0
  10. package/src/compiler/Cursor.ts +367 -0
  11. package/src/compiler/Finding.ts +2 -0
  12. package/src/compiler/Lowering.ts +648 -0
  13. package/src/compiler/PositionTable.ts +125 -0
  14. package/src/compiler/REACTIVE_MEMBERS.ts +36 -0
  15. package/src/compiler/SHARED_NAMES.ts +45 -0
  16. package/src/compiler/SPECIFIERS.ts +16 -0
  17. package/src/compiler/ShadowMap.ts +144 -0
  18. package/src/compiler/TemplateNode.ts +176 -0
  19. package/src/compiler/TypeSession.ts +1079 -0
  20. package/src/compiler/VOID_ELEMENTS.ts +22 -0
  21. package/src/compiler/aliasedSymbol.ts +15 -0
  22. package/src/compiler/ambientReadsIn.ts +152 -0
  23. package/src/compiler/argsDefaultsIn.ts +173 -0
  24. package/src/compiler/argsSchemaOf.ts +230 -0
  25. package/src/compiler/checkApp.ts +117 -0
  26. package/src/compiler/checkedShadow.ts +182 -0
  27. package/src/compiler/classifyRead.ts +577 -0
  28. package/src/compiler/classifyTemplate.ts +501 -0
  29. package/src/compiler/compileApp.ts +559 -0
  30. package/src/compiler/compiledEntry.ts +141 -0
  31. package/src/compiler/componentGraph.ts +139 -0
  32. package/src/compiler/declaredExports.ts +645 -0
  33. package/src/compiler/decodeCharacterReferences.ts +111 -0
  34. package/src/compiler/emitClient.ts +1343 -0
  35. package/src/compiler/emitComponent.ts +162 -0
  36. package/src/compiler/emitSource.ts +91 -0
  37. package/src/compiler/formatDiagnosis.ts +19 -0
  38. package/src/compiler/handlersUnder.ts +109 -0
  39. package/src/compiler/index.ts +15 -0
  40. package/src/compiler/invocationProps.ts +67 -0
  41. package/src/compiler/isNamedAlone.ts +9 -0
  42. package/src/compiler/lineOf.ts +38 -0
  43. package/src/compiler/parseAbide.ts +1341 -0
  44. package/src/compiler/projectShadow.ts +643 -0
  45. package/src/compiler/reactiveOptions.ts +82 -0
  46. package/src/compiler/reactiveTypes.ts +222 -0
  47. package/src/compiler/readSources.ts +100 -0
  48. package/src/compiler/readsIn.ts +1023 -0
  49. package/src/compiler/renderMarkup.ts +781 -0
  50. package/src/compiler/scaffold.ts +105 -0
  51. package/src/compiler/scopeStyles.ts +309 -0
  52. package/src/compiler/serveLanguage.ts +405 -0
  53. package/src/compiler/shareScope.ts +51 -0
  54. package/src/compiler/sharedModuleWrites.ts +88 -0
  55. package/src/compiler/splitImports.ts +387 -0
  56. package/src/compiler/templateWarnings.ts +128 -0
  57. package/src/compiler/tokenize.ts +317 -0
  58. package/src/compiler/trackingWarnings.ts +279 -0
  59. package/src/compiler/writeDefaultProject.ts +42 -0
  60. package/src/server/BRIDGE_VERSION.ts +3 -0
  61. package/src/server/CLIENT_BUILD.ts +56 -0
  62. package/src/server/DEFAULT_PORT.ts +6 -0
  63. package/src/server/DOCUMENT_HEADERS.ts +11 -0
  64. package/src/server/Inbox.ts +36 -0
  65. package/src/server/LogPanel.ts +239 -0
  66. package/src/server/MCP_PROTOCOL_VERSION.ts +3 -0
  67. package/src/server/SETTLE_MILLISECONDS.ts +7 -0
  68. package/src/server/VIRTUAL_DIRECTORY.ts +6 -0
  69. package/src/server/answerFailure.ts +91 -0
  70. package/src/server/answerRequest.ts +560 -0
  71. package/src/server/answerRpc.ts +537 -0
  72. package/src/server/answerSocket.ts +537 -0
  73. package/src/server/answerValue.ts +375 -0
  74. package/src/server/appDirectories.ts +9 -0
  75. package/src/server/appKit.ts +204 -0
  76. package/src/server/appPlugins.ts +26 -0
  77. package/src/server/argsFor.ts +40 -0
  78. package/src/server/assistant.ts +163 -0
  79. package/src/server/banner.ts +43 -0
  80. package/src/server/bridgeRelay.ts +249 -0
  81. package/src/server/buildDirectory.ts +10 -0
  82. package/src/server/callerOf.ts +60 -0
  83. package/src/server/claudeApi.ts +224 -0
  84. package/src/server/claudeCode.ts +187 -0
  85. package/src/server/clientBuildOptions.ts +49 -0
  86. package/src/server/coerceArgs.ts +110 -0
  87. package/src/server/commands.ts +442 -0
  88. package/src/server/componentImports.ts +56 -0
  89. package/src/server/componentModules.d.ts +9 -0
  90. package/src/server/compressAnswer.ts +66 -0
  91. package/src/server/config.ts +192 -0
  92. package/src/server/configFields.ts +92 -0
  93. package/src/server/createApp.ts +428 -0
  94. package/src/server/crossingOrigin.ts +49 -0
  95. package/src/server/csp.ts +77 -0
  96. package/src/server/devWorker.ts +613 -0
  97. package/src/server/faultPolicy.ts +59 -0
  98. package/src/server/fenceServer.ts +48 -0
  99. package/src/server/generatedSurfaces.ts +430 -0
  100. package/src/server/hooks.ts +190 -0
  101. package/src/server/index.ts +87 -0
  102. package/src/server/installServer.ts +47 -0
  103. package/src/server/launcherOptions.ts +62 -0
  104. package/src/server/launcherPage.ts +156 -0
  105. package/src/server/manifestOf.ts +114 -0
  106. package/src/server/muxUpgrade.ts +72 -0
  107. package/src/server/namesUnder.ts +15 -0
  108. package/src/server/nativeMenu.ts +296 -0
  109. package/src/server/negotiateEncoding.ts +39 -0
  110. package/src/server/plainAnswer.ts +19 -0
  111. package/src/server/prefers.ts +25 -0
  112. package/src/server/principal.ts +261 -0
  113. package/src/server/qualitiesOf.ts +22 -0
  114. package/src/server/randomToken.ts +9 -0
  115. package/src/server/reachable.ts +31 -0
  116. package/src/server/refuseAddressCollision.ts +30 -0
  117. package/src/server/remote.ts +242 -0
  118. package/src/server/render.ts +464 -0
  119. package/src/server/renderComponent.ts +33 -0
  120. package/src/server/reportHealth.ts +46 -0
  121. package/src/server/requestScope.ts +435 -0
  122. package/src/server/responseHelpers.ts +75 -0
  123. package/src/server/runCompiled.ts +44 -0
  124. package/src/server/runDesktop.ts +572 -0
  125. package/src/server/seedBuffer.ts +293 -0
  126. package/src/server/serveBuild.ts +198 -0
  127. package/src/server/serveDev.ts +499 -0
  128. package/src/server/shell.ts +506 -0
  129. package/src/server/surfaceOf.ts +47 -0
  130. package/src/server/testBuild.ts +237 -0
  131. package/src/server/trace.ts +151 -0
  132. package/src/server/versionOf.ts +109 -0
  133. package/src/server/withoutTrailingSlash.ts +4 -0
  134. package/src/shared/ADDRESSES.ts +69 -0
  135. package/src/shared/ANCHORS.ts +54 -0
  136. package/src/shared/Attributes.ts +339 -0
  137. package/src/shared/BOOLEAN_ATTRIBUTES.ts +41 -0
  138. package/src/shared/CHILDREN.ts +11 -0
  139. package/src/shared/CURRENT_ROUTER.ts +25 -0
  140. package/src/shared/CopyOptions.ts +19 -0
  141. package/src/shared/DEBUG_META.ts +6 -0
  142. package/src/shared/EARLY_CALLS.ts +8 -0
  143. package/src/shared/FAILURE_STATUS_TEXT.ts +48 -0
  144. package/src/shared/Failed.ts +146 -0
  145. package/src/shared/GLOBAL_GETS.ts +7 -0
  146. package/src/shared/Issues.ts +49 -0
  147. package/src/shared/JsonValue.ts +18 -0
  148. package/src/shared/LOAD_SIGNAL.ts +10 -0
  149. package/src/shared/MOUNT_META.ts +6 -0
  150. package/src/shared/Middleware.ts +34 -0
  151. package/src/shared/NAVIGATION_HEADER.ts +7 -0
  152. package/src/shared/PRINCIPAL_HEADER.ts +6 -0
  153. package/src/shared/RPC_SERVER.ts +67 -0
  154. package/src/shared/Raw.ts +90 -0
  155. package/src/shared/Schema.ts +229 -0
  156. package/src/shared/UNEXPECTED.ts +11 -0
  157. package/src/shared/URL_ATTRIBUTES.ts +19 -0
  158. package/src/shared/VERSION_HEADER.ts +6 -0
  159. package/src/shared/WORK.ts +37 -0
  160. package/src/shared/anchorMarkup.ts +15 -0
  161. package/src/shared/answerOf.ts +141 -0
  162. package/src/shared/applyPatch.ts +173 -0
  163. package/src/shared/armAnchor.ts +17 -0
  164. package/src/shared/attributeText.ts +50 -0
  165. package/src/shared/boundValue.ts +58 -0
  166. package/src/shared/cookies.ts +271 -0
  167. package/src/shared/csp.ts +55 -0
  168. package/src/shared/decodedOrKept.ts +14 -0
  169. package/src/shared/escapeText.ts +103 -0
  170. package/src/shared/framing.ts +131 -0
  171. package/src/shared/headKeyOf.ts +34 -0
  172. package/src/shared/health.ts +51 -0
  173. package/src/shared/index.ts +117 -0
  174. package/src/shared/isEventName.ts +10 -0
  175. package/src/shared/isRecord.ts +4 -0
  176. package/src/shared/issuesOf.ts +18 -0
  177. package/src/shared/jsonSchema.ts +50 -0
  178. package/src/shared/listOf.ts +20 -0
  179. package/src/shared/log.ts +284 -0
  180. package/src/shared/matchRoute.ts +99 -0
  181. package/src/shared/menuItem.ts +80 -0
  182. package/src/shared/mount.ts +45 -0
  183. package/src/shared/muxFrames.ts +35 -0
  184. package/src/shared/navigate.ts +26 -0
  185. package/src/shared/note.ts +24 -0
  186. package/src/shared/numberFromText.ts +10 -0
  187. package/src/shared/online.ts +19 -0
  188. package/src/shared/paint.ts +4 -0
  189. package/src/shared/principal.ts +145 -0
  190. package/src/shared/principalRotated.ts +47 -0
  191. package/src/shared/propCell.ts +99 -0
  192. package/src/shared/props.ts +24 -0
  193. package/src/shared/putOwn.ts +24 -0
  194. package/src/shared/queryText.ts +18 -0
  195. package/src/shared/reactive/CELL.ts +8 -0
  196. package/src/shared/reactive/Cursor.ts +223 -0
  197. package/src/shared/reactive/ENTRY_LIVES.ts +7 -0
  198. package/src/shared/reactive/Expiry.ts +103 -0
  199. package/src/shared/reactive/FOLLOWED.ts +8 -0
  200. package/src/shared/reactive/KEYED_BRAND.ts +8 -0
  201. package/src/shared/reactive/Keyed.ts +423 -0
  202. package/src/shared/reactive/MUTATION.ts +5 -0
  203. package/src/shared/reactive/NO_INITIAL.ts +6 -0
  204. package/src/shared/reactive/NotLanded.ts +21 -0
  205. package/src/shared/reactive/PATCHES.ts +11 -0
  206. package/src/shared/reactive/PATCH_SINKS.ts +26 -0
  207. package/src/shared/reactive/REACTIVE_BRAND.ts +9 -0
  208. package/src/shared/reactive/RESHAPING.ts +13 -0
  209. package/src/shared/reactive/Reactive.ts +4480 -0
  210. package/src/shared/reactive/SELECTION_MEMBERS.ts +12 -0
  211. package/src/shared/reactive/STREAMING.ts +5 -0
  212. package/src/shared/reactive/argsContract.ts +97 -0
  213. package/src/shared/reactive/byOf.ts +18 -0
  214. package/src/shared/reactive/callLoad.ts +200 -0
  215. package/src/shared/reactive/canonicalKey.ts +95 -0
  216. package/src/shared/reactive/chunksOfStream.ts +51 -0
  217. package/src/shared/reactive/index.ts +542 -0
  218. package/src/shared/reactive/isReactive.ts +19 -0
  219. package/src/shared/reactive/isThenable.ts +14 -0
  220. package/src/shared/reactive/matchesPattern.ts +16 -0
  221. package/src/shared/reactive/pairReactive.ts +41 -0
  222. package/src/shared/reactive/parameterDefaults.ts +356 -0
  223. package/src/shared/reactive/recordWrites.ts +472 -0
  224. package/src/shared/reactive/scoped.ts +157 -0
  225. package/src/shared/reactive/scoping.ts +64 -0
  226. package/src/shared/reactive/share.ts +91 -0
  227. package/src/shared/reactive/structural.ts +62 -0
  228. package/src/shared/reactive/tracking.ts +418 -0
  229. package/src/shared/reactive/watch.ts +310 -0
  230. package/src/shared/refuse.ts +224 -0
  231. package/src/shared/route.ts +29 -0
  232. package/src/shared/routePattern.ts +146 -0
  233. package/src/shared/rpc.ts +496 -0
  234. package/src/shared/rpcRequest.ts +73 -0
  235. package/src/shared/safeUrl.ts +68 -0
  236. package/src/shared/seededDocument.ts +36 -0
  237. package/src/shared/setUpLevels.ts +53 -0
  238. package/src/shared/slotValue.ts +34 -0
  239. package/src/shared/spread.ts +79 -0
  240. package/src/shared/takeEarlyCall.ts +86 -0
  241. package/src/shared/url.ts +140 -0
  242. package/src/shared/validateJson.ts +578 -0
  243. package/src/shared/versionInEtag.ts +14 -0
  244. package/src/shared/writePath.ts +95 -0
  245. package/src/ui/ArmRegion.ts +185 -0
  246. package/src/ui/LAYER_NAMES.ts +30 -0
  247. package/src/ui/List.ts +273 -0
  248. package/src/ui/Mismatch.ts +32 -0
  249. package/src/ui/RawRun.ts +99 -0
  250. package/src/ui/Router.ts +698 -0
  251. package/src/ui/Scope.ts +115 -0
  252. package/src/ui/TryRegion.ts +278 -0
  253. package/src/ui/adoptWalk.ts +126 -0
  254. package/src/ui/applyHead.ts +146 -0
  255. package/src/ui/bindElement.ts +44 -0
  256. package/src/ui/bindProperty.ts +79 -0
  257. package/src/ui/bindSpread.ts +44 -0
  258. package/src/ui/escapeless.ts +14 -0
  259. package/src/ui/index.ts +64 -0
  260. package/src/ui/leave.ts +35 -0
  261. package/src/ui/listenForRoutes.ts +92 -0
  262. package/src/ui/measureLayer.ts +34 -0
  263. package/src/ui/menuBridge.ts +19 -0
  264. package/src/ui/moveNode.ts +34 -0
  265. package/src/ui/parseMarkup.ts +35 -0
  266. package/src/ui/reconcile.ts +368 -0
  267. package/src/ui/regions.ts +137 -0
  268. package/src/ui/reportMenu.ts +57 -0
  269. package/src/ui/routing.ts +18 -0
  270. package/src/ui/rowKeyOf.ts +19 -0
  271. package/src/ui/rows.ts +99 -0
  272. package/src/ui/setAttribute.ts +37 -0
  273. package/src/ui/setClass.ts +27 -0
  274. package/src/ui/setMarkup.ts +20 -0
  275. package/src/ui/setStyleProperty.ts +30 -0
  276. package/src/ui/setText.ts +28 -0
  277. package/src/ui/socketWire.ts +258 -0
  278. package/src/ui/wire.ts +141 -0
  279. package/AGENTS.md +0 -446
  280. package/README.md +0 -249
  281. package/src/abideLsp.ts +0 -251
  282. package/src/abideModules.d.ts +0 -8
  283. package/src/abideResolverPlugin.ts +0 -1101
  284. package/src/appEntry.ts +0 -161
  285. package/src/assets/app.html +0 -12
  286. package/src/build.ts +0 -189
  287. package/src/buildCli.ts +0 -125
  288. package/src/buildDisconnected.ts +0 -117
  289. package/src/bundleApp.ts +0 -146
  290. package/src/bundleDisconnectedEntry.ts +0 -14
  291. package/src/checkAbide.ts +0 -145
  292. package/src/cliEntry.ts +0 -25
  293. package/src/clientBuildPlugins.ts +0 -33
  294. package/src/clientEntry.ts +0 -17
  295. package/src/compile.ts +0 -61
  296. package/src/controlServerWorker.ts +0 -433
  297. package/src/devEntry.ts +0 -381
  298. package/src/discoveryEntry.ts +0 -82
  299. package/src/initAgent.ts +0 -50
  300. package/src/lib/bundle/BundleMenu.ts +0 -12
  301. package/src/lib/bundle/BundleMenuItem.ts +0 -25
  302. package/src/lib/bundle/BundleWindow.ts +0 -37
  303. package/src/lib/bundle/WEBVIEW_BUILD_REVISION.ts +0 -9
  304. package/src/lib/bundle/WEBVIEW_VERSION.ts +0 -7
  305. package/src/lib/bundle/bindConnectedFlag.ts +0 -29
  306. package/src/lib/bundle/bindRequestNavigate.ts +0 -34
  307. package/src/lib/bundle/buildWebviewLib.ts +0 -111
  308. package/src/lib/bundle/bundled.ts +0 -35
  309. package/src/lib/bundle/disconnected.abide +0 -265
  310. package/src/lib/bundle/disconnected.css +0 -9
  311. package/src/lib/bundle/ensureWebviewLib.ts +0 -20
  312. package/src/lib/bundle/exitWithParent.ts +0 -30
  313. package/src/lib/bundle/infoPlist.ts +0 -52
  314. package/src/lib/bundle/installDownloads.ts +0 -34
  315. package/src/lib/bundle/installMacMenu.ts +0 -49
  316. package/src/lib/bundle/listenLocalControlServer.ts +0 -19
  317. package/src/lib/bundle/native/abideMenu.mm +0 -422
  318. package/src/lib/bundle/native/webview.h +0 -4557
  319. package/src/lib/bundle/onMenu.ts +0 -42
  320. package/src/lib/bundle/openWebview.ts +0 -104
  321. package/src/lib/bundle/pngToIcns.ts +0 -47
  322. package/src/lib/bundle/probeAbideServer.ts +0 -57
  323. package/src/lib/bundle/resolveServerBinary.ts +0 -12
  324. package/src/lib/bundle/resolveWebviewLib.ts +0 -53
  325. package/src/lib/bundle/serverBinaryFilename.ts +0 -8
  326. package/src/lib/bundle/signMacApp.ts +0 -37
  327. package/src/lib/bundle/spawnEmbeddedServer.ts +0 -73
  328. package/src/lib/bundle/stableLocalPort.ts +0 -19
  329. package/src/lib/bundle/waitForServer.ts +0 -28
  330. package/src/lib/bundle/webviewCachePath.ts +0 -23
  331. package/src/lib/bundle/webviewLibName.ts +0 -11
  332. package/src/lib/cli/completeCli.ts +0 -38
  333. package/src/lib/cli/connectToServer.ts +0 -23
  334. package/src/lib/cli/createClient.ts +0 -108
  335. package/src/lib/cli/dispatchCommand.ts +0 -72
  336. package/src/lib/cli/loadEnvFromBinaryDir.ts +0 -15
  337. package/src/lib/cli/parseArgvForRpc.ts +0 -131
  338. package/src/lib/cli/printCommandHelp.ts +0 -43
  339. package/src/lib/cli/printSessionHelp.ts +0 -28
  340. package/src/lib/cli/printSessionStatus.ts +0 -21
  341. package/src/lib/cli/printTopLevelHelp.ts +0 -83
  342. package/src/lib/cli/printTrimmed.ts +0 -8
  343. package/src/lib/cli/printValue.ts +0 -10
  344. package/src/lib/cli/renderCliCompletions.ts +0 -56
  345. package/src/lib/cli/resolveCliTarget.ts +0 -47
  346. package/src/lib/cli/runCli.ts +0 -188
  347. package/src/lib/cli/runSession.ts +0 -107
  348. package/src/lib/cli/startLocalInstance.ts +0 -14
  349. package/src/lib/cli/tokenizeArgvFlags.ts +0 -86
  350. package/src/lib/cli/tokenizeLine.ts +0 -51
  351. package/src/lib/cli/types/CliManifest.ts +0 -11
  352. package/src/lib/cli/types/CliManifestEntry.ts +0 -17
  353. package/src/lib/cli/types/CliTarget.ts +0 -13
  354. package/src/lib/mcp/annotationsForMethod.ts +0 -29
  355. package/src/lib/mcp/buildPrompts.ts +0 -25
  356. package/src/lib/mcp/createMcpResourceServer.ts +0 -113
  357. package/src/lib/mcp/createMcpServer.ts +0 -56
  358. package/src/lib/mcp/dispatchMcpRequest.ts +0 -159
  359. package/src/lib/mcp/mcpResourceServerSlot.ts +0 -13
  360. package/src/lib/mcp/mcpSurface.ts +0 -57
  361. package/src/lib/mcp/mcpTools.ts +0 -196
  362. package/src/lib/mcp/renderPrompt.ts +0 -25
  363. package/src/lib/mcp/toolResultFromResponse.ts +0 -100
  364. package/src/lib/mcp/types/JsonRpcRequest.ts +0 -12
  365. package/src/lib/mcp/types/JsonRpcResponse.ts +0 -20
  366. package/src/lib/mcp/types/McpResourceContents.ts +0 -10
  367. package/src/lib/mcp/types/McpResourceDescriptor.ts +0 -6
  368. package/src/lib/mcp/types/McpResourceServer.ts +0 -12
  369. package/src/lib/mcp/types/McpServer.ts +0 -9
  370. package/src/lib/mcp/types/McpServerOptions.ts +0 -16
  371. package/src/lib/mcp/types/McpSurface.ts +0 -15
  372. package/src/lib/mcp/types/PromptDescriptor.ts +0 -5
  373. package/src/lib/mcp/types/PromptMessage.ts +0 -2
  374. package/src/lib/mcp/types/ToolDescriptor.ts +0 -7
  375. package/src/lib/mcp/types/ToolResult.ts +0 -2
  376. package/src/lib/server/AppModule.ts +0 -47
  377. package/src/lib/server/DELETE.ts +0 -10
  378. package/src/lib/server/GET.ts +0 -10
  379. package/src/lib/server/HEAD.ts +0 -10
  380. package/src/lib/server/PATCH.ts +0 -10
  381. package/src/lib/server/POST.ts +0 -10
  382. package/src/lib/server/PUT.ts +0 -10
  383. package/src/lib/server/agent.ts +0 -86
  384. package/src/lib/server/appDataDir.ts +0 -16
  385. package/src/lib/server/cli/buildEnvContent.ts +0 -19
  386. package/src/lib/server/cli/createTarGz.ts +0 -77
  387. package/src/lib/server/cli/handleCliDownload.ts +0 -152
  388. package/src/lib/server/cli/handleCliInstall.ts +0 -37
  389. package/src/lib/server/cli/installScript.ts +0 -31
  390. package/src/lib/server/cli/maxSourceMtime.ts +0 -26
  391. package/src/lib/server/cookies.ts +0 -30
  392. package/src/lib/server/env.ts +0 -51
  393. package/src/lib/server/error.ts +0 -110
  394. package/src/lib/server/json.ts +0 -57
  395. package/src/lib/server/jsonl.ts +0 -47
  396. package/src/lib/server/prompts/definePrompt.ts +0 -21
  397. package/src/lib/server/prompts/promptRegistry.ts +0 -9
  398. package/src/lib/server/prompts/registerPrompt.ts +0 -6
  399. package/src/lib/server/prompts/renderPromptTemplate.ts +0 -17
  400. package/src/lib/server/prompts/types/Prompt.ts +0 -14
  401. package/src/lib/server/prompts/types/PromptOptions.ts +0 -12
  402. package/src/lib/server/prompts/types/PromptRegistryEntry.ts +0 -13
  403. package/src/lib/server/prompts/types/PromptRoutes.ts +0 -10
  404. package/src/lib/server/redirect.ts +0 -43
  405. package/src/lib/server/render.ts +0 -70
  406. package/src/lib/server/request.ts +0 -19
  407. package/src/lib/server/rpc/defineRpc.ts +0 -271
  408. package/src/lib/server/rpc/dispatchRpcInProcess.ts +0 -46
  409. package/src/lib/server/rpc/findRpcByCommandName.ts +0 -18
  410. package/src/lib/server/rpc/parseArgs.ts +0 -244
  411. package/src/lib/server/rpc/readBodyWithinLimit.ts +0 -47
  412. package/src/lib/server/rpc/registerRpc.ts +0 -6
  413. package/src/lib/server/rpc/resolveRpcJsonSchema.ts +0 -28
  414. package/src/lib/server/rpc/rpcRegistry.ts +0 -11
  415. package/src/lib/server/rpc/runWithRpcTimeout.ts +0 -58
  416. package/src/lib/server/rpc/types/RemoteHandler.ts +0 -31
  417. package/src/lib/server/rpc/types/RemoteRoutes.ts +0 -13
  418. package/src/lib/server/rpc/types/RpcHelper.ts +0 -185
  419. package/src/lib/server/rpc/types/RpcRegistryEntry.ts +0 -50
  420. package/src/lib/server/rpc/types/TypedError.ts +0 -18
  421. package/src/lib/server/rpc/types/TypedResponse.ts +0 -18
  422. package/src/lib/server/rpc/unprocessed.ts +0 -13
  423. package/src/lib/server/rpc/validationError.ts +0 -17
  424. package/src/lib/server/runtime/DEFAULT_PORT.ts +0 -6
  425. package/src/lib/server/runtime/DEV_READY_MESSAGE.ts +0 -6
  426. package/src/lib/server/runtime/DEV_REBUILD_MESSAGE.ts +0 -4
  427. package/src/lib/server/runtime/DEV_RELOAD_CLIENT_SCRIPT.ts +0 -92
  428. package/src/lib/server/runtime/SSR_SWAP_SCRIPT.ts +0 -19
  429. package/src/lib/server/runtime/STATUS_TEXT.ts +0 -22
  430. package/src/lib/server/runtime/STREAMED_HTML_HEADER.ts +0 -13
  431. package/src/lib/server/runtime/acceptsGzip.ts +0 -33
  432. package/src/lib/server/runtime/amendBroadcaster.ts +0 -53
  433. package/src/lib/server/runtime/buildCacheSnapshot.ts +0 -63
  434. package/src/lib/server/runtime/buildHealthPayload.ts +0 -34
  435. package/src/lib/server/runtime/buildInFlightSnapshot.ts +0 -35
  436. package/src/lib/server/runtime/buildInspectorSurface.ts +0 -47
  437. package/src/lib/server/runtime/buildOpenApiSpec.ts +0 -150
  438. package/src/lib/server/runtime/buildPreloadManifest.ts +0 -153
  439. package/src/lib/server/runtime/cacheControlForAsset.ts +0 -22
  440. package/src/lib/server/runtime/cacheStalenessBroadcaster.ts +0 -33
  441. package/src/lib/server/runtime/containsTraversal.ts +0 -41
  442. package/src/lib/server/runtime/createAppAssetServer.ts +0 -100
  443. package/src/lib/server/runtime/createAppRouteResolver.ts +0 -145
  444. package/src/lib/server/runtime/createAssetHeaderCache.ts +0 -31
  445. package/src/lib/server/runtime/createPlumbingRouter.ts +0 -212
  446. package/src/lib/server/runtime/createPublicAssetServer.ts +0 -76
  447. package/src/lib/server/runtime/createRouteDispatcher.ts +0 -121
  448. package/src/lib/server/runtime/createServer.ts +0 -605
  449. package/src/lib/server/runtime/createUiPageRenderer.ts +0 -489
  450. package/src/lib/server/runtime/crossOriginForbidden.ts +0 -17
  451. package/src/lib/server/runtime/crossOriginGate.ts +0 -29
  452. package/src/lib/server/runtime/devClientFingerprint.ts +0 -103
  453. package/src/lib/server/runtime/devReloadResponse.ts +0 -41
  454. package/src/lib/server/runtime/disableIdleTimeoutForStream.ts +0 -27
  455. package/src/lib/server/runtime/envSchemaStore.ts +0 -15
  456. package/src/lib/server/runtime/finalizeResponse.ts +0 -42
  457. package/src/lib/server/runtime/findOpenPort.ts +0 -21
  458. package/src/lib/server/runtime/flushingGzipStream.ts +0 -62
  459. package/src/lib/server/runtime/getActiveServer.ts +0 -6
  460. package/src/lib/server/runtime/globToPathSet.ts +0 -29
  461. package/src/lib/server/runtime/gzipResponse.ts +0 -57
  462. package/src/lib/server/runtime/inFlightRequests.ts +0 -13
  463. package/src/lib/server/runtime/inProcessServer.ts +0 -20
  464. package/src/lib/server/runtime/installAmbientScopeStore.ts +0 -54
  465. package/src/lib/server/runtime/internalErrorResponse.ts +0 -28
  466. package/src/lib/server/runtime/isCrossOriginRequest.ts +0 -23
  467. package/src/lib/server/runtime/listenOnOpenPort.ts +0 -36
  468. package/src/lib/server/runtime/logExposedSurfaces.ts +0 -156
  469. package/src/lib/server/runtime/maybeMountInspector.ts +0 -104
  470. package/src/lib/server/runtime/mimeForExtension.ts +0 -14
  471. package/src/lib/server/runtime/pageRenderSlot.ts +0 -15
  472. package/src/lib/server/runtime/pageUrlFromStore.ts +0 -15
  473. package/src/lib/server/runtime/parseIdleTimeout.ts +0 -10
  474. package/src/lib/server/runtime/parsePort.ts +0 -11
  475. package/src/lib/server/runtime/pathStore.ts +0 -15
  476. package/src/lib/server/runtime/registryManifests.ts +0 -66
  477. package/src/lib/server/runtime/renderCellBarrierStore.ts +0 -15
  478. package/src/lib/server/runtime/requestContext.ts +0 -5
  479. package/src/lib/server/runtime/resolvePageSnapshot.ts +0 -25
  480. package/src/lib/server/runtime/respondWithEmbeddedAsset.ts +0 -18
  481. package/src/lib/server/runtime/runWithRequestScope.ts +0 -165
  482. package/src/lib/server/runtime/serializeCacheSnapshot.ts +0 -31
  483. package/src/lib/server/runtime/serverSlot.ts +0 -13
  484. package/src/lib/server/runtime/setActiveServer.ts +0 -6
  485. package/src/lib/server/runtime/snapshotEntryFromCache.ts +0 -121
  486. package/src/lib/server/runtime/streamCacheResolutions.ts +0 -44
  487. package/src/lib/server/runtime/streamFromIterator.ts +0 -124
  488. package/src/lib/server/runtime/textResponse.ts +0 -23
  489. package/src/lib/server/runtime/typedErrorResponse.ts +0 -26
  490. package/src/lib/server/runtime/types/Assets.ts +0 -6
  491. package/src/lib/server/runtime/types/DevReloadStamp.ts +0 -14
  492. package/src/lib/server/runtime/types/InspectorCacheEntry.ts +0 -24
  493. package/src/lib/server/runtime/types/InspectorCacheSnapshot.ts +0 -11
  494. package/src/lib/server/runtime/types/InspectorContext.ts +0 -34
  495. package/src/lib/server/runtime/types/InspectorInFlightRequest.ts +0 -20
  496. package/src/lib/server/runtime/types/InspectorInFlightSnapshot.ts +0 -10
  497. package/src/lib/server/runtime/types/InspectorPrompt.ts +0 -15
  498. package/src/lib/server/runtime/types/InspectorRpc.ts +0 -27
  499. package/src/lib/server/runtime/types/InspectorSocket.ts +0 -17
  500. package/src/lib/server/runtime/types/InspectorSurface.ts +0 -16
  501. package/src/lib/server/runtime/types/RequestStore.ts +0 -125
  502. package/src/lib/server/runtime/warnUnguardedMcp.ts +0 -43
  503. package/src/lib/server/runtime/withResponseDefaults.ts +0 -29
  504. package/src/lib/server/server.ts +0 -33
  505. package/src/lib/server/socket.ts +0 -32
  506. package/src/lib/server/sockets/amendFamilyEntry.ts +0 -39
  507. package/src/lib/server/sockets/createSocketDispatcher.ts +0 -397
  508. package/src/lib/server/sockets/defineSocket.ts +0 -225
  509. package/src/lib/server/sockets/lookupSocket.ts +0 -6
  510. package/src/lib/server/sockets/registerSocket.ts +0 -18
  511. package/src/lib/server/sockets/socketOperations.ts +0 -36
  512. package/src/lib/server/sockets/socketRegistry.ts +0 -9
  513. package/src/lib/server/sockets/types/SocketOperation.ts +0 -22
  514. package/src/lib/server/sockets/types/SocketOptions.ts +0 -26
  515. package/src/lib/server/sockets/types/SocketRegistryEntry.ts +0 -19
  516. package/src/lib/server/sockets/types/SocketRoutes.ts +0 -10
  517. package/src/lib/server/sse.ts +0 -58
  518. package/src/lib/shared/ABIDE_PACKAGE_NAME.ts +0 -7
  519. package/src/lib/shared/ABIDE_VERSION.ts +0 -9
  520. package/src/lib/shared/AMEND_TOPIC_PREFIX.ts +0 -9
  521. package/src/lib/shared/ASYNC_CELL.ts +0 -5
  522. package/src/lib/shared/CACHE_CONTROL_VALUES.ts +0 -16
  523. package/src/lib/shared/CACHE_STALENESS_SOCKET.ts +0 -8
  524. package/src/lib/shared/CLI_PATH.ts +0 -7
  525. package/src/lib/shared/DEFER.ts +0 -8
  526. package/src/lib/shared/DEV_REBUILD_PATH.ts +0 -6
  527. package/src/lib/shared/DEV_RELOAD_PATH.ts +0 -6
  528. package/src/lib/shared/HEALTH_PATH.ts +0 -7
  529. package/src/lib/shared/HTTP_METHODS.ts +0 -6
  530. package/src/lib/shared/HttpError.ts +0 -30
  531. package/src/lib/shared/IDENTITY_PATH.ts +0 -6
  532. package/src/lib/shared/INSPECTOR_PATH.ts +0 -7
  533. package/src/lib/shared/MCP_PATH.ts +0 -6
  534. package/src/lib/shared/NAV_HEADER.ts +0 -8
  535. package/src/lib/shared/OFFLINE_HEADER.ts +0 -8
  536. package/src/lib/shared/PROXIED_SERVER_SUBDIRS.ts +0 -15
  537. package/src/lib/shared/REF_JSON_HEADER.ts +0 -9
  538. package/src/lib/shared/REF_JSON_TAGS.ts +0 -43
  539. package/src/lib/shared/REMOTE_FUNCTION.ts +0 -8
  540. package/src/lib/shared/REPLAYABLE_METHODS.ts +0 -12
  541. package/src/lib/shared/RESERVED_SOCKET_PREFIX.ts +0 -8
  542. package/src/lib/shared/RPC_ARGS_TYPE.ts +0 -7
  543. package/src/lib/shared/RPC_SHIM_GLOBALS.ts +0 -9
  544. package/src/lib/shared/SEEDS.ts +0 -33
  545. package/src/lib/shared/SOCKETS_PATH.ts +0 -7
  546. package/src/lib/shared/SOCKET_SEED.ts +0 -12
  547. package/src/lib/shared/SSR_SCRIPT_ID.ts +0 -11
  548. package/src/lib/shared/STREAMING_CONTENT_TYPES.ts +0 -12
  549. package/src/lib/shared/SocketDisconnectedError.ts +0 -13
  550. package/src/lib/shared/TEXT_PLAIN.ts +0 -7
  551. package/src/lib/shared/abideImportName.ts +0 -44
  552. package/src/lib/shared/abideLog.ts +0 -38
  553. package/src/lib/shared/activeCacheStore.ts +0 -12
  554. package/src/lib/shared/activePage.ts +0 -12
  555. package/src/lib/shared/amend.ts +0 -48
  556. package/src/lib/shared/amendBroadcastSlot.ts +0 -19
  557. package/src/lib/shared/appDataDir.ts +0 -34
  558. package/src/lib/shared/appNameSlot.ts +0 -10
  559. package/src/lib/shared/applyAmendLocally.ts +0 -20
  560. package/src/lib/shared/applyCacheStalenessLocally.ts +0 -18
  561. package/src/lib/shared/assertExhaustive.ts +0 -14
  562. package/src/lib/shared/attachRpcSelectorMethods.ts +0 -44
  563. package/src/lib/shared/attachSocketSelectorMethods.ts +0 -34
  564. package/src/lib/shared/augmentModule.ts +0 -18
  565. package/src/lib/shared/basePath.ts +0 -11
  566. package/src/lib/shared/basePathFromAppUrl.ts +0 -20
  567. package/src/lib/shared/baseSlot.ts +0 -9
  568. package/src/lib/shared/binaryDirEnvPath.ts +0 -12
  569. package/src/lib/shared/bodyValueForKind.ts +0 -34
  570. package/src/lib/shared/browserClientFlags.ts +0 -10
  571. package/src/lib/shared/buildArtifact.ts +0 -20
  572. package/src/lib/shared/buildRpcProxy.ts +0 -39
  573. package/src/lib/shared/buildRpcRequest.ts +0 -81
  574. package/src/lib/shared/buildSocketOverChannel.ts +0 -102
  575. package/src/lib/shared/bundleGraphFromMetafile.ts +0 -68
  576. package/src/lib/shared/bundleLayout.ts +0 -36
  577. package/src/lib/shared/cache.ts +0 -1584
  578. package/src/lib/shared/cacheEntryFromSnapshot.ts +0 -77
  579. package/src/lib/shared/cacheManagedSlot.ts +0 -10
  580. package/src/lib/shared/cacheReaderSocketSlot.ts +0 -11
  581. package/src/lib/shared/cacheStalenessSlot.ts +0 -21
  582. package/src/lib/shared/cacheStoreSlot.ts +0 -12
  583. package/src/lib/shared/cacheStores.ts +0 -10
  584. package/src/lib/shared/canonicalJson.ts +0 -86
  585. package/src/lib/shared/carriesBodyArgs.ts +0 -13
  586. package/src/lib/shared/changeAffectsClient.ts +0 -40
  587. package/src/lib/shared/clearLastConnection.ts +0 -7
  588. package/src/lib/shared/commandNameForUrl.ts +0 -17
  589. package/src/lib/shared/contentBodyKind.ts +0 -27
  590. package/src/lib/shared/contentTypeOf.ts +0 -6
  591. package/src/lib/shared/createCacheStore.ts +0 -147
  592. package/src/lib/shared/createChannelLog.ts +0 -146
  593. package/src/lib/shared/createLifecycleChannel.ts +0 -62
  594. package/src/lib/shared/createLivenessWatch.ts +0 -118
  595. package/src/lib/shared/createPushIterator.ts +0 -132
  596. package/src/lib/shared/createReachable.ts +0 -78
  597. package/src/lib/shared/createRemoteFunction.ts +0 -210
  598. package/src/lib/shared/createResolverSlot.ts +0 -30
  599. package/src/lib/shared/createRpcServerProgram.ts +0 -1007
  600. package/src/lib/shared/createSocketSubRegistry.ts +0 -112
  601. package/src/lib/shared/createSubscriber.ts +0 -55
  602. package/src/lib/shared/createTraceContext.ts +0 -21
  603. package/src/lib/shared/dataDirEnvPath.ts +0 -12
  604. package/src/lib/shared/debugGate.ts +0 -90
  605. package/src/lib/shared/decodeRefJson.ts +0 -112
  606. package/src/lib/shared/decodeResponse.ts +0 -54
  607. package/src/lib/shared/decodeWireBody.ts +0 -35
  608. package/src/lib/shared/detectRpcMethod.ts +0 -24
  609. package/src/lib/shared/detectTarget.ts +0 -27
  610. package/src/lib/shared/docSnapshotsSlot.ts +0 -13
  611. package/src/lib/shared/done.ts +0 -20
  612. package/src/lib/shared/emitLogRecord.ts +0 -217
  613. package/src/lib/shared/encodeRefJson.ts +0 -108
  614. package/src/lib/shared/encodeSeedValue.ts +0 -24
  615. package/src/lib/shared/encodeWireBody.ts +0 -18
  616. package/src/lib/shared/escapeHtml.ts +0 -15
  617. package/src/lib/shared/escapeRegex.ts +0 -9
  618. package/src/lib/shared/exeSuffix.ts +0 -9
  619. package/src/lib/shared/exitOnBuildFailure.ts +0 -18
  620. package/src/lib/shared/extraForwardHeaders.ts +0 -16
  621. package/src/lib/shared/fieldErrorsFromIssues.ts +0 -27
  622. package/src/lib/shared/fileName.ts +0 -9
  623. package/src/lib/shared/fileStem.ts +0 -11
  624. package/src/lib/shared/findExportCallSite.ts +0 -233
  625. package/src/lib/shared/formatTraceparent.ts +0 -6
  626. package/src/lib/shared/forwardHeaders.ts +0 -44
  627. package/src/lib/shared/generateDeclarations.ts +0 -72
  628. package/src/lib/shared/getRemoteMeta.ts +0 -5
  629. package/src/lib/shared/hasSeedableRequest.ts +0 -25
  630. package/src/lib/shared/health.ts +0 -179
  631. package/src/lib/shared/healthReadSlot.ts +0 -11
  632. package/src/lib/shared/healthSeedSlot.ts +0 -12
  633. package/src/lib/shared/html.ts +0 -19
  634. package/src/lib/shared/httpErrorFor.ts +0 -26
  635. package/src/lib/shared/hydrationWindow.ts +0 -53
  636. package/src/lib/shared/importNamesToStrip.ts +0 -13
  637. package/src/lib/shared/invalidate.ts +0 -39
  638. package/src/lib/shared/invalidateEvent.ts +0 -11
  639. package/src/lib/shared/invalidateTripwire.ts +0 -40
  640. package/src/lib/shared/isAbideHealthPayload.ts +0 -11
  641. package/src/lib/shared/isAsciiWhitespace.ts +0 -5
  642. package/src/lib/shared/isAsyncCell.ts +0 -11
  643. package/src/lib/shared/isAsyncIterable.ts +0 -8
  644. package/src/lib/shared/isCompileTarget.ts +0 -21
  645. package/src/lib/shared/isDebugEnabled.ts +0 -19
  646. package/src/lib/shared/isDebugNegated.ts +0 -17
  647. package/src/lib/shared/isIdentPart.ts +0 -9
  648. package/src/lib/shared/isIdentStart.ts +0 -8
  649. package/src/lib/shared/isLayoutFile.ts +0 -12
  650. package/src/lib/shared/isModuleNotFound.ts +0 -18
  651. package/src/lib/shared/isReadOnlyMethod.ts +0 -14
  652. package/src/lib/shared/isReplayableMethod.ts +0 -7
  653. package/src/lib/shared/isStreamingResponse.ts +0 -12
  654. package/src/lib/shared/isSubscribable.ts +0 -15
  655. package/src/lib/shared/isThenable.ts +0 -9
  656. package/src/lib/shared/jsonSchemaForPromptArguments.ts +0 -29
  657. package/src/lib/shared/jsonSchemaForSchema.ts +0 -39
  658. package/src/lib/shared/jsonSchemaForType.ts +0 -245
  659. package/src/lib/shared/jsonlErrorFrame.ts +0 -24
  660. package/src/lib/shared/keyForRemoteCall.ts +0 -30
  661. package/src/lib/shared/keyMatchesPrefix.ts +0 -9
  662. package/src/lib/shared/keyPrefixForRemote.ts +0 -12
  663. package/src/lib/shared/lastConnectionPath.ts +0 -7
  664. package/src/lib/shared/layoutChainForRoute.ts +0 -22
  665. package/src/lib/shared/lenientDecode.ts +0 -15
  666. package/src/lib/shared/loadEnvFile.ts +0 -17
  667. package/src/lib/shared/loadEnvFromDataDir.ts +0 -14
  668. package/src/lib/shared/loadProjectTsConfig.ts +0 -28
  669. package/src/lib/shared/log.ts +0 -24
  670. package/src/lib/shared/logClosingRecord.ts +0 -28
  671. package/src/lib/shared/logTapSlot.ts +0 -13
  672. package/src/lib/shared/manifestModule.ts +0 -39
  673. package/src/lib/shared/markFrameworkSourcesIgnored.ts +0 -47
  674. package/src/lib/shared/matchRoute.ts +0 -165
  675. package/src/lib/shared/matcherFromEnvelope.ts +0 -31
  676. package/src/lib/shared/memoizeByKey.ts +0 -32
  677. package/src/lib/shared/messageFromError.ts +0 -6
  678. package/src/lib/shared/normalizePathname.ts +0 -11
  679. package/src/lib/shared/normalizeTarget.ts +0 -10
  680. package/src/lib/shared/online.ts +0 -51
  681. package/src/lib/shared/page.ts +0 -30
  682. package/src/lib/shared/pageSlot.ts +0 -17
  683. package/src/lib/shared/pageUrlForFile.ts +0 -14
  684. package/src/lib/shared/parseBoundedEnvInt.ts +0 -20
  685. package/src/lib/shared/parseEnv.ts +0 -41
  686. package/src/lib/shared/parsePromptMarkdown.ts +0 -35
  687. package/src/lib/shared/parseRouteSegments.ts +0 -31
  688. package/src/lib/shared/parseTraceparent.ts +0 -26
  689. package/src/lib/shared/peek.ts +0 -46
  690. package/src/lib/shared/pending.ts +0 -36
  691. package/src/lib/shared/pendingAsyncCellsSlot.ts +0 -13
  692. package/src/lib/shared/prepareRemoteExport.ts +0 -40
  693. package/src/lib/shared/prepareRpcModule.ts +0 -240
  694. package/src/lib/shared/prepareSocketModule.ts +0 -46
  695. package/src/lib/shared/probeRegistries.ts +0 -68
  696. package/src/lib/shared/producerKey.ts +0 -32
  697. package/src/lib/shared/programNameForPackage.ts +0 -16
  698. package/src/lib/shared/promptNameForFile.ts +0 -10
  699. package/src/lib/shared/queryStringFromArgs.ts +0 -38
  700. package/src/lib/shared/randomHexId.ts +0 -14
  701. package/src/lib/shared/reachable.ts +0 -99
  702. package/src/lib/shared/readEnvFile.ts +0 -15
  703. package/src/lib/shared/readLastConnection.ts +0 -18
  704. package/src/lib/shared/readPackageJson.ts +0 -9
  705. package/src/lib/shared/recordRemoteMeta.ts +0 -5
  706. package/src/lib/shared/refresh.ts +0 -39
  707. package/src/lib/shared/refreshing.ts +0 -37
  708. package/src/lib/shared/remoteMetaStore.ts +0 -16
  709. package/src/lib/shared/requestScopeSlot.ts +0 -13
  710. package/src/lib/shared/resolveClientFlags.ts +0 -20
  711. package/src/lib/shared/resolvedCellsSlot.ts +0 -13
  712. package/src/lib/shared/responseBodyKind.ts +0 -35
  713. package/src/lib/shared/responseErrorText.ts +0 -9
  714. package/src/lib/shared/reviveWireField.ts +0 -49
  715. package/src/lib/shared/reviveWireOutput.ts +0 -36
  716. package/src/lib/shared/routeParamsShape.ts +0 -20
  717. package/src/lib/shared/rpcErrorRegistry.ts +0 -69
  718. package/src/lib/shared/rpcServerForRoot.ts +0 -25
  719. package/src/lib/shared/rpcTimeoutSlot.ts +0 -9
  720. package/src/lib/shared/rpcUrlForFile.ts +0 -19
  721. package/src/lib/shared/runningAsStandaloneBinary.ts +0 -13
  722. package/src/lib/shared/safeJsonForScript.ts +0 -17
  723. package/src/lib/shared/scanPages.ts +0 -25
  724. package/src/lib/shared/selectorMatcher.ts +0 -55
  725. package/src/lib/shared/selectorPrefix.ts +0 -32
  726. package/src/lib/shared/serializeEnv.ts +0 -30
  727. package/src/lib/shared/serializeSelector.ts +0 -69
  728. package/src/lib/shared/setAppName.ts +0 -5
  729. package/src/lib/shared/setOwnProperty.ts +0 -19
  730. package/src/lib/shared/setsIntersect.ts +0 -15
  731. package/src/lib/shared/sharedCacheStore.ts +0 -14
  732. package/src/lib/shared/sharedCacheStoreSlot.ts +0 -10
  733. package/src/lib/shared/skipNonCode.ts +0 -230
  734. package/src/lib/shared/snapshotShippable.ts +0 -23
  735. package/src/lib/shared/snippet.ts +0 -30
  736. package/src/lib/shared/socketNameForFile.ts +0 -11
  737. package/src/lib/shared/socketTailsSlot.ts +0 -13
  738. package/src/lib/shared/socketTapSlot.ts +0 -12
  739. package/src/lib/shared/sseErrorFrame.ts +0 -29
  740. package/src/lib/shared/streamResponse.ts +0 -180
  741. package/src/lib/shared/streamedCellsSlot.ts +0 -14
  742. package/src/lib/shared/stripImport.ts +0 -29
  743. package/src/lib/shared/subscribableFromResponse.ts +0 -51
  744. package/src/lib/shared/subscribableProbes.ts +0 -111
  745. package/src/lib/shared/tailProbeSlot.ts +0 -23
  746. package/src/lib/shared/toTagSet.ts +0 -4
  747. package/src/lib/shared/trace.ts +0 -16
  748. package/src/lib/shared/types/AmendApply.ts +0 -15
  749. package/src/lib/shared/types/AsyncComputed.ts +0 -20
  750. package/src/lib/shared/types/AsyncState.ts +0 -13
  751. package/src/lib/shared/types/CacheEntry.ts +0 -100
  752. package/src/lib/shared/types/CacheInvalidation.ts +0 -9
  753. package/src/lib/shared/types/CacheOnContext.ts +0 -15
  754. package/src/lib/shared/types/CacheOptions.ts +0 -53
  755. package/src/lib/shared/types/CachePolicy.ts +0 -31
  756. package/src/lib/shared/types/CacheReaderHook.ts +0 -11
  757. package/src/lib/shared/types/CacheSelector.ts +0 -17
  758. package/src/lib/shared/types/CacheSnapshotEntry.ts +0 -32
  759. package/src/lib/shared/types/CacheStalenessApply.ts +0 -13
  760. package/src/lib/shared/types/CacheStalenessFrame.ts +0 -24
  761. package/src/lib/shared/types/CacheStats.ts +0 -13
  762. package/src/lib/shared/types/CacheStore.ts +0 -45
  763. package/src/lib/shared/types/ChannelLog.ts +0 -13
  764. package/src/lib/shared/types/ClientFlags.ts +0 -13
  765. package/src/lib/shared/types/CompileTarget.ts +0 -6
  766. package/src/lib/shared/types/DebugGate.ts +0 -10
  767. package/src/lib/shared/types/DocSnapshots.ts +0 -12
  768. package/src/lib/shared/types/ErrorJsonSchemas.ts +0 -8
  769. package/src/lib/shared/types/ErrorSpec.ts +0 -11
  770. package/src/lib/shared/types/FrameworkLog.ts +0 -13
  771. package/src/lib/shared/types/HttpMethod.ts +0 -3
  772. package/src/lib/shared/types/InputCoercion.ts +0 -17
  773. package/src/lib/shared/types/LastConnection.ts +0 -9
  774. package/src/lib/shared/types/Log.ts +0 -13
  775. package/src/lib/shared/types/LogRecord.ts +0 -42
  776. package/src/lib/shared/types/LogVoice.ts +0 -7
  777. package/src/lib/shared/types/NamedAsyncIterable.ts +0 -26
  778. package/src/lib/shared/types/OutputWirePlan.ts +0 -17
  779. package/src/lib/shared/types/PageSnapshot.ts +0 -14
  780. package/src/lib/shared/types/PagesScan.ts +0 -7
  781. package/src/lib/shared/types/PendingAsyncCells.ts +0 -10
  782. package/src/lib/shared/types/PromptArgument.ts +0 -12
  783. package/src/lib/shared/types/RawRemoteFunction.ts +0 -20
  784. package/src/lib/shared/types/RemoteCallable.ts +0 -40
  785. package/src/lib/shared/types/RemoteFunction.ts +0 -116
  786. package/src/lib/shared/types/ReplayableMethod.ts +0 -7
  787. package/src/lib/shared/types/RequestScopeInfo.ts +0 -16
  788. package/src/lib/shared/types/ResolvedCells.ts +0 -11
  789. package/src/lib/shared/types/ResolverSlot.ts +0 -13
  790. package/src/lib/shared/types/ReturnBody.ts +0 -15
  791. package/src/lib/shared/types/RpcBuildStamps.ts +0 -32
  792. package/src/lib/shared/types/RpcError.ts +0 -26
  793. package/src/lib/shared/types/RpcErrorGuard.ts +0 -35
  794. package/src/lib/shared/types/RpcInvoker.ts +0 -6
  795. package/src/lib/shared/types/RpcOptions.ts +0 -22
  796. package/src/lib/shared/types/Socket.ts +0 -54
  797. package/src/lib/shared/types/SocketChannel.ts +0 -17
  798. package/src/lib/shared/types/SocketClientFrame.ts +0 -19
  799. package/src/lib/shared/types/SocketServerFrame.ts +0 -24
  800. package/src/lib/shared/types/SocketSubCallbacks.ts +0 -13
  801. package/src/lib/shared/types/SocketTails.ts +0 -13
  802. package/src/lib/shared/types/SourceMap.ts +0 -14
  803. package/src/lib/shared/types/SsrBootState.ts +0 -27
  804. package/src/lib/shared/types/SsrPayload.ts +0 -36
  805. package/src/lib/shared/types/StandardSchemaV1.ts +0 -56
  806. package/src/lib/shared/types/StreamPolicy.ts +0 -11
  807. package/src/lib/shared/types/StreamedCells.ts +0 -19
  808. package/src/lib/shared/types/StreamedResolution.ts +0 -28
  809. package/src/lib/shared/types/TailHooks.ts +0 -13
  810. package/src/lib/shared/types/TraceContext.ts +0 -17
  811. package/src/lib/shared/types/ValidationErrorData.ts +0 -20
  812. package/src/lib/shared/types/WireKind.ts +0 -11
  813. package/src/lib/shared/url.ts +0 -141
  814. package/src/lib/shared/validationHttpError.ts +0 -33
  815. package/src/lib/shared/warmSeedKey.ts +0 -16
  816. package/src/lib/shared/wireJsonReplacer.ts +0 -30
  817. package/src/lib/shared/withBase.ts +0 -10
  818. package/src/lib/shared/withBaseUrl.ts +0 -17
  819. package/src/lib/shared/withCacheManaged.ts +0 -18
  820. package/src/lib/shared/withJsonSchema.ts +0 -21
  821. package/src/lib/shared/writeDts.ts +0 -19
  822. package/src/lib/shared/writeHealthDts.ts +0 -36
  823. package/src/lib/shared/writeLastConnection.ts +0 -13
  824. package/src/lib/shared/writePublicAssetsDts.ts +0 -27
  825. package/src/lib/shared/writeRoutesDts.ts +0 -41
  826. package/src/lib/shared/writeRpcDts.ts +0 -60
  827. package/src/lib/shared/writeTestRpcDts.ts +0 -45
  828. package/src/lib/shared/writeTestSocketsDts.ts +0 -34
  829. package/src/lib/test/assertAgentFrameConformance.ts +0 -73
  830. package/src/lib/test/createScriptedSurface.ts +0 -45
  831. package/src/lib/test/createTestApp.ts +0 -242
  832. package/src/lib/test/createTestSocketChannel.ts +0 -85
  833. package/src/lib/ui/README.md +0 -86
  834. package/src/lib/ui/activePendingCells.ts +0 -14
  835. package/src/lib/ui/amendReaderHook.ts +0 -125
  836. package/src/lib/ui/compile/ABIDE_SEMANTIC_TOKENS_LEGEND.ts +0 -79
  837. package/src/lib/ui/compile/AbideCompileError.ts +0 -16
  838. package/src/lib/ui/compile/BLOCK_KEYWORDS.ts +0 -21
  839. package/src/lib/ui/compile/SSR_ESCAPE.ts +0 -40
  840. package/src/lib/ui/compile/TS_PRINTER.ts +0 -7
  841. package/src/lib/ui/compile/UI_RUNTIME_IMPORTS.ts +0 -86
  842. package/src/lib/ui/compile/VOID_TAGS.ts +0 -22
  843. package/src/lib/ui/compile/abideUiPlugin.ts +0 -109
  844. package/src/lib/ui/compile/analyzeComponent.ts +0 -222
  845. package/src/lib/ui/compile/asOutlet.ts +0 -30
  846. package/src/lib/ui/compile/assertTranspiles.ts +0 -19
  847. package/src/lib/ui/compile/assetModulesFile.ts +0 -32
  848. package/src/lib/ui/compile/assignmentTargetNames.ts +0 -54
  849. package/src/lib/ui/compile/asyncInterpolationFields.ts +0 -152
  850. package/src/lib/ui/compile/asyncValuePositionError.ts +0 -21
  851. package/src/lib/ui/compile/asyncValuePositionInterpolations.ts +0 -64
  852. package/src/lib/ui/compile/attrLiftPosition.ts +0 -18
  853. package/src/lib/ui/compile/awaitPlan.ts +0 -60
  854. package/src/lib/ui/compile/awaitSubjectExpr.ts +0 -23
  855. package/src/lib/ui/compile/bindListenEvent.ts +0 -18
  856. package/src/lib/ui/compile/cachedShadowProgram.ts +0 -39
  857. package/src/lib/ui/compile/cachedSourceFile.ts +0 -40
  858. package/src/lib/ui/compile/catchBinding.ts +0 -10
  859. package/src/lib/ui/compile/classStyleMergePlan.ts +0 -108
  860. package/src/lib/ui/compile/classifyInterpolationType.ts +0 -46
  861. package/src/lib/ui/compile/collectAbideDiagnostics.ts +0 -166
  862. package/src/lib/ui/compile/compileComponent.ts +0 -46
  863. package/src/lib/ui/compile/compileModule.ts +0 -306
  864. package/src/lib/ui/compile/compileSSR.ts +0 -119
  865. package/src/lib/ui/compile/compileShadow.ts +0 -1326
  866. package/src/lib/ui/compile/componentOrdinals.ts +0 -39
  867. package/src/lib/ui/compile/composeProps.ts +0 -64
  868. package/src/lib/ui/compile/createShadowLanguageService.ts +0 -348
  869. package/src/lib/ui/compile/createShadowProgram.ts +0 -127
  870. package/src/lib/ui/compile/createShadowScope.ts +0 -42
  871. package/src/lib/ui/compile/declaredNames.ts +0 -36
  872. package/src/lib/ui/compile/decodeHtmlEntities.ts +0 -53
  873. package/src/lib/ui/compile/destructureBindingNames.ts +0 -38
  874. package/src/lib/ui/compile/desugarSignals.ts +0 -1113
  875. package/src/lib/ui/compile/eachPlan.ts +0 -61
  876. package/src/lib/ui/compile/elementPlan.ts +0 -55
  877. package/src/lib/ui/compile/encodeSemanticTokens.ts +0 -60
  878. package/src/lib/ui/compile/expressionIsPrefixEvaluable.ts +0 -19
  879. package/src/lib/ui/compile/generateBuild.ts +0 -903
  880. package/src/lib/ui/compile/generateSSR.ts +0 -973
  881. package/src/lib/ui/compile/groupBindParts.ts +0 -28
  882. package/src/lib/ui/compile/hasTopLevelAwait.ts +0 -28
  883. package/src/lib/ui/compile/hoistCells.ts +0 -120
  884. package/src/lib/ui/compile/hoistableAwaits.ts +0 -183
  885. package/src/lib/ui/compile/hoistableChildRenders.ts +0 -112
  886. package/src/lib/ui/compile/identifierReferencePattern.ts +0 -13
  887. package/src/lib/ui/compile/ifPlan.ts +0 -36
  888. package/src/lib/ui/compile/interpolatedTemplateLiteral.ts +0 -27
  889. package/src/lib/ui/compile/interpolationClassifierForRoot.ts +0 -32
  890. package/src/lib/ui/compile/isAnchorPositioned.ts +0 -19
  891. package/src/lib/ui/compile/isControlFlow.ts +0 -20
  892. package/src/lib/ui/compile/isFunctionScopeBoundary.ts +0 -20
  893. package/src/lib/ui/compile/isPlainIdentifier.ts +0 -7
  894. package/src/lib/ui/compile/isSpuriousAsyncReadDiagnostic.ts +0 -215
  895. package/src/lib/ui/compile/isTextLeaf.ts +0 -16
  896. package/src/lib/ui/compile/isWhitespaceText.ts +0 -19
  897. package/src/lib/ui/compile/liftAsyncSubExpressions.ts +0 -166
  898. package/src/lib/ui/compile/liftScriptSeed.ts +0 -47
  899. package/src/lib/ui/compile/loadShadowTsConfig.ts +0 -31
  900. package/src/lib/ui/compile/lowerAsyncInterpolations.ts +0 -92
  901. package/src/lib/ui/compile/lowerCompoundAssignment.ts +0 -49
  902. package/src/lib/ui/compile/lowerContext.ts +0 -167
  903. package/src/lib/ui/compile/lowerDocAccess.ts +0 -302
  904. package/src/lib/ui/compile/lowerScript.ts +0 -190
  905. package/src/lib/ui/compile/lowerUpdateExpression.ts +0 -32
  906. package/src/lib/ui/compile/makeVarNamer.ts +0 -10
  907. package/src/lib/ui/compile/nearestProjectRoot.ts +0 -16
  908. package/src/lib/ui/compile/nodeAtShadowOffset.ts +0 -28
  909. package/src/lib/ui/compile/offsetToLineColumn.ts +0 -16
  910. package/src/lib/ui/compile/offsetToPosition.ts +0 -9
  911. package/src/lib/ui/compile/pagePropsType.ts +0 -23
  912. package/src/lib/ui/compile/parseTemplate.ts +0 -25
  913. package/src/lib/ui/compile/parseTemplateRecovering.ts +0 -1385
  914. package/src/lib/ui/compile/prepareNestedScript.ts +0 -62
  915. package/src/lib/ui/compile/reactiveBinding.ts +0 -47
  916. package/src/lib/ui/compile/referencedIdentifiers.ts +0 -35
  917. package/src/lib/ui/compile/remapShadowDiagnostic.ts +0 -30
  918. package/src/lib/ui/compile/renameSignalRefs.ts +0 -425
  919. package/src/lib/ui/compile/resolveAbideImports.ts +0 -29
  920. package/src/lib/ui/compile/resolveBranches.ts +0 -21
  921. package/src/lib/ui/compile/resolveReactiveExport.ts +0 -92
  922. package/src/lib/ui/compile/scopeAttr.ts +0 -9
  923. package/src/lib/ui/compile/scopeCss.ts +0 -138
  924. package/src/lib/ui/compile/seedTypeClassifierForRoot.ts +0 -60
  925. package/src/lib/ui/compile/shadowInterpolationClassifier.ts +0 -47
  926. package/src/lib/ui/compile/shadowNaming.ts +0 -11
  927. package/src/lib/ui/compile/signalCallee.ts +0 -24
  928. package/src/lib/ui/compile/skeletonContext.ts +0 -133
  929. package/src/lib/ui/compile/skeletonable.ts +0 -68
  930. package/src/lib/ui/compile/snippetPlan.ts +0 -28
  931. package/src/lib/ui/compile/sourceFileOptionsSignature.ts +0 -20
  932. package/src/lib/ui/compile/sourceToShadowOffset.ts +0 -24
  933. package/src/lib/ui/compile/spreadExcludedNames.ts +0 -27
  934. package/src/lib/ui/compile/staticAttr.ts +0 -11
  935. package/src/lib/ui/compile/staticAttrValue.ts +0 -13
  936. package/src/lib/ui/compile/staticTextPart.ts +0 -12
  937. package/src/lib/ui/compile/stripEffects.ts +0 -48
  938. package/src/lib/ui/compile/structuralHeadTokens.ts +0 -107
  939. package/src/lib/ui/compile/switchPlan.ts +0 -28
  940. package/src/lib/ui/compile/templateAnchorAdapter.ts +0 -61
  941. package/src/lib/ui/compile/templateElementAdapter.ts +0 -44
  942. package/src/lib/ui/compile/templateSemanticTokens.ts +0 -21
  943. package/src/lib/ui/compile/templateStartOffset.ts +0 -15
  944. package/src/lib/ui/compile/tryPlan.ts +0 -37
  945. package/src/lib/ui/compile/types/AbideDiagnostic.ts +0 -14
  946. package/src/lib/ui/compile/types/AnalyzedComponent.ts +0 -42
  947. package/src/lib/ui/compile/types/AsyncInterpolationField.ts +0 -19
  948. package/src/lib/ui/compile/types/Binding.ts +0 -24
  949. package/src/lib/ui/compile/types/CompiledShadow.ts +0 -27
  950. package/src/lib/ui/compile/types/ElementPlan.ts +0 -43
  951. package/src/lib/ui/compile/types/InterpolationClassifier.ts +0 -12
  952. package/src/lib/ui/compile/types/InterpolationKind.ts +0 -7
  953. package/src/lib/ui/compile/types/ParseDiagnostic.ts +0 -8
  954. package/src/lib/ui/compile/types/SeedTypeClassifier.ts +0 -15
  955. package/src/lib/ui/compile/types/SemanticToken.ts +0 -11
  956. package/src/lib/ui/compile/types/ShadowKind.ts +0 -9
  957. package/src/lib/ui/compile/types/ShadowScope.ts +0 -19
  958. package/src/lib/ui/compile/types/SkeletonContext.ts +0 -21
  959. package/src/lib/ui/compile/types/TemplateAttr.ts +0 -34
  960. package/src/lib/ui/compile/types/TemplateNode.ts +0 -137
  961. package/src/lib/ui/compile/types/TextPart.ts +0 -8
  962. package/src/lib/ui/compile/types/ValuePositionInterpolation.ts +0 -13
  963. package/src/lib/ui/compile/unwrapParens.ts +0 -10
  964. package/src/lib/ui/compile/walkAnchorOrder.ts +0 -57
  965. package/src/lib/ui/compile/walkElementOrder.ts +0 -60
  966. package/src/lib/ui/compile/withBindings.ts +0 -45
  967. package/src/lib/ui/compile/wrapReactionCellSources.ts +0 -121
  968. package/src/lib/ui/compile/wrapReactiveSeeds.ts +0 -44
  969. package/src/lib/ui/compile/wrapSeed.ts +0 -28
  970. package/src/lib/ui/compile/writtenTemplateNames.ts +0 -84
  971. package/src/lib/ui/computed.ts +0 -75
  972. package/src/lib/ui/createScope.ts +0 -157
  973. package/src/lib/ui/dom/MATHML_NAMESPACE.ts +0 -6
  974. package/src/lib/ui/dom/SVG_NAMESPACE.ts +0 -8
  975. package/src/lib/ui/dom/adoptRange.ts +0 -27
  976. package/src/lib/ui/dom/anchorCursor.ts +0 -25
  977. package/src/lib/ui/dom/anchoredBranch.ts +0 -153
  978. package/src/lib/ui/dom/appendSnippet.ts +0 -75
  979. package/src/lib/ui/dom/appendStatic.ts +0 -26
  980. package/src/lib/ui/dom/appendText.ts +0 -160
  981. package/src/lib/ui/dom/appendTextAt.ts +0 -39
  982. package/src/lib/ui/dom/assertClaimedText.ts +0 -30
  983. package/src/lib/ui/dom/attach.ts +0 -25
  984. package/src/lib/ui/dom/attr.ts +0 -57
  985. package/src/lib/ui/dom/awaitBlock.ts +0 -314
  986. package/src/lib/ui/dom/awaitSubject.ts +0 -118
  987. package/src/lib/ui/dom/bindProp.ts +0 -22
  988. package/src/lib/ui/dom/bindSelectValue.ts +0 -48
  989. package/src/lib/ui/dom/bindableProp.ts +0 -47
  990. package/src/lib/ui/dom/buildDetachedRange.ts +0 -31
  991. package/src/lib/ui/dom/cellPending.ts +0 -24
  992. package/src/lib/ui/dom/claimText.ts +0 -38
  993. package/src/lib/ui/dom/clearBetween.ts +0 -16
  994. package/src/lib/ui/dom/cloneStatic.ts +0 -69
  995. package/src/lib/ui/dom/commentData.ts +0 -14
  996. package/src/lib/ui/dom/depthZeroNodes.ts +0 -34
  997. package/src/lib/ui/dom/discardAndRebuild.ts +0 -23
  998. package/src/lib/ui/dom/discardBoundary.ts +0 -46
  999. package/src/lib/ui/dom/disposeRange.ts +0 -18
  1000. package/src/lib/ui/dom/domAnchorAdapter.ts +0 -29
  1001. package/src/lib/ui/dom/domElementAdapter.ts +0 -20
  1002. package/src/lib/ui/dom/each.ts +0 -253
  1003. package/src/lib/ui/dom/eachAsync.ts +0 -188
  1004. package/src/lib/ui/dom/effectiveChildNamespace.ts +0 -13
  1005. package/src/lib/ui/dom/enterNamespace.ts +0 -20
  1006. package/src/lib/ui/dom/fillBefore.ts +0 -42
  1007. package/src/lib/ui/dom/fillBoundary.ts +0 -38
  1008. package/src/lib/ui/dom/fillRange.ts +0 -30
  1009. package/src/lib/ui/dom/foreignWrapperTag.ts +0 -22
  1010. package/src/lib/ui/dom/hydrate.ts +0 -34
  1011. package/src/lib/ui/dom/inheritedNamespace.ts +0 -19
  1012. package/src/lib/ui/dom/isComment.ts +0 -6
  1013. package/src/lib/ui/dom/isElement.ts +0 -6
  1014. package/src/lib/ui/dom/markerDepthDelta.ts +0 -19
  1015. package/src/lib/ui/dom/matchingRangeClose.ts +0 -29
  1016. package/src/lib/ui/dom/mergeProps.ts +0 -32
  1017. package/src/lib/ui/dom/mount.ts +0 -30
  1018. package/src/lib/ui/dom/mountChild.ts +0 -129
  1019. package/src/lib/ui/dom/mountRange.ts +0 -48
  1020. package/src/lib/ui/dom/mountSlot.ts +0 -38
  1021. package/src/lib/ui/dom/mountSwappableRange.ts +0 -122
  1022. package/src/lib/ui/dom/moveRange.ts +0 -19
  1023. package/src/lib/ui/dom/mutateDocContainer.ts +0 -65
  1024. package/src/lib/ui/dom/on.ts +0 -33
  1025. package/src/lib/ui/dom/openMarker.ts +0 -22
  1026. package/src/lib/ui/dom/outlet.ts +0 -63
  1027. package/src/lib/ui/dom/parseRawNodes.ts +0 -17
  1028. package/src/lib/ui/dom/readCall.ts +0 -29
  1029. package/src/lib/ui/dom/readCell.ts +0 -55
  1030. package/src/lib/ui/dom/readTextOrSuspend.ts +0 -21
  1031. package/src/lib/ui/dom/removeRange.ts +0 -18
  1032. package/src/lib/ui/dom/replaceRange.ts +0 -24
  1033. package/src/lib/ui/dom/restProps.ts +0 -32
  1034. package/src/lib/ui/dom/skeleton.ts +0 -153
  1035. package/src/lib/ui/dom/spreadAttrs.ts +0 -95
  1036. package/src/lib/ui/dom/spreadProps.ts +0 -31
  1037. package/src/lib/ui/dom/switchBlock.ts +0 -80
  1038. package/src/lib/ui/dom/templateFor.ts +0 -28
  1039. package/src/lib/ui/dom/tryBlock.ts +0 -263
  1040. package/src/lib/ui/dom/types/EachRow.ts +0 -21
  1041. package/src/lib/ui/dom/types/SkeletonHoles.ts +0 -10
  1042. package/src/lib/ui/dom/types/SwitchCase.ts +0 -11
  1043. package/src/lib/ui/dom/when.ts +0 -58
  1044. package/src/lib/ui/dom/withScope.ts +0 -37
  1045. package/src/lib/ui/dom/withSuspense.ts +0 -22
  1046. package/src/lib/ui/dom/writeCell.ts +0 -22
  1047. package/src/lib/ui/effect.ts +0 -24
  1048. package/src/lib/ui/enterScope.ts +0 -18
  1049. package/src/lib/ui/exitScope.ts +0 -8
  1050. package/src/lib/ui/finalizeStreamedChildren.ts +0 -88
  1051. package/src/lib/ui/flight.ts +0 -56
  1052. package/src/lib/ui/html.ts +0 -39
  1053. package/src/lib/ui/isolateCellBarrier.ts +0 -17
  1054. package/src/lib/ui/linked.ts +0 -125
  1055. package/src/lib/ui/navigate.ts +0 -77
  1056. package/src/lib/ui/probeNavigation.ts +0 -33
  1057. package/src/lib/ui/props.ts +0 -17
  1058. package/src/lib/ui/remoteProxy.ts +0 -256
  1059. package/src/lib/ui/renderChain.ts +0 -113
  1060. package/src/lib/ui/renderToStream.ts +0 -128
  1061. package/src/lib/ui/resumeSeedScript.ts +0 -27
  1062. package/src/lib/ui/router.ts +0 -649
  1063. package/src/lib/ui/runtime/AsyncCellError.ts +0 -21
  1064. package/src/lib/ui/runtime/BRANCH_SEGMENT.ts +0 -24
  1065. package/src/lib/ui/runtime/CELL_SEED.ts +0 -12
  1066. package/src/lib/ui/runtime/CHILD_PRESENT.ts +0 -8
  1067. package/src/lib/ui/runtime/CURRENT_BOUNDARY.ts +0 -11
  1068. package/src/lib/ui/runtime/CURRENT_PATH.ts +0 -29
  1069. package/src/lib/ui/runtime/CURRENT_SCOPE.ts +0 -23
  1070. package/src/lib/ui/runtime/DOC_SEED.ts +0 -10
  1071. package/src/lib/ui/runtime/HOLE_ATTRIBUTE.ts +0 -9
  1072. package/src/lib/ui/runtime/NODE_STATE.ts +0 -22
  1073. package/src/lib/ui/runtime/OUTLET_MARKER.ts +0 -10
  1074. package/src/lib/ui/runtime/OUTLET_TAG.ts +0 -7
  1075. package/src/lib/ui/runtime/OWNER.ts +0 -8
  1076. package/src/lib/ui/runtime/PENDING_OUTLET.ts +0 -8
  1077. package/src/lib/ui/runtime/RANGE_MARKER.ts +0 -18
  1078. package/src/lib/ui/runtime/REACTIVE_CONTEXT.ts +0 -20
  1079. package/src/lib/ui/runtime/RENDER.ts +0 -35
  1080. package/src/lib/ui/runtime/REQUEST_SUPERSEDED.ts +0 -8
  1081. package/src/lib/ui/runtime/RESUME.ts +0 -21
  1082. package/src/lib/ui/runtime/SEED_MARKS.ts +0 -14
  1083. package/src/lib/ui/runtime/STREAMED_CELLS.ts +0 -57
  1084. package/src/lib/ui/runtime/SuspenseSignal.ts +0 -24
  1085. package/src/lib/ui/runtime/abortNode.ts +0 -22
  1086. package/src/lib/ui/runtime/ambientPathBacking.ts +0 -32
  1087. package/src/lib/ui/runtime/ambientScopeBacking.ts +0 -26
  1088. package/src/lib/ui/runtime/applyPatchToTree.ts +0 -54
  1089. package/src/lib/ui/runtime/batch.ts +0 -22
  1090. package/src/lib/ui/runtime/blockId.ts +0 -31
  1091. package/src/lib/ui/runtime/boundaryFor.ts +0 -11
  1092. package/src/lib/ui/runtime/cellBarrierBacking.ts +0 -30
  1093. package/src/lib/ui/runtime/claimChild.ts +0 -8
  1094. package/src/lib/ui/runtime/claimExpected.ts +0 -27
  1095. package/src/lib/ui/runtime/claimMarker.ts +0 -13
  1096. package/src/lib/ui/runtime/claimRun.ts +0 -22
  1097. package/src/lib/ui/runtime/clientPage.ts +0 -116
  1098. package/src/lib/ui/runtime/consumeSeed.ts +0 -38
  1099. package/src/lib/ui/runtime/createAsyncCell.ts +0 -358
  1100. package/src/lib/ui/runtime/createComputedNode.ts +0 -19
  1101. package/src/lib/ui/runtime/createDoc.ts +0 -334
  1102. package/src/lib/ui/runtime/createEffectNode.ts +0 -81
  1103. package/src/lib/ui/runtime/createSignalNode.ts +0 -19
  1104. package/src/lib/ui/runtime/currentAbortSignal.ts +0 -26
  1105. package/src/lib/ui/runtime/detachLink.ts +0 -21
  1106. package/src/lib/ui/runtime/endTracking.ts +0 -24
  1107. package/src/lib/ui/runtime/enterRenderPass.ts +0 -13
  1108. package/src/lib/ui/runtime/escapeKey.ts +0 -19
  1109. package/src/lib/ui/runtime/exitRenderPass.ts +0 -7
  1110. package/src/lib/ui/runtime/flushEffects.ts +0 -91
  1111. package/src/lib/ui/runtime/generationGuard.ts +0 -40
  1112. package/src/lib/ui/runtime/historyEntries.ts +0 -151
  1113. package/src/lib/ui/runtime/inScope.ts +0 -19
  1114. package/src/lib/ui/runtime/isAsyncFunction.ts +0 -14
  1115. package/src/lib/ui/runtime/nextBlockId.ts +0 -12
  1116. package/src/lib/ui/runtime/parkCursor.ts +0 -10
  1117. package/src/lib/ui/runtime/pathSegments.ts +0 -10
  1118. package/src/lib/ui/runtime/reactiveAbortState.ts +0 -15
  1119. package/src/lib/ui/runtime/readNode.ts +0 -38
  1120. package/src/lib/ui/runtime/renderPath.ts +0 -16
  1121. package/src/lib/ui/runtime/reportHydrationDivergence.ts +0 -30
  1122. package/src/lib/ui/runtime/routeBareSeed.ts +0 -28
  1123. package/src/lib/ui/runtime/runHydrationPass.ts +0 -69
  1124. package/src/lib/ui/runtime/runNode.ts +0 -75
  1125. package/src/lib/ui/runtime/runtimePath.ts +0 -9
  1126. package/src/lib/ui/runtime/scope.ts +0 -46
  1127. package/src/lib/ui/runtime/scopeGroup.ts +0 -40
  1128. package/src/lib/ui/runtime/toTeardown.ts +0 -38
  1129. package/src/lib/ui/runtime/track.ts +0 -60
  1130. package/src/lib/ui/runtime/trigger.ts +0 -74
  1131. package/src/lib/ui/runtime/types/AbideHistoryState.ts +0 -9
  1132. package/src/lib/ui/runtime/types/Boundary.ts +0 -9
  1133. package/src/lib/ui/runtime/types/Cell.ts +0 -7
  1134. package/src/lib/ui/runtime/types/Computed.ts +0 -3
  1135. package/src/lib/ui/runtime/types/Doc.ts +0 -24
  1136. package/src/lib/ui/runtime/types/EffectResult.ts +0 -10
  1137. package/src/lib/ui/runtime/types/HydrationCursor.ts +0 -8
  1138. package/src/lib/ui/runtime/types/NavVerdict.ts +0 -9
  1139. package/src/lib/ui/runtime/types/Patch.ts +0 -11
  1140. package/src/lib/ui/runtime/types/PathWalk.ts +0 -10
  1141. package/src/lib/ui/runtime/types/ReactiveLink.ts +0 -21
  1142. package/src/lib/ui/runtime/types/ReactiveNode.ts +0 -33
  1143. package/src/lib/ui/runtime/types/RenderContext.ts +0 -10
  1144. package/src/lib/ui/runtime/types/Route.ts +0 -9
  1145. package/src/lib/ui/runtime/types/RouteLoader.ts +0 -7
  1146. package/src/lib/ui/runtime/types/SsrRender.ts +0 -34
  1147. package/src/lib/ui/runtime/types/State.ts +0 -3
  1148. package/src/lib/ui/runtime/types/Teardown.ts +0 -5
  1149. package/src/lib/ui/runtime/types/UiComponent.ts +0 -24
  1150. package/src/lib/ui/runtime/types/UiProps.ts +0 -12
  1151. package/src/lib/ui/runtime/unescapeKey.ts +0 -12
  1152. package/src/lib/ui/runtime/unlinkDeps.ts +0 -28
  1153. package/src/lib/ui/runtime/untrack.ts +0 -20
  1154. package/src/lib/ui/runtime/updateIfNecessary.ts +0 -40
  1155. package/src/lib/ui/runtime/walkPath.ts +0 -41
  1156. package/src/lib/ui/runtime/withOptionalPath.ts +0 -8
  1157. package/src/lib/ui/runtime/withPath.ts +0 -16
  1158. package/src/lib/ui/runtime/withPathFrom.ts +0 -20
  1159. package/src/lib/ui/runtime/withoutHydration.ts +0 -22
  1160. package/src/lib/ui/runtime/writeNode.ts +0 -16
  1161. package/src/lib/ui/scope.ts +0 -20
  1162. package/src/lib/ui/seedBootState.ts +0 -53
  1163. package/src/lib/ui/seedStreamedResolution.ts +0 -56
  1164. package/src/lib/ui/settleAsyncCells.ts +0 -51
  1165. package/src/lib/ui/socketChannel.ts +0 -156
  1166. package/src/lib/ui/socketProxy.ts +0 -47
  1167. package/src/lib/ui/startClient.ts +0 -156
  1168. package/src/lib/ui/state.ts +0 -77
  1169. package/src/lib/ui/subscribeCacheStaleness.ts +0 -85
  1170. package/src/lib/ui/trackedComputed.ts +0 -68
  1171. package/src/lib/ui/tryEncodeResume.ts +0 -11
  1172. package/src/lib/ui/types/Layouts.ts +0 -9
  1173. package/src/lib/ui/types/Pages.ts +0 -8
  1174. package/src/lib/ui/types/Scope.ts +0 -68
  1175. package/src/lib/ui/watch.ts +0 -150
  1176. package/src/preload.ts +0 -19
  1177. package/src/scaffold.ts +0 -153
  1178. package/src/serverBuildPlugins.ts +0 -25
  1179. package/src/serverEntry.ts +0 -138
  1180. package/src/zodCjsPlugin.ts +0 -51
  1181. package/template/.zed/settings.json +0 -10
  1182. package/template/CLAUDE.md +0 -22
  1183. package/template/bunfig.toml +0 -4
  1184. package/template/package.json +0 -21
  1185. package/template/src/app.ts +0 -28
  1186. package/template/src/bundle/icon.png +0 -0
  1187. package/template/src/cli/banner.txt +0 -3
  1188. package/template/src/cli/footer.txt +0 -1
  1189. package/template/src/server/config.ts +0 -17
  1190. package/template/src/server/rpc/getHello.ts +0 -38
  1191. package/template/src/ui/app.css +0 -21
  1192. package/template/src/ui/app.html +0 -24
  1193. package/template/src/ui/pages/about/page.abide +0 -7
  1194. package/template/src/ui/pages/layout.abide +0 -19
  1195. package/template/src/ui/pages/page.abide +0 -19
  1196. package/template/test/app.test.ts +0 -30
  1197. package/template/tsconfig.json +0 -18
  1198. package/tsconfig.app.json +0 -17
@@ -1,973 +0,0 @@
1
- import { assertExhaustive } from '../../shared/assertExhaustive.ts'
2
- import { escapeRegex } from '../../shared/escapeRegex.ts'
3
- import { caseSegment, ELSE_SEGMENT, THEN_SEGMENT } from '../runtime/BRANCH_SEGMENT.ts'
4
- import { OUTLET_CLOSE, OUTLET_OPEN } from '../runtime/OUTLET_MARKER.ts'
5
- import { OUTLET_TAG } from '../runtime/OUTLET_TAG.ts'
6
- import {
7
- ANCHOR,
8
- RANGE_CLOSE as RANGE_CLOSE_DATA,
9
- RANGE_OPEN as RANGE_OPEN_DATA,
10
- } from '../runtime/RANGE_MARKER.ts'
11
- import { asOutlet } from './asOutlet.ts'
12
- import { awaitPlan } from './awaitPlan.ts'
13
- import { awaitSubjectExpr } from './awaitSubjectExpr.ts'
14
- import { componentOrdinals } from './componentOrdinals.ts'
15
- import { composeProps } from './composeProps.ts'
16
- import { eachPlan } from './eachPlan.ts'
17
- import { elementPlan } from './elementPlan.ts'
18
- import { groupBindParts } from './groupBindParts.ts'
19
- import { hoistableAwaits } from './hoistableAwaits.ts'
20
- import { hoistableChildRenders } from './hoistableChildRenders.ts'
21
- import { ifPlan } from './ifPlan.ts'
22
- import { interpolatedTemplateLiteral } from './interpolatedTemplateLiteral.ts'
23
- import { isAnchorPositioned } from './isAnchorPositioned.ts'
24
- import { lowerContext } from './lowerContext.ts'
25
- import { makeVarNamer } from './makeVarNamer.ts'
26
- import { scopeAttr } from './scopeAttr.ts'
27
- import { skeletonContext } from './skeletonContext.ts'
28
- import { snippetPlan } from './snippetPlan.ts'
29
- import { spreadExcludedNames } from './spreadExcludedNames.ts'
30
- import { staticAttr } from './staticAttr.ts'
31
- import { staticAttrValue } from './staticAttrValue.ts'
32
- import { staticTextPart } from './staticTextPart.ts'
33
- import { stripEffects } from './stripEffects.ts'
34
- import { switchPlan } from './switchPlan.ts'
35
- import { tryPlan } from './tryPlan.ts'
36
- import type { Binding } from './types/Binding.ts'
37
- import type { ShadowKind } from './types/ShadowKind.ts'
38
- import type { TemplateNode } from './types/TemplateNode.ts'
39
- import { withBindings } from './withBindings.ts'
40
-
41
- /* The range boundary comments a control-flow block emits around its content. Sourced
42
- from the SAME wire-alphabet constants the client's `document.createComment` markers
43
- use (`RANGE_MARKER`), wrapped in comment syntax — so a server-emitted boundary and the
44
- client `[ … ]` boundary it claims can never drift on a literal. */
45
- const RANGE_OPEN = `<!--${RANGE_OPEN_DATA}-->`
46
- const RANGE_CLOSE = `<!--${RANGE_CLOSE_DATA}-->`
47
-
48
- /* The skeleton positioning anchor a control-flow block / slot / outlet emits, sourced
49
- from the same `ANCHOR` constant the client's anchor scan matches. */
50
- const ANCHOR_COMMENT = `<!--${ANCHOR}-->`
51
-
52
- /*
53
- Server code generator: turns the parsed template into statements that push HTML
54
- fragments onto an output array, reading the document synchronously (no DOM, no
55
- listeners). Same expression lowering as the client back-end, so server and client
56
- render the same markup. Dynamic values go through `$esc`; `if` is a plain `if`,
57
- `each` a `for…of`.
58
-
59
- An `await` block emits boundary comments (`<!--abide:await:N-->…<!--/abide:await:N-->`).
60
- A streaming block (no `then` on the tag) puts its pending branch between the markers and
61
- registers the promise + async resolved/error renderers on `$awaits`; `renderToStream`
62
- flushes each resolved fragment out of order — the await-block-streams half of the cache
63
- rule. A blocking block (`then` on the tag) is `await`ed INLINE at its structural position
64
- and its resolved branch rendered between the markers, so the render body is async and its
65
- id (`$ctx.next++`) allocates depth-first like the client; the resolved value lands in
66
- `$resume`. Block ids draw from the request-local `$ctx`, shared with inlined child renders.
67
- */
68
- export function generateSSR(
69
- nodes: TemplateNode[],
70
- stateNames: ReadonlySet<string>,
71
- derivedNames: ReadonlySet<string>,
72
- computedNames: ReadonlySet<string>,
73
- isLayout = false,
74
- /* `linked` / async `computed` names, lowered to `$$readCell(name)` in template exprs. */
75
- cellReadNames: ReadonlySet<string> = new Set(),
76
- ): { body: string; flightDecls: string; hasStagedChildren: boolean } {
77
- /* Unique temp var names (child render results); runtime block ids are
78
- allocated separately at runtime via `$ctx.next++`. */
79
- const nextVar = makeVarNamer()
80
-
81
- /* The enclosing `<select bind:value>`s, innermost last: each carries the JS var holding
82
- its bound value and whether it's a `multiple` (array) select, so an `<option>` rendered
83
- within can emit `selected` by comparing its own value against the bound one. Pushed when
84
- a bound select opens, popped after its children. */
85
- const selectBinds: { variable: string; multiple: boolean }[] = []
86
-
87
- /* The shared signal→`model` lowering + branch-scoped nested-script deref scope. */
88
- const {
89
- expression: lowerExpression,
90
- script,
91
- withNestedScripts,
92
- withShadow,
93
- isShadowed,
94
- bindRead,
95
- bindWrite,
96
- } = lowerContext(stateNames, derivedNames, computedNames, cellReadNames)
97
-
98
- /* SSR has no cells, so every plan `Binding` — `reactive` or `plain` — renders as a `plain`
99
- shadow (a real JS local / loop var / arrow param, read as the bare identifier). The one
100
- mapping `withBindings` registers every binding through on this back-end. */
101
- const ssrBindingKind = (_binding: Binding): ShadowKind => 'plain'
102
-
103
- /* A scoped-script body for SSR: the shared lowering, then strip effects
104
- (client-only lifecycle that emits no HTML) — the one SSR-side asymmetry. */
105
- const lowerScript = (code: string): string => stripEffects(script(code))
106
-
107
- function push(target: string, literal: string): string {
108
- return `${target}.push(${JSON.stringify(literal)});\n`
109
- }
110
-
111
- /* The JS expression for an `<option>`'s value, to compare against an enclosing bound
112
- `<select>`: the `value` attribute (static/expression/interpolated), else the option's
113
- static text content (the browser's own fallback, whitespace-trimmed). Returns undefined
114
- when the value can't be known at compile time (a dynamic-text option with no `value`
115
- attr) — the client selects it on hydrate. */
116
- function optionValueForSSR(
117
- node: Extract<TemplateNode, { kind: 'element' }>,
118
- ): string | undefined {
119
- const valueAttr = node.attrs.find(
120
- (attr) =>
121
- (attr.kind === 'static' ||
122
- attr.kind === 'expression' ||
123
- attr.kind === 'interpolated') &&
124
- attr.name === 'value',
125
- )
126
- if (valueAttr !== undefined) {
127
- if (valueAttr.kind === 'static') {
128
- return JSON.stringify(valueAttr.value)
129
- }
130
- if (valueAttr.kind === 'expression') {
131
- return lowerExpression(valueAttr.code)
132
- }
133
- if (valueAttr.kind === 'interpolated') {
134
- return lowerExpression(interpolatedTemplateLiteral(valueAttr.parts))
135
- }
136
- }
137
- let staticText = ''
138
- for (const child of node.children) {
139
- if (child.kind !== 'text') {
140
- return undefined
141
- }
142
- for (const part of child.parts) {
143
- if (part.kind !== 'static') {
144
- return undefined
145
- }
146
- staticText += part.value
147
- }
148
- }
149
- return JSON.stringify(staticText.trim())
150
- }
151
-
152
- function generateInto(children: TemplateNode[], target: string): string {
153
- return children.map((child) => generate(child, target)).join('')
154
- }
155
-
156
- /* In a layout, rewrite `<slot/>` outlets to `OUTLET_TAG` elements up front (the same shared
157
- `asOutlet` the client back-end runs), then drive both the skeleton context and the
158
- traversal from this tree — one decision site for the outlet, and the outlet emitted bare
159
- through the generic element path exactly as the client clones it. */
160
- const rootNodes = isLayout ? nodes.map(asOutlet) : nodes
161
-
162
- /* Each `<Child/>` render site's render-path ordinal, from the ONE shared document-order
163
- walk the client back-end also reads (`componentOrdinals`) — so both compose the same
164
- cell scope ids and streamed-boundary ids regardless of either back-end's emission
165
- order. The returned lookup throws on a miss (a structural divergence from the shared
166
- walk), surfaced loudly at compile time. */
167
- const childOrdinal = componentOrdinals(rootNodes)
168
-
169
- /* ADR-0034: the await blocks whose promise-start hoists to the synchronous render prefix so
170
- independent flights overlap instead of serializing. Server-only — this rewires only the SSR
171
- promise SOURCE (a blocking `await $flightN`, a streaming `promise: () => $flightN`); the
172
- block's markers, `$ctx.next++` id, RESUME wire, and the whole client build stay byte-identical.
173
- The `flightDecls` are emitted by compileSSR after the lowered script and BEFORE the barrier, so
174
- a hoisted flight is already in-flight while the barrier awaits any unrelated blocking cell. */
175
- const flightNameByNode = new Map<Extract<TemplateNode, { kind: 'await' }>, string>()
176
- for (const flight of hoistableAwaits(rootNodes, cellReadNames)) {
177
- flightNameByNode.set(flight.node, flight.name)
178
- }
179
-
180
- /* ADR-0037 Phase 2: the top-level-spine `<Child/>` renders whose start hoists to the prefix so
181
- sibling renders overlap instead of serializing behind each other's `await`. The component walk
182
- below emits each hoisted child's flight decl into `childFlightDecls` (with its childOrdinal and
183
- lowered props computed at the SAME site as the body's `await`, so the two can't drift) and
184
- awaits the flight const at the structural position. Each hoisted render starts under
185
- `$$isolateCellBarrier` so its async cells drain in their own list, not a concurrent sibling's
186
- (the request-scoped barrier is `splice(0)`-drained). */
187
- const hoistableChildSet = hoistableChildRenders(rootNodes, cellReadNames)
188
- const childFlightDecls: string[] = []
189
- let childFlightCounter = 0
190
-
191
- /* A snippet name (any identifier, `$` included) interpolated into a RegExp must have its
192
- regex metacharacters escaped, or e.g. a trailing `$` would read as an end-anchor and the
193
- call site would never match — leaving an un-awaited Promise stringified as `[object
194
- Promise]`. */
195
- /* A leading boundary that, unlike `\b`, also fires before a `$`-leading name: `\b$row`
196
- never matches (`$` is a non-word char, so there is no word boundary before it), which
197
- would silently miss every `$row(...)` call. A negative lookbehind for word-or-`$`
198
- matches the same call sites as `\b` for word-leading names while also catching them. */
199
- /* Memoised per name: the pattern is a pure function of the name but tested across the
200
- fixpoint loop below (per snippet × per text part × per iteration), so recompiling the
201
- RegExp each test — far costlier than the test itself — dominated the snippet scan. */
202
- const callPatternCache = new Map<string, RegExp>()
203
- const callPattern = (name: string): RegExp => {
204
- let pattern = callPatternCache.get(name)
205
- if (pattern === undefined) {
206
- pattern = new RegExp(`(?<![$\\w])${escapeRegex(name)}\\s*\\(`)
207
- callPatternCache.set(name, pattern)
208
- }
209
- return pattern
210
- }
211
- /* A subtree call to any of `names` from a TEXT interpolation (`name()` / `name(args)`). */
212
- const subtreeCalls = (children: TemplateNode[], names: ReadonlySet<string>): boolean =>
213
- children.some((child) => {
214
- if (child.kind === 'text') {
215
- return child.parts.some(
216
- (part) =>
217
- part.kind !== 'static' &&
218
- [...names].some((name) => callPattern(name).test(part.code)),
219
- )
220
- }
221
- return 'children' in child && subtreeCalls(child.children, names)
222
- })
223
-
224
- /* Snippet names whose body produces an `await`, so the snippet must be an `async function`
225
- and its `{name(...)}` call sites awaited: it inlines a child component, holds an await
226
- block, or emits a `{children()}` slot fill (all `await $props.$children()` in SSR) — a
227
- structural scan — OR it text-calls another async snippet. The latter is a dependency
228
- between snippets, so resolve it to a fixpoint — seed with the structural set, then keep
229
- adding any snippet that calls an already-async one until nothing changes. */
230
- const subtreeAwaits = (children: TemplateNode[]): boolean =>
231
- children.some(
232
- (child) =>
233
- child.kind === 'component' ||
234
- child.kind === 'await' ||
235
- (child.kind === 'element' && child.tag === 'slot') ||
236
- ('children' in child && subtreeAwaits(child.children)),
237
- )
238
- const snippetDefs = new Map<string, TemplateNode[]>()
239
- const collectSnippetDefs = (children: TemplateNode[]): void => {
240
- for (const child of children) {
241
- if (child.kind === 'snippet') {
242
- snippetDefs.set(child.name, child.children)
243
- }
244
- if ('children' in child) {
245
- collectSnippetDefs(child.children)
246
- }
247
- }
248
- }
249
- collectSnippetDefs(rootNodes)
250
- const asyncSnippets = new Set<string>()
251
- for (const [name, children] of snippetDefs) {
252
- if (subtreeAwaits(children)) {
253
- asyncSnippets.add(name)
254
- }
255
- }
256
- let grew = true
257
- while (grew) {
258
- grew = false
259
- for (const [name, children] of snippetDefs) {
260
- if (!asyncSnippets.has(name) && subtreeCalls(children, asyncSnippets)) {
261
- asyncSnippets.add(name)
262
- grew = true
263
- }
264
- }
265
- }
266
- /* A text-part expression whose value may be a Promise, so `$text` must `await` it:
267
- either it calls an async snippet declared HERE, or it CALLS a computed-backed
268
- binding. The latter covers a snippet handed down as a prop and called by its prop
269
- name (`{item(label)}`) — that prop lowers to a computed, so it never appears in this
270
- component's own `asyncSnippets`, yet the parent's snippet body may be async and the
271
- call returns a Promise (the `[object Promise]` bug). A computed READ (`{full}`) is not
272
- a call, so plain interpolation stays sync; only `name(...)` on a computed is awaited. */
273
- const awaitableCallNames = new Set<string>([...asyncSnippets, ...computedNames])
274
- const callsAwaitable = (code: string): boolean => {
275
- // The common component with no async snippet and no computed pays zero regex work.
276
- if (awaitableCallNames.size === 0) {
277
- return false
278
- }
279
- for (const name of awaitableCallNames) {
280
- if (callPattern(name).test(code)) {
281
- return true
282
- }
283
- }
284
- return false
285
- }
286
-
287
- /* Per-node skeleton position, computed once. Both back-ends read this single source of
288
- truth so their `<!--a-->` anchor placement cannot drift — the fresh-context boundaries
289
- (control-flow branches, component/slot/snippet content) are enumerated there, not
290
- re-tracked here as mutable state that a forgotten reset could leak past. */
291
- const { inSkeleton, markText } = skeletonContext(rootNodes)
292
-
293
- /* A control-flow branch's content, generated exactly like a normal child list so
294
- a branch holds ANY content (components, text, nested blocks). `generate` emits
295
- nested `<script>`s in document order; `withNestedScripts` puts their bindings in
296
- scope — matching the client build, so hydration stays aligned. The caller wraps
297
- it in the `[ … ]` range markers the runtime tracks (unconditionally per block,
298
- so an empty/false branch still emits the boundary the client claims). The branch's
299
- fresh build context is already recorded by `skeletonContext`, so its children read
300
- their own (reset) position — no flag juggling here. */
301
- function branchContent(children: TemplateNode[], target: string): string {
302
- return withNestedScripts(children, () => generateInto(children, target))
303
- }
304
- const openRange = (target: string): string => push(target, RANGE_OPEN)
305
- const closeRange = (target: string): string => push(target, RANGE_CLOSE)
306
-
307
- /* Wrap a control-flow branch/row body in the render-path segment the CLIENT pushes for it (the
308
- `withPathFrom`/`withPath` call the `each`/`when`/`switchBlock` dom runtimes make), so a scope
309
- created inside — a nested `<Child/>`, always an inline `await` in SSR — composes the SAME
310
- serialization-stable id on both sides (the warm-seed key). Emitted ONLY when the subtree can
311
- create such a scope: a component render is the sole scope-creating construct in a branch/row
312
- and always lowers to an inline `await`, so `subtreeAwaits` is the gate. A purely-synchronous
313
- branch creates no scope, so its segment is inert — skipping the wrap keeps the static render
314
- synchronous (no per-row closure/await, matching today's output byte-for-byte). `segment` is a
315
- JS expression (a literal branch key, or the each row's key/index); `$$withPath` escapes it,
316
- exactly like the client. The row/branch RANGE markers stay OUTSIDE this call (they create no
317
- scope), so only the content composes the path — mirroring the client, where the markers are
318
- built outside `withPathFrom`. */
319
- const withPathBranch = (segment: string, children: TemplateNode[], target: string): string => {
320
- const content = branchContent(children, target)
321
- if (!subtreeAwaits(children)) {
322
- return content
323
- }
324
- return `await $$withPath(${segment}, async () => {\n${content}});\n`
325
- }
326
-
327
- /* In a skeleton, a control-flow block or slot is positioned by an `<!--a-->` anchor
328
- (cloned into the located parent), so it can sit anywhere among static siblings.
329
- Emitted both sides in document order — the client's anchor scan lines up with it.
330
- Outside a skeleton (top-level / inside a branch) blocks mount on the host directly,
331
- so no anchor. */
332
- const anchorMark = (node: TemplateNode, target: string): string =>
333
- inSkeleton.get(node) ? push(target, ANCHOR_COMMENT) : ''
334
-
335
- function generate(node: TemplateNode, target: string): string {
336
- /* Every kind that mounts as a marker range is positioned by an `<!--a-->` anchor when
337
- in a skeleton context: control-flow blocks, child components, and a layout's outlet /
338
- a component's `<slot>` (both elements). `isAnchorPositioned` is the ONE decision site
339
- (mirrored by the client's `skeletonMarkup`); `anchorMark` no-ops outside a skeleton,
340
- so non-anchored nodes ignore the precomputed `anchor`. */
341
- const anchor = isAnchorPositioned(node) ? anchorMark(node, target) : ''
342
- if (node.kind === 'text') {
343
- return node.parts
344
- .map((part) => {
345
- if (part.kind === 'static') {
346
- const markup = staticTextPart(part.value)
347
- return markup === '' ? '' : push(target, markup)
348
- }
349
- /* A call to an async snippet returns a Promise — `await` it before `$text`.
350
- (The enclosing context is async: the render body and async-snippet bodies.)
351
- Plain expressions stay sync, so a component with only interpolation keeps a
352
- sync render. */
353
- const lowered = lowerExpression(part.code)
354
- const value = callsAwaitable(part.code)
355
- ? `$text(await (${lowered}))`
356
- : `$text(${lowered})`
357
- return markText.get(node)
358
- ? `${target}.push('${ANCHOR_COMMENT}' + ${value});\n`
359
- : `${target}.push(${value});\n`
360
- })
361
- .join('')
362
- }
363
- if (node.kind === 'if') {
364
- /* `case` children are the `elseif`/`else` branches in source order; the rest are the
365
- `then` content. The whole `if`/`elseif`/`else` chain desugars to a run of `if` /
366
- `else if` clauses. A branch whose condition is a bare async subject contributes TWO
367
- clauses in order — an empty `$$cellPending` guard (renders nothing, and stops the
368
- chain: a still-loading branch holds, so nothing later renders on its unknown value)
369
- then the `$$readCell` truthy test — so sync and async branches interleave and each
370
- resolves at render time, mirroring the client `switchBlock` cond-chain. */
371
- const plan = ifPlan(node)
372
- /* The client build lowers a simple `if`/`else` through `when` and an `if` with any
373
- `elseif` through `switchBlock` over `[then, ...branches]`. Segments come from the
374
- SAME alphabet those runtimes key their branches with (`BRANCH_SEGMENT`), so a
375
- nested `<Child/>`'s scope id composes identically — no literal to drift. */
376
- const clauses: string[] = []
377
- const conditional = (
378
- condition: string,
379
- asyncSubject: boolean | undefined,
380
- children: TemplateNode[],
381
- segment: string,
382
- ): void => {
383
- if (asyncSubject === true) {
384
- const cell = condition.trim()
385
- clauses.push(`($$cellPending(${cell})) {\n}`)
386
- clauses.push(
387
- `($$readCell(${cell})) {\n${withPathBranch(segment, children, target)}}`,
388
- )
389
- } else {
390
- clauses.push(
391
- `(${lowerExpression(condition)}) {\n${withPathBranch(segment, children, target)}}`,
392
- )
393
- }
394
- }
395
- /* `then` is the `when` then-branch, or the `switchBlock` case at index 0. */
396
- conditional(
397
- node.condition,
398
- node.asyncSubject,
399
- plan.thenChildren,
400
- JSON.stringify(plan.hasElseif ? caseSegment(0) : THEN_SEGMENT),
401
- )
402
- for (let index = 0; index < plan.branches.length; index += 1) {
403
- const branch = plan.branches[index] as Extract<TemplateNode, { kind: 'case' }>
404
- if (branch.condition !== undefined) {
405
- /* An `elseif` is the `switchBlock` case at `[then, ...branches]` index `index + 1`
406
- (a chain with any condition always lowers to `switchBlock`). */
407
- conditional(
408
- branch.condition,
409
- branch.asyncSubject,
410
- branch.children,
411
- JSON.stringify(caseSegment(index + 1)),
412
- )
413
- }
414
- }
415
- let code = clauses
416
- .map((clause, index) => `${index === 0 ? 'if' : ' else if'} ${clause}`)
417
- .join('')
418
- if (plan.elseBranch !== undefined) {
419
- /* `else` is the `when` else-branch, or (for a cond-chain) the `switchBlock`
420
- default at its own `[then, ...branches]` index. */
421
- const elseSegment = plan.hasElseif
422
- ? caseSegment(plan.branches.indexOf(plan.elseBranch) + 1)
423
- : ELSE_SEGMENT
424
- code += ` else {\n${withPathBranch(JSON.stringify(elseSegment), plan.elseBranch.children, target)}}`
425
- }
426
- return `${anchor}${openRange(target)}${code}\n${closeRange(target)}`
427
- }
428
- if (node.kind === 'switch') {
429
- const plan = switchPlan(node)
430
- /* A bare async subject: read the peek, but only match once the cell has settled —
431
- a pending subject renders no case (matching the client's `switchBlock`). */
432
- const subjectExpr =
433
- node.asyncSubject === true
434
- ? `$$readCell(${node.subject.trim()})`
435
- : `(${lowerExpression(node.subject)})`
436
- let code = `{ const $s = ${subjectExpr};\n`
437
- if (node.asyncSubject === true) {
438
- code += `if (!$$cellPending(${node.subject.trim()})) {\n`
439
- }
440
- let started = false
441
- /* The client `switchBlock` keys each branch by its index in `plan.cases` (source order,
442
- the default at its own position); mirror that index so a nested `<Child/>` matches. */
443
- for (let index = 0; index < plan.cases.length; index += 1) {
444
- const branch = plan.cases[index] as Extract<TemplateNode, { kind: 'case' }>
445
- if (branch.match !== undefined) {
446
- code += `${started ? 'else ' : ''}if ($s === (${lowerExpression(branch.match)})) {\n${withPathBranch(JSON.stringify(caseSegment(index)), branch.children, target)}}\n`
447
- started = true
448
- }
449
- }
450
- if (plan.fallback !== undefined) {
451
- const fallbackSegment = caseSegment(plan.cases.indexOf(plan.fallback))
452
- code += `${started ? 'else ' : ''}{\n${withPathBranch(JSON.stringify(fallbackSegment), plan.fallback.children, target)}}\n`
453
- }
454
- if (node.asyncSubject === true) {
455
- code += `}\n`
456
- }
457
- return `${anchor}${openRange(target)}${code}}\n${closeRange(target)}`
458
- }
459
- if (node.kind === 'case') {
460
- return ''
461
- }
462
- if (node.kind === 'snippet') {
463
- const plan = snippetPlan(node)
464
- /* A hoisted function returning the snippet's `$snip`-branded HTML string;
465
- `{name(args)}` pushes it via `$text`, which wraps it in markers. `args` are plain
466
- call parameters — `withBindings` registers the plan's `plain` bindings so the body
467
- reads the bare local, shadowing a same-named component signal rather than reading it. */
468
- const body = withBindings(withShadow, plan.bindings, ssrBindingKind, () =>
469
- generateInto(plan.children, '$o'),
470
- )
471
- /* `async` only when the body produces an `await` (it inlines a child component) — then
472
- call sites `await` it (`$text(await frag())`). A sync snippet stays a plain function
473
- called inline, preserving the sync render contract. */
474
- const keyword = asyncSnippets.has(plan.name) ? 'async function' : 'function'
475
- return `${keyword} ${plan.name}(${plan.params ?? ''}) {\nconst $o = [];\n${body}return $snip($o.join(''));\n}\n`
476
- }
477
- if (node.kind === 'script') {
478
- /* A scoped reactive block: re-seed its local signals (lowered, in scope)
479
- so SSR renders the same values the client build will. */
480
- return `${lowerScript(node.code)}\n`
481
- }
482
- /* A `<style>` emits no markup — its scope attribute is already on the elements
483
- it covers (above) and its CSS is bundled, not inlined. */
484
- if (node.kind === 'style') {
485
- return ''
486
- }
487
- if (node.kind === 'each') {
488
- const plan = eachPlan(node)
489
- /* Async each (`await`) is drained on the client — render no rows on the
490
- server (an infinite stream would hang SSR); the client inserts its anchor
491
- before the next sibling during hydration, like an empty sync each. In a
492
- skeleton the `<!--a-->` anchor still marks its position (the client mounts
493
- there); no range markers, since there are no server rows to claim. */
494
- if (plan.async) {
495
- return anchor
496
- }
497
- /* The client `each` pushes a render-path segment per row (keyed → the `by` key evaluated
498
- on the raw item, exactly like its `keyOf`; keyless → the row position), so a nested
499
- `<Child/>`'s scope id composes identically. Mirror it only when the row can create a
500
- scope (`subtreeAwaits` — it holds a component); a static row needs no segment and stays
501
- synchronous. A keyless row that needs its position reuses a bound `index`, else a
502
- synthesized loop index — the same 0-based `entries()` position the client's row cell
503
- carries, so the segments agree. */
504
- const rowSegments = subtreeAwaits(plan.children)
505
- const keylessIndex =
506
- plan.key === undefined && plan.index === undefined && rowSegments
507
- ? nextVar('$i')
508
- : undefined
509
- const indexBinding = plan.index ?? keylessIndex
510
- /* The row item (and index) are real `for`-loop locals, so the body must lower
511
- references to them as the bare identifier — `withBindings` registers the plan's
512
- row bindings (under `plain`, SSR's only kind) so a row binding that shadows a
513
- same-named component signal reads the loop value, not the (whole-list) signal it
514
- shadows. The names come straight from `plan.bindings` (the single source the
515
- client also reads); the items expression stays outside the shadow. */
516
- const rowBody = withBindings(withShadow, plan.bindings, ssrBindingKind, () => {
517
- /* The row's render-path segment, lowered inside the row's plain shadow so a keyed
518
- `by` reads the raw loop item exactly like the client `keyOf` (a keyless row uses
519
- its position). Unused when `rowSegments` is false — `withPathBranch` then skips it. */
520
- const segment =
521
- plan.key === undefined
522
- ? (indexBinding ?? '0')
523
- : `(${lowerExpression(plan.key)})`
524
- return `${openRange(target)}${withPathBranch(segment, plan.children, target)}${closeRange(target)}`
525
- })
526
- /* `index="i"` binds the row position. SSR reads it as a plain number from
527
- `entries()` over a materialized array; the client reads the same number from a
528
- cell, so first paint is congruent. No index → a plain `for…of` over the items. */
529
- /* An undefined source renders no rows, not a throw — a `{#for x in promise}`
530
- whose lifted source peeks undefined while pending (ADR-0032 D3). Mirrors the
531
- client `each`'s undefined-as-empty guard. */
532
- const header =
533
- indexBinding === undefined
534
- ? `for (const ${plan.as} of ((${lowerExpression(plan.items)}) ?? []))`
535
- : `for (const [${indexBinding}, ${plan.as}] of [...((${lowerExpression(plan.items)}) ?? [])].entries())`
536
- return `${anchor}${header} {\n${rowBody}}\n`
537
- }
538
- if (node.kind === 'await') {
539
- return `${anchor}${generateAwait(node, target)}`
540
- }
541
- if (node.kind === 'try') {
542
- return `${anchor}${generateTry(node, target)}`
543
- }
544
- if (node.kind === 'branch') {
545
- return ''
546
- }
547
- if (node.kind === 'component') {
548
- /* Server-render the child via its `render` and inline the HTML inside the same
549
- `[ … ]` marker range the client mounts into (`mountRange`) — no wrapper element,
550
- so SSR and client agree and the child's root lays out as a direct child. Props
551
- pass as thunks; slot content passes as a string-returning `children` the child
552
- invokes from its <slot>. */
553
- /* Slot content is a fresh build context — the child's `<slot>` mounts it via
554
- `mountSlot`, not the parent skeleton clone, and the client builds it through
555
- `propsArg`/`generateChildren` (never the skeleton path). `skeletonContext`
556
- records it reset, so its children emit no enclosing-skeleton anchors the client
557
- slot builder would lack. */
558
- const slotCode = generateInto(node.children, '$slot')
559
- /* Slot content rides the `children` prop key as a `Snippet`: a zero-arg callable
560
- returning an ASYNC builder the child `await`s at its `{children()}` position
561
- (`generateSlot`), whose resolved value is a `$snip`-branded string — so it renders
562
- through the same `$text` snippet-marker path as any `{snippet(args)}` and unifies
563
- with a passed `children={snippet}`. It is NOT pre-resolved: pre-resolving here would
564
- run the slot's `$ctx.next++` block ids BEFORE the child render's own, but the client
565
- builds slot content lazily at the `{children()}` site — so a child with an await/try
566
- before its slot would allocate ids in the opposite order and desync hydration.
567
- Keeping the slot lazy draws its ids at the `{children()}` site on both sides. The
568
- builder shares the enclosing render's `$ctx`/`$awaits`/`$resume` (a closure), so
569
- nested awaits register and number correctly during the child render. A child with a
570
- slot fill is therefore always an async render. */
571
- const slotPart =
572
- slotCode.trim() === ''
573
- ? undefined
574
- : `"children": () => (async () => { const $slot = []; ${slotCode}return $snip($slot.join('')); })`
575
- /* The same last-wins layering the client build emits (`composeProps`), so SSR
576
- and hydration read the same prop bag. */
577
- const propsExpr = composeProps(
578
- node.props,
579
- lowerExpression,
580
- slotPart,
581
- bindRead,
582
- bindWrite,
583
- )
584
- /* Render the child (awaited — render is async) sharing this render's `$ctx`,
585
- so its `await`/`try` block ids draw from the same depth-first counter,
586
- unique across page + children, and the streamed fragments resolve into the
587
- right boundaries. MERGE its streaming awaits into `$awaits` and its inline
588
- blocking values into `$resume`. ($awaits/$resume are captured from the
589
- enclosing render body, including from branch closures.) */
590
- /* The tag lowers like any reference (see generateBuild): a static import is left bare, a
591
- reactive/loop/await binding derefs — SSR registers such a binding as `plain`, so it
592
- reads the bare local holding the resolved component, keeping SSR and client congruent.
593
- Root the child's render-path at this mount site's shared-walk ordinal — the same
594
- segment the client's `mountChild` pushes — so the child's cells and block ids (ADR-0037)
595
- get an id matching the client's. `$$withPath` sets the path across the child's awaits. */
596
- const ordinal = childOrdinal(node)
597
- const renderExpr = `$$withPath(${ordinal}, () => ${lowerExpression(node.name)}.render(${propsExpr}, $ctx))`
598
- if (hoistableChildSet.has(node)) {
599
- /* Hoistable (ADR-0037/0039): start the render as an isolated flight in the prefix, and
600
- RESERVE its output position rather than awaiting inline. After the walk,
601
- `finalizeStreamedChildren` fills the slot — inline `<!--[-->html<!--]-->` if the
602
- flight already settled (byte-identical to the old inline await), or a streaming
603
- `abide:await:CHILDPATH` boundary + html-only await if it is still pending. The
604
- boundary id is the child's render-path (`$$renderPath(ordinal)`), congruent with the
605
- client's dual-mode `mountChild`. */
606
- const flightName = `$cf${childFlightCounter++}`
607
- childFlightDecls.push(
608
- `const ${flightName} = $$flight(() => $$isolateCellBarrier(() => ${renderExpr}));`,
609
- )
610
- const slotVar = nextVar('$slot')
611
- return (
612
- anchor +
613
- `${target}.push('');\n` +
614
- `const ${slotVar} = ${target}.length - 1;\n` +
615
- `$childSlots.push({ slot: ${slotVar}, out: ${target}, id: $$renderPath(${ordinal}), flight: ${flightName} });\n`
616
- )
617
- }
618
- /* Non-hoistable child (off the top-level spine): await inline at its structural position,
619
- sequential, as before — never streams. Bracket its html in the ADDRESSED boundary
620
- (ADR-0049) `abide:c:CHILDPATH` in place of the anonymous `[`/`]` — CHILDPATH is the
621
- child's render-path (`$$renderPath(ordinal)`), the same id the client's `mountChild`
622
- composes — so a hydration desync inside the child recovers AT this boundary instead of
623
- reaching the router and discarding the whole page. */
624
- const result = nextVar('$child')
625
- const childPath = nextVar('$cpath')
626
- return (
627
- anchor +
628
- `const ${childPath} = $$renderPath(${ordinal});\n` +
629
- `${target}.push('<!--abide:c:' + ${childPath} + '-->');\n` +
630
- `const ${result} = await ${renderExpr};\n` +
631
- `${target}.push(${result}.html);\n` +
632
- `for (const $a of ${result}.awaits) { $awaits.push($a); }\n` +
633
- `Object.assign($resume, ${result}.resume);\n` +
634
- `${target}.push('<!--/abide:c:' + ${childPath} + '-->');\n`
635
- )
636
- }
637
- if (node.kind === 'element' && node.tag === OUTLET_TAG) {
638
- /* A layout's router fill point (`asOutlet` rewrote its `<slot/>`): an `<!--a-->`
639
- anchor (in a skeleton) + an empty `<!--abide:outlet-->`…`<!--/abide:outlet-->`
640
- boundary the chain composer folds the child layer into (`renderChain`) and the
641
- client router fills/hydrates (`outlet`/`fillBoundary`) — no wrapper element. */
642
- return anchor + push(target, `<!--${OUTLET_OPEN}--><!--${OUTLET_CLOSE}-->`)
643
- }
644
- if (node.kind === 'element' && node.tag === 'slot') {
645
- /* `asOutlet` already rewrote a layout's top-level/element-nested `<slot/>` to an
646
- `OUTLET_TAG` element (handled above), so a `slot` node reaching here in a layout
647
- is control-flow-nested — emit the same empty outlet boundary the client's
648
- control-flow-nested path builds, which the chain composer folds the child into. */
649
- if (isLayout) {
650
- return push(target, `<!--${OUTLET_OPEN}--><!--${OUTLET_CLOSE}-->`)
651
- }
652
- return generateSlot(node, target, anchor)
653
- }
654
- /* Every non-element kind returned above; a kind reaching the element builder
655
- that isn't an element is a compiler gap — fail loud rather than emit it as a
656
- bogus `<undefined>` tag. (`node` narrows to `never` in this branch.) */
657
- if (node.kind !== 'element') {
658
- return assertExhaustive(node, 'template node kind')
659
- }
660
- let code = push(target, `<${node.tag}`)
661
- /* Every `<style>` active at this element (own siblings + ancestors) — same set
662
- the client stamps, so server and client markup carry identical attributes. */
663
- for (const scope of node.scopes ?? []) {
664
- code += push(target, scopeAttr(scope))
665
- }
666
- /* The shared per-element emission DECISION (one site, consulted by the build back-end
667
- too): each attribute classified + tagged with its merge status, the class/style/
668
- directive merge folded in, and void-tag status. `class:`/`style:` directives collapse
669
- with any static/interpolated `class`/`style` base into a SINGLE merged attribute (a
670
- duplicate attribute would be invalid and ignored). SSR must always emit one attribute
671
- string, so it merges whenever a directive exists (`mergeClass`/`mergeStyle`); those
672
- attrs are tagged `mergedSSR` and skipped below. The client's classList.toggle /
673
- style.setProperty effects re-apply the same values on hydrate, so the merged SSR value
674
- already matches the post-mount DOM — no flash, no desync. SSR RENDERS each kind below
675
- as an escaped string. */
676
- const plan = elementPlan(node, lowerExpression)
677
- const merge = plan.merge
678
- for (const { attr, mergedSSR } of plan.attrs) {
679
- /* Skip attrs folded into the merged class/style string below. */
680
- if (mergedSSR) {
681
- continue
682
- }
683
- if (attr.kind === 'static') {
684
- code += push(target, staticAttr(attr.name, attr.value))
685
- } else if (attr.kind === 'expression') {
686
- /* present/absent semantics matching the client `attr` binding:
687
- false/null/undefined drops it, true emits the bare attribute. */
688
- code += `${target}.push($attr(${JSON.stringify(attr.name)}, ${lowerExpression(attr.code)}));\n`
689
- } else if (attr.kind === 'interpolated') {
690
- /* A string-valued attribute, always present (a merged class/style was skipped
691
- above). */
692
- code += `${target}.push($attr(${JSON.stringify(attr.name)}, ${lowerExpression(interpolatedTemplateLiteral(attr.parts))}));\n`
693
- } else if (attr.kind === 'spread') {
694
- /* `{...expr}` element spread: each key as an attribute, functions (event
695
- handlers) skipped — the client `spreadAttrs` wires those on hydrate. Keys
696
- explicitly named on the element are skipped (the explicit attr wins), so
697
- no duplicate attribute is emitted and the client DOM agrees. */
698
- code += `${target}.push($spread(${lowerExpression(attr.code)}, ${JSON.stringify(spreadExcludedNames(node.attrs))}));\n`
699
- } else if (attr.kind === 'bind' && attr.property === 'group') {
700
- /* Render the checked state as a boolean attribute: present when the
701
- path holds (radio) or contains (checkbox) this control's value. */
702
- const { valueCode, isRadio } = groupBindParts(node)
703
- const present = isRadio
704
- ? `(${lowerExpression(attr.code)}) === (${lowerExpression(valueCode)})`
705
- : `(${lowerExpression(attr.code)}).includes(${lowerExpression(valueCode)})`
706
- code += `${target}.push((${present}) ? ' checked' : '');\n`
707
- } else if (attr.kind === 'bind' && attr.property === 'checked') {
708
- /* A boolean property — its mere presence means checked, so emit the
709
- attribute only when truthy (a string `checked="false"` still checks). */
710
- code += `${target}.push((${bindRead(attr.code)}) ? ' checked' : '');\n`
711
- } else if (attr.kind === 'bind' && attr.property === 'open') {
712
- /* `<details open>` — `open` is a boolean attribute, so `open="false"` would
713
- still render open. Emit the bare attribute only when truthy, like checked. */
714
- code += `${target}.push((${bindRead(attr.code)}) ? ' open' : '');\n`
715
- } else if (attr.kind === 'bind' && attr.property === 'value' && node.tag === 'select') {
716
- /* `<select bind:value>` selects via `selected` on the matching option (a
717
- `value="…"` on the select is ignored by browsers), wired below. Emit nothing
718
- here. */
719
- } else if (attr.kind === 'bind') {
720
- code += `${target}.push(${JSON.stringify(` ${attr.property}="`)} + $esc(${bindRead(attr.code)}) + '"');\n`
721
- }
722
- }
723
- /* Merged class/style: the same composed parts the build effect uses (from the plan),
724
- joined and escaped into one attribute string. */
725
- if (merge.mergeClass) {
726
- code += `${target}.push(' class="' + $esc([${merge.classParts.join(', ')}].filter(Boolean).join(' ')) + '"');\n`
727
- }
728
- if (merge.mergeStyle) {
729
- code += `${target}.push(' style="' + $esc([${merge.styleParts.join(', ')}].filter(Boolean).join(';')) + '"');\n`
730
- }
731
- /* An `<option>` inside a bound `<select>`: emit `selected` when its value equals the
732
- bound value (single) or is a member of it (multiple). */
733
- if (node.tag === 'option' && selectBinds.length > 0) {
734
- const optionValue = optionValueForSSR(node)
735
- const bind = selectBinds[selectBinds.length - 1]
736
- if (optionValue !== undefined && bind !== undefined) {
737
- const present = bind.multiple
738
- ? `Array.isArray(${bind.variable}) && ${bind.variable}.includes(${optionValue})`
739
- : `(${optionValue}) === (${bind.variable})`
740
- code += `${target}.push((${present}) ? ' selected' : '');\n`
741
- }
742
- }
743
- code += push(target, '>')
744
- /* A bound `<select>` publishes its current value to a local so the options rendered
745
- as its children can compare against it; popped once past those children. */
746
- const selectValueBind =
747
- node.tag === 'select'
748
- ? node.attrs.find((attr) => attr.kind === 'bind' && attr.property === 'value')
749
- : undefined
750
- if (selectValueBind !== undefined && selectValueBind.kind === 'bind') {
751
- const variable = nextVar('$sel')
752
- code += `const ${variable} = ${bindRead(selectValueBind.code)};\n`
753
- selectBinds.push({
754
- variable,
755
- multiple: staticAttrValue(node, 'multiple') !== undefined,
756
- })
757
- }
758
- if (!plan.isVoid) {
759
- /* Each child's skeleton position (whether its reactive text interleaves into an
760
- anchor, whether a nested block anchors) is already recorded by `skeletonContext`
761
- — read per node, not tracked here. A `<script>` child scopes its bindings to
762
- this element's subtree. */
763
- code += withNestedScripts(node.children, () => generateInto(node.children, target))
764
- code += push(target, `</${node.tag}>`)
765
- }
766
- if (selectValueBind !== undefined) {
767
- selectBinds.pop()
768
- }
769
- return code
770
- }
771
-
772
- /* A component `{children()}` fill point: render the `children` prop (a `Snippet`) as a
773
- snippet text part. `children()()` reads the destructured `children` computed and calls
774
- it → a Promise of a `$snip`-branded string; `await` it and push through `$text`, which
775
- wraps the branded string in `<!--abide:snippet-->` markers — the same range the client's
776
- appendText→appendSnippet emits and claims, so hydration stays congruent. Inside a skeleton
777
- the slot is positioned by an `<!--a-->` anchor and bounded by a `[ … ]` range (matching the
778
- client's `mountSlot`); outside one it emits just the snippet markers (matching the client's
779
- direct `appendText`). The `await` makes a component with a slot an async render (its caller
780
- already `await`s `render()`). A fallback is now an authored `{#if children}…{:else}…{/if}`,
781
- so the slot node carries no children. */
782
- function generateSlot(
783
- node: Extract<TemplateNode, { kind: 'element' }>,
784
- target: string,
785
- anchor: string,
786
- ): string {
787
- const wrap = inSkeleton.get(node)
788
- const body = `${target}.push($text(await (${lowerExpression('children()')})));\n`
789
- if (!wrap) {
790
- return body
791
- }
792
- return `${anchor}${openRange(target)}${body}${closeRange(target)}`
793
- }
794
-
795
- /* A blocking await (`then` on the tag) renders INLINE during the async render pass;
796
- a streaming await defers its resolved branch to `renderToStream`. */
797
- function generateAwait(node: Extract<TemplateNode, { kind: 'await' }>, target: string): string {
798
- return node.blocking
799
- ? generateBlockingAwait(node, target)
800
- : generateStreamingAwait(node, target)
801
- }
802
-
803
- /* The lowered `{#await X}` subject (ADR-0047) — the ONE shared decision site, so the
804
- bare-cell classification can't drift from the client back-end's. Used by the
805
- blocking, streaming, and flight-hoist emit sites. */
806
- const subjectExprFor = (promiseCode: string): string =>
807
- awaitSubjectExpr(promiseCode, cellReadNames, isShadowed, lowerExpression)
808
-
809
- /*
810
- A blocking await — `await`ed at its structural position in the async render pass and
811
- its resolved branch rendered INLINE into `target`, between the boundary markers. This
812
- matches the client (which runs `then` inline during adopt): one render pass, so the
813
- block id (`$ctx.next++`) and any nested await's id are allocated depth-first in the
814
- same order the client hydrates them, and the resolved value is captured into `$resume`
815
- for the manifest. The resolved children bind `node.as`; `finally` appends after, matching
816
- the client's concatenated node range. With no catch/finally branch a rejection propagates
817
- (renderToStream / the 500 surfaces it); otherwise the catch branch renders and seeds an
818
- error resume. The value `const` is block-scoped to its `try`, so sibling blocking awaits
819
- that bind the same name don't collide.
820
- */
821
- function generateBlockingAwait(
822
- node: Extract<TemplateNode, { kind: 'await' }>,
823
- target: string,
824
- ): string {
825
- const plan = awaitPlan(node)
826
- const id = nextVar('$aid')
827
- /* The resolved value lands in a synthetic var FIRST, then the author binding is
828
- declared from it inside a nested block. Two reasons: the promise expression is
829
- lowered in the outer scope where the binding name is not yet declared, so
830
- `{#await foo then foo}` reads the outer `foo` (no temporal-dead-zone crash on a
831
- same-named binding); and the nested block is the lexical scope the branch's
832
- `withBindings` shadow models, so a reference to the binding reads the plain
833
- local rather than the (unresolved) component signal it shadows. */
834
- const resolved = nextVar('$av')
835
- /* ADR-0034: a hoisted block awaits the prefix flight const (already in-flight); a
836
- non-hoisted block evaluates + awaits its promise inline as before. */
837
- const hoistedPromise = flightNameByNode.get(node)
838
- let code = `const ${id} = $$blockId($ctx);\n`
839
- code += `${target}.push("<!--abide:await:" + ${id} + "-->");\n`
840
- code += `try {\n`
841
- code += `const ${resolved} = await (${hoistedPromise ?? subjectExprFor(node.promise)});\n`
842
- code += `{\n`
843
- code += `const ${plan.resolvedAs} = ${resolved};\n`
844
- code += withBindings(withShadow, plan.resolvedBindings, ssrBindingKind, () =>
845
- branchContent(plan.resolvedChildren, target),
846
- )
847
- /* `finally` does not bind the resolved value, so it is lowered OUTSIDE the `then`
848
- shadow — matching the catch branch below, so a finally expression naming the
849
- same identifier as the `then` binding reads the component signal, not the local. */
850
- code += branchContent(plan.finallyChildren, target)
851
- /* Seed the resolved value into the resume manifest so hydration adopts the server
852
- branch warm (no round-trip) and wires it live on the first frame. Seed the
853
- resolved temp, NOT `plan.resolvedAs` — the latter is the author's binding
854
- PATTERN (e.g. `{name}` or `{name = 'anon'}`), which as an expression rebuilds a
855
- partial object or is a CoverInitializedName syntax error. */
856
- code += `$resume[${id}] = { ok: true, value: ${resolved} };\n`
857
- code += `}\n`
858
- if (plan.surfaceRejection) {
859
- /* No catch/finally → let the rejection surface instead of an empty branch. */
860
- code += `} catch (_error) { throw _error; }\n`
861
- } else {
862
- code += `} catch (${plan.catchAs}) {\n`
863
- code += withBindings(withShadow, plan.catchBindings, ssrBindingKind, () =>
864
- branchContent(plan.catchChildren, target),
865
- )
866
- code += branchContent(plan.finallyChildren, target)
867
- code += `$resume[${id}] = { ok: false, error: String(${plan.catchAs}) };\n`
868
- code += `}\n`
869
- }
870
- code += `${target}.push("<!--/abide:await:" + ${id} + "-->");\n`
871
- return code
872
- }
873
-
874
- /* A streaming await — emits the pending branch between the markers (flushed now) and
875
- registers the promise + async string-renderers on `$awaits`; `renderToStream`
876
- flushes the resolved fragment out of order. The renderers are async so a nested
877
- `await` block inside the branch composes. `finally` appends after the outcome,
878
- matching the client's concatenated node range. Neither catch nor finally → omit
879
- `catch` so a rejection surfaces (renderToStream re-throws); a finally-only block
880
- keeps a catch renderer that renders just finally. */
881
- function generateStreamingAwait(
882
- node: Extract<TemplateNode, { kind: 'await' }>,
883
- target: string,
884
- ): string {
885
- const plan = awaitPlan(node)
886
- const id = nextVar('$aid')
887
- let code = `const ${id} = $$blockId($ctx);\n`
888
- code += `${target}.push("<!--abide:await:" + ${id} + "-->");\n`
889
- code += branchContent(plan.pending, target)
890
- code += `${target}.push("<!--/abide:await:" + ${id} + "-->");\n`
891
- /* The settled renderer takes the resolved/error value as a real arrow parameter
892
- (`async (foo) => …`), so its body must lower references to that name as the plain
893
- local — `withBindings` registers the plan's bindings (under `plain`, SSR's only kind)
894
- so a binding that shadows a same-named component signal reads the value, not the
895
- signal. The arrow param is the binding's author name; the names enter scope from the
896
- same `plan.*Bindings` the client reads. */
897
- const settled = (param: string, bindings: Binding[], children: TemplateNode[]) =>
898
- `async (${param}) => { const $o = []; ${withBindings(
899
- withShadow,
900
- bindings,
901
- ssrBindingKind,
902
- () => branchContent(children, '$o'),
903
- )}${branchContent(plan.finallyChildren, '$o')}return $o.join(''); }`
904
- const catchProp = plan.surfaceRejection
905
- ? ''
906
- : `catch: ${settled(plan.catchAs, plan.catchBindings, plan.catchChildren)} `
907
- /* ADR-0034: a hoisted streaming block's thunk returns the prefix flight const (started
908
- in the prefix, so it overlaps a preceding blocking await); non-hoisted evaluates lazily
909
- at drain time as before. */
910
- const hoistedPromise = flightNameByNode.get(node)
911
- code +=
912
- `$awaits.push({ id: ${id}, ` +
913
- `promise: () => (${hoistedPromise ?? subjectExprFor(node.promise)}), ` +
914
- `then: ${settled(plan.resolvedAs, plan.resolvedBindings, plan.resolvedChildren)}, ` +
915
- `${catchProp}});\n`
916
- return code
917
- }
918
-
919
- /* A reactive error boundary: push the guarded markup (++ finally) inside a real
920
- try/catch; on a throw, truncate the output back to the range start and push the
921
- catch markup (++ finally) instead — so even mid-stream a render throw becomes catch
922
- markup, not a broken response. No catch re-throws (propagates to an enclosing boundary
923
- / the 500 / the stream). The `abide:try:N` boundary comments let hydration discard the
924
- server content if the client adoption fails; the inner `[ … ]` range markers are the
925
- live range the render-many client (`tryBlock`) tracks — emitted here so a FRESH client
926
- mount (which brackets its branch) and the SSR markup stay congruent. */
927
- function generateTry(node: Extract<TemplateNode, { kind: 'try' }>, target: string): string {
928
- const plan = tryPlan(node)
929
- const id = nextVar('$tid')
930
- const mark = nextVar('$trim')
931
- let code = `const ${id} = $$blockId($ctx);\n`
932
- code += `${target}.push("<!--abide:try:" + ${id} + "-->");\n`
933
- code += openRange(target)
934
- /* Truncate back to just after the range-open marker on a catch, so `[` survives. */
935
- code += `const ${mark} = ${target}.length;\n`
936
- code += `try {\n`
937
- code += branchContent(plan.guarded, target)
938
- code += branchContent(plan.finallyChildren, target)
939
- code += `} catch (${plan.catchAs}) {\n${target}.length = ${mark};\n`
940
- if (plan.hasCatch) {
941
- code += withBindings(withShadow, plan.catchBindings, ssrBindingKind, () =>
942
- branchContent(plan.catchChildren, target),
943
- )
944
- code += branchContent(plan.finallyChildren, target)
945
- } else {
946
- code += `throw ${plan.catchAs};\n`
947
- }
948
- code += `}\n`
949
- code += closeRange(target)
950
- code += `${target}.push("<!--/abide:try:" + ${id} + "-->");\n`
951
- return code
952
- }
953
-
954
- /* The body walk emits `await $flightN` / `promise: () => $flightN` for hoisted nodes; the
955
- matching prefix declarations (lowered at component scope — hoisted promises reference only
956
- component-scope names, never a branch shadow, so this lowering matches the body's) are
957
- returned for compileSSR to place after the lowered script and before the barrier. */
958
- const body = generateInto(rootNodes, '$out')
959
- let flightDecls = ''
960
- for (const [node, name] of flightNameByNode) {
961
- flightDecls += `const ${name} = $$flight(() => (${subjectExprFor(node.promise)}));\n`
962
- }
963
- /* Child-render flights emitted during the body walk above (ADR-0037 Phase 2) — appended after
964
- the await flights; both are independent prefix promise-starts, so order between them is free. */
965
- for (const decl of childFlightDecls) {
966
- flightDecls += `${decl}\n`
967
- }
968
- /* `hasStagedChildren` tells compileSSR to declare `$childSlots` and emit the post-walk
969
- `$$finalizeStreamedChildren` await (ADR-0039); a component with no hoistable child stays
970
- synchronous. Each hoistable child pushed one `childFlightDecls` entry, so its length is the
971
- staged-child count. */
972
- return { body, flightDecls, hasStagedChildren: childFlightDecls.length > 0 }
973
- }