@torpor/view 0.2.0 → 0.3.1

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 (728) hide show
  1. package/.oxlintrc.json +3 -0
  2. package/CHANGELOG.md +31 -0
  3. package/README.md +27 -26
  4. package/dist/Component-C6Y3UwGs.d.cts +11 -0
  5. package/dist/Component-C6Y3UwGs.d.cts.map +1 -0
  6. package/dist/Component-d19HOoEw.d.ts +11 -0
  7. package/dist/Component-d19HOoEw.d.ts.map +1 -0
  8. package/dist/ServerSlotRender-BiG4xB8e.d.ts +41 -0
  9. package/dist/ServerSlotRender-BiG4xB8e.d.ts.map +1 -0
  10. package/dist/ServerSlotRender-COS6H8Yk.d.cts +41 -0
  11. package/dist/ServerSlotRender-COS6H8Yk.d.cts.map +1 -0
  12. package/dist/compile.cjs +3383 -3783
  13. package/dist/compile.cjs.map +1 -1
  14. package/dist/compile.d.cts +202 -148
  15. package/dist/compile.d.cts.map +1 -0
  16. package/dist/compile.d.ts +202 -148
  17. package/dist/compile.d.ts.map +1 -0
  18. package/dist/compile.js +3378 -3754
  19. package/dist/compile.js.map +1 -1
  20. package/dist/formatText-B0FXBdFT.js +410 -0
  21. package/dist/formatText-B0FXBdFT.js.map +1 -0
  22. package/dist/formatText-DufG5l83.cjs +500 -0
  23. package/dist/formatText-DufG5l83.cjs.map +1 -0
  24. package/dist/index.cjs +853 -873
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +371 -171
  27. package/dist/index.d.cts.map +1 -0
  28. package/dist/index.d.ts +371 -171
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +819 -765
  31. package/dist/index.js.map +1 -1
  32. package/dist/ssr.cjs +29 -114
  33. package/dist/ssr.cjs.map +1 -1
  34. package/dist/ssr.d.cts +13 -8
  35. package/dist/ssr.d.cts.map +1 -0
  36. package/dist/ssr.d.ts +13 -8
  37. package/dist/ssr.d.ts.map +1 -0
  38. package/dist/ssr.js +18 -27
  39. package/dist/ssr.js.map +1 -1
  40. package/package.json +14 -15
  41. package/scripts/buildTestOutput.ts +1 -1
  42. package/scripts/copyToRepl.ts +9 -7
  43. package/src/ambient.d.ts +1 -0
  44. package/src/compile/build/client/BuildStatus.ts +6 -4
  45. package/src/compile/build/client/addMappedText.ts +25 -0
  46. package/src/compile/build/client/buildAddFragment.ts +26 -4
  47. package/src/compile/build/client/buildAwaitNode.ts +86 -54
  48. package/src/compile/build/client/buildCode.ts +91 -57
  49. package/src/compile/build/client/buildComponentNode.ts +20 -42
  50. package/src/compile/build/client/buildControlNode.ts +5 -4
  51. package/src/compile/build/client/buildElementNode.ts +66 -71
  52. package/src/compile/build/client/buildForNode.ts +24 -12
  53. package/src/compile/build/client/buildFragment.ts +29 -43
  54. package/src/compile/build/client/buildFragmentText.ts +27 -20
  55. package/src/compile/build/client/buildHtmlNode.ts +5 -3
  56. package/src/compile/build/client/buildIfNode.ts +44 -29
  57. package/src/compile/build/client/buildMount.ts +1 -1
  58. package/src/compile/build/client/buildNode.ts +8 -7
  59. package/src/compile/build/client/buildReplaceNode.ts +5 -3
  60. package/src/compile/build/client/buildRootNode.ts +2 -2
  61. package/src/compile/build/client/buildRun.ts +1 -1
  62. package/src/compile/build/client/buildScriptNode.ts +5 -3
  63. package/src/compile/build/client/buildSlotNode.ts +7 -23
  64. package/src/compile/build/client/buildSpecialNode.ts +10 -14
  65. package/src/compile/build/client/buildStyles.ts +53 -18
  66. package/src/compile/build/client/buildSwitchNode.ts +53 -32
  67. package/src/compile/build/client/buildTextNode.ts +31 -28
  68. package/src/compile/build/client/replaceForVarNames.ts +1 -1
  69. package/src/compile/build/client/stashRun.ts +22 -0
  70. package/src/compile/build/client/stashRunWithOffsets.ts +32 -0
  71. package/src/compile/build/server/BuildServerStatus.ts +3 -3
  72. package/src/compile/build/server/buildServerAwaitNode.ts +3 -3
  73. package/src/compile/build/server/buildServerCode.ts +57 -45
  74. package/src/compile/build/server/buildServerComponentNode.ts +10 -35
  75. package/src/compile/build/server/buildServerControlNode.ts +5 -2
  76. package/src/compile/build/server/buildServerElementNode.ts +15 -29
  77. package/src/compile/build/server/buildServerForNode.ts +3 -3
  78. package/src/compile/build/server/buildServerHtmlNode.ts +3 -3
  79. package/src/compile/build/server/buildServerIfNode.ts +3 -3
  80. package/src/compile/build/server/buildServerNode.ts +7 -6
  81. package/src/compile/build/server/buildServerReplaceNode.ts +3 -3
  82. package/src/compile/build/server/buildServerRootNode.ts +2 -2
  83. package/src/compile/build/server/buildServerScriptNode.ts +1 -1
  84. package/src/compile/build/server/buildServerSlotNode.ts +5 -21
  85. package/src/compile/build/server/buildServerSpecialNode.ts +10 -13
  86. package/src/compile/build/server/buildServerSwitchNode.ts +3 -3
  87. package/src/compile/build/server/buildServerTextNode.ts +9 -23
  88. package/src/compile/build/utils/nextVarName.ts +2 -2
  89. package/src/compile/build.ts +9 -4
  90. package/src/compile/buildType.ts +2 -2
  91. package/src/compile/parse/ParseComponentStatus.ts +24 -0
  92. package/src/compile/parse/ParseStatus.ts +6 -26
  93. package/src/compile/parse/addSpaceElement.ts +6 -5
  94. package/src/compile/parse/parseCode.ts +116 -60
  95. package/src/compile/parse/parseControl.ts +34 -32
  96. package/src/compile/parse/parseElement.ts +56 -121
  97. package/src/compile/parse/parseImports.ts +1 -1
  98. package/src/compile/parse/parseInlineScript.ts +12 -26
  99. package/src/compile/parse/parseMarkup.ts +9 -3
  100. package/src/compile/parse/parseStyles.ts +4 -4
  101. package/src/compile/parse/parseTag.ts +50 -8
  102. package/src/compile/parse/parseText.ts +96 -0
  103. package/src/compile/parse/scopeStyles.ts +9 -9
  104. package/src/compile/parse/slottifyChildNodes.ts +8 -7
  105. package/src/compile/parse/utils/accept.ts +1 -1
  106. package/src/compile/parse/utils/addError.ts +24 -6
  107. package/src/compile/parse/utils/consumeAlphaNumeric.ts +1 -1
  108. package/src/compile/parse/utils/consumeNonSpace.ts +1 -1
  109. package/src/compile/parse/utils/consumeSpace.ts +1 -1
  110. package/src/compile/parse/utils/consumeUntil.ts +1 -1
  111. package/src/compile/parse/utils/expect.ts +1 -1
  112. package/src/compile/parse.ts +1 -1
  113. package/src/compile/types/BuildResult.ts +5 -2
  114. package/src/compile/types/CompileError.ts +8 -5
  115. package/src/compile/types/Import.ts +2 -2
  116. package/src/compile/types/ParseResult.ts +4 -4
  117. package/src/compile/types/ScriptChunk.ts +6 -0
  118. package/src/compile/types/SourceMapping.ts +7 -0
  119. package/src/compile/types/SourceRange.ts +4 -0
  120. package/src/compile/types/nodes/Attribute.ts +7 -2
  121. package/src/compile/types/nodes/ControlNode.ts +8 -6
  122. package/src/compile/types/nodes/ElementNode.ts +11 -6
  123. package/src/compile/types/nodes/Fragment.ts +10 -2
  124. package/src/compile/types/nodes/NodeType.ts +3 -1
  125. package/src/compile/types/nodes/OperationType.ts +3 -1
  126. package/src/compile/types/nodes/ParentNode.ts +4 -4
  127. package/src/compile/types/nodes/RootNode.ts +5 -5
  128. package/src/compile/types/nodes/TemplateNode.ts +3 -3
  129. package/src/compile/types/nodes/TextNode.ts +5 -3
  130. package/src/compile/types/styles/Attribute.ts +2 -2
  131. package/src/compile/types/styles/Style.ts +3 -3
  132. package/src/compile/types/styles/StyleBlock.ts +3 -3
  133. package/src/compile/utils/Builder.ts +25 -11
  134. package/src/compile/utils/endOfString.ts +8 -0
  135. package/src/compile/utils/endOfTemplateString.ts +14 -0
  136. package/src/compile/{types/nodes → utils}/isComponentNode.ts +2 -2
  137. package/src/compile/utils/isControlNode.ts +6 -0
  138. package/src/compile/utils/isElementNode.ts +6 -0
  139. package/src/compile/utils/isParentNode.ts +6 -0
  140. package/src/compile/{types/nodes → utils}/isSpaceNode.ts +3 -3
  141. package/src/compile/utils/isSpecialNode.ts +6 -0
  142. package/src/compile/utils/isTextNode.ts +6 -0
  143. package/src/compile.ts +2 -2
  144. package/src/debug/printNode.ts +4 -0
  145. package/src/debug/printRanges.ts +74 -0
  146. package/src/debug/printSignalDiagram.ts +139 -0
  147. package/src/debug/printSimpleDiagram.ts +88 -0
  148. package/src/index.ts +13 -6
  149. package/src/render/$batch.ts +22 -0
  150. package/src/render/$cache.ts +34 -0
  151. package/src/render/$mount.ts +1 -1
  152. package/src/render/$peek.ts +14 -0
  153. package/src/render/$run.ts +16 -13
  154. package/src/render/$serverBatch.ts +3 -0
  155. package/src/render/$serverCache.ts +3 -0
  156. package/src/render/$serverMount.ts +1 -1
  157. package/src/render/$serverPeek.ts +3 -0
  158. package/src/render/$serverRun.ts +1 -1
  159. package/src/render/$unwrap.ts +3 -1
  160. package/src/render/$watch.ts +12 -13
  161. package/src/render/addAnimation.ts +1 -1
  162. package/src/render/addFragment.ts +15 -24
  163. package/src/render/applyProps.ts +1 -1
  164. package/src/render/buildClasses.ts +2 -2
  165. package/src/render/clearLayoutSlot.ts +1 -1
  166. package/src/render/clearRange.ts +43 -50
  167. package/src/render/context.ts +19 -48
  168. package/src/render/fillLayoutSlot.ts +3 -3
  169. package/src/render/getFragment.ts +1 -1
  170. package/src/render/hydrate.ts +9 -2
  171. package/src/render/hydrateRoot.ts +2 -2
  172. package/src/render/isCommentNode.ts +2 -2
  173. package/src/render/isFragmentNode.ts +2 -2
  174. package/src/render/isTextNode.ts +2 -2
  175. package/src/render/mount.ts +12 -4
  176. package/src/render/moveRange.ts +4 -11
  177. package/src/render/newListItem.ts +4 -4
  178. package/src/render/newRange.ts +6 -5
  179. package/src/render/nodeAnchor.ts +3 -3
  180. package/src/render/nodeCheckHydrationBreak.ts +2 -2
  181. package/src/render/nodeChild.ts +2 -2
  182. package/src/render/nodeNext.ts +1 -1
  183. package/src/render/nodeRoot.ts +8 -3
  184. package/src/render/popRange.ts +2 -2
  185. package/src/render/pushRange.ts +12 -4
  186. package/src/render/runControl.ts +1 -5
  187. package/src/render/runControlBranch.ts +10 -24
  188. package/src/render/runList.ts +6 -5
  189. package/src/render/runListItems.ts +39 -39
  190. package/src/render/setAttribute.ts +1 -1
  191. package/src/render/setDynamicElement.ts +2 -2
  192. package/src/ssr.ts +5 -2
  193. package/src/types/Animation.ts +1 -1
  194. package/src/types/BuildOptions.ts +6 -2
  195. package/src/types/Cleanup.ts +3 -1
  196. package/src/types/Component.ts +4 -2
  197. package/src/types/Computed.ts +62 -0
  198. package/src/types/Context.ts +99 -0
  199. package/src/types/Effect.ts +45 -9
  200. package/src/types/ListItem.ts +3 -3
  201. package/src/types/ProxyData.ts +6 -4
  202. package/src/types/ProxySignal.ts +28 -0
  203. package/src/types/Range.ts +10 -16
  204. package/src/types/ServerComponent.ts +4 -2
  205. package/src/types/ServerSlotRender.ts +3 -1
  206. package/src/types/SlotRender.ts +4 -2
  207. package/src/types/Subscription.ts +57 -0
  208. package/src/types/Template.ts +6 -5
  209. package/src/types/TemplateComponent.ts +7 -5
  210. package/src/types/WatchOptions.ts +8 -2
  211. package/src/types/constants.ts +14 -0
  212. package/src/watch/batchEnd.ts +17 -0
  213. package/src/watch/batchStart.ts +5 -0
  214. package/src/watch/checkComputed.ts +46 -0
  215. package/src/watch/checkEffect.ts +30 -0
  216. package/src/watch/checkSources.ts +63 -0
  217. package/src/watch/clearSources.ts +39 -0
  218. package/src/watch/clearTargets.ts +28 -0
  219. package/src/watch/deactivateSources.ts +19 -0
  220. package/src/watch/proxyGet.ts +106 -51
  221. package/src/watch/proxySet.ts +17 -13
  222. package/src/watch/runCleanups.ts +40 -0
  223. package/src/watch/runComputed.ts +36 -0
  224. package/src/watch/runEffect.ts +38 -13
  225. package/src/watch/symbols.ts +3 -1
  226. package/src/watch/trackEffect.ts +63 -15
  227. package/src/watch/trackProxyEffect.ts +21 -0
  228. package/src/watch/transferEffects.ts +66 -62
  229. package/src/watch/triggerEffects.ts +55 -18
  230. package/src/watch/updateSignal.ts +102 -0
  231. package/src/wrappers/ReactiveDate.ts +68 -0
  232. package/test/attributes/attributes.test.ts +2 -2
  233. package/test/attributes/components/output/Attributes-client.ts +8 -20
  234. package/test/attributes/components/output/Attributes-server.ts +8 -11
  235. package/test/attributes/components/temp/{Attributes-client-4620a40099e57a7fdaab895b204d85881f6dbfb7.ts → Attributes-client-9b2935d7824ba501776fdc6c48861422c15b6a12.ts} +8 -20
  236. package/test/attributes/components/temp/{Attributes-server-f4c59f5e4757ce0113907389902499efc36cfe38.ts → Attributes-server-716db6e335e5a372a34dd931e5f358ee6d1869e5.ts} +8 -11
  237. package/test/attributes/disappearing.test.ts +2 -2
  238. package/test/attributes/parse.test.ts +161 -248
  239. package/test/await/await.test.ts +2 -2
  240. package/test/await/components/Await.torp +2 -2
  241. package/test/await/components/output/Await-client.ts +25 -39
  242. package/test/await/components/output/Await-server.ts +9 -11
  243. package/test/await/components/temp/{Await-client-17b0e7c682fbff8518a440831620c1024b8be23a.ts → Await-client-e969f4bd0712acf259ddfaa5a3b3448307201fd2.ts} +25 -39
  244. package/test/await/components/temp/{Await-server-eb8d79f8abc791dd8e87f9713534cebf0eb2c854.ts → Await-server-614014fab69e234b8271088b10397cf0452d9a76.ts} +9 -11
  245. package/test/bench/components/Bench.torp +3 -3
  246. package/test/bench/components/output/Bench-client.ts +43 -252
  247. package/test/bench/components/output/Bench-server.ts +13 -26
  248. package/test/bench/components/temp/Bench-client-7f31596dafc8077370d8d90b1bb9b6e0208154e7.ts +205 -0
  249. package/test/bench/components/temp/Bench-server-341b20073668f4f2160cd2ba37847c7db15e1e0f.ts +129 -0
  250. package/test/bind/bind.test.ts +2 -2
  251. package/test/bind/component.test.ts +2 -2
  252. package/test/bind/components/output/BindComponent-client.ts +9 -19
  253. package/test/bind/components/output/BindComponent-server.ts +13 -18
  254. package/test/bind/components/output/BindText-client.ts +6 -13
  255. package/test/bind/components/output/BindText-server.ts +8 -10
  256. package/test/bind/components/temp/{BindComponent-client-a59ee6a598341c64c79be633ae7b22cb594dd0bc.ts → BindComponent-client-22eccb5354a2b0267841e015f3a2a0baf534bf89.ts} +9 -19
  257. package/test/bind/components/temp/{BindComponent-server-96120f1e75c77e02ba11ab719c225005e168d25f.ts → BindComponent-server-0da6ba90a409468fd1f7358f8198e96b7595ff80.ts} +13 -18
  258. package/test/bind/components/temp/{BindText-client-dac614203e672e51675b22a246983168a7c173ea.ts → BindText-client-7692ae1570533cc17e2186e9c7d4768529e4a2fe.ts} +6 -13
  259. package/test/bind/components/temp/{BindText-server-c713033ef787587f752fc8e6282e3a8faeee9a08.ts → BindText-server-6801c5f8e66a65405b45061bc037a011620c0591.ts} +8 -10
  260. package/test/build-server/build-server.test.ts +1 -0
  261. package/test/{if/components/temp/IfNested-client-f3045daba052e459add6e7f84e8d21ba7b0d81e4.ts → build-server/components/output/IfNested-client.ts} +23 -27
  262. package/test/{if/components/temp/IfNested-server-061ea3d56576a352be8a9db8424fae0f1d74cd36.ts → build-server/components/output/IfNested-server.ts} +6 -9
  263. package/test/build-server/components/temp/IfNested-client-eefdd449fa700b2e7326bc72df8b32ddcadf9d21.ts +88 -0
  264. package/test/build-server/components/temp/IfNested-server-7a53e4969b5dfe5073f05edbcb1b986f718bb939.ts +29 -0
  265. package/test/buildHtml.ts +2 -1
  266. package/test/buildOutputFiles.ts +3 -3
  267. package/test/child-component/child-component.test.ts +2 -2
  268. package/test/child-component/components/output/ParentChild-client.ts +9 -19
  269. package/test/child-component/components/output/ParentChild-server.ts +12 -18
  270. package/test/child-component/components/temp/{ParentChild-client-198e4ebc2ef5277ad7147f69d5879946fbe2d6ec.ts → ParentChild-client-2dfd600f7d409630d429a1d2d18c038bd08b08da.ts} +9 -19
  271. package/test/child-component/components/temp/{ParentChild-server-55e809830788ae740608136cf66664fc5434a9cd.ts → ParentChild-server-448d57c3229189c1d297d01dfb0f33646d280e90.ts} +12 -18
  272. package/test/class/class.test.ts +2 -2
  273. package/test/class/components/output/Class-client.ts +11 -29
  274. package/test/class/components/output/Class-server.ts +16 -19
  275. package/test/class/components/temp/{Class-client-7defac0b98d9c9f303670c0372e329e31823f163.ts → Class-client-5af6a50cd454ae019b2aa79457ba7ead83b8c056.ts} +11 -29
  276. package/test/class/components/temp/{Class-server-46563e9c3bf56b642ac496b60179decfd0b4e952.ts → Class-server-eb70ff01fbc7d6d53e16c3593ba021a6bf0317f9.ts} +16 -19
  277. package/test/comments/html-comments.test.ts +16 -24
  278. package/test/comments/js-block-comments.test.ts +16 -25
  279. package/test/comments/js-line-comments.test.ts +16 -25
  280. package/test/component/component.test.ts +2 -2
  281. package/test/component/components/Component.torp +1 -1
  282. package/test/component/components/output/Component-client.ts +5 -10
  283. package/test/component/components/output/Component-server.ts +7 -10
  284. package/test/component/components/output/Header-client.ts +6 -12
  285. package/test/component/components/output/Header-server.ts +7 -10
  286. package/test/component/components/temp/{Component-client-350d20784712c710929cc3ab34c6828b0ea338d8.ts → Component-client-fdc327499be0a01f987d0f2897baf022a247c77c.ts} +5 -10
  287. package/test/component/components/temp/{Component-server-2d4aa317e6c385036e07f4c3946fc18ba848c00d.ts → Component-server-f53221ac7b1c922ef10de2d1fe8fb534d0169fe7.ts} +7 -10
  288. package/test/component/components/temp/{Header-client-903877003b220272b0cb5bfd62d7d748ad46c477.ts → Header-client-6beb5770e68e6b19595e53e20bc906765fc6c260.ts} +6 -12
  289. package/test/component/components/temp/Header-server-940b0984f9b6c11f310db9200c9075ded385eda5.ts +16 -0
  290. package/test/console/components/output/Console-client.ts +5 -10
  291. package/test/console/components/output/Console-server.ts +7 -10
  292. package/test/console/components/temp/{Console-client-4fa3b3679cee88bf6151185438e36d14010944b7.ts → Console-client-2b58290ac407ebbe89a0613d64eb9cd141b99887.ts} +5 -10
  293. package/test/console/components/temp/Console-server-bde0121ce434f767435b1841fc4c24402becdba2.ts +15 -0
  294. package/test/console/console.test.ts +2 -2
  295. package/test/const/components/output/Const-client.ts +6 -11
  296. package/test/const/components/output/Const-server.ts +7 -10
  297. package/test/const/components/temp/{Const-client-b0293a037d9ed7b6ad4591c153723a3c26d46029.ts → Const-client-d1037557e7ef75a8fe06f56816e65883047e9421.ts} +6 -11
  298. package/test/const/components/temp/{Const-server-5fd2444a9ae7a676b7c4480e01e28f7f89624fdc.ts → Const-server-32ddc3617afe2324f17a4cff6c0f086df6694778.ts} +7 -10
  299. package/test/const/const.test.ts +2 -2
  300. package/test/context/components/ChildA.torp +10 -0
  301. package/test/context/components/ChildB.torp +8 -0
  302. package/test/context/components/Parent.torp +11 -0
  303. package/test/context/components/output/ChildA-client.ts +38 -0
  304. package/test/context/components/output/ChildA-server.ts +19 -0
  305. package/test/context/components/output/ChildB-client.ts +27 -0
  306. package/test/context/components/output/ChildB-server.ts +18 -0
  307. package/test/context/components/output/Parent-server.ts +31 -0
  308. package/test/context/components/temp/ChildA-client-9dea3e29ffcb82ca1779f6ff671e19b1c106fc4a.ts +38 -0
  309. package/test/context/components/temp/ChildA-server-54024d23c8241c3f475068f4fe3a3a14fd1c5870.ts +19 -0
  310. package/test/context/components/temp/ChildB-client-4b801099936c8aa013a1220f291375f67eba1acb.ts +27 -0
  311. package/test/context/components/temp/ChildB-server-f9b71341863bf869248bd406dbe8c7726a30ff90.ts +18 -0
  312. package/test/context/components/temp/Parent-client-9898b2e521527c86d69905053b6727ea8fd28166.ts +41 -0
  313. package/test/context/components/temp/Parent-server-b592ff0f516f4592e56d3a0bcb1f271ed28e812c.ts +31 -0
  314. package/test/context/context.test.ts +37 -0
  315. package/test/effects/components/output/For-client.ts +18 -19
  316. package/test/effects/components/output/For-server.ts +6 -9
  317. package/test/effects/components/output/If-client.ts +14 -18
  318. package/test/effects/components/output/If-server.ts +6 -9
  319. package/test/effects/components/output/NestedIf-client.ts +22 -25
  320. package/test/effects/components/output/NestedIf-server.ts +6 -9
  321. package/test/effects/components/temp/{For-client-268e69779d5b744377af9b30df256a453adaf183.ts → For-client-7c7d7c0dba2547f816b9bd9c6a95d6873ec00ffd.ts} +18 -19
  322. package/test/effects/components/temp/{For-server-b15b01b4daaf50fd95de790102089eb930e84e9b.ts → For-server-9e2de4efaff38ecf6c8a169c629d83c385489ca1.ts} +6 -9
  323. package/test/effects/components/temp/{If-client-4df0e6fc27a6f7d60ce056fd65df687213f3a2f9.ts → If-client-f0480a98f80b32612d12765c6838ff6db5982e82.ts} +14 -18
  324. package/test/effects/components/temp/{If-server-0a213ea232e0225d5a8ecb012ad418136b86fbe7.ts → If-server-ab409671b5d4c918047394a37b6e96b0e17063ca.ts} +6 -9
  325. package/test/effects/components/temp/{NestedIf-client-bfd381672c51febbe2f101f19afd5f6ff570ce7e.ts → NestedIf-client-702deffd158f219c5da4199b563a62cd54385a7f.ts} +22 -25
  326. package/test/effects/components/temp/{NestedIf-server-6089abc72d6208e64d1818ddb624ad5c3f236afa.ts → NestedIf-server-40f6bfd99a7e75fb4f9f874adab77e5eed97c629.ts} +6 -9
  327. package/test/effects/for-effect.test.ts +15 -15
  328. package/test/effects/if-effect.test.ts +7 -7
  329. package/test/effects/nested-if-effect.test.ts +11 -11
  330. package/test/events/components/Increment.torp +1 -1
  331. package/test/events/components/output/Increment-client.ts +7 -12
  332. package/test/events/components/output/Increment-server.ts +9 -11
  333. package/test/events/components/temp/{Increment-client-db2fd3376f12b186a4276eac470bf10b7bf2da19.ts → Increment-client-84c09711baf098c82ee226598ba7a36913616b75.ts} +7 -12
  334. package/test/events/components/temp/{Increment-server-062b9757192b84e5a6e247aa44e1e7887129293d.ts → Increment-server-e77c6b207023ac60e033ca542ee82473ef017f74.ts} +9 -11
  335. package/test/events/events.test.ts +9 -15
  336. package/test/for/components/output/For-client.ts +19 -19
  337. package/test/for/components/output/For-server.ts +7 -10
  338. package/test/for/components/output/ForEscape-client.ts +23 -37
  339. package/test/for/components/output/ForEscape-server.ts +8 -10
  340. package/test/for/components/output/ForIn-client.ts +19 -20
  341. package/test/for/components/output/ForIn-server.ts +7 -10
  342. package/test/for/components/output/ForOf-client.ts +19 -20
  343. package/test/for/components/output/ForOf-server.ts +7 -10
  344. package/test/for/components/temp/{For-client-8ecb11a2f34c81f837bffdb88598da06d8c19158.ts → For-client-2f6b4b81670b0ba31b01176b4f61ebf321e945bb.ts} +19 -19
  345. package/test/for/components/temp/{For-server-082c156a9f047995bc55f9477295d8e3262614f5.ts → For-server-5144615e53d23da5062b7169e847e0777d068738.ts} +7 -10
  346. package/test/for/components/temp/{ForEscape-client-14e7648415d967cdc57bf03d176eb6b6dddf0fb2.ts → ForEscape-client-8d0fcc940851e687173b6a9129c3d83e0fc771ef.ts} +23 -37
  347. package/test/for/components/temp/{ForEscape-server-2db43ff8397ddbb114b5bff3d88a63728184a811.ts → ForEscape-server-b359d8d3e12bac290855a1b27387ddd963562c08.ts} +8 -10
  348. package/test/for/components/temp/{ForIn-client-25cd67f246a50fc6d926a8c66aa5e106f19578a8.ts → ForIn-client-fa0614a1c7b8aa6e8819ed91a518479fd80453ae.ts} +19 -20
  349. package/test/for/components/temp/{ForIn-server-fda7a21cbb8a7ad69c48d2a8533cc13fa98d54b6.ts → ForIn-server-5fd472a7a5a5c00b384791780025a0c3bdc9c41b.ts} +7 -10
  350. package/test/for/components/temp/{ForOf-client-8f6598ccd9dc7b79aff6167b90ccea94f3029c84.ts → ForOf-client-11006c4239d9018363e582dc5b54b50477d652e7.ts} +19 -20
  351. package/test/for/components/temp/{ForOf-server-cd2b01507304e25c34030755b915f56785375de8.ts → ForOf-server-197b29abcb60412c6c8670b2d4a2e644b650faa3.ts} +7 -10
  352. package/test/for/for-escape.test.ts +2 -2
  353. package/test/for/for-in.test.ts +4 -4
  354. package/test/for/for-of.test.ts +4 -4
  355. package/test/for/for-with-key.test.ts +28 -36
  356. package/test/for/for.test.ts +2 -2
  357. package/test/function/components/Function.torp +0 -1
  358. package/test/function/components/output/Function-client.ts +6 -12
  359. package/test/function/components/output/Function-server.ts +8 -11
  360. package/test/function/components/temp/{Function-client-2068eb8ae35b3157b8eda79addde6afd9f4d7006.ts → Function-client-ec5fe7d599d6099bdfab78c2a0c8edf77a23cd9b.ts} +6 -12
  361. package/test/function/components/temp/{Function-server-4b66a728f6f1b170d678313238bdc9158356511e.ts → Function-server-fee2402b0ef4ad4c3d2779afb190ce46dbedf737.ts} +8 -11
  362. package/test/function/function.test.ts +7 -13
  363. package/test/helpers.ts +44 -9
  364. package/test/html/components/output/Html-client.ts +6 -12
  365. package/test/html/components/output/Html-server.ts +7 -10
  366. package/test/html/components/temp/{Html-client-93b0d666142c64cd651dc37f14f12884b2f30612.ts → Html-client-82ff34dcdcbdf4be1112bcb1baac8027cdc32de7.ts} +6 -12
  367. package/test/html/components/temp/Html-server-14fa484fc2a617bc0f24432a2e37e7a756f87a0f.ts +15 -0
  368. package/test/html/html.test.ts +2 -2
  369. package/test/hydrateComponent.ts +2 -2
  370. package/test/if/components/output/IfAfterIf-client.ts +21 -23
  371. package/test/if/components/output/IfAfterIf-server.ts +6 -9
  372. package/test/if/components/output/IfElse-client.ts +14 -18
  373. package/test/if/components/output/IfElse-server.ts +6 -9
  374. package/test/if/components/output/IfElseIf-client.ts +16 -22
  375. package/test/if/components/output/IfElseIf-server.ts +6 -9
  376. package/test/if/components/output/IfFalse-client.ts +13 -16
  377. package/test/if/components/output/IfFalse-server.ts +6 -9
  378. package/test/if/components/output/IfNested-client.ts +23 -27
  379. package/test/if/components/output/IfNested-server.ts +6 -9
  380. package/test/if/components/temp/{IfAfterIf-client-6b4833209a01cdad18d453839e9c8b5dad2a8510.ts → IfAfterIf-client-c1cfd21a6ace4945703ba8f46aada923a60265d9.ts} +21 -23
  381. package/test/if/components/temp/{IfAfterIf-server-3e6a3beab27821c3e53290ee72eca811814aad38.ts → IfAfterIf-server-26c9a638e3933a53208bfe66f8f37067511a28aa.ts} +6 -9
  382. package/test/if/components/temp/{IfElse-client-f7eb8e5fe5e62975a2442c4b0ff3344fa44cef69.ts → IfElse-client-06dfcacd3a5225dcb0947587bcd4fae9ec3d3c1e.ts} +14 -18
  383. package/test/if/components/temp/{IfElse-server-1b5006dfad695f257c7453a79bde3944898fbf6d.ts → IfElse-server-146b3779f85ea02a281c6042dddefa5372945fb0.ts} +6 -9
  384. package/test/if/components/temp/{IfElseIf-client-734f1b2d9133294573770c1ffc2b589273498532.ts → IfElseIf-client-26df9a728c9cb712d5ac0235b4c99885f25545b8.ts} +16 -22
  385. package/test/if/components/temp/{IfElseIf-server-11c65065e9e5640ad65cd0c37af07f1e57c4f49c.ts → IfElseIf-server-f094cdb45bc0fcd3144ca493346994b2445d2ff0.ts} +6 -9
  386. package/test/if/components/temp/{IfFalse-client-8a388cb48b4a5879d491f57d1f2551834de1e72e.ts → IfFalse-client-de6fc8e9eb222153608490e6d172e9aae9000aa1.ts} +13 -16
  387. package/test/if/components/temp/{IfFalse-server-40d07bc07e5edffd7386fb6016cd025b98175219.ts → IfFalse-server-b6d3446fd7d4219d5cb3c1009dec76870e73fa30.ts} +6 -9
  388. package/test/if/components/temp/IfNested-client-eefdd449fa700b2e7326bc72df8b32ddcadf9d21.ts +88 -0
  389. package/test/if/components/temp/IfNested-server-7a53e4969b5dfe5073f05edbcb1b986f718bb939.ts +29 -0
  390. package/test/if/else-if-true.test.ts +4 -4
  391. package/test/if/else-true.test.ts +4 -4
  392. package/test/if/if-after-if.test.ts +4 -4
  393. package/test/if/if-else-false.test.ts +4 -4
  394. package/test/if/if-else-true.test.ts +4 -4
  395. package/test/if/if-false.test.ts +4 -4
  396. package/test/if/if-nested.test.ts +4 -4
  397. package/test/imports/commented-imports.ts +1 -1
  398. package/test/imports/imports.ts +1 -1
  399. package/test/imports/multiple-imports.ts +1 -1
  400. package/test/mount/components/Mount.torp +1 -1
  401. package/test/mount/components/output/Mount-client.ts +6 -11
  402. package/test/mount/components/output/Mount-server.ts +10 -13
  403. package/test/mount/components/temp/{Mount-client-efa5c34fbfc7646e114a1a58f0814b6dff33e566.ts → Mount-client-29896228d7d0ef3692a9d13065c1bbfbe3198cdc.ts} +6 -11
  404. package/test/mount/components/temp/Mount-server-1c5aef88b8cc25b8e02851c0aa7fedffea987224.ts +22 -0
  405. package/test/mount/mount.test.ts +4 -4
  406. package/test/mountComponent.ts +1 -1
  407. package/test/on-mount/components/OnMount.torp +1 -1
  408. package/test/on-mount/components/output/OnMount-client.ts +5 -10
  409. package/test/on-mount/components/output/OnMount-server.ts +7 -10
  410. package/test/on-mount/components/temp/{OnMount-client-4bb62e8bf1fcd67798598fe03bf5455a57f0a6be.ts → OnMount-client-038f8c6bbcf0278406909d6ba5394f311924fda9.ts} +5 -10
  411. package/test/on-mount/components/temp/OnMount-server-ff4afcd976fd907c539e763d7887b38c61737be7.ts +15 -0
  412. package/test/on-mount/on-mount.test.ts +6 -6
  413. package/test/party/1-declare-state.test.ts +2 -2
  414. package/test/party/10-on-mount.test.ts +2 -2
  415. package/test/party/12-props.test.ts +2 -2
  416. package/test/party/13-emit-to-parent.test.ts +2 -2
  417. package/test/party/14-slot.test.ts +2 -2
  418. package/test/party/15-slot-fallback.test.ts +2 -2
  419. package/test/party/16-context.test.ts +2 -2
  420. package/test/party/17-input-text.test.ts +2 -2
  421. package/test/party/18-input-checkbox.test.ts +2 -2
  422. package/test/party/19-input-radio.test.ts +2 -2
  423. package/test/party/2-update-state.test.ts +2 -2
  424. package/test/party/20-input-select.test.ts +2 -2
  425. package/test/party/3-computed-state.test.ts +2 -2
  426. package/test/party/4-minimal-template.test.ts +2 -2
  427. package/test/party/5-styling.test.ts +2 -2
  428. package/test/party/6-loop.test.ts +2 -2
  429. package/test/party/7-event-click.test.ts +2 -2
  430. package/test/party/8-dom-ref.test.ts +4 -4
  431. package/test/party/9-conditional.test.ts +2 -2
  432. package/test/party/components/FunnyButton.torp +2 -2
  433. package/test/party/components/InputFocused.torp +1 -1
  434. package/test/party/components/UserProfile.torp +1 -1
  435. package/test/party/components/UserProfileApp.torp +1 -1
  436. package/test/party/components/UserProfileContextApp.torp +1 -1
  437. package/test/party/components/output/AnswerButton-client.ts +4 -10
  438. package/test/party/components/output/AnswerButton-server.ts +6 -9
  439. package/test/party/components/output/AnswerButtonApp-client.ts +6 -11
  440. package/test/party/components/output/AnswerButtonApp-server.ts +8 -10
  441. package/test/party/components/output/ColorSelect-client.ts +22 -26
  442. package/test/party/components/output/ColorSelect-server.ts +8 -10
  443. package/test/party/components/output/Colors-client.ts +19 -20
  444. package/test/party/components/output/Colors-server.ts +8 -10
  445. package/test/party/components/output/Counter-client.ts +7 -12
  446. package/test/party/components/output/Counter-server.ts +8 -10
  447. package/test/party/components/output/CssStyle-client.ts +5 -10
  448. package/test/party/components/output/CssStyle-server.ts +10 -10
  449. package/test/party/components/output/DoubleCount-client.ts +6 -11
  450. package/test/party/components/output/DoubleCount-server.ts +8 -10
  451. package/test/party/components/output/FunnyButton-client.ts +4 -10
  452. package/test/party/components/output/FunnyButton-server.ts +6 -8
  453. package/test/party/components/output/FunnyButtonApp-client.ts +7 -14
  454. package/test/party/components/output/FunnyButtonApp-server.ts +8 -12
  455. package/test/party/components/output/HelloWorld-client.ts +5 -10
  456. package/test/party/components/output/HelloWorld-server.ts +7 -10
  457. package/test/party/components/output/InputFocused-client.ts +6 -11
  458. package/test/party/components/output/InputFocused-server.ts +10 -13
  459. package/test/party/components/output/InputHello-client.ts +8 -13
  460. package/test/party/components/output/InputHello-server.ts +8 -10
  461. package/test/party/components/output/IsAvailable-client.ts +8 -13
  462. package/test/party/components/output/IsAvailable-server.ts +8 -10
  463. package/test/party/components/output/Name-client.ts +6 -11
  464. package/test/party/components/output/Name-server.ts +8 -10
  465. package/test/party/components/output/NameUpdate-client.ts +6 -11
  466. package/test/party/components/output/NameUpdate-server.ts +8 -10
  467. package/test/party/components/output/PageTitle-client.ts +6 -11
  468. package/test/party/components/output/PageTitle-server.ts +8 -10
  469. package/test/party/components/output/PickPill-client.ts +8 -13
  470. package/test/party/components/output/PickPill-server.ts +8 -10
  471. package/test/party/components/output/Time-client.ts +6 -11
  472. package/test/party/components/output/Time-server.ts +8 -10
  473. package/test/party/components/output/TrafficLight-client.ts +18 -26
  474. package/test/party/components/output/TrafficLight-server.ts +8 -10
  475. package/test/party/components/output/UserProfile-client.ts +6 -18
  476. package/test/party/components/output/UserProfile-server.ts +7 -10
  477. package/test/party/components/output/UserProfileApp-client.ts +6 -11
  478. package/test/party/components/output/UserProfileApp-server.ts +8 -11
  479. package/test/party/components/output/UserProfileContext-client.ts +7 -13
  480. package/test/party/components/output/UserProfileContext-server.ts +8 -9
  481. package/test/party/components/output/UserProfileContextApp-client.ts +7 -12
  482. package/test/party/components/output/UserProfileContextApp-server.ts +9 -11
  483. package/test/party/components/temp/{AnswerButton-client-890e28879c132eea21260eb82af832afc6a48507.ts → AnswerButton-client-df895c3e7a88fd7ede9f951fc9de2ed75c27a5cb.ts} +4 -10
  484. package/test/party/components/temp/{AnswerButton-server-01ffab9f6f92073640df2cf2cb5473407d82b24f.ts → AnswerButton-server-fa0e78b504a78d0e2dcd33a9a589f62e5b99c675.ts} +6 -9
  485. package/test/party/components/temp/{AnswerButtonApp-client-295a835cadf7e7ccec608f84ed01865dd8c73954.ts → AnswerButtonApp-client-4c05ef36b1c0e93370fb463643419928717fa701.ts} +6 -11
  486. package/test/party/components/temp/{AnswerButtonApp-server-b458692868307e6e08ad3deed9c2db542c28dee0.ts → AnswerButtonApp-server-062042691dabfa1a20d4088030c0b5bee1cd0be2.ts} +8 -10
  487. package/test/party/components/temp/{ColorSelect-client-5f74d3b38193a0c9b22317598cdbf2f56754ca2b.ts → ColorSelect-client-5db8d1b0924361fdb5efb867c14491402ec9668c.ts} +22 -26
  488. package/test/party/components/temp/{ColorSelect-server-cf0b1b533948a558e1705d9a7cca3c0b6ae8d315.ts → ColorSelect-server-8722b440cb7266a18a71b35c166be6dd6566fcec.ts} +8 -10
  489. package/test/party/components/temp/{Colors-client-806316cc5e01e8235c0b025cad34b1068addf5a5.ts → Colors-client-6d3ac693e85bdda50b8742282915997063a32769.ts} +19 -20
  490. package/test/party/components/temp/{Colors-server-b050714bfe752b88a99f6498f1b5c13abe6b56a5.ts → Colors-server-16572e26a55214c26683ce560b058b55d8c92685.ts} +8 -10
  491. package/test/party/components/temp/{Counter-client-006caeda8766cb17a161da0c6f58f006f8f16e8b.ts → Counter-client-0c604a107c5b84cdbf725f307dfe29d34f8a2cc8.ts} +7 -12
  492. package/test/party/components/temp/{Counter-server-931d36d8e4bcd114047bbfec8aa5f2fac0c2ce1e.ts → Counter-server-db18f030a6e02ab17708d6a17eb3e590965090e5.ts} +8 -10
  493. package/test/party/components/temp/{CssStyle-client-6ec06cbc4b34344234d289f6c4a9e427efff85a7.ts → CssStyle-client-2a642d115ad52539f97c051c34687b8d6d12b324.ts} +5 -10
  494. package/test/party/components/temp/CssStyle-server-0477c5497707dd9071105e5ec9045a3a7d1dd62d.ts +18 -0
  495. package/test/party/components/temp/{DoubleCount-client-6d4cf1e54368e3c6082e37c1e04f9ecde90624f2.ts → DoubleCount-client-8c85c3af12c471ea23bb702bbf5a3e240420f3ec.ts} +6 -11
  496. package/test/party/components/temp/{DoubleCount-server-8c013a97a08562deb6ad0f35e6e337203b0ddde9.ts → DoubleCount-server-5b04bb31269f9c8de6c25be427f57ab6e3d4dc19.ts} +8 -10
  497. package/test/party/components/temp/{FunnyButton-client-6d5662018a5a5529fd52ee82f7c88975b5c3355a.ts → FunnyButton-client-850dd3da0fa803c1bce5c53e88fcd2d48d279eb8.ts} +4 -10
  498. package/test/party/components/temp/{FunnyButton-server-3fd55a1e1dc71c183a6cea68e4c4693c988b7533.ts → FunnyButton-server-3df0067ec21476e7525d1c3de7099431c976f73b.ts} +6 -8
  499. package/test/party/components/temp/{FunnyButtonApp-client-1f2258b8488469d4704366bc49f5c171d8a854ae.ts → FunnyButtonApp-client-00300846d11a3d0a5a620c2ade87b935b7f0ebf8.ts} +7 -14
  500. package/test/party/components/temp/{FunnyButtonApp-server-6463d1c57adf61450d1415f0d76da4561ca3e798.ts → FunnyButtonApp-server-4cd83d2c71615fe4c905920e5ea836df4ed66c5e.ts} +8 -12
  501. package/test/party/components/temp/{HelloWorld-client-7344e400b4adb975fa8263d3081a06de0a793e57.ts → HelloWorld-client-890b311ad9a3919379acdc1d52807ea36cc9f489.ts} +5 -10
  502. package/test/party/components/temp/HelloWorld-server-e2c800d7f5cd3e772a9e5bbd7af58b00611b79d5.ts +15 -0
  503. package/test/party/components/temp/{InputFocused-client-20d755aea7dfaf1fd5e42dcade8fb7867f59ef28.ts → InputFocused-client-03527f9ceb52f66ac53887dbc884a0aa83bb7a23.ts} +6 -11
  504. package/test/party/components/temp/InputFocused-server-544a76ea64852474a3c7bf450b6fac36cbaf21c6.ts +23 -0
  505. package/test/party/components/temp/{InputHello-client-496d26bdeb6a168c4242e45f35d22e6ecbd211b9.ts → InputHello-client-f65a477624975b68b7aaa3614fbf198d4476480f.ts} +8 -13
  506. package/test/party/components/temp/{InputHello-server-a5fb3e0d8766c19d177a1f4d43d421c7da1b92ab.ts → InputHello-server-102d293d6c0fff7feda50d64bbd607df7d09393a.ts} +8 -10
  507. package/test/party/components/temp/{IsAvailable-client-491b92b5e21ebe1bbab47b2e422c35fb996b55e1.ts → IsAvailable-client-8767437fd92cf79713de5b00828e1502e38d79e3.ts} +8 -13
  508. package/test/party/components/temp/{IsAvailable-server-c0da3c019ef13617d2ab51353eb3360ddaae4189.ts → IsAvailable-server-2cf1e0d72df4bc194b5e00a1b415ba99f488525f.ts} +8 -10
  509. package/test/party/components/temp/{Name-client-62f0dab96aff130e81882099d7c0a111ba99cebd.ts → Name-client-08903a8df8bdff5288170d3c89658192956587a9.ts} +6 -11
  510. package/test/party/components/temp/{Name-server-0306b0c622d71323eb79a6b466d900380a0944f3.ts → Name-server-7d95226078ef4cd13b0ac6c5365ccbe4b8b9c0a2.ts} +8 -10
  511. package/test/party/components/temp/{NameUpdate-client-6ceb440637c99142bafcf8512eabf831c113b8c7.ts → NameUpdate-client-d65b2476c3721d2efddf9385a61433e2a2dd0d72.ts} +6 -11
  512. package/test/party/components/temp/{NameUpdate-server-a54ea11dc6b8f0b55d29ad29163cf27b9aa6ec40.ts → NameUpdate-server-9c901f861eddfde14440c2591dfafb2b1fb1993d.ts} +8 -10
  513. package/test/party/components/temp/{PageTitle-client-75fea3a37fb1213bc13f56160bb6779486b2e6e9.ts → PageTitle-client-c006df9a3e662488a1db089de53fd485c6b923e4.ts} +6 -11
  514. package/test/party/components/temp/{PageTitle-server-8b34f9af760ab39e20a60e10ee3185e70d92e42b.ts → PageTitle-server-f4676ec6feccaa03b89d52835c6635536eb885ef.ts} +8 -10
  515. package/test/party/components/temp/{PickPill-client-a1f48b5c28db87eb57f0ac1f6b4370e4b2952de7.ts → PickPill-client-af8357daf3f6633c7f451d0bddd72fefe786d5c3.ts} +8 -13
  516. package/test/party/components/temp/{PickPill-server-9596fdb8ff254cb4e1b99b714f3c5e8ea8aaa308.ts → PickPill-server-d8fb383bc25f7d26bb0153088a2ee19c765fc66b.ts} +8 -10
  517. package/test/party/components/temp/{Time-client-2013f274e90b45be3138727f2298305e1951131f.ts → Time-client-94380d45de7275a5cec98e5f58c15b74b13e9c3e.ts} +6 -11
  518. package/test/party/components/temp/{Time-server-da1cafe72c0f9a6dbf15a04dfa7282ae5187c101.ts → Time-server-3f71a83b6fd357b57e85344281454ee793024e7b.ts} +8 -10
  519. package/test/party/components/temp/{TrafficLight-client-d04c95686ec0ad8a9c54710773945e9904224d5e.ts → TrafficLight-client-12b20962b4146ef08fe0c37597441533c7699408.ts} +18 -26
  520. package/test/party/components/temp/{TrafficLight-server-6c0f66cdabfc7239b99665c3f7087462ee302e8a.ts → TrafficLight-server-625a774075633be88822f4d345e1421a77aba98a.ts} +8 -10
  521. package/test/party/components/temp/{UserProfile-client-a59466813b208664f35e6e394858c3d61e040644.ts → UserProfile-client-e5330b2c96bd8b225cb6291bc8b1d9f35c93307e.ts} +6 -18
  522. package/test/party/components/temp/{UserProfile-server-b10ec192e03dc818fe66dbd4aad14200e817e596.ts → UserProfile-server-6e89fd7f8ade8e8d64630e5da8361d7a1fa2ff5a.ts} +7 -10
  523. package/test/party/components/temp/{UserProfileApp-client-e0bfaa4ffed336c8be4b23dd81800501980c9938.ts → UserProfileApp-client-4c86e4f9a0d042f4f4811868f0146e872b17353c.ts} +6 -11
  524. package/test/party/components/temp/{UserProfileApp-server-4b308db466a80bcacd190aa71f86cf4d2b6f2873.ts → UserProfileApp-server-754d269451abf8fd04e519b8edde33d25c73ce28.ts} +8 -11
  525. package/test/party/components/temp/{UserProfileContext-client-7ef27199bd35b55b3dadd876174a2ef4b602b63f.ts → UserProfileContext-client-424131db3cc89ae4babe127b9108ffc5696c9e1d.ts} +7 -13
  526. package/test/party/components/temp/{UserProfileContext-server-df958e4fc2de2242c556ffa61ddb58aa395de50c.ts → UserProfileContext-server-e72e8ccee2703cce216f2368a1555d64acc2654c.ts} +8 -9
  527. package/test/party/components/temp/{UserProfileContextApp-client-b3ef357f481dfb940e1c726690d57567fde2dc23.ts → UserProfileContextApp-client-5f94a7ccf3e4542ea40d8046ad75eeb21005c55f.ts} +7 -12
  528. package/test/party/components/temp/{UserProfileContextApp-server-f8fe2b88db3d0dfa4dafd300006b25123cb8e3fb.ts → UserProfileContextApp-server-267ac147e0e59e53aeb6741a8cd0f3ef1216051f.ts} +9 -11
  529. package/test/preact.test.ts +2560 -0
  530. package/test/props/components/output/Reactive-client.ts +8 -17
  531. package/test/props/components/output/Reactive-server.ts +12 -16
  532. package/test/props/components/temp/{Reactive-client-21a24e3b0a76140567db8a01975317c9c0e0ad5a.ts → Reactive-client-9bc3643675fc563f96efb00bc3c4b843ba4b7f2e.ts} +8 -17
  533. package/test/props/components/temp/{Reactive-server-b6e37b5d3488ea74a260ca972906bfab30dde486.ts → Reactive-server-8a84d0fc1f375d91438d840ca9753e32d86366ac.ts} +12 -16
  534. package/test/props/reactive.test.ts +2 -2
  535. package/test/replace/components/output/Replace-client.ts +6 -14
  536. package/test/replace/components/output/Replace-server.ts +7 -9
  537. package/test/replace/components/temp/{Replace-client-aee34e2e40c6f4380b61e9c7c8df9af1897f06cc.ts → Replace-client-6f21ff3eb303bd5488d211087dc35fcf998d4e2a.ts} +6 -14
  538. package/test/replace/components/temp/{Replace-server-3521251fa687ce42af3128d22b129fe1ec6ed411.ts → Replace-server-b536cf6d792ae73aaa7f5ea04cda6858a07479f9.ts} +7 -9
  539. package/test/replace/replace.test.ts +2 -2
  540. package/test/script/script-with-comments.test.ts +14 -19
  541. package/test/script/script-with-strings.test.ts +14 -19
  542. package/test/script/script.test.ts +14 -19
  543. package/test/slots/basic-slot.test.ts +2 -2
  544. package/test/slots/components/Article.torp +3 -3
  545. package/test/slots/components/Basic.torp +1 -1
  546. package/test/slots/components/Header.torp +2 -2
  547. package/test/slots/components/Let.torp +3 -3
  548. package/test/slots/components/List.torp +1 -1
  549. package/test/slots/components/Named.torp +3 -3
  550. package/test/slots/components/Unused.torp +1 -1
  551. package/test/slots/components/output/Article-client.ts +4 -8
  552. package/test/slots/components/output/Article-server.ts +6 -8
  553. package/test/slots/components/output/Basic-client.ts +7 -14
  554. package/test/slots/components/output/Basic-server.ts +8 -12
  555. package/test/slots/components/output/Header-client.ts +4 -9
  556. package/test/slots/components/output/Header-server.ts +6 -8
  557. package/test/slots/components/output/Let-client.ts +7 -14
  558. package/test/slots/components/output/Let-server.ts +7 -11
  559. package/test/slots/components/output/List-client.ts +17 -16
  560. package/test/slots/components/output/List-server.ts +6 -8
  561. package/test/slots/components/output/Named-client.ts +9 -19
  562. package/test/slots/components/output/Named-server.ts +9 -14
  563. package/test/slots/components/output/Unused-client.ts +5 -10
  564. package/test/slots/components/output/Unused-server.ts +7 -10
  565. package/test/slots/components/temp/{Article-client-3f2da4b399f94ae8c329489e1ba0ba98196df9c5.ts → Article-client-0b674ee98ae7f85021bfb8b912f28e3c4b35e877.ts} +4 -8
  566. package/test/slots/components/temp/{Article-server-50fa458663f115c0e80a3a2846de4607d8748ecb.ts → Article-server-3db1718b70b86b456514b54ae17a597d07cc0ca9.ts} +6 -8
  567. package/test/slots/components/temp/{Basic-client-a2c4bf685d4b75d0395da427b7754c2a58374dd7.ts → Basic-client-196f7f0244dca0baeffb547eec55c089a108283d.ts} +7 -14
  568. package/test/slots/components/temp/{Basic-server-593e0ecbc8abbc90e8b06198698d244d110d97e2.ts → Basic-server-a22e6ec236b84e09d4d59c7abc4f0b22bf60f22c.ts} +8 -12
  569. package/test/slots/components/temp/{Header-client-d7418b71df5db36d58a73e909233863a6c03678b.ts → Header-client-e5c784d60469523803898ee4d8b85fb82a7b7c0b.ts} +4 -9
  570. package/test/slots/components/temp/{Header-server-d0f27afc4db322e605491e8f508e83f625e8dc38.ts → Header-server-3182d735443d9cf6a0cc7891919cc2c08df2aa8f.ts} +6 -8
  571. package/test/slots/components/temp/{Let-client-913f9dede92b68a3f4a13d1f56f99b3e08e01efe.ts → Let-client-645271fcd63cd500001c75740b22b1b387330657.ts} +7 -14
  572. package/test/slots/components/temp/{Let-server-f3c026e37c11628914c495083752d8cf285b2e85.ts → Let-server-b6d6e2012155c7533a0eb4ee0aaf00157a7d4493.ts} +7 -11
  573. package/test/slots/components/temp/{List-client-6bc2d267a8b2028a14b12b2c70feb7c6a47d6d64.ts → List-client-ee6047ac396dc0b6fce5e38af51c38093fae83a2.ts} +17 -16
  574. package/test/slots/components/temp/{List-server-8d9c174fc4b3b232f3a9fd2f59843481f023d913.ts → List-server-1ee246e864cdb31bb8f52cf4424b6ef0e9b41cf1.ts} +6 -8
  575. package/test/slots/components/temp/{Named-client-f6e7a984759ce8f50bc52dcf56f6f06cab925a80.ts → Named-client-559988562c5de1ae6017d2ad6de063f4363064b6.ts} +9 -19
  576. package/test/slots/components/temp/{Named-server-ac8d47db82d9a387c8baeee59b975bb810bad168.ts → Named-server-f2ce3d301e916ea38901a92185c25512b11d42d4.ts} +9 -14
  577. package/test/slots/components/temp/{Unused-client-ea0a096aa7a1c958f3bf807f35340b96f8a025ee.ts → Unused-client-52d1828bd28ebf7046a2e948a369563c0ea83b98.ts} +5 -10
  578. package/test/slots/components/temp/{Unused-server-1da99efc50ef70be0d9a0e5499353a17dc666936.ts → Unused-server-f5248f5cd4616c65eaf27c67385f13ed671accad.ts} +7 -10
  579. package/test/slots/let-slot.test.ts +4 -4
  580. package/test/slots/named-slot.test.ts +2 -2
  581. package/test/slots/unused-slot.test.ts +2 -2
  582. package/test/source-maps/components/Source.torp +19 -0
  583. package/test/source-maps/components/output/Source-client.ts +63 -0
  584. package/test/source-maps/components/output/Source-server.ts +26 -0
  585. package/test/source-maps/components/temp/Source-client-ae8c4811ff658c13ee8c9b9e0e53fff1b83b178b.ts +63 -0
  586. package/test/source-maps/components/temp/Source-server-70b20214c52b8820f450324943e8a1ffb0a72d5e.ts +26 -0
  587. package/test/source-maps/parse.test.ts +62 -0
  588. package/test/special-component/components/BigTitle.torp +1 -1
  589. package/test/special-component/components/Component.torp +2 -2
  590. package/test/special-component/components/SmallTitle.torp +1 -1
  591. package/test/special-component/components/output/BigTitle-client.ts +4 -8
  592. package/test/special-component/components/output/BigTitle-server.ts +6 -8
  593. package/test/special-component/components/output/Component-client.ts +7 -15
  594. package/test/special-component/components/output/Component-server.ts +8 -11
  595. package/test/special-component/components/output/SmallTitle-client.ts +4 -8
  596. package/test/special-component/components/output/SmallTitle-server.ts +6 -8
  597. package/test/special-component/components/temp/{BigTitle-client-c4bd66406d55ce83ab4491c4114d563055e1c275.ts → BigTitle-client-cb3055f809aaf17bd1fa82748d039ac3730a8d44.ts} +4 -8
  598. package/test/special-component/components/temp/{BigTitle-server-34af54c15cf575163c1ff8e63978cf5257f2347c.ts → BigTitle-server-fef9d1e1deacfde2be4469c2e63a801b2e518dff.ts} +6 -8
  599. package/test/special-component/components/temp/{Component-client-c39c66cf5274445bb863fd759e0ef223613a9f3a.ts → Component-client-0eb9553b52acce2dfa564242295a4c57a38bd540.ts} +7 -15
  600. package/test/special-component/components/temp/{Component-server-ca4a2192477db4a32ad12f1a6a14d673717b0f7b.ts → Component-server-9d0fddeff790bfb2b6cfbcd2edf677837f5b8120.ts} +8 -11
  601. package/test/special-component/components/temp/{SmallTitle-client-e4b3e51243ca4f1efca21ac0f957b81e8bc93167.ts → SmallTitle-client-5a65b233be29395e9650f57d9708a33de1279af3.ts} +4 -8
  602. package/test/special-component/components/temp/{SmallTitle-server-6c9aabb9139356397e04612b4dd9d849f871a280.ts → SmallTitle-server-11f8b6b3c613716d6a5371883a9b55434bb43ad5.ts} +6 -8
  603. package/test/special-component/special-component.test.ts +2 -2
  604. package/test/special-element/components/Element.torp +2 -2
  605. package/test/special-element/components/output/Element-client.ts +5 -11
  606. package/test/special-element/components/output/Element-server.ts +7 -10
  607. package/test/special-element/components/temp/{Element-client-c5701ed44faa4ec8ae558505063684a84cada3f2.ts → Element-client-745e610fbd5c652d327c8ac349d49d5ee4c8d9ea.ts} +5 -11
  608. package/test/special-element/components/temp/Element-server-7aef6d0ed7369aa2418183519c8320e0409a5641.ts +15 -0
  609. package/test/special-element/special-element.test.ts +2 -2
  610. package/test/special-head/components/Head.torp +2 -4
  611. package/test/special-head/components/output/Head-client.ts +8 -23
  612. package/test/special-head/components/output/Head-server.ts +5 -11
  613. package/test/special-head/components/temp/Head-client-bbbb5e712247ee41ca65a7ffd457987de5e99b3e.ts +19 -0
  614. package/test/special-head/components/temp/Head-server-c3de2e6b56aabc095380370d8bf93ae3bc7c10d9.ts +12 -0
  615. package/test/special-head/special-head.test.ts +2 -2
  616. package/test/special-self/components/output/Self-client.ts +13 -17
  617. package/test/special-self/components/output/Self-server.ts +6 -9
  618. package/test/special-self/components/temp/{Self-client-883ca81e0e44df56f2290698e8d6b9955434a2ad.ts → Self-client-dfe57df69e3677e94f7b5f3657c82602054ef19e.ts} +13 -17
  619. package/test/special-self/components/temp/{Self-server-69dac409fc984db7db97df8a30c5de6794f25655.ts → Self-server-5d135dab2b6fd4ba7fe3f56768f0725607d36bd9.ts} +6 -9
  620. package/test/special-self/special-self.test.ts +2 -2
  621. package/test/style/components/Style.torp +1 -1
  622. package/test/style/components/output/Style-client.ts +6 -12
  623. package/test/style/components/output/Style-server.ts +7 -10
  624. package/test/style/components/temp/{Style-client-ea018338497095f270308b2e73cfe6344721c6eb.ts → Style-client-9491a5aff97f118df542f976d7f7a21e7cc88c62.ts} +6 -12
  625. package/test/style/components/temp/{Style-server-99ff9867ee067760a463a8282773b2eb09aa14f7.ts → Style-server-8b8cbe1868cab30d9e34dda52921652768ada1db.ts} +7 -10
  626. package/test/style/parse.test.ts +507 -193
  627. package/test/style/style.test.ts +2 -2
  628. package/test/svg/components/Shape.torp +1 -1
  629. package/test/svg/components/output/Shape-client.ts +23 -23
  630. package/test/svg/components/output/Shape-server.ts +8 -10
  631. package/test/svg/components/temp/{Shape-client-052ea7838de07222602834de58968a3f89e6ea56.ts → Shape-client-4cc148d8b70d3750d2982360aad76b74d194b60e.ts} +23 -23
  632. package/test/svg/components/temp/Shape-server-76aaef570e067031ff39635ffe37626364c2200a.ts +23 -0
  633. package/test/svg/svg.test.ts +4 -4
  634. package/test/switch/components/output/Switch-client.ts +16 -22
  635. package/test/switch/components/output/Switch-server.ts +6 -9
  636. package/test/switch/components/temp/{Switch-client-1482e2da8fe144d3e867dfad4618e0f364b91b49.ts → Switch-client-5fc00f4d41300dc7587b113d8e53a102beca7558.ts} +16 -22
  637. package/test/switch/components/temp/{Switch-server-d709eb7a418752dd4203a8f824b78c5f308c8f47.ts → Switch-server-440f7e852145b79656c0023ddc776e4d1d077d2a.ts} +6 -9
  638. package/test/switch/switch-values.test.ts +4 -4
  639. package/test/template/basic-file.test.ts +61 -88
  640. package/test/template/empty-file.test.ts +7 -12
  641. package/test/template/errors.test.ts +64 -34
  642. package/test/text/components/output/Text-client.ts +5 -13
  643. package/test/text/components/output/Text-server.ts +6 -9
  644. package/test/text/components/temp/{Text-client-ca2d5402358fba0df1db2353eed304b0dedb7971.ts → Text-client-6c3be8a1a31a13eff86ce8b5330829cd15b07fab.ts} +5 -13
  645. package/test/text/components/temp/{Text-server-9df4606b85f044ea2b38660e799988461edacb27.ts → Text-server-ac34d47e755aa39b2d89cb44f854450c3db1ddff.ts} +6 -9
  646. package/test/text/text.test.ts +4 -4
  647. package/test/watch-array/ArrayState.ts +2 -2
  648. package/test/watch-array/array-all-functions-unkeyed.test.ts +16 -14
  649. package/test/watch-array/array-all-functions.test.ts +16 -14
  650. package/test/watch-array/array-empty.test.ts +8 -6
  651. package/test/watch-array/array-entries.test.ts +11 -9
  652. package/test/watch-array/array-indexes.test.ts +11 -9
  653. package/test/watch-array/array-pop.test.ts +10 -8
  654. package/test/watch-array/array-push.test.ts +10 -8
  655. package/test/watch-array/array-reassign.test.ts +11 -9
  656. package/test/watch-array/array-reverse.test.ts +10 -8
  657. package/test/watch-array/array-set-object.test.ts +10 -8
  658. package/test/watch-array/array-set-property.test.ts +10 -8
  659. package/test/watch-array/array-shift.test.ts +10 -8
  660. package/test/watch-array/array-sort.test.ts +11 -9
  661. package/test/watch-array/array-splice-add.test.ts +10 -8
  662. package/test/watch-array/array-splice-delete-all.test.ts +10 -8
  663. package/test/watch-array/array-splice-delete-and-add.test.ts +10 -8
  664. package/test/watch-array/array-splice-delete-end.test.ts +10 -8
  665. package/test/watch-array/array-splice-delete.test.ts +10 -8
  666. package/test/watch-array/array-swap.test.ts +10 -8
  667. package/test/watch-array/array-unshift.test.ts +10 -8
  668. package/test/watch-array/array-update-assignment.test.ts +10 -8
  669. package/test/watch-array/components/output/Array-client.ts +19 -21
  670. package/test/watch-array/components/output/Array-server.ts +7 -10
  671. package/test/watch-array/components/output/ArrayEntries-client.ts +21 -23
  672. package/test/watch-array/components/output/ArrayEntries-server.ts +7 -10
  673. package/test/watch-array/components/output/ArrayIndexes-client.ts +19 -21
  674. package/test/watch-array/components/output/ArrayIndexes-server.ts +7 -10
  675. package/test/watch-array/components/output/ArrayUnkeyed-client.ts +19 -20
  676. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +7 -10
  677. package/test/watch-array/components/temp/{Array-client-d048f5c224a3f2e2729878dbb069ce15ca913e12.ts → Array-client-552f81452d33fe6dc715c9f6bb7986f06475d761.ts} +19 -21
  678. package/test/watch-array/components/temp/{Array-server-48864ed3b67cae2bcedb216865776e44cc3a1dc2.ts → Array-server-16921ef3289ecba5881fcd59e3353fbfad60d4d3.ts} +7 -10
  679. package/test/watch-array/components/temp/{ArrayEntries-client-741607b276718f5deb520e3b657dbf6abbb8081c.ts → ArrayEntries-client-736755fba2492e74812ff9c905202810de54e15a.ts} +21 -23
  680. package/test/watch-array/components/temp/{ArrayEntries-server-401a989fd5f3a093d5d1a8ef1d4fd9d5107a6be3.ts → ArrayEntries-server-ac150fc9fd18c1d9dab9b329f7703e190f5c2725.ts} +7 -10
  681. package/test/watch-array/components/temp/{ArrayIndexes-client-8ab14b254ef67dafad5228c9ec1906eb3b3babef.ts → ArrayIndexes-client-a496328fa92ffca676ab8893013a0cfec1734ad1.ts} +19 -21
  682. package/test/watch-array/components/temp/{ArrayIndexes-server-35c31a8a4597da68d39cf20bd6b90137695514de.ts → ArrayIndexes-server-e8fc511c0d27796dc1733f8cc63377f7a4511f76.ts} +7 -10
  683. package/test/watch-array/components/temp/{ArrayUnkeyed-client-9684aba82757748815b94c04bf3f8d1f98332535.ts → ArrayUnkeyed-client-5a2c5cb1fecba52653f7f35cfd07627682930c15.ts} +19 -20
  684. package/test/watch-array/components/temp/{ArrayUnkeyed-server-19f195f0cf00760c520ac4c55aef474c8eae4c41.ts → ArrayUnkeyed-server-916a5cdb7c36d95946cafdc69dca782291af24e4.ts} +7 -10
  685. package/test/watch-object/components/output/Watched-client.ts +5 -11
  686. package/test/watch-object/components/output/Watched-server.ts +6 -9
  687. package/test/watch-object/components/temp/{Watched-client-ddba353c5a94f5a874e19d6d4cc6271a04e915c0.ts → Watched-client-1f0409aa6e2c425d0319a23caec7d10ad313d579.ts} +5 -11
  688. package/test/watch-object/components/temp/{Watched-server-e8e8c15b9fb5dda4051a289e9cd75d71078b9e95.ts → Watched-server-156afd257b562162d86417f2bbf5afe1bf57de06.ts} +6 -9
  689. package/test/watch-object/watch-object.test.ts +11 -9
  690. package/{tsup.config.ts → tsdown.config.ts} +1 -3
  691. package/dist/Component-CysAnHpO.d.cts +0 -8
  692. package/dist/Component-CysAnHpO.d.ts +0 -8
  693. package/dist/ServerSlotRender-BMGG0yq3.d.cts +0 -15
  694. package/dist/ServerSlotRender-BMGG0yq3.d.ts +0 -15
  695. package/dist/chunk-EGRHWZRV.js +0 -1
  696. package/dist/chunk-EGRHWZRV.js.map +0 -1
  697. package/dist/chunk-XNO4YEJ3.js +0 -64
  698. package/dist/chunk-XNO4YEJ3.js.map +0 -1
  699. package/dist/metafile-cjs.json +0 -1
  700. package/dist/metafile-esm.json +0 -1
  701. package/src/compile/build/client/buildHeadNode.ts +0 -17
  702. package/src/compile/build/utils/isReactiveAttribute.ts +0 -16
  703. package/src/compile/types/nodes/isControlNode.ts +0 -6
  704. package/src/compile/types/nodes/isElementNode.ts +0 -6
  705. package/src/compile/types/nodes/isParentNode.ts +0 -6
  706. package/src/compile/types/nodes/isSpecialNode.ts +0 -6
  707. package/src/compile/types/nodes/isTextNode.ts +0 -6
  708. package/src/debug/printHtml.ts +0 -25
  709. package/src/types/ProxyPropData.ts +0 -11
  710. package/src/watch/removeEffect.ts +0 -34
  711. package/test/bench/components/temp/Bench-client-4e18421473e97bac7c24b17ba14751ce14dd187e.ts +0 -414
  712. package/test/bench/components/temp/Bench-server-4648921af9bc146718d55a7e9fc288b47a57dfda.ts +0 -142
  713. package/test/component/components/temp/Header-server-91088d2a5a543287bfdf1a24d92b66db6ccd294d.ts +0 -19
  714. package/test/console/components/temp/Console-server-7bc7f568e9c3626dca1bdafcb23186c2dbc59199.ts +0 -18
  715. package/test/dummy/components/temp/ProfilePreview-client-e57ca1ac502e0ddcb3ef376dd5ef27add70090d1.ts +0 -327
  716. package/test/dummy/components/temp/ProfilePreview-server-9d3d0f8b4f80f634db6ba97d037ab07de004b4d3.ts +0 -56
  717. package/test/html/components/temp/Html-server-4f73a2b0c5cd9b82666a99ec6a217c758d435008.ts +0 -18
  718. package/test/mount/components/temp/Mount-server-8564e4e0886ea754dfedf9a4a5fd82f0484c1d83.ts +0 -25
  719. package/test/on-mount/components/temp/OnMount-server-2ff035e067926fadc284030075aa5da69a05cf31.ts +0 -18
  720. package/test/party/components/temp/CssStyle-server-fa4bad3c82930632730e3b6b9f0e9193cab6f777.ts +0 -18
  721. package/test/party/components/temp/HelloWorld-server-50dd4393d55ecd33d5b7684c4f9ed41dfa0ceb5d.ts +0 -18
  722. package/test/party/components/temp/InputFocused-server-7b062b0dd7686ccc389c3c1a17f37e9a9bb19da9.ts +0 -26
  723. package/test/special-element/components/temp/Element-server-011a942cc147900d8e074c084297d8e81f05aa27.ts +0 -18
  724. package/test/special-head/components/temp/Head-client-967d6ea24d46308af586c7553f4658412d94716c.ts +0 -34
  725. package/test/special-head/components/temp/Head-server-7cf8212c95197ed6320b47483524d8b1b3e5ae68.ts +0 -18
  726. package/test/svg/components/temp/Shape-server-4ef7e80f09d3d4c930055d0a25184c48507e51de.ts +0 -25
  727. /package/src/compile/{build/utils → utils}/isFullyReactive.ts +0 -0
  728. /package/src/compile/{build/utils → utils}/isReactive.ts +0 -0
