@abide/abide 0.57.1 → 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1197) hide show
  1. package/CHANGELOG.md +3 -1773
  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 -967
  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/anchorCursor.ts +0 -25
  976. package/src/lib/ui/dom/anchoredBranch.ts +0 -153
  977. package/src/lib/ui/dom/appendSnippet.ts +0 -75
  978. package/src/lib/ui/dom/appendStatic.ts +0 -26
  979. package/src/lib/ui/dom/appendText.ts +0 -160
  980. package/src/lib/ui/dom/appendTextAt.ts +0 -39
  981. package/src/lib/ui/dom/assertClaimedText.ts +0 -30
  982. package/src/lib/ui/dom/attach.ts +0 -25
  983. package/src/lib/ui/dom/attr.ts +0 -57
  984. package/src/lib/ui/dom/awaitBlock.ts +0 -314
  985. package/src/lib/ui/dom/awaitSubject.ts +0 -118
  986. package/src/lib/ui/dom/bindProp.ts +0 -22
  987. package/src/lib/ui/dom/bindSelectValue.ts +0 -48
  988. package/src/lib/ui/dom/bindableProp.ts +0 -47
  989. package/src/lib/ui/dom/buildDetachedRange.ts +0 -31
  990. package/src/lib/ui/dom/cellPending.ts +0 -24
  991. package/src/lib/ui/dom/claimText.ts +0 -38
  992. package/src/lib/ui/dom/clearBetween.ts +0 -16
  993. package/src/lib/ui/dom/cloneStatic.ts +0 -38
  994. package/src/lib/ui/dom/commentData.ts +0 -14
  995. package/src/lib/ui/dom/depthZeroNodes.ts +0 -34
  996. package/src/lib/ui/dom/discardAndRebuild.ts +0 -23
  997. package/src/lib/ui/dom/discardBoundary.ts +0 -46
  998. package/src/lib/ui/dom/disposeRange.ts +0 -18
  999. package/src/lib/ui/dom/domAnchorAdapter.ts +0 -29
  1000. package/src/lib/ui/dom/domElementAdapter.ts +0 -20
  1001. package/src/lib/ui/dom/each.ts +0 -253
  1002. package/src/lib/ui/dom/eachAsync.ts +0 -188
  1003. package/src/lib/ui/dom/effectiveChildNamespace.ts +0 -13
  1004. package/src/lib/ui/dom/enterNamespace.ts +0 -20
  1005. package/src/lib/ui/dom/fillBefore.ts +0 -42
  1006. package/src/lib/ui/dom/fillBoundary.ts +0 -38
  1007. package/src/lib/ui/dom/fillRange.ts +0 -30
  1008. package/src/lib/ui/dom/foreignWrapperTag.ts +0 -22
  1009. package/src/lib/ui/dom/hydrate.ts +0 -34
  1010. package/src/lib/ui/dom/inheritedNamespace.ts +0 -19
  1011. package/src/lib/ui/dom/isComment.ts +0 -6
  1012. package/src/lib/ui/dom/isElement.ts +0 -6
  1013. package/src/lib/ui/dom/markerDepthDelta.ts +0 -19
  1014. package/src/lib/ui/dom/matchingRangeClose.ts +0 -29
  1015. package/src/lib/ui/dom/mergeProps.ts +0 -32
  1016. package/src/lib/ui/dom/mount.ts +0 -30
  1017. package/src/lib/ui/dom/mountChild.ts +0 -94
  1018. package/src/lib/ui/dom/mountRange.ts +0 -45
  1019. package/src/lib/ui/dom/mountSlot.ts +0 -38
  1020. package/src/lib/ui/dom/mountSwappableRange.ts +0 -122
  1021. package/src/lib/ui/dom/moveRange.ts +0 -19
  1022. package/src/lib/ui/dom/mutateDocContainer.ts +0 -65
  1023. package/src/lib/ui/dom/on.ts +0 -33
  1024. package/src/lib/ui/dom/openMarker.ts +0 -22
  1025. package/src/lib/ui/dom/outlet.ts +0 -63
  1026. package/src/lib/ui/dom/parseRawNodes.ts +0 -17
  1027. package/src/lib/ui/dom/readCall.ts +0 -29
  1028. package/src/lib/ui/dom/readCell.ts +0 -55
  1029. package/src/lib/ui/dom/readTextOrSuspend.ts +0 -21
  1030. package/src/lib/ui/dom/removeRange.ts +0 -18
  1031. package/src/lib/ui/dom/replaceRange.ts +0 -24
  1032. package/src/lib/ui/dom/restProps.ts +0 -32
  1033. package/src/lib/ui/dom/skeleton.ts +0 -153
  1034. package/src/lib/ui/dom/spreadAttrs.ts +0 -95
  1035. package/src/lib/ui/dom/spreadProps.ts +0 -31
  1036. package/src/lib/ui/dom/switchBlock.ts +0 -80
  1037. package/src/lib/ui/dom/templateFor.ts +0 -28
  1038. package/src/lib/ui/dom/tryBlock.ts +0 -263
  1039. package/src/lib/ui/dom/types/EachRow.ts +0 -21
  1040. package/src/lib/ui/dom/types/SkeletonHoles.ts +0 -10
  1041. package/src/lib/ui/dom/types/SwitchCase.ts +0 -11
  1042. package/src/lib/ui/dom/when.ts +0 -58
  1043. package/src/lib/ui/dom/withScope.ts +0 -37
  1044. package/src/lib/ui/dom/withSuspense.ts +0 -22
  1045. package/src/lib/ui/dom/writeCell.ts +0 -22
  1046. package/src/lib/ui/effect.ts +0 -24
  1047. package/src/lib/ui/enterScope.ts +0 -18
  1048. package/src/lib/ui/exitScope.ts +0 -8
  1049. package/src/lib/ui/finalizeStreamedChildren.ts +0 -89
  1050. package/src/lib/ui/flight.ts +0 -56
  1051. package/src/lib/ui/html.ts +0 -39
  1052. package/src/lib/ui/isolateCellBarrier.ts +0 -17
  1053. package/src/lib/ui/linked.ts +0 -125
  1054. package/src/lib/ui/navigate.ts +0 -77
  1055. package/src/lib/ui/probeNavigation.ts +0 -33
  1056. package/src/lib/ui/props.ts +0 -17
  1057. package/src/lib/ui/remoteProxy.ts +0 -256
  1058. package/src/lib/ui/renderChain.ts +0 -113
  1059. package/src/lib/ui/renderToStream.ts +0 -128
  1060. package/src/lib/ui/resumeSeedScript.ts +0 -27
  1061. package/src/lib/ui/router.ts +0 -649
  1062. package/src/lib/ui/runtime/AsyncCellError.ts +0 -21
  1063. package/src/lib/ui/runtime/BRANCH_SEGMENT.ts +0 -24
  1064. package/src/lib/ui/runtime/CELL_SEED.ts +0 -12
  1065. package/src/lib/ui/runtime/CHILD_PRESENT.ts +0 -8
  1066. package/src/lib/ui/runtime/CURRENT_BOUNDARY.ts +0 -11
  1067. package/src/lib/ui/runtime/CURRENT_PATH.ts +0 -29
  1068. package/src/lib/ui/runtime/CURRENT_SCOPE.ts +0 -23
  1069. package/src/lib/ui/runtime/DOC_SEED.ts +0 -10
  1070. package/src/lib/ui/runtime/HOLE_ATTRIBUTE.ts +0 -9
  1071. package/src/lib/ui/runtime/NODE_STATE.ts +0 -22
  1072. package/src/lib/ui/runtime/OUTLET_MARKER.ts +0 -10
  1073. package/src/lib/ui/runtime/OUTLET_TAG.ts +0 -7
  1074. package/src/lib/ui/runtime/OWNER.ts +0 -8
  1075. package/src/lib/ui/runtime/PENDING_OUTLET.ts +0 -8
  1076. package/src/lib/ui/runtime/RANGE_MARKER.ts +0 -16
  1077. package/src/lib/ui/runtime/REACTIVE_CONTEXT.ts +0 -20
  1078. package/src/lib/ui/runtime/RENDER.ts +0 -35
  1079. package/src/lib/ui/runtime/REQUEST_SUPERSEDED.ts +0 -8
  1080. package/src/lib/ui/runtime/RESUME.ts +0 -21
  1081. package/src/lib/ui/runtime/SEED_MARKS.ts +0 -14
  1082. package/src/lib/ui/runtime/STREAMED_CELLS.ts +0 -57
  1083. package/src/lib/ui/runtime/SuspenseSignal.ts +0 -24
  1084. package/src/lib/ui/runtime/abortNode.ts +0 -22
  1085. package/src/lib/ui/runtime/ambientPathBacking.ts +0 -32
  1086. package/src/lib/ui/runtime/ambientScopeBacking.ts +0 -26
  1087. package/src/lib/ui/runtime/applyPatchToTree.ts +0 -54
  1088. package/src/lib/ui/runtime/batch.ts +0 -22
  1089. package/src/lib/ui/runtime/blockId.ts +0 -31
  1090. package/src/lib/ui/runtime/boundaryFor.ts +0 -11
  1091. package/src/lib/ui/runtime/cellBarrierBacking.ts +0 -30
  1092. package/src/lib/ui/runtime/claimChild.ts +0 -8
  1093. package/src/lib/ui/runtime/claimExpected.ts +0 -27
  1094. package/src/lib/ui/runtime/claimMarker.ts +0 -13
  1095. package/src/lib/ui/runtime/claimRun.ts +0 -22
  1096. package/src/lib/ui/runtime/clientPage.ts +0 -116
  1097. package/src/lib/ui/runtime/consumeSeed.ts +0 -38
  1098. package/src/lib/ui/runtime/createAsyncCell.ts +0 -358
  1099. package/src/lib/ui/runtime/createComputedNode.ts +0 -19
  1100. package/src/lib/ui/runtime/createDoc.ts +0 -334
  1101. package/src/lib/ui/runtime/createEffectNode.ts +0 -81
  1102. package/src/lib/ui/runtime/createSignalNode.ts +0 -19
  1103. package/src/lib/ui/runtime/currentAbortSignal.ts +0 -26
  1104. package/src/lib/ui/runtime/detachLink.ts +0 -21
  1105. package/src/lib/ui/runtime/endTracking.ts +0 -24
  1106. package/src/lib/ui/runtime/enterRenderPass.ts +0 -13
  1107. package/src/lib/ui/runtime/escapeKey.ts +0 -19
  1108. package/src/lib/ui/runtime/exitRenderPass.ts +0 -7
  1109. package/src/lib/ui/runtime/flushEffects.ts +0 -91
  1110. package/src/lib/ui/runtime/generationGuard.ts +0 -40
  1111. package/src/lib/ui/runtime/historyEntries.ts +0 -151
  1112. package/src/lib/ui/runtime/inScope.ts +0 -19
  1113. package/src/lib/ui/runtime/isAsyncFunction.ts +0 -14
  1114. package/src/lib/ui/runtime/nextBlockId.ts +0 -12
  1115. package/src/lib/ui/runtime/parkCursor.ts +0 -10
  1116. package/src/lib/ui/runtime/pathSegments.ts +0 -10
  1117. package/src/lib/ui/runtime/reactiveAbortState.ts +0 -15
  1118. package/src/lib/ui/runtime/readNode.ts +0 -38
  1119. package/src/lib/ui/runtime/renderPath.ts +0 -16
  1120. package/src/lib/ui/runtime/reportHydrationDivergence.ts +0 -30
  1121. package/src/lib/ui/runtime/routeBareSeed.ts +0 -28
  1122. package/src/lib/ui/runtime/runHydrationPass.ts +0 -69
  1123. package/src/lib/ui/runtime/runNode.ts +0 -75
  1124. package/src/lib/ui/runtime/runtimePath.ts +0 -9
  1125. package/src/lib/ui/runtime/scope.ts +0 -46
  1126. package/src/lib/ui/runtime/scopeGroup.ts +0 -40
  1127. package/src/lib/ui/runtime/toTeardown.ts +0 -38
  1128. package/src/lib/ui/runtime/track.ts +0 -60
  1129. package/src/lib/ui/runtime/trigger.ts +0 -74
  1130. package/src/lib/ui/runtime/types/AbideHistoryState.ts +0 -9
  1131. package/src/lib/ui/runtime/types/Boundary.ts +0 -9
  1132. package/src/lib/ui/runtime/types/Cell.ts +0 -7
  1133. package/src/lib/ui/runtime/types/Computed.ts +0 -3
  1134. package/src/lib/ui/runtime/types/Doc.ts +0 -24
  1135. package/src/lib/ui/runtime/types/EffectResult.ts +0 -10
  1136. package/src/lib/ui/runtime/types/HydrationCursor.ts +0 -8
  1137. package/src/lib/ui/runtime/types/NavVerdict.ts +0 -9
  1138. package/src/lib/ui/runtime/types/Patch.ts +0 -11
  1139. package/src/lib/ui/runtime/types/PathWalk.ts +0 -10
  1140. package/src/lib/ui/runtime/types/ReactiveLink.ts +0 -21
  1141. package/src/lib/ui/runtime/types/ReactiveNode.ts +0 -33
  1142. package/src/lib/ui/runtime/types/RenderContext.ts +0 -10
  1143. package/src/lib/ui/runtime/types/Route.ts +0 -9
  1144. package/src/lib/ui/runtime/types/RouteLoader.ts +0 -7
  1145. package/src/lib/ui/runtime/types/SsrRender.ts +0 -34
  1146. package/src/lib/ui/runtime/types/State.ts +0 -3
  1147. package/src/lib/ui/runtime/types/Teardown.ts +0 -5
  1148. package/src/lib/ui/runtime/types/UiComponent.ts +0 -24
  1149. package/src/lib/ui/runtime/types/UiProps.ts +0 -12
  1150. package/src/lib/ui/runtime/unescapeKey.ts +0 -12
  1151. package/src/lib/ui/runtime/unlinkDeps.ts +0 -28
  1152. package/src/lib/ui/runtime/untrack.ts +0 -20
  1153. package/src/lib/ui/runtime/updateIfNecessary.ts +0 -40
  1154. package/src/lib/ui/runtime/walkPath.ts +0 -41
  1155. package/src/lib/ui/runtime/withOptionalPath.ts +0 -8
  1156. package/src/lib/ui/runtime/withPath.ts +0 -16
  1157. package/src/lib/ui/runtime/withPathFrom.ts +0 -20
  1158. package/src/lib/ui/runtime/withoutHydration.ts +0 -22
  1159. package/src/lib/ui/runtime/writeNode.ts +0 -16
  1160. package/src/lib/ui/scope.ts +0 -20
  1161. package/src/lib/ui/seedBootState.ts +0 -53
  1162. package/src/lib/ui/seedStreamedResolution.ts +0 -56
  1163. package/src/lib/ui/settleAsyncCells.ts +0 -51
  1164. package/src/lib/ui/socketChannel.ts +0 -156
  1165. package/src/lib/ui/socketProxy.ts +0 -47
  1166. package/src/lib/ui/startClient.ts +0 -156
  1167. package/src/lib/ui/state.ts +0 -77
  1168. package/src/lib/ui/subscribeCacheStaleness.ts +0 -85
  1169. package/src/lib/ui/trackedComputed.ts +0 -68
  1170. package/src/lib/ui/tryEncodeResume.ts +0 -11
  1171. package/src/lib/ui/types/Layouts.ts +0 -9
  1172. package/src/lib/ui/types/Pages.ts +0 -8
  1173. package/src/lib/ui/types/Scope.ts +0 -68
  1174. package/src/lib/ui/watch.ts +0 -150
  1175. package/src/preload.ts +0 -19
  1176. package/src/scaffold.ts +0 -153
  1177. package/src/serverBuildPlugins.ts +0 -25
  1178. package/src/serverEntry.ts +0 -138
  1179. package/src/zodCjsPlugin.ts +0 -51
  1180. package/template/.zed/settings.json +0 -10
  1181. package/template/CLAUDE.md +0 -22
  1182. package/template/bunfig.toml +0 -4
  1183. package/template/package.json +0 -21
  1184. package/template/src/app.ts +0 -28
  1185. package/template/src/bundle/icon.png +0 -0
  1186. package/template/src/cli/banner.txt +0 -3
  1187. package/template/src/cli/footer.txt +0 -1
  1188. package/template/src/server/config.ts +0 -17
  1189. package/template/src/server/rpc/getHello.ts +0 -38
  1190. package/template/src/ui/app.css +0 -21
  1191. package/template/src/ui/app.html +0 -24
  1192. package/template/src/ui/pages/about/page.abide +0 -7
  1193. package/template/src/ui/pages/layout.abide +0 -19
  1194. package/template/src/ui/pages/page.abide +0 -19
  1195. package/template/test/app.test.ts +0 -30
  1196. package/template/tsconfig.json +0 -18
  1197. package/tsconfig.app.json +0 -17