@@ -23,11 +23,10 @@
23
23
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
24
  * SOFTWARE.
25
25
  */
26
- import { type ListItem } from "../types/ListItem";
27
- import { type Range } from "../types/Range";
26
+ import type ListItem from "../types/ListItem";
27
+ import type Range from "../types/Range";
28
28
  import $watch from "./$watch";
29
29
  import clearRange from "./clearRange";
30
- import context from "./context";
31
30
  import moveRange from "./moveRange";
32
31
 
33
32
  /**
@@ -44,7 +43,8 @@ export default function runListItems(
44
43
  anchor: Node | null,
45
44
  oldItems: ListItem[],
46
45
  newItems: ListItem[],
47
- create: (data: ListItem, before: Node | null) => void,
46
+ create: (item: ListItem, before: Node | null) => void,
47
+ update: (oldItem: ListItem, newItem: ListItem) => void,
48
48
  ): void {
49
49
  let oldStartIndex = 0;
50
50
  let oldEndIndex = oldItems.length - 1;
@@ -60,34 +60,34 @@ export default function runListItems(
60
60
  let newKeyToIndex: Map<any, number> | undefined;
61
61
 
62
62
  while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {
63
- if (oldStartItem == null) {
63
+ if (oldStartItem === null) {
64
64
  oldStartItem = oldItems[++oldStartIndex];
65
- } else if (oldEndItem == null) {
65
+ } else if (oldEndItem === null) {
66
66
  oldEndItem = oldItems[--oldEndIndex];
67
- } else if (newStartItem == null) {
67
+ } else if (newStartItem === null) {
68
68
  newStartItem = newItems[++newStartIndex];
69
- } else if (newEndItem == null) {
69
+ } else if (newEndItem === null) {
70
70
  newEndItem = newItems[--newEndIndex];
71
71
  } else if (oldStartItem.key === newStartItem.key) {
72
- transferRangeMarkers(oldStartItem, newStartItem);
72
+ transferListItemData(oldStartItem, newStartItem, update);
73
73
  oldStartItem = oldItems[++oldStartIndex];
74
74
  newStartItem = newItems[++newStartIndex];
75
75
  } else if (oldEndItem.key === newEndItem.key) {
76
- transferRangeMarkers(oldEndItem, newEndItem);
76
+ transferListItemData(oldEndItem, newEndItem, update);
77
77
  oldEndItem = oldItems[--oldEndIndex];
78
78
  newEndItem = newItems[--newEndIndex];
79
79
  } else if (oldStartItem.key === newEndItem.key) {
80
80
  // Move to the end
81
81
  //console.log("move", oldStartItem.key, "to the end");
82
- moveRange(parent, oldStartItem, oldEndItem.endNode?.nextSibling!);
83
- transferRangeMarkers(oldStartItem, newEndItem);
82
+ moveRange(parent, oldStartItem, oldEndItem.endNode!.nextSibling!);
83
+ transferListItemData(oldStartItem, newEndItem, update);
84
84
  oldStartItem = oldItems[++oldStartIndex];
85
85
  newEndItem = newItems[--newEndIndex];
86
86
  } else if (oldEndItem.key === newStartItem.key) {
87
87
  // Move to the start
88
88
  //console.log("move", oldEndItem.key, "to the start");
89
- moveRange(parent, oldEndItem, oldStartItem?.startNode);
90
- transferRangeMarkers(oldEndItem, newStartItem);
89
+ moveRange(parent, oldEndItem, oldStartItem!.startNode);
90
+ transferListItemData(oldEndItem, newStartItem, update);
91
91
  oldEndItem = oldItems[--oldEndIndex];
92
92
  newStartItem = newItems[++newStartIndex];
93
93
  } else {
@@ -95,7 +95,7 @@ export default function runListItems(
95
95
  // They are relevant only if there has been a move, or a mid-list
96
96
  // insertion or deletion, and not if there has been an insertion
97
97
  // at the end or deletion from the front
98
- if (!oldKeyToIndex || !newKeyToIndex) {
98
+ if (oldKeyToIndex === undefined || newKeyToIndex === undefined) {
99
99
  oldKeyToIndex = new Map();
100
100
  for (let i = oldStartIndex; i < oldEndIndex; i++) {
101
101
  oldKeyToIndex.set(oldItems[i].key, i);
@@ -112,34 +112,31 @@ export default function runListItems(
112
112
  if (oldIndex === undefined && newIndex === undefined) {
113
113
  // Replace
114
114
  //console.log("replace", oldStartItem.key, "with", newStartItem.key);
115
- newStartItem.data = $watch(newStartItem.data);
115
+ newStartItem.data = $watch(newStartItem.data, { shallow: true });
116
116
  create(newStartItem, oldStartItem.startNode);
117
+ newStartItem.previousRange = oldStartItem.previousRange;
118
+ newStartItem.nextRange = oldStartItem;
119
+ oldStartItem.previousRange = newStartItem;
117
120
  clearRange(oldStartItem);
118
- // @ts-ignore We know we have an active range (the for loop) and that it
119
- // has children (because we're replacing one)
120
- context.activeRange.children.splice(oldStartIndex, 1);
121
121
  oldStartItem = oldItems[++oldStartIndex];
122
122
  newStartItem = newItems[++newStartIndex];
123
123
  } else if (oldIndex === undefined) {
124
124
  // Insert
125
125
  //console.log("insert", newStartItem.key);
126
- newStartItem.data = $watch(newStartItem.data);
126
+ newStartItem.data = $watch(newStartItem.data, { shallow: true });
127
127
  create(newStartItem, oldStartItem.startNode);
128
128
  newStartItem = newItems[++newStartIndex];
129
129
  } else if (newIndex === undefined) {
130
130
  // Delete
131
131
  //console.log("delete", oldStartItem.key);
132
132
  clearRange(oldStartItem);
133
- // @ts-ignore We know we have an active range (the for loop) and that it
134
- // has children (because we're deleting one)
135
- context.activeRange.children.splice(oldStartIndex, 1);
136
133
  oldStartItem = oldItems[++oldStartIndex];
137
134
  } else {
138
135
  // Move
139
136
  //console.log("move", newStartItem.key, "before", oldStartItem.key);
140
137
  const oldData = oldItems[oldIndex];
141
138
  moveRange(parent, oldData, oldStartItem.startNode);
142
- transferRangeMarkers(oldData, newStartItem);
139
+ transferListItemData(oldData, newStartItem, update);
143
140
  // @ts-ignore TODO: Set key null instead?
144
141
  oldItems[oldIndex] = null;
145
142
  newStartItem = newItems[++newStartIndex];
@@ -151,36 +148,39 @@ export default function runListItems(
151
148
  if (oldStartIndex > oldEndIndex) {
152
149
  // The old list is exhausted; process new list additions
153
150
  // HACK: I think it would be better to move anchors to the end?
154
- let before: Node | null =
155
- oldStartItem?.startNode || oldItems[oldItems.length - 1]?.endNode?.nextSibling || anchor;
151
+ let before =
152
+ oldStartItem?.startNode ?? oldItems[oldItems.length - 1]?.endNode?.nextSibling ?? anchor;
156
153
  for (newStartIndex; newStartIndex <= newEndIndex; newStartItem = newItems[++newStartIndex]) {
157
154
  //console.log("create", newStartItem.key);
158
- newStartItem.data = $watch(newStartItem.data);
159
- create(newStartItem, before!);
160
- before = newStartItem.endNode?.nextSibling!;
155
+ newStartItem.data = $watch(newStartItem.data, { shallow: true });
156
+ create(newStartItem, before);
157
+ before = newStartItem.endNode!.nextSibling;
161
158
  }
162
159
  } else {
163
160
  // The new list is exhausted; process old list removals
164
- // Just truncate the parent range's children collection
165
- if (range.children) {
166
- range.children.length = oldStartIndex;
167
- }
168
- for (oldStartIndex; oldStartIndex <= oldEndIndex; oldStartItem = oldItems[++oldStartIndex]) {
161
+ for (oldEndIndex; oldEndIndex >= oldStartIndex; oldStartItem = oldItems[oldEndIndex--]) {
169
162
  //console.log("clear", oldStartItem.key);
170
163
  clearRange(oldStartItem);
171
164
  }
172
165
  }
173
166
  }
167
+
168
+ if (newItems.length > 0) {
169
+ range.nextRange = newItems[0];
170
+ } else if (oldItems.length > 0) {
171
+ range.nextRange = oldItems[oldItems.length - 1].nextRange;
172
+ }
174
173
  }
175
174
 
176
- function transferRangeMarkers(oldItem: ListItem, newItem: ListItem) {
175
+ function transferListItemData(
176
+ oldItem: ListItem,
177
+ newItem: ListItem,
178
+ update: (oldItem: ListItem, newItem: ListItem) => void,
179
+ ) {
177
180
  newItem.startNode = oldItem.startNode;
178
181
  newItem.endNode = oldItem.endNode;
179
-
180
182
  // Manually transfer the new data's props to the old ones (to run effects)
181
183
  // and then set the new data to the old one
182
- for (let prop in oldItem.data) {
183
- oldItem.data[prop] = newItem.data[prop];
184
- }
184
+ update(oldItem, newItem);
185
185
  newItem.data = oldItem.data;
186
186
  }
@@ -1,5 +1,5 @@
1
1
  export default function setAttribute(el: Element, name: string, value: any): void {
2
- if (value === false || value == null) {
2
+ if (value === false || value === undefined || value === null) {
3
3
  el.removeAttribute(name);
4
4
  } else {
5
5
  el.setAttribute(name, value);
@@ -1,10 +1,10 @@
1
1
  import context from "./context";
2
2
 
3
- // TODO: Should we @toggle this instead? That would call :onmount etc again for the new element
3
+ // TODO: Should we @toggle this instead? That would call onmount etc again for the new element
4
4
 
5
5
  export default function setDynamicElement(el: HTMLElement, tag: string): HTMLElement {
6
6
  // If hydrating, it should already have been created as the correct element
7
- if (context.hydrationNode) {
7
+ if (context.hydrationNode !== null) {
8
8
  return el;
9
9
  }
10
10
 
package/src/ssr.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import $batch from "./render/$batch";
2
+ import $cache from "./render/$cache";
3
+ import $peek from "./render/$peek";
1
4
  import $mount from "./render/$serverMount";
2
5
  import $run from "./render/$serverRun";
3
6
  import $unwrap from "./render/$serverUnwrap";
@@ -6,8 +9,8 @@ import t_class from "./render/buildClasses";
6
9
  import t_style from "./render/buildStyles";
7
10
  import t_attr from "./render/formatAttributeText";
8
11
  import t_fmt from "./render/formatText";
9
- import { type ServerSlotRender } from "./types/ServerSlotRender";
12
+ import type ServerSlotRender from "./types/ServerSlotRender";
10
13
 
11
- export { $watch, $unwrap, $run, $mount, t_fmt, t_attr, t_class, t_style };
14
+ export { $watch, $cache, $run, $mount, $unwrap, $peek, $batch, t_fmt, t_attr, t_class, t_style };
12
15
 
13
16
  export type { ServerSlotRender };
@@ -1,4 +1,4 @@
1
- export interface Animation {
1
+ export default interface Animation {
2
2
  keyframes: Keyframe[] | PropertyIndexedKeyframes;
3
3
  options?: number | KeyframeAnimationOptions;
4
4
  }
@@ -1,8 +1,12 @@
1
- export type BuildOptions = {
1
+ export default interface BuildOptions {
2
2
  /**
3
3
  * Whether to create the component for server side rendering
4
4
  */