@@ -0,0 +1,781 @@
1
+ import { REGION_CLOSE, REGION_OPEN, ROW_OPEN } from '#shared/ANCHORS.ts'
2
+ import { anchorMarkup, regionMarkup } from '#shared/anchorMarkup.ts'
3
+ import { armAnchor } from '#shared/armAnchor.ts'
4
+ import { CHILDREN } from '#shared/CHILDREN.ts'
5
+ import { escapeQuote } from '#shared/escapeText.ts'
6
+ import { headKeyOf } from '#shared/headKeyOf.ts'
7
+ import { Cursor, type PlacedNode, placeTemplate } from './Cursor.ts'
8
+ import {
9
+ attributeOf,
10
+ type ClassifiedAttribute,
11
+ classifyAttributes,
12
+ holdsSetup,
13
+ isComponentTag,
14
+ isSingleRooted,
15
+ isSlot,
16
+ type MergeGroup,
17
+ } from './classifyTemplate.ts'
18
+ import { invocationProps, passedName } from './invocationProps.ts'
19
+ import { type Lowering, PROPS } from './Lowering.ts'
20
+ import type { AbideFile } from './parseAbide.ts'
21
+ import { shareScope } from './shareScope.ts'
22
+ import type {
23
+ Attribute,
24
+ ElementNode,
25
+ InlineComponent,
26
+ TemplateNode,
27
+ } from './TemplateNode.ts'
28
+ import { VOID_ELEMENTS } from './VOID_ELEMENTS.ts'
29
+
30
+ // A TEMPLATE AS MARKUP, as one emitted expression, for either module that writes it: the server's,
31
+ // which renders a document, and the client's, which renders a region the browser makes — an arm,
32
+ // a row, a page navigated to. Rendered from what `placeTemplate` placed, the same positions a build
33
+ // constructs from and a mount walks, so there is one escaping rule and one description of where a
34
+ // node stands, whichever side writes it.
35
+
36
+ /**
37
+ * Which module a markup is rendered into, and what that module leaves to another to fill.
38
+ *
39
+ * THE SERVER RENDERS EVERYTHING: a component by CALLING it, a slot by its fallback or the caller's
40
+ * thunk, and a region's inline components declared ahead of its markup. THE CLIENT renders where
41
+ * the child's server module is not reachable and the bindings are the mount's own: so where another
42
+ * module fills a region — the child, the slot's own unit, a block's own swap — it writes the anchor
43
+ * pair for that module to fill, and it declares nothing, because the mount does (`emitClient`).
44
+ */
45
+ export type MarkupLane = {
46
+ /** What stands for a node another module fills, or `undefined` where this lane renders it. */
47
+ leftEmpty: (node: TemplateNode) => string | undefined
48
+ /** 32.43 — the statements declaring a region's inline components ahead of its markup. */
49
+ declarations: (sink: Cursor, lowering: Lowering) => string
50
+ /**
51
+ * 41.24 — the open anchor of an `{#if}` arm that painted, as a string literal.
52
+ *
53
+ * The server's names the arm, for the hydrating swap to check; the client's does not, because
54
+ * the browser adopts what it rendered in the turn it chose the arm.
55
+ */
56
+ armAnchor: (arm: number) => string
57
+ }
58
+
59
+ export const SERVER_LANE: MarkupLane = {
60
+ leftEmpty: () => undefined,
61
+ declarations: (sink, lowering) => definitions(sink, lowering),
62
+ armAnchor: (arm) => JSON.stringify(anchorMarkup(armAnchor(arm))),
63
+ }
64
+
65
+ export const CLIENT_LANE: MarkupLane = {
66
+ leftEmpty: (node) => {
67
+ // 32.18 — the slot's own unit fills it with the caller's children or this file's fallback,
68
+ // by building whichever it is (`emitClient`'s `emitSlot`). Writing either here would make
69
+ // the caller hand its children over as a string as well as a build.
70
+ if (isSlot(node)) return EMPTY_REGION
71
+ // 34.7 — A BLOCK WITH A BRANCH-LOCAL `<script>` IS LEFT EMPTY, for its own swap or list to
72
+ // fill. Rendered inline here the script ran once for the markup and again in the setup its
73
+ // mount closes over, so each arm or row the browser built ran it twice — and the first
74
+ // run's watches had no scope to land in (12.13). An empty region is what the block already
75
+ // fills without a word (32.17, 41.4), so it costs one more fill and adds nothing.
76
+ if (holdsSetup(node)) return `${OPEN_ANCHOR} + ${CLOSE_ANCHOR}`
77
+ // 32.17 — the child's own client module fills its region.
78
+ if (node.kind === 'element' && isComponentTag(node.tag))
79
+ return EMPTY_REGION
80
+ return undefined
81
+ },
82
+ declarations: () => '',
83
+ armAnchor: () => OPEN_ANCHOR,
84
+ }
85
+
86
+ // A region's anchors, as the JS string literals the emitted server render concatenates.
87
+ const OPEN_ANCHOR = JSON.stringify(anchorMarkup(REGION_OPEN))
88
+ const CLOSE_ANCHOR = JSON.stringify(anchorMarkup(REGION_CLOSE))
89
+ // 32.16 — the catch is the `{#try}`'s arm 1, named so the client hydrates the catch the server
90
+ // painted rather than walking it as the body.
91
+ const CAUGHT_ANCHOR = JSON.stringify(anchorMarkup(armAnchor(1)))
92
+ const ROW_ANCHOR = JSON.stringify(anchorMarkup(ROW_OPEN))
93
+ const EMPTY_REGION = JSON.stringify(regionMarkup(''))
94
+
95
+ // Where a component's own head contributions land. Under `__` for the reason every framework name
96
+ // in an emitted module is.
97
+ export const HEADS = '__heads'
98
+
99
+ /**
100
+ * A lowered markup position wrapped in `slotValue` where it is live, so an unlanded read aborts it.
101
+ *
102
+ * 32.23 and 41.4 — THE POSITION ABORTS, NOT THE DOCUMENT. `emitComponent` builds the markup as
103
+ * ONE concatenation, so an unlanded read anywhere in it threw out of `Component()` and took the
104
+ * static markup, every other position and the `<head>` with it. Passed as a THUNK because the
105
+ * throw happens while the expression is being evaluated, so nothing a helper is HANDED can catch
106
+ * it; `slotValue` says what that costs.
107
+ *
108
+ * EVERY MARKUP POSITION THAT EVALUATES AN AUTHOR EXPRESSION, rather than the two that were found
109
+ * first. A GUARD HERE IS HALF A MECHANISM — it trades a throw for a HOLE, and something on the
110
+ * client has to fill that hole once the value lands: a text slot has `runHere` and `textHere`, a
111
+ * `{#for}` has `List.hydrate`'s count check, an attribute has its own binding re-running on the
112
+ * value that landed (32.3), and the `{#if}` chain has `isEmptyRegion` — which is why that one is
113
+ * guarded at the REGION rather than per subject, and says so at its own arm. The ESCAPER STAYS
114
+ * OUTSIDE: absence is `undefined` here and what it means is already decided where it lands (see
115
+ * `slotValue`).
116
+ *
117
+ * ONLY WHERE THE POSITION IS LIVE (`Lowering.isLive`), because a position the checker proved reads
118
+ * nothing reactive cannot be unlanded — and one it could not prove can, through a function it
119
+ * calls as much as through a name it reads. A row body reading its own item — `{row.title}`, which
120
+ * is most slots on most pages — is proven, and wrapping it anyway put a closure in the hot loop:
121
+ * the card bench went 0.9 µs -> 1.7 µs at 10 cards and 0.70x -> 1.20x against the hand-written
122
+ * page, which is the headline ratio inverted for a guard that could never fire.
123
+ */
124
+ export function unlandable(
125
+ lowering: Lowering,
126
+ holder: object,
127
+ lowered: string,
128
+ ): string {
129
+ if (!lowering.isLive(holder)) return lowered
130
+ return slotValueOf(lowering, lowered)
131
+ }
132
+
133
+ /**
134
+ * A lowered expression wrapped in `slotValue`, whatever `isLive` says.
135
+ *
136
+ * The wrap itself, apart from the `isLive` that decides it. The `{#if}` chain asks that question
137
+ * of its BRANCHES rather than of one holder (see its arm), so it cannot call `unlandable` — but it
138
+ * emits the same call, and one spelling is what keeps it the same call.
139
+ */
140
+ function slotValueOf(lowering: Lowering, lowered: string): string {
141
+ return `${lowering.use('slotValue')}(() => ${lowered})`
142
+ }
143
+
144
+ /**
145
+ * One position's markup, as an emitted expression.
146
+ *
147
+ * The markup is RENDERED from what `placeTemplate` placed, the same positions a build constructs
148
+ * from and a mount walks, rather than written by a walk of its own.
149
+ *
150
+ * `lane` is the module this markup is for (`MarkupLane`).
151
+ */
152
+ function renderPosition(
153
+ at: PlacedNode,
154
+ lowering: Lowering,
155
+ lane: MarkupLane,
156
+ ): string {
157
+ const node = at.holder
158
+
159
+ // A RUN OF ADJACENT TEXT AND EXPRESSIONS is written as ONE concatenation and carries no marker.
160
+ // The client finds it by its position, so nothing has to be put in the document to mark it —
161
+ // and nothing added is the only scheme that leaves CSS and `childNodes` answering what they
162
+ // would have answered for the page the author wrote.
163
+ //
164
+ // 32.1 — an expression is escaped at run time, never at compile time: the value is not known
165
+ // here. The escaping is OUTSIDE the guard: `escapeText` reads the abort's `undefined` as '', so
166
+ // a slot still in flight and one that genuinely answered nothing render the same.
167
+ if (at.kind === 'text') {
168
+ const parts: string[] = []
169
+ for (const piece of at.run)
170
+ parts.push(
171
+ piece.kind === 'text'
172
+ ? JSON.stringify(piece.text)
173
+ : `${lowering.use('escapeText')}(${unlandable(lowering, piece, lowering.expression(piece))})`,
174
+ )
175
+ // 32.30 — A RUN THAT CAN HOLD MARKUP IS ANCHORED WHILE IT DOES (`markupRun`), so the client
176
+ // finds the end of what a `Raw` part parsed into. The count is read BEFORE the parts are
177
+ // escaped: arguments are evaluated in order.
178
+ if (lowering.holdsMarkup(at.run))
179
+ return `${lowering.use('markupRun')}(${lowering.use('RAW_WRITES')}.count, ${parts.join(' + ')})`
180
+ return parts.join(' + ')
181
+ }
182
+
183
+ const left = lane.leftEmpty(node)
184
+ if (left !== undefined) return left
185
+
186
+ if (isSlot(node)) return slotMarkup(at, lowering)
187
+
188
+ if (node.kind === 'block' && node.block === 'for') {
189
+ // 32.13 — the body repeats. 32.22: an absent subject iterates zero times, which is what
190
+ // the guard is for rather than a `?? []` that would also swallow a genuine mistake.
191
+ // 32.21: the subject is read ONCE for the whole block, not once per row.
192
+ const subject = lowering.expression(node)
193
+ const row = rowMarkup(
194
+ at.inner[0] as Cursor,
195
+ !isSingleRooted(node.children),
196
+ lowering,
197
+ lane,
198
+ )
199
+ const index = node.index === '' ? '__at' : node.index
200
+ const item = node.item
201
+ // 32.15 and 41.3 — AN ASYNC SUBJECT WRITES NO ROWS INLINE. The render is not held for an
202
+ // unfinished stream, and an async iterable has produced nothing at the moment a document
203
+ // is generated; the client appends each item as it arrives instead.
204
+ //
205
+ // THE SAME TEST THE CLIENT MAKES, because it is the same function: `listOf` answers an
206
+ // array for everything a row can be built from now and hands an async iterable back as
207
+ // itself, on both sides. Two copies of the test disagreed once — a stream carrying a
208
+ // convenience `[Symbol.iterator]` was async here and sync there, so the page was blank
209
+ // without JS and whole after hydration.
210
+ const listOf = lowering.use('listOf')
211
+ // AND 41.4 FOR A SUBJECT STILL IN FLIGHT. The read is the block's one expression, so an
212
+ // unlanded one aborts it and nothing else: the abort answers `undefined`, `listOf` reads
213
+ // that as absent, and 32.22's zero rows is already what absent means here. Read ONCE for
214
+ // the block (32.21), so the thunk is per block rather than per row.
215
+ const guarded = unlandable(lowering, node, subject)
216
+ // 14.8 — the row's branch-local `<script>`, run at the head of each row, untracked like the
217
+ // component's own setup (14.7) since the render tracks nothing.
218
+ // 32.43 — and the components it declares, each closing over the row.
219
+ const setup = `${node.setup === null ? '' : `${lowering.setup(node.setup)}\n`}${lane.declarations(at.inner[0] as Cursor, lowering)}`
220
+ return `${OPEN_ANCHOR} + ((__list) => {
221
+ if (!Array.isArray(__list)) return ''
222
+ let __out = ''
223
+ let ${index} = 0
224
+ for (const ${item} of __list) { ${setup}__out += ${row}; ${index} += 1 }
225
+ return __out
226
+ })(${listOf}(${guarded})) + ${CLOSE_ANCHOR}`
227
+ }
228
+
229
+ // 32.16 — THE BODY, AND WHERE IT THROWS, THE CATCH IN ITS PLACE: rendered whole, so a failure
230
+ // anywhere in the body replaces all of it rather than leaving the markup up to the hole that
231
+ // raised it. The catch arm reads the failure under the name the author bound, and opens on the
232
+ // anchor that tells the client which arm it is standing on.
233
+ if (node.kind === 'block' && node.block === 'try') {
234
+ const body = renderMarkup(at.inner[0] as Cursor, lowering, lane)
235
+ const rescue = renderMarkup(at.inner[1] as Cursor, lowering, lane)
236
+ const bound = node.error === '' ? '__failure' : node.error
237
+ return `(() => {
238
+ try {
239
+ ${lane.declarations(at.inner[0] as Cursor, lowering)}return ${OPEN_ANCHOR} + ${body}
240
+ } catch (__thrown) {
241
+ return ${CAUGHT_ANCHOR} + ((${bound}) => ${scoped(lane.declarations(at.inner[1] as Cursor, lowering), rescue)})(__thrown)
242
+ }
243
+ })() + ${CLOSE_ANCHOR}`
244
+ }
245
+
246
+ if (node.kind === 'block') {
247
+ // 32.12 — ONE branch renders. The anchors go in whichever one that is, and stay when the
248
+ // branch changes, which is what keeps every sibling after the region addressable.
249
+ //
250
+ // 41.4 ABORTS THE REGION, NOT THE ARM, and that is why the guard is around the WHOLE
251
+ // chain rather than around each subject the way every other position takes it. Guarded
252
+ // per subject, an unlanded first condition is `undefined`, which is falsy — so the chain
253
+ // walks on and paints the `{:else}` arm, a decision the client then has no way to know
254
+ // was never really made. It reads the landed value a turn later, picks the other arm, and
255
+ // hydrates its bindings against the arm the server actually wrote; where that arm has no
256
+ // bindings there is nothing to walk, so 41.10 never fires and the region stays wrong for
257
+ // as long as the condition does not CHANGE.
258
+ //
259
+ // AN EMPTY REGION IS THE ONE SIGNAL THAT ALREADY MEANS "NOBODY PAINTED THIS" — 32.17 gave
260
+ // it to a component whose row the browser grew, and `isEmptyRegion` is how the client
261
+ // reads it. So an aborted chain writes the anchor pair and nothing between it, and the
262
+ // block's first run fills it from the arm it picks instead of hydrating markup that is
263
+ // not there. Nothing is added to the document to carry any of this.
264
+ //
265
+ // A GENUINELY EMPTY ARM TAKES THE SAME PATH and costs a `fillRegion` with no build — no
266
+ // node removed and none made. One answer for both beats a second way of saying
267
+ // which arm was painted.
268
+ // EACH ARM IS ITS OWN REGION ROOT — one sink apiece, so two arms may hold the same slot
269
+ // names and neither can see the other's.
270
+ // 14.8 — an arm's branch-local `<script>` runs before its markup, in a scope of its own.
271
+ const bodies = node.branches.map((branch, arm) =>
272
+ scoped(
273
+ `${branch.setup === null ? '' : `${lowering.setup(branch.setup)}\n`}${lane.declarations(at.inner[arm] as Cursor, lowering)}`,
274
+ renderMarkup(at.inner[arm] as Cursor, lowering, lane),
275
+ ),
276
+ )
277
+ // 41.24 — EACH ARM OPENS ON ITS OWN ANCHOR, which on the server names it. The floor and an
278
+ // aborted chain paint nothing, and the plain open is all an empty region needs.
279
+ let expression = `(${chosenArm(node.branches, lowering, (arm) => `${lane.armAnchor(arm)} + (${bodies[arm]})`, OPEN_ANCHOR)})`
280
+ // ONLY WHERE A SUBJECT IS LIVE, for `unlandable`'s reason: nothing else can be
281
+ // unlanded, and the thunk is a closure per region per render where it is emitted. Asked
282
+ // of the SUBJECTS alone — a slot inside an arm carries its own guard already, so a body
283
+ // cannot be what throws through here.
284
+ //
285
+ // `?? OPEN_ANCHOR` IS THE ABORT'S OWN ANSWER, not a fallback decided twice: `slotValue` hands
286
+ // back `undefined` and what `undefined` MEANS here is the empty region above.
287
+ if (lowering.isLiveChain(node.branches))
288
+ expression = `(${slotValueOf(lowering, expression)} ?? ${OPEN_ANCHOR})`
289
+ return `${expression} + ${CLOSE_ANCHOR}`
290
+ }
291
+
292
+ // EVERYTHING LEFT IS AN ELEMENT: a run returned above as a text position, and every block as a
293
+ // region. A position of either kind holding anything else is the walk disagreeing with itself.
294
+ if (node.kind !== 'element')
295
+ throw new Error(
296
+ `abide: a ${at.kind} position holds a ${node.kind} node.`,
297
+ )
298
+
299
+ // 32.17 — A CAPITALISED TAG IS AN INVOCATION, and the capital is the whole of the
300
+ // distinction. It is emitted as a CALL, so the child's own module renders it.
301
+ if (isComponentTag(node.tag)) return invocationMarkup(node, at, lowering)
302
+
303
+ const parts: string[] = []
304
+ let open = `<${node.tag}`
305
+ // WHAT IS NOT MARKUP IS NOT WRITTEN: a listener, `bind:element`, a refused URL, a bind whose
306
+ // value is not an attribute, and every merge member after the one the group is written at.
307
+ for (const one of classifyAttributes(node, lowering)) {
308
+ if (one.kind === 'static') {
309
+ if (one.bytes !== undefined) open += staticMarkup(one, one.bytes)
310
+ continue
311
+ }
312
+ if (one.kind === 'bound') {
313
+ if (one.reflects === undefined) continue
314
+ parts.push(JSON.stringify(open), boundMarkup(one, lowering))
315
+ open = ''
316
+ continue
317
+ }
318
+ if (one.kind === 'spread') {
319
+ parts.push(
320
+ JSON.stringify(open),
321
+ `${lowering.use('spreadAttributes')}(${unlandable(lowering, one.attribute, lowering.expression(one.attribute))}, ${JSON.stringify(one.explicit)})`,
322
+ )
323
+ open = ''
324
+ continue
325
+ }
326
+ // 32.37 — a whole-value attribute may be absent, so it writes its own name and quotes.
327
+ if (one.kind === 'dynamic') {
328
+ parts.push(
329
+ JSON.stringify(open),
330
+ dynamicMarkup(one.attribute, lowering),
331
+ )
332
+ open = ''
333
+ continue
334
+ }
335
+ if (one.kind !== 'merged' || one.group === undefined) continue
336
+ // A computed value breaks the static run: what precedes it is a literal, the value is an
337
+ // expression, and the tag carries on after it.
338
+ parts.push(
339
+ JSON.stringify(`${open} ${one.group.name}="`),
340
+ mergedValue(one.group, lowering, markupRender(lowering)),
341
+ "'\"'",
342
+ )
343
+ open = ''
344
+ }
345
+ open += '>'
346
+ parts.push(JSON.stringify(open))
347
+
348
+ // Folded for the reason `parseAbide` folds: `<BR>` is the same void element as
349
+ // `<br>`, and a close tag written for one is markup no browser accepts.
350
+ if (node.children.length === 0 && VOID_ELEMENTS.has(node.lowerTag))
351
+ return parts.join(' + ')
352
+ const children = renderLevel(at.children, lowering, lane)
353
+ return [...parts, ...children, JSON.stringify(`</${node.tag}>`)].join(' + ')
354
+ }
355
+
356
+ /**
357
+ * A `<slot/>`'s markup: the caller's children, or the fallback where there are none, anchored.
358
+ *
359
+ * 32.18 — A REGION, for the reason an invocation is one: what stands here is another file's
360
+ * markup, so the siblings after it cannot be addressed by counting through it.
361
+ *
362
+ * THE TWO LANES CARRY DIFFERENT THINGS UNDER THE SAME KEY. On the server the caller passes a
363
+ * thunk of its rendered markup, because a server writes markup and never addresses it; in the
364
+ * browser it passes a build AND the mount for it, because the bindings between those tags are the
365
+ * CALLER's and only the caller's module has them — so the client lane leaves the slot empty
366
+ * (`MarkupLane`).
367
+ *
368
+ * THE FALLBACK IS THE CHILD'S OWN REGION, placed from the slot's anchors exactly as an arm is
369
+ * (`placeTemplate`). What the CALLER passed instead is the caller's markup and the caller's
370
+ * addressing, so it is not this file's to place.
371
+ */
372
+ function slotMarkup(at: PlacedNode, lowering: Lowering): string {
373
+ const given = `${PROPS}[${JSON.stringify(CHILDREN)}]`
374
+ const fallback = renderMarkup(at.inner[0] as Cursor, lowering, SERVER_LANE)
375
+ return `${OPEN_ANCHOR} + (${given} === undefined ? ${scoped(definitions(at.inner[0] as Cursor, lowering), fallback)} : ${given}()) + ${CLOSE_ANCHOR}`
376
+ }
377
+
378
+ /**
379
+ * One component invocation's markup: the child called, its markup landing between the anchors.
380
+ *
381
+ * The child is a function taking a record of ACCESSORS (33.4, 33.5): the prop is the caller's
382
+ * expression, not a snapshot of it, so the child re-reads when the parent's value moves and
383
+ * neither of them arranges that.
384
+ *
385
+ * A REGION, ANCHORED. The child's markup is written inline, and how many top-level nodes it has is
386
+ * a fact about ANOTHER FILE — so the parent cannot address the siblings that follow it by
387
+ * counting, the way it does for an element whose shape it can see. The anchors are what make the
388
+ * child's nodes one addressable thing, and they are the same pair `{#if}` uses.
389
+ */
390
+ function invocationMarkup(
391
+ node: ElementNode,
392
+ at: PlacedNode,
393
+ lowering: Lowering,
394
+ ): string {
395
+ // 33.16 — `children` IS NEVER DECLARED, so a caller writing it as an attribute beside a body
396
+ // is passing the same prop twice; the record would carry the key twice and the last one
397
+ // would silently win.
398
+ if (
399
+ node.children.length > 0 &&
400
+ node.attributes.some((attribute) => attribute.name === CHILDREN)
401
+ )
402
+ throw new Error(
403
+ `abide: <${node.tag}> is given children as an attribute and between its tags. RULEBOOK 33.16.`,
404
+ )
405
+ const props = invocationProps(node, lowering)
406
+ // THE CALLER WRITES THE ANCHORS AND THE CHILD FILLS THEM: here by calling the child, and in the
407
+ // browser by the child's own module (`MarkupLane`).
408
+ // 32.18 — THE CHILDREN ARE THE CALLER'S MARKUP, handed over as a thunk under the one key the
409
+ // compiler owns. Not a prop the child declares: `props<T>()` is a shape an author wrote and
410
+ // this is the tag's own body, so the child reaches it through `<slot/>` and nothing else.
411
+ if (node.children.length > 0)
412
+ props.push(
413
+ `${JSON.stringify(CHILDREN)}: () => ${scoped(definitions(at.inner[0] as Cursor, lowering), `(${renderMarkup(at.inner[0] as Cursor, lowering, SERVER_LANE)})`)}`,
414
+ )
415
+ return `${lowering.use('renderComponent')}(${lowering.chosenTag(node) ?? node.tag}, { ${props.join(', ')} }, ${HEADS})`
416
+ }
417
+
418
+ /**
419
+ * A file's head contributions, merged and placed.
420
+ *
421
+ * Merged before it is placed (39.12), so the head is the one markup placed here rather than
422
+ * rendered from positions the template walk already placed. 39.6 — and placed for both lanes: a
423
+ * page the reader NAVIGATED to was never rendered by a server, so its `<title>` and its `<meta>`
424
+ * exist nowhere unless its own client module carries them, through the same merge so the two
425
+ * lanes cannot disagree about which contribution won.
426
+ */
427
+ export function headSink(file: AbideFile): Cursor {
428
+ const sink = new Cursor()
429
+ placeTemplate(mergeHead(file.head), sink)
430
+ return sink
431
+ }
432
+
433
+ /**
434
+ * A region's markup, as an emitted expression, rendered from its positions.
435
+ *
436
+ * Exported because a region made once is filled from it on the CLIENT too — a branch swap on a
437
+ * page re-renders the arm — and a second emitter for it would be a second escaping rule.
438
+ */
439
+ export function renderMarkup(
440
+ sink: Cursor,
441
+ lowering: Lowering,
442
+ lane: MarkupLane,
443
+ ): string {
444
+ return concat(renderLevel(sink.top, lowering, lane))
445
+ }
446
+
447
+ /** Each position's markup, apart: the server's body reads them before it joins them. */
448
+ export function renderLevel(
449
+ positions: PlacedNode[],
450
+ lowering: Lowering,
451
+ lane: MarkupLane,
452
+ ): string[] {
453
+ const out: string[] = []
454
+ for (const at of positions) out.push(renderPosition(at, lowering, lane))
455
+ return out
456
+ }
457
+
458
+ /**
459
+ * Which arm of an `{#if}` chain takes, as one expression: each subject in turn, then `{:else}`, and
460
+ * `none` where no arm takes.
461
+ *
462
+ * 32.12, 41.24 — ONE FOLD FOR BOTH SIDES, because the arm the server paints is the arm the client
463
+ * hydrates against: `arm` is what each side makes of the arm it chose.
464
+ */
465
+ export function chosenArm(
466
+ branches: readonly { subject: string }[],
467
+ lowering: Lowering,
468
+ arm: (index: number) => string,
469
+ none: string,
470
+ ): string {
471
+ let chosen = none
472
+ for (let index = branches.length - 1; index >= 0; index -= 1) {
473
+ const branch = branches[index] as { subject: string }
474
+ chosen =
475
+ branch.subject === ''
476
+ ? arm(index)
477
+ : `(${lowering.expression(branch)}) ? ${arm(index)} : ${chosen}`
478
+ }
479
+ return chosen
480
+ }
481
+
482
+ /**
483
+ * One `{#for}` row's markup, led by a row anchor where `anchored`.
484
+ *
485
+ * A row with several top-level nodes has no node that IS the row, so it carries one anchor; a
486
+ * single-element row carries nothing.
487
+ */
488
+ export function rowMarkup(
489
+ row: Cursor,
490
+ anchored: boolean,
491
+ lowering: Lowering,
492
+ lane: MarkupLane,
493
+ ): string {
494
+ const markup = renderMarkup(row, lowering, lane)
495
+ return anchored ? `${ROW_ANCHOR} + ${markup}` : markup
496
+ }
497
+
498
+ /**
499
+ * The statements declaring a region's inline components on the server: the ones its body declares
500
+ * (32.43), each under its name, and the ones an invocation in it is passed (32.50), each under
501
+ * `passedName`.
502
+ *
503
+ * 32.42 — DECLARED WHERE THE REGION IS BUILT, so each is a closure over every name in scope there:
504
+ * the setup's, a row's item, an arm's own, an enclosing component's props.
505
+ */
506
+ export function definitions(sink: Cursor, lowering: Lowering): string {
507
+ let out = ''
508
+ for (const component of sink.components)
509
+ out += `${serverComponent(component, lowering)}\n`
510
+ for (const at of sink.positions)
511
+ if (at.kind === 'region' && at.holder.kind === 'element')
512
+ for (const passed of at.holder.passed)
513
+ out += `const ${passedName(passed)} = ${serverComponent(passed, lowering)}\n`
514
+ return out
515
+ }
516
+
517
+ /**
518
+ * An inline component on the server: the function a file component's module exports, declared in
519
+ * place.
520
+ *
521
+ * 32.17, 32.40 — CALLED AS A FILE COMPONENT IS (`renderComponent`), with the record of accessors its
522
+ * pattern binds from, and answering its head and its body apart. It has no head of its own (39.2).
523
+ */
524
+ function serverComponent(
525
+ component: InlineComponent,
526
+ lowering: Lowering,
527
+ ): string {
528
+ const sink = new Cursor()
529
+ sink.components = component.components
530
+ placeTemplate(component.children, sink)
531
+ const head =
532
+ component.pattern === '' ? '' : `${lowering.setup(component)}\n`
533
+ const setup =
534
+ component.setup === null ? '' : `${lowering.setup(component.setup)}\n`
535
+ // 10.5, 32.46 — AN INSTANCE OPENS ITS OWN SHARE SCOPE, as a file component's does: two of it
536
+ // standing side by side are two instances, each creating what no ancestor holds (10.6).
537
+ const { opened, closed } = shareScope(lowering, '')
538
+ return `function ${component.name}(${PROPS} = {}) {
539
+ ${opened}${head}${setup}${definitions(sink, lowering)}return { head: '', body: ${renderMarkup(sink, lowering, SERVER_LANE)} }${closed}
540
+ }`
541
+ }
542
+
543
+ /** `markup` with `prelude` run ahead of it, in a scope of its own where there is one. */
544
+ function scoped(prelude: string, markup: string): string {
545
+ return prelude === ''
546
+ ? markup
547
+ : `(() => {\n${prelude}\nreturn ${markup}\n})()`
548
+ }
549
+
550
+ /** Emitted parts as one concatenation, and the empty string for none. */
551
+ export function concat(parts: string[]): string {
552
+ return parts.length === 0 ? "''" : parts.join(' + ')
553
+ }
554
+
555
+ /**
556
+ * An expression attribute's markup at render, through `attributeMarkup`.
557
+ *
558
+ * 32.3 — an expression attribute is reactive. Its CURRENT value is written here, and
559
+ * `emitClient`'s own attribute loop is what keeps writing it after hydration.
560
+ *
561
+ * 32.20 IS THE INTERPOLATION'S CLAUSE: `<a href={u}>` is where untrusted data actually arrives, not
562
+ * the literal `href`. The value is not known here, so the guard is a call in the emitted markup —
563
+ * `attributeMarkup`, which also decides 32.37's absence, and which the client's binding answers
564
+ * through the same `attributeText`.
565
+ *
566
+ * 41.4 INSIDE BOTH GUARDS. The abort is nearest the read and the scheme check wraps it, so a `href`
567
+ * still in flight is checked as the empty value it renders as rather than skipping 32.20 on its way
568
+ * past.
569
+ */
570
+ function dynamicMarkup(attribute: Attribute, lowering: Lowering): string {
571
+ const value = unlandable(
572
+ lowering,
573
+ attribute,
574
+ lowering.expression(attribute),
575
+ )
576
+ return `${lowering.use('attributeMarkup')}(${JSON.stringify(attribute.name)}, ${value})`
577
+ }
578
+
579
+ /**
580
+ * A bind's value at render, as the attribute its property reflects.
581
+ *
582
+ * 32.5, 32.7, 32.8 — under 41.4's guard: a value still in flight writes nothing, which is what an
583
+ * empty input and an unchecked box already are.
584
+ */
585
+ function boundMarkup(
586
+ written: ClassifiedAttribute & { kind: 'bound' },
587
+ lowering: Lowering,
588
+ ): string {
589
+ const read = slotValueOf(
590
+ lowering,
591
+ `${lowering.use('boundValue')}(${lowering.reference(written.attribute)})`,
592
+ )
593
+ if (written.bind === 'value')
594
+ return `' value="' + ${lowering.use('escapeAttribute')}(${read}) + '"'`
595
+ const on =
596
+ written.bind === 'group'
597
+ ? `${lowering.use('groupHolds')}(${read}, ${JSON.stringify(written.own)})`
598
+ : read
599
+ return `(${on} ? ' ${written.reflects}' : '')`
600
+ }
601
+
602
+ /**
603
+ * A static attribute's markup: the bare name, or the name and its value's bytes (`staticBytes`).
604
+ *
605
+ * 32.27 — STATIC TEMPLATE TEXT IS MARKUP, in an attribute value as much as in body text, so
606
+ * `title="AT&amp;T"` renders `AT&T` on the page as the same six characters between two tags do.
607
+ */
608
+ function staticMarkup(one: ClassifiedAttribute, bytes: string): string {
609
+ const { name, value } = one.attribute
610
+ return value === '' ? ` ${name}` : ` ${name}="${bytes}"`
611
+ }
612
+
613
+ /**
614
+ * A file's `<head>` contributions merged by key, the LAST one for a key kept.
615
+ *
616
+ * 39.4, 39.11, 39.12 — 39.11 gives the key: the tag for the two elements a document holds one of,
617
+ * the `name` or `property` for a `<meta>`, and `rel` with `href` for a `<link>`. Anything else has
618
+ * no key and keeps its place, which is 39.5 and is what walking the list once and dropping only
619
+ * the shadowed entries gives.
620
+ *
621
+ * WITHIN ONE FILE IS ALL OF IT HERE. 39.4's deepest contributor needs a layout to be deeper than,
622
+ * and a page and its layouts are composed at run time (`render`), not in this compiler — so there
623
+ * is no depth to order by here, and nothing here stands in for one.
624
+ */
625
+ function mergeHead(children: TemplateNode[]): TemplateNode[] {
626
+ const keys: (string | undefined)[] = []
627
+ const winner = new Map<string, number>()
628
+ for (let at = 0; at < children.length; at += 1) {
629
+ const key = headKey(children[at] as TemplateNode)
630
+ keys.push(key)
631
+ if (key !== undefined) winner.set(key, at)
632
+ }
633
+ if (winner.size === 0) return children
634
+ const kept: TemplateNode[] = []
635
+ for (let at = 0; at < children.length; at += 1) {
636
+ const key = keys[at]
637
+ if (key !== undefined && winner.get(key) !== at) continue
638
+ kept.push(children[at] as TemplateNode)
639
+ }
640
+ return kept
641
+ }
642
+
643
+ /**
644
+ * The key a head contribution merges by, or `undefined` for one that appends.
645
+ *
646
+ * 39.11 THROUGH THE ONE GRAMMAR (`headKeyOf`), asked with what the COMPILER can read: an expression
647
+ * is present but unknown, so `<meta name={x}>` appends under 39.5 rather than merging against a
648
+ * string that is not its value. `<TITLE>` is the same singleton as `<title>`, which `lowerTag`
649
+ * already gives.
650
+ */
651
+ function headKey(node: TemplateNode): string | undefined {
652
+ if (node.kind !== 'element') return undefined
653
+ return headKeyOf(node.lowerTag, (name) => {
654
+ const attribute = attributeOf(node, name)
655
+ if (attribute === undefined) return null
656
+ return attribute.expression ? undefined : attribute.value
657
+ })
658
+ }
659
+
660
+ /**
661
+ * How a merged value's pieces are written: escaped for markup, or as a built row writes them.
662
+ *
663
+ * Which is all that differs between the two ways of making an element. The markup ESCAPES — the
664
+ * bytes are parsed — and a built row writes what the parser would have made of them. The
665
+ * STRUCTURE — the order, the separators, which names — is `styleValue` and `classValue`'s alone,
666
+ * so a built `style` and a served one are the same string.
667
+ */
668
+ export type ValueRender = {
669
+ /** A whole attribute's value from an expression. */
670
+ dynamic: (attribute: Attribute) => string
671
+ /** One `style:prop`'s value from an expression — cut at its first `;` on both sides. */
672
+ declaration: (attribute: Attribute) => string
673
+ /** The author's own bytes, as the server writes them (32.27). */
674
+ bytes: (bytes: string) => string
675
+ }
676
+
677
+ /** The `ValueRender` for server markup: every interpolated piece escaped. */
678
+ function markupRender(lowering: Lowering): ValueRender {
679
+ return {
680
+ dynamic: (attribute) =>
681
+ `${lowering.use('escapeAttribute')}(${unlandable(lowering, attribute, lowering.expression(attribute))})`,
682
+ declaration: (attribute) =>
683
+ `${lowering.use('escapeStyleValue')}(${unlandable(lowering, attribute, lowering.expression(attribute))})`,
684
+ bytes: (bytes) => JSON.stringify(bytes),
685
+ }
686
+ }
687
+
688
+ /** A merged `style` or `class` group's value, as an emitted expression, rendered by `render`. */
689
+ export function mergedValue(
690
+ group: MergeGroup,
691
+ lowering: Lowering,
692
+ render: ValueRender,
693
+ ): string {
694
+ return group.name === 'style'
695
+ ? styleValue(group.plain, group.directives, render)
696
+ : classValue(group.plain, group.directives, lowering, render)
697
+ }
698
+
699
+ /**
700
+ * The declaration list a set of `style:prop` attributes renders as.
701
+ *
702
+ * Each value takes the same rewrite the whole-value path takes, so one attribute has one answer
703
+ * however the author spelled it: 32.27 for a STATIC declaration, which is the author's own markup,
704
+ * and the full escape for an interpolated one, which is 32.1's.
705
+ */
706
+ function styleValue(
707
+ plain: Attribute | undefined,
708
+ styles: readonly Attribute[],
709
+ render: ValueRender,
710
+ ): string {
711
+ const parts: string[] = []
712
+ if (plain !== undefined)
713
+ parts.push(
714
+ plain.expression
715
+ ? render.dynamic(plain)
716
+ : render.bytes(escapeQuote(plain.value)),
717
+ render.bytes('; '),
718
+ )
719
+ for (const attribute of styles) {
720
+ const property = attribute.name.slice('style:'.length)
721
+ const lead = parts.length === 0 ? '' : '; '
722
+ if (!attribute.expression) {
723
+ parts.push(
724
+ render.bytes(
725
+ `${lead}${property}: ${escapeQuote(attribute.value)}`,
726
+ ),
727
+ )
728
+ continue
729
+ }
730
+ parts.push(
731
+ render.bytes(`${lead}${property}: `),
732
+ render.declaration(attribute),
733
+ )
734
+ }
735
+ return concat(parts)
736
+ }
737
+
738
+ /**
739
+ * The class list a set of `class:name` attributes renders as.
740
+ *
741
+ * 32.10 — A NAME IS MARKUP AND A VALUE IS A CONDITION, which is the whole of what makes this
742
+ * shorter than its `style` sibling: the name is the author's own source and takes 32.27's rewrite
743
+ * where the module is emitted, and the expression decides only whether it is written at all.
744
+ *
745
+ * EACH NAME CARRIES ITS OWN LEADING SPACE rather than a separator being computed between them,
746
+ * because how many of them render is not known until the values are read. A run of spaces and a
747
+ * leading one are both nothing in a class attribute — the value is split on whitespace — where
748
+ * `style`'s `;` has to be counted.
749
+ */
750
+ function classValue(
751
+ plain: Attribute | undefined,
752
+ classes: readonly Attribute[],
753
+ lowering: Lowering,
754
+ render: ValueRender,
755
+ ): string {
756
+ const parts: string[] = []
757
+ if (plain !== undefined)
758
+ parts.push(
759
+ plain.expression
760
+ ? render.dynamic(plain)
761
+ : render.bytes(escapeQuote(plain.value)),
762
+ )
763
+ for (const attribute of classes) {
764
+ const written = render.bytes(
765
+ ` ${escapeQuote(attribute.name.slice('class:'.length))}`,
766
+ )
767
+ // A `class:name` WITH NO EXPRESSION is a name with no condition on it — `class:active`
768
+ // alone, or `class:active="anything"` — and a name that is always written is exactly what
769
+ // the author's own `class` attribute is. Rendered as one rather than refused: there is
770
+ // nothing about it a clause forbids and nothing for a build error to save.
771
+ //
772
+ // THE CONDITION IS ECMASCRIPT'S ToBoolean, which `setClass`'s `Boolean(on)` is too, so a
773
+ // hydrated page never flips a class it was served with (`classifyAttributes.test.ts`).
774
+ parts.push(
775
+ attribute.expression
776
+ ? `(${unlandable(lowering, attribute, lowering.expression(attribute))} ? ${written} : '')`
777
+ : written,
778
+ )
779
+ }
780
+ return concat(parts)
781
+ }