5
5
  server?: boolean;
6
+ /**
7
+ * Whether to create source maps.
8
+ */
9
+ mapped?: boolean;
6
10
  /**
7
11
  * If true, fragments will be built with calls to createElement etc. If
8
12
  * false, fragments will be built with innerHTML. Using createElement is a
@@ -14,4 +18,4 @@ export type BuildOptions = {
14
18
  * For internal testing and benchmarking
15
19
  */
16
20
  renderFolder?: string;
17
- };
21
+ }
@@ -2,4 +2,6 @@
2
2
  * A function that may be returned from an effect, and is run before the effect
3
3
  * is run or destroyed
4
4
  */
5
- export type Cleanup = () => void;
5
+ type Cleanup = () => void;
6
+
7
+ export default Cleanup;
@@ -1,12 +1,14 @@
1
- import { type SlotRender } from "./SlotRender";
1
+ import type SlotRender from "./SlotRender";
2
2
 
3
3
  /**
4
4
  * A component that can be mounted or hydrated
5
5
  */
6
- export type Component = (
6
+ type Component = (
7
7
  $parent: ParentNode,
8
8
  $anchor: Node | null,
9
9
  $props?: Record<PropertyKey, any>,
10
10
  $context?: Record<PropertyKey, any>,
11
11
  $slots?: Record<string, SlotRender>,
12
12
  ) => void;
13
+
14
+ export default Component;
@@ -0,0 +1,62 @@
1
+ import type Subscription from "./Subscription";
2
+ import { COMPUTED_TYPE } from "./constants";
3
+
4
+ /**
5
+ * A computed value that is lazily refreshed when accessed from an Effect or
6
+ * another Computed. Our computed values are implemented as property getter
7
+ * functions.
8
+ */
9
+ export default interface Computed<T = any> {
10
+ /**
11
+ * COMPUTED.
12
+ */
13
+ type: typeof COMPUTED_TYPE;
14
+
15
+ /**
16
+ * The cached, computed value.
17
+ */
18
+ value: T;
19
+
20
+ /**
21
+ * The getter function to run to access this computed's value.
22
+ */
23
+ run: () => T;
24
+
25
+ /**
26
+ * The first signal or computed that causes this effect to be run.
27
+ */
28
+ firstSource: Subscription | null;
29
+
30
+ /**
31
+ * The first computed or effect that is triggered when this property is changed.
32
+ */
33
+ firstTarget: Subscription | null;
34
+
35
+ /**
36
+ * Whether the computed may need to be recalculated (if any of its sources
37
+ * have changed). We store this on the computed (as well as its
38
+ * subscription) so we don't have to check the sources every time (which may
39
+ * be expensive).
40
+ */
41
+ recalc: boolean;
42
+
43
+ /**
44
+ * Used to track cycles.
45
+ */
46
+ running: boolean;
47
+
48
+ /**
49
+ * True if the computed encountered an exception in its last run.
50
+ */
51
+ didError: boolean;
52
+
53
+ /**
54
+ * A subscription to roll back to when recursively updating signal targets.
55
+ */
56
+ rollback: Subscription | null;
57
+
58
+ /**
59
+ * The name of the computed property, for debugging.
60
+ */
61
+ name?: string;
62
+ }
@@ -0,0 +1,99 @@
1
+ import type Animation from "./Animation";
2
+ import type Cleanup from "./Cleanup";
3
+ import type Computed from "./Computed";
4
+ import type Effect from "./Effect";
5
+ import type ProxySignal from "./ProxySignal";
6
+ import type Range from "./Range";
7
+
8
+ /**
9
+ * The global context for setting up effects and updating subscriptions.
10
+ */
11
+ export default interface Context {
12
+ /**
13
+ * The target (effect or computed value) that is currently being run.
14
+ */
15
+ activeTarget: Computed | Effect | null;
16
+
17
+ /**
18
+ * To set the next effect, we need to store the previous effect.
19
+ */
20
+ previousEffect: Effect | null;
21
+
22
+ /**
23
+ * The extent of the current effect's children.
24
+ */
25
+ extent: number;
26
+
27
+ /**
28
+ * The batch number. If 0, the batch will be flushed at the end of the operation.
29
+ */
30
+ batch: number;
31
+
32
+ /**
33
+ * Used to check for cycles if the number of operations in a single batch
34
+ * goes past a threshold.
35
+ */
36
+ batchOperation: number;
37
+
38
+ /**
39
+ * A function to store a Computed when `$cache` is called in a property getter.
40
+ */
41
+ registerComputed: ((computed: Computed) => void) | null;
42
+
43
+ /**
44
+ * The first effect to run, either immediately or when the batch is finished.
45
+ */
46
+ firstEffectToRun: Effect | null;
47
+
48
+ /**
49
+ * The first signal to update, either immediately or when the batch is finished.
50
+ */
51
+ firstSignalToUpdate: ProxySignal | null;
52
+
53
+ /**
54
+ * The range that is currently being created.
55
+ */
56
+ activeRange: Range;
57
+
58
+ /**
59
+ * The range that was previously created, for setting range navigation.
60
+ */
61
+ previousRange: Range;
62
+
63
+ /**
64
+ * The root range of the current UI, for debugging.
65
+ */
66
+ rootRange: Range;
67
+
68
+ /**
69
+ * Functions that were run via $mount, which should be collected and flushed
70
+ * when the component has been mounted in the DOM
71
+ */
72
+ mountEffects: (() => Cleanup | void)[];
73
+
74
+ /**
75
+ * Events which should be added when their element has been mounted in the
76
+ * DOM
77
+ */
78
+ stashedEvents: {
79
+ range: Range;
80
+ el: Element;
81
+ type: string;
82
+ listener: (this: Element, ev: any) => any;
83
+ }[];
84
+
85
+ /**
86
+ * Animations which should be added when their element has been mounted in
87
+ * the DOM
88
+ */
89
+ stashedAnimations: {
90
+ range: Range;
91
+ el: HTMLElement;
92
+ in?: Animation;
93
+ out?: Animation;
94
+ }[];
95
+
96
+ /** The node that is actively being hydrated. */
97
+ hydrationNode: ChildNode | null;
98
+ ////hn: ChildNode | null;
99
+ }
@@ -1,18 +1,54 @@
1
- import { type Cleanup } from "./Cleanup";
2
- import { type ProxyPropData } from "./ProxyPropData";
1
+ import type Cleanup from "./Cleanup";
2
+ import type Subscription from "./Subscription";
3
+ import { EFFECT_TYPE } from "./constants";
3
4
 
4
5
  /**
5
6
  * An effect that is run and re-run when the properties it depends on change.
6
7
  */
7
- export type Effect = {
8
+ export default interface Effect {
9
+ /**
10
+ * EFFECT.
11
+ */
12
+ type: typeof EFFECT_TYPE;
13
+
14
+ /**
15
+ *
16
+ * @returns An optional cleanup function, to run when the effect is re-run or disposed.
17
+ */
8
18
  run: () => Cleanup | void;
9
- cleanup: Cleanup | null;
10
19
 
11
20
  /**
12
- * Store the properties that this effect depends on, so that when a range is
13
- * cleared, the effect can be removed from those properties
21
+ * The optional cleanup function that may have been returned from the run function.
14
22
  */
15
- props: ProxyPropData[] | null;
23
+ cleanup: Cleanup | void;
16
24
 
17
- active: boolean;
18
- };
25
+ /**
26
+ * The first signal or computed that causes this effect to be run.
27
+ */
28
+ firstSource: Subscription | null;
29
+
30
+ /*
31
+ * The effect that is run after this one, which may be a sibling or child.
32
+ */
33
+ nextEffect: Effect | null;
34
+
35
+ /**
36
+ * The number of children of this effect.
37
+ */
38
+ extent: number;
39
+
40
+ /**
41
+ * When signals have been changed, this is the next dependent effect to run.
42
+ */
43
+ nextEffectToRun: Effect | null;
44
+
45
+ /**
46
+ * True if the effect encountered an exception in its last run.
47
+ */
48
+ didError: boolean;
49
+
50
+ /**
51
+ * The name of the effect, for debugging.
52
+ */
53
+ name?: string;
54
+ }
@@ -1,6 +1,6 @@
1
- import { type Range } from "./Range";
1
+ import type Range from "./Range";
2
2
 
3
- export type ListItem = Range & {
3
+ export default interface ListItem extends Range {
4
4
  data: Record<string, any>;
5
5
  key: any;
6
- };
6
+ }
@@ -1,8 +1,10 @@
1
- import { type ProxyPropData } from "./ProxyPropData";
1
+ import type Computed from "./Computed";
2
+ import type ProxySignal from "./ProxySignal";
2
3
 
3
- export type ProxyData = {
4
+ // TODO: Rename to DataSource?
5
+ export default interface ProxyData {
4
6
  target: Record<PropertyKey, any>;
5
7
  isArray: boolean;
6
8
  shallow: boolean;
7
- propData: Map<PropertyKey, ProxyPropData | null>;
8
- };
9
+ signals: Map<PropertyKey, ProxySignal | Computed>;
10
+ }
@@ -0,0 +1,28 @@
1
+ import type Subscription from "./Subscription";
2
+ import { SIGNAL_TYPE } from "./constants";
3
+
4
+ /**
5
+ * A value that causes dependent Computeds and Effects to be re-run. Our signals
6
+ * are implemented as object properties.
7
+ */
8
+ export default interface ProxySignal {
9
+ /**
10
+ * SIGNAL.
11
+ */
12
+ type: typeof SIGNAL_TYPE;
13
+
14
+ /**
15
+ * The first Computed or Effect that is triggered when this property is changed.
16
+ */
17
+ firstTarget: Subscription | null;
18
+
19
+ /**
20
+ * When signals have been changed in a batch, this is the next changed signal.
21
+ */
22
+ nextSignalToUpdate: ProxySignal | null;
23
+
24
+ /**
25
+ * The name of the property, for debugging.
26
+ */
27
+ name?: string;
28
+ }
@@ -1,25 +1,19 @@
1
- import { type Effect } from "./Effect";
2
-
3
- export type Range = {
1
+ export default interface Range {
4
2
  startNode: ChildNode | null;
5
3
  endNode: ChildNode | null;
6
4
 
7
- children: Range[] | null;
8
-
9
- /**
10
- * The index of the range if it is a branch in e.g. an if, switch or loop
11
- */
12
- index: number;
13
-
14
- /**
15
- * The effects that have been run in this range, and which need to be
16
- * cleaned up when it is removed
17
- */
18
- effects: Effect[] | null;
5
+ previousRange: Range | null;
6
+ nextRange: Range | null;
7
+ depth: number;
19
8
 
20
9
  /**
21
10
  * Animations that are currently running in the range, and which need to
22
11
  * awaited or canceled before it is removed
23
12
  */
24
13
  animations: Set<Animation> | null;
25
- };
14
+
15
+ /**
16
+ * The name of the range, for debugging.
17
+ */
18
+ name?: string;
19
+ }
@@ -1,10 +1,12 @@
1
- import { type ServerSlotRender } from "./ServerSlotRender";
1
+ import type ServerSlotRender from "./ServerSlotRender";
2
2
 
3
3
  /**
4
4
  * A component that generates HTML
5
5
  */
6
- export type ServerComponent = (
6
+ type ServerComponent = (
7
7
  $props?: Record<string, any>,
8
8
  $context?: Record<string, any>,
9
9
  $slots?: Record<string, ServerSlotRender>,
10
10
  ) => { body: string; head: string };
11
+
12
+ export default ServerComponent;
@@ -1,4 +1,6 @@
1
- export type ServerSlotRender = (
1
+ type ServerSlotRender = (
2
2
  $props?: Record<PropertyKey, any>,
3
3
  $context?: Record<PropertyKey, any>,
4
4
  ) => void;
5
+
6
+ export default ServerSlotRender;
@@ -1,6 +1,8 @@
1
- export type SlotRender = (
1
+ type SlotRender = (
2
2
  parent: ParentNode,
3
3
  anchor: Node | null,
4
- $props?: Record<PropertyKey, any>,
4
+ $sprops?: Record<PropertyKey, any>,
5
5
  $context?: Record<PropertyKey, any>,
6
6
  ) => void;
7
+
8
+ export default SlotRender;
@@ -0,0 +1,57 @@
1
+ import type Computed from "./Computed";
2
+ import type Effect from "./Effect";
3
+ import type ProxySignal from "./ProxySignal";
4
+
5
+ /**
6
+ * A subscription that connects a source Signal or Computed to a target Computed
7
+ * or Effect.
8
+ */
9
+ export default interface Subscription {
10
+ /**
11
+ * The source Signal or Computed.
12
+ */
13
+ source: ProxySignal | Computed;
14
+
15
+ /**
16
+ * The target Computed or Effect.
17
+ */
18
+ target: Computed | Effect;
19
+
20
+ /**
21
+ * The next source subscription. After the targets have been re-run, we run
22
+ * through sources to remove any that weren't re-used.
23
+ */
24
+ nextSource: Subscription | null;
25
+
26
+ /**
27
+ * The next target subscription. When the source is changed, we run through
28
+ * targets to mark them dirty and possibly re-run them.
29
+ */
30
+ nextTarget: Subscription | null;
31
+
32
+ /**
33
+ * The previous target subscription. We remove subscriptions by looping
34
+ * through the sources list, so we only need to know the next source, but we
35
+ * need to know both the next and previous targets to properly update the
36
+ * targets list.
37
+ */
38
+ previousTarget: Subscription | null;
39
+
40
+ /**
41
+ * Whether this subscription is active. At the start of a re-run, all
42
+ * subscriptions are marked inactive and marked active if re-used. If not
43
+ * re-used, they are removed after the run.
44
+ */
45
+ active: boolean;
46
+
47
+ /**
48
+ * Whether the subscription's target may need to be recalculated (if any of
49
+ * its sources have changed).
50
+ */
51
+ recalc: boolean;
52
+
53
+ /**
54
+ * The name of the subscription, for debugging.
55
+ */
56
+ name?: string;
57
+ }