@depup/svelte 5.53.3-depup.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 (386) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +41 -0
  3. package/action.d.ts +1 -0
  4. package/animate.d.ts +1 -0
  5. package/compiler/index.js +1 -0
  6. package/compiler/package.json +3 -0
  7. package/compiler.d.ts +1 -0
  8. package/easing.d.ts +1 -0
  9. package/elements.d.ts +2078 -0
  10. package/index.d.ts +1 -0
  11. package/legacy.d.ts +1 -0
  12. package/motion.d.ts +1 -0
  13. package/package.json +185 -0
  14. package/src/animate/index.js +78 -0
  15. package/src/attachments/index.js +113 -0
  16. package/src/compiler/errors.js +1719 -0
  17. package/src/compiler/index.js +198 -0
  18. package/src/compiler/legacy.js +637 -0
  19. package/src/compiler/migrate/index.js +1996 -0
  20. package/src/compiler/phases/1-parse/acorn.js +198 -0
  21. package/src/compiler/phases/1-parse/index.js +326 -0
  22. package/src/compiler/phases/1-parse/read/context.js +116 -0
  23. package/src/compiler/phases/1-parse/read/expression.js +93 -0
  24. package/src/compiler/phases/1-parse/read/options.js +263 -0
  25. package/src/compiler/phases/1-parse/read/script.js +97 -0
  26. package/src/compiler/phases/1-parse/read/style.js +637 -0
  27. package/src/compiler/phases/1-parse/remove_typescript_nodes.js +180 -0
  28. package/src/compiler/phases/1-parse/state/element.js +937 -0
  29. package/src/compiler/phases/1-parse/state/fragment.js +17 -0
  30. package/src/compiler/phases/1-parse/state/tag.js +751 -0
  31. package/src/compiler/phases/1-parse/state/text.js +23 -0
  32. package/src/compiler/phases/1-parse/utils/bracket.js +213 -0
  33. package/src/compiler/phases/1-parse/utils/create.js +16 -0
  34. package/src/compiler/phases/1-parse/utils/entities.js +2234 -0
  35. package/src/compiler/phases/1-parse/utils/fuzzymatch.js +281 -0
  36. package/src/compiler/phases/1-parse/utils/html.js +127 -0
  37. package/src/compiler/phases/2-analyze/css/css-analyze.js +331 -0
  38. package/src/compiler/phases/2-analyze/css/css-prune.js +1206 -0
  39. package/src/compiler/phases/2-analyze/css/css-warn.js +47 -0
  40. package/src/compiler/phases/2-analyze/css/utils.js +177 -0
  41. package/src/compiler/phases/2-analyze/index.js +1300 -0
  42. package/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js +47 -0
  43. package/src/compiler/phases/2-analyze/visitors/AnimateDirective.js +15 -0
  44. package/src/compiler/phases/2-analyze/visitors/ArrowFunctionExpression.js +11 -0
  45. package/src/compiler/phases/2-analyze/visitors/AssignmentExpression.js +31 -0
  46. package/src/compiler/phases/2-analyze/visitors/AttachTag.js +17 -0
  47. package/src/compiler/phases/2-analyze/visitors/Attribute.js +66 -0
  48. package/src/compiler/phases/2-analyze/visitors/AwaitBlock.js +48 -0
  49. package/src/compiler/phases/2-analyze/visitors/AwaitExpression.js +150 -0
  50. package/src/compiler/phases/2-analyze/visitors/BindDirective.js +280 -0
  51. package/src/compiler/phases/2-analyze/visitors/CallExpression.js +339 -0
  52. package/src/compiler/phases/2-analyze/visitors/ClassBody.js +156 -0
  53. package/src/compiler/phases/2-analyze/visitors/ClassDeclaration.js +25 -0
  54. package/src/compiler/phases/2-analyze/visitors/ClassDirective.js +13 -0
  55. package/src/compiler/phases/2-analyze/visitors/Component.js +26 -0
  56. package/src/compiler/phases/2-analyze/visitors/ConstTag.js +45 -0
  57. package/src/compiler/phases/2-analyze/visitors/DebugTag.js +15 -0
  58. package/src/compiler/phases/2-analyze/visitors/EachBlock.js +97 -0
  59. package/src/compiler/phases/2-analyze/visitors/ExportDefaultDeclaration.js +20 -0
  60. package/src/compiler/phases/2-analyze/visitors/ExportNamedDeclaration.js +70 -0
  61. package/src/compiler/phases/2-analyze/visitors/ExportSpecifier.js +30 -0
  62. package/src/compiler/phases/2-analyze/visitors/ExpressionStatement.js +38 -0
  63. package/src/compiler/phases/2-analyze/visitors/ExpressionTag.js +26 -0
  64. package/src/compiler/phases/2-analyze/visitors/Fragment.js +10 -0
  65. package/src/compiler/phases/2-analyze/visitors/FunctionDeclaration.js +16 -0
  66. package/src/compiler/phases/2-analyze/visitors/FunctionExpression.js +11 -0
  67. package/src/compiler/phases/2-analyze/visitors/HtmlTag.js +19 -0
  68. package/src/compiler/phases/2-analyze/visitors/Identifier.js +194 -0
  69. package/src/compiler/phases/2-analyze/visitors/IfBlock.js +46 -0
  70. package/src/compiler/phases/2-analyze/visitors/ImportDeclaration.js +31 -0
  71. package/src/compiler/phases/2-analyze/visitors/KeyBlock.js +21 -0
  72. package/src/compiler/phases/2-analyze/visitors/LabeledStatement.js +95 -0
  73. package/src/compiler/phases/2-analyze/visitors/LetDirective.js +24 -0
  74. package/src/compiler/phases/2-analyze/visitors/Literal.js +14 -0
  75. package/src/compiler/phases/2-analyze/visitors/MemberExpression.js +28 -0
  76. package/src/compiler/phases/2-analyze/visitors/NewExpression.js +17 -0
  77. package/src/compiler/phases/2-analyze/visitors/OnDirective.js +28 -0
  78. package/src/compiler/phases/2-analyze/visitors/PropertyDefinition.js +21 -0
  79. package/src/compiler/phases/2-analyze/visitors/RegularElement.js +240 -0
  80. package/src/compiler/phases/2-analyze/visitors/RenderTag.js +68 -0
  81. package/src/compiler/phases/2-analyze/visitors/SlotElement.js +42 -0
  82. package/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +113 -0
  83. package/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js +13 -0
  84. package/src/compiler/phases/2-analyze/visitors/SpreadElement.js +16 -0
  85. package/src/compiler/phases/2-analyze/visitors/StyleDirective.js +39 -0
  86. package/src/compiler/phases/2-analyze/visitors/SvelteBody.js +22 -0
  87. package/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js +30 -0
  88. package/src/compiler/phases/2-analyze/visitors/SvelteComponent.js +18 -0
  89. package/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +24 -0
  90. package/src/compiler/phases/2-analyze/visitors/SvelteElement.js +78 -0
  91. package/src/compiler/phases/2-analyze/visitors/SvelteFragment.js +27 -0
  92. package/src/compiler/phases/2-analyze/visitors/SvelteHead.js +18 -0
  93. package/src/compiler/phases/2-analyze/visitors/SvelteSelf.js +36 -0
  94. package/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +24 -0
  95. package/src/compiler/phases/2-analyze/visitors/TaggedTemplateExpression.js +16 -0
  96. package/src/compiler/phases/2-analyze/visitors/TemplateElement.js +12 -0
  97. package/src/compiler/phases/2-analyze/visitors/Text.js +52 -0
  98. package/src/compiler/phases/2-analyze/visitors/TitleElement.js +21 -0
  99. package/src/compiler/phases/2-analyze/visitors/TransitionDirective.js +19 -0
  100. package/src/compiler/phases/2-analyze/visitors/UpdateExpression.js +29 -0
  101. package/src/compiler/phases/2-analyze/visitors/UseDirective.js +18 -0
  102. package/src/compiler/phases/2-analyze/visitors/VariableDeclarator.js +160 -0
  103. package/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js +334 -0
  104. package/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +981 -0
  105. package/src/compiler/phases/2-analyze/visitors/shared/attribute.js +125 -0
  106. package/src/compiler/phases/2-analyze/visitors/shared/component.js +177 -0
  107. package/src/compiler/phases/2-analyze/visitors/shared/element.js +160 -0
  108. package/src/compiler/phases/2-analyze/visitors/shared/fragment.js +15 -0
  109. package/src/compiler/phases/2-analyze/visitors/shared/function.js +24 -0
  110. package/src/compiler/phases/2-analyze/visitors/shared/snippets.js +17 -0
  111. package/src/compiler/phases/2-analyze/visitors/shared/special-element.js +16 -0
  112. package/src/compiler/phases/2-analyze/visitors/shared/utils.js +301 -0
  113. package/src/compiler/phases/3-transform/client/transform-client.js +719 -0
  114. package/src/compiler/phases/3-transform/client/transform-template/fix-attribute-casing.js +18 -0
  115. package/src/compiler/phases/3-transform/client/transform-template/index.js +67 -0
  116. package/src/compiler/phases/3-transform/client/transform-template/template.js +164 -0
  117. package/src/compiler/phases/3-transform/client/utils.js +181 -0
  118. package/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js +38 -0
  119. package/src/compiler/phases/3-transform/client/visitors/ArrowFunctionExpression.js +11 -0
  120. package/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js +247 -0
  121. package/src/compiler/phases/3-transform/client/visitors/AttachTag.js +26 -0
  122. package/src/compiler/phases/3-transform/client/visitors/Attribute.js +14 -0
  123. package/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js +124 -0
  124. package/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js +25 -0
  125. package/src/compiler/phases/3-transform/client/visitors/BinaryExpression.js +34 -0
  126. package/src/compiler/phases/3-transform/client/visitors/BindDirective.js +290 -0
  127. package/src/compiler/phases/3-transform/client/visitors/BlockStatement.js +32 -0
  128. package/src/compiler/phases/3-transform/client/visitors/BreakStatement.js +20 -0
  129. package/src/compiler/phases/3-transform/client/visitors/CallExpression.js +136 -0
  130. package/src/compiler/phases/3-transform/client/visitors/ClassBody.js +111 -0
  131. package/src/compiler/phases/3-transform/client/visitors/Comment.js +11 -0
  132. package/src/compiler/phases/3-transform/client/visitors/Component.js +12 -0
  133. package/src/compiler/phases/3-transform/client/visitors/ConstTag.js +134 -0
  134. package/src/compiler/phases/3-transform/client/visitors/DebugTag.js +28 -0
  135. package/src/compiler/phases/3-transform/client/visitors/EachBlock.js +362 -0
  136. package/src/compiler/phases/3-transform/client/visitors/ExportNamedDeclaration.js +19 -0
  137. package/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js +20 -0
  138. package/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js +25 -0
  139. package/src/compiler/phases/3-transform/client/visitors/Fragment.js +186 -0
  140. package/src/compiler/phases/3-transform/client/visitors/FunctionDeclaration.js +12 -0
  141. package/src/compiler/phases/3-transform/client/visitors/FunctionExpression.js +11 -0
  142. package/src/compiler/phases/3-transform/client/visitors/HtmlTag.js +53 -0
  143. package/src/compiler/phases/3-transform/client/visitors/Identifier.js +45 -0
  144. package/src/compiler/phases/3-transform/client/visitors/IfBlock.js +131 -0
  145. package/src/compiler/phases/3-transform/client/visitors/KeyBlock.js +45 -0
  146. package/src/compiler/phases/3-transform/client/visitors/LabeledStatement.js +64 -0
  147. package/src/compiler/phases/3-transform/client/visitors/LetDirective.js +55 -0
  148. package/src/compiler/phases/3-transform/client/visitors/MemberExpression.js +23 -0
  149. package/src/compiler/phases/3-transform/client/visitors/OnDirective.js +38 -0
  150. package/src/compiler/phases/3-transform/client/visitors/Program.js +153 -0
  151. package/src/compiler/phases/3-transform/client/visitors/RegularElement.js +725 -0
  152. package/src/compiler/phases/3-transform/client/visitors/RenderTag.js +95 -0
  153. package/src/compiler/phases/3-transform/client/visitors/SlotElement.js +94 -0
  154. package/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js +94 -0
  155. package/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js +10 -0
  156. package/src/compiler/phases/3-transform/client/visitors/SvelteBody.js +11 -0
  157. package/src/compiler/phases/3-transform/client/visitors/SvelteBoundary.js +126 -0
  158. package/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js +13 -0
  159. package/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js +11 -0
  160. package/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +161 -0
  161. package/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js +17 -0
  162. package/src/compiler/phases/3-transform/client/visitors/SvelteHead.js +23 -0
  163. package/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js +13 -0
  164. package/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js +11 -0
  165. package/src/compiler/phases/3-transform/client/visitors/TitleElement.js +48 -0
  166. package/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js +41 -0
  167. package/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js +55 -0
  168. package/src/compiler/phases/3-transform/client/visitors/UseDirective.js +49 -0
  169. package/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +422 -0
  170. package/src/compiler/phases/3-transform/client/visitors/shared/component.js +536 -0
  171. package/src/compiler/phases/3-transform/client/visitors/shared/declarations.js +53 -0
  172. package/src/compiler/phases/3-transform/client/visitors/shared/element.js +263 -0
  173. package/src/compiler/phases/3-transform/client/visitors/shared/events.js +180 -0
  174. package/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +185 -0
  175. package/src/compiler/phases/3-transform/client/visitors/shared/function.js +17 -0
  176. package/src/compiler/phases/3-transform/client/visitors/shared/special_element.js +22 -0
  177. package/src/compiler/phases/3-transform/client/visitors/shared/utils.js +513 -0
  178. package/src/compiler/phases/3-transform/css/index.js +479 -0
  179. package/src/compiler/phases/3-transform/index.js +118 -0
  180. package/src/compiler/phases/3-transform/server/transform-server.js +428 -0
  181. package/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js +124 -0
  182. package/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js +36 -0
  183. package/src/compiler/phases/3-transform/server/visitors/AwaitExpression.js +40 -0
  184. package/src/compiler/phases/3-transform/server/visitors/CallExpression.js +71 -0
  185. package/src/compiler/phases/3-transform/server/visitors/ClassBody.js +81 -0
  186. package/src/compiler/phases/3-transform/server/visitors/Component.js +13 -0
  187. package/src/compiler/phases/3-transform/server/visitors/ConstTag.js +49 -0
  188. package/src/compiler/phases/3-transform/server/visitors/DebugTag.js +24 -0
  189. package/src/compiler/phases/3-transform/server/visitors/EachBlock.js +76 -0
  190. package/src/compiler/phases/3-transform/server/visitors/ExpressionStatement.js +23 -0
  191. package/src/compiler/phases/3-transform/server/visitors/Fragment.js +53 -0
  192. package/src/compiler/phases/3-transform/server/visitors/HtmlTag.js +25 -0
  193. package/src/compiler/phases/3-transform/server/visitors/Identifier.js +24 -0
  194. package/src/compiler/phases/3-transform/server/visitors/IfBlock.js +48 -0
  195. package/src/compiler/phases/3-transform/server/visitors/KeyBlock.js +22 -0
  196. package/src/compiler/phases/3-transform/server/visitors/LabeledStatement.js +24 -0
  197. package/src/compiler/phases/3-transform/server/visitors/MemberExpression.js +19 -0
  198. package/src/compiler/phases/3-transform/server/visitors/Program.js +25 -0
  199. package/src/compiler/phases/3-transform/server/visitors/PropertyDefinition.js +37 -0
  200. package/src/compiler/phases/3-transform/server/visitors/RegularElement.js +216 -0
  201. package/src/compiler/phases/3-transform/server/visitors/RenderTag.js +45 -0
  202. package/src/compiler/phases/3-transform/server/visitors/SlotElement.js +68 -0
  203. package/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js +29 -0
  204. package/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js +10 -0
  205. package/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js +139 -0
  206. package/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js +12 -0
  207. package/src/compiler/phases/3-transform/server/visitors/SvelteElement.js +89 -0
  208. package/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js +11 -0
  209. package/src/compiler/phases/3-transform/server/visitors/SvelteHead.js +25 -0
  210. package/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js +12 -0
  211. package/src/compiler/phases/3-transform/server/visitors/TitleElement.js +21 -0
  212. package/src/compiler/phases/3-transform/server/visitors/UpdateExpression.js +35 -0
  213. package/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js +247 -0
  214. package/src/compiler/phases/3-transform/server/visitors/shared/component.js +359 -0
  215. package/src/compiler/phases/3-transform/server/visitors/shared/element.js +557 -0
  216. package/src/compiler/phases/3-transform/server/visitors/shared/utils.js +408 -0
  217. package/src/compiler/phases/3-transform/shared/assignments.js +92 -0
  218. package/src/compiler/phases/3-transform/shared/transform-async.js +114 -0
  219. package/src/compiler/phases/3-transform/utils.js +451 -0
  220. package/src/compiler/phases/bindings.js +227 -0
  221. package/src/compiler/phases/css.js +14 -0
  222. package/src/compiler/phases/nodes.js +258 -0
  223. package/src/compiler/phases/patterns.js +27 -0
  224. package/src/compiler/phases/scope.js +1432 -0
  225. package/src/compiler/preprocess/decode_sourcemap.js +96 -0
  226. package/src/compiler/preprocess/index.js +368 -0
  227. package/src/compiler/preprocess/replace_in_code.js +72 -0
  228. package/src/compiler/print/index.js +911 -0
  229. package/src/compiler/state.js +144 -0
  230. package/src/compiler/utils/assert.js +9 -0
  231. package/src/compiler/utils/ast.js +639 -0
  232. package/src/compiler/utils/builders.js +698 -0
  233. package/src/compiler/utils/compile_diagnostic.js +107 -0
  234. package/src/compiler/utils/extract_svelte_ignore.js +104 -0
  235. package/src/compiler/utils/mapped_code.js +454 -0
  236. package/src/compiler/utils/push_array.js +13 -0
  237. package/src/compiler/utils/sanitize_template_string.js +7 -0
  238. package/src/compiler/utils/slot.js +20 -0
  239. package/src/compiler/utils/string.js +9 -0
  240. package/src/compiler/validate-options.js +324 -0
  241. package/src/compiler/warnings.js +845 -0
  242. package/src/constants.js +66 -0
  243. package/src/easing/index.js +286 -0
  244. package/src/escaping.js +26 -0
  245. package/src/events/index.js +1 -0
  246. package/src/html-tree-validation.js +238 -0
  247. package/src/index-client.js +255 -0
  248. package/src/index-server.js +56 -0
  249. package/src/internal/client/constants.js +77 -0
  250. package/src/internal/client/context.js +258 -0
  251. package/src/internal/client/dev/assign.js +79 -0
  252. package/src/internal/client/dev/console-log.js +37 -0
  253. package/src/internal/client/dev/css.js +31 -0
  254. package/src/internal/client/dev/debug.js +500 -0
  255. package/src/internal/client/dev/elements.js +63 -0
  256. package/src/internal/client/dev/equality.js +101 -0
  257. package/src/internal/client/dev/hmr.js +89 -0
  258. package/src/internal/client/dev/inspect.js +72 -0
  259. package/src/internal/client/dev/legacy.js +25 -0
  260. package/src/internal/client/dev/ownership.js +81 -0
  261. package/src/internal/client/dev/tracing.js +162 -0
  262. package/src/internal/client/dev/validation.js +16 -0
  263. package/src/internal/client/dom/blocks/async.js +71 -0
  264. package/src/internal/client/dom/blocks/await.js +142 -0
  265. package/src/internal/client/dom/blocks/boundary.js +534 -0
  266. package/src/internal/client/dom/blocks/branches.js +227 -0
  267. package/src/internal/client/dom/blocks/css-props.js +28 -0
  268. package/src/internal/client/dom/blocks/each.js +723 -0
  269. package/src/internal/client/dom/blocks/html.js +128 -0
  270. package/src/internal/client/dom/blocks/if.js +82 -0
  271. package/src/internal/client/dom/blocks/key.js +40 -0
  272. package/src/internal/client/dom/blocks/slot.js +44 -0
  273. package/src/internal/client/dom/blocks/snippet.js +103 -0
  274. package/src/internal/client/dom/blocks/svelte-component.js +61 -0
  275. package/src/internal/client/dom/blocks/svelte-element.js +152 -0
  276. package/src/internal/client/dom/blocks/svelte-head.js +61 -0
  277. package/src/internal/client/dom/css.js +33 -0
  278. package/src/internal/client/dom/elements/actions.js +43 -0
  279. package/src/internal/client/dom/elements/attachments.js +33 -0
  280. package/src/internal/client/dom/elements/attributes.js +657 -0
  281. package/src/internal/client/dom/elements/bindings/document.js +17 -0
  282. package/src/internal/client/dom/elements/bindings/input.js +312 -0
  283. package/src/internal/client/dom/elements/bindings/media.js +233 -0
  284. package/src/internal/client/dom/elements/bindings/navigator.js +11 -0
  285. package/src/internal/client/dom/elements/bindings/props.js +22 -0
  286. package/src/internal/client/dom/elements/bindings/select.js +159 -0
  287. package/src/internal/client/dom/elements/bindings/shared.js +76 -0
  288. package/src/internal/client/dom/elements/bindings/size.js +107 -0
  289. package/src/internal/client/dom/elements/bindings/this.js +61 -0
  290. package/src/internal/client/dom/elements/bindings/universal.js +75 -0
  291. package/src/internal/client/dom/elements/bindings/window.js +66 -0
  292. package/src/internal/client/dom/elements/class.js +51 -0
  293. package/src/internal/client/dom/elements/custom-element.js +344 -0
  294. package/src/internal/client/dom/elements/customizable-select.js +99 -0
  295. package/src/internal/client/dom/elements/events.js +355 -0
  296. package/src/internal/client/dom/elements/misc.js +58 -0
  297. package/src/internal/client/dom/elements/style.js +57 -0
  298. package/src/internal/client/dom/elements/transitions.js +471 -0
  299. package/src/internal/client/dom/hydration.js +125 -0
  300. package/src/internal/client/dom/legacy/event-modifiers.js +127 -0
  301. package/src/internal/client/dom/legacy/lifecycle.js +82 -0
  302. package/src/internal/client/dom/legacy/misc.js +68 -0
  303. package/src/internal/client/dom/operations.js +293 -0
  304. package/src/internal/client/dom/reconciler.js +25 -0
  305. package/src/internal/client/dom/task.js +42 -0
  306. package/src/internal/client/dom/template.js +401 -0
  307. package/src/internal/client/error-handling.js +118 -0
  308. package/src/internal/client/errors.js +510 -0
  309. package/src/internal/client/hydratable.js +33 -0
  310. package/src/internal/client/index.js +183 -0
  311. package/src/internal/client/legacy.js +46 -0
  312. package/src/internal/client/loop.js +48 -0
  313. package/src/internal/client/proxy.js +432 -0
  314. package/src/internal/client/reactivity/async.js +306 -0
  315. package/src/internal/client/reactivity/batch.js +1057 -0
  316. package/src/internal/client/reactivity/deriveds.js +426 -0
  317. package/src/internal/client/reactivity/effects.js +718 -0
  318. package/src/internal/client/reactivity/equality.js +31 -0
  319. package/src/internal/client/reactivity/props.js +430 -0
  320. package/src/internal/client/reactivity/sources.js +370 -0
  321. package/src/internal/client/reactivity/status.js +25 -0
  322. package/src/internal/client/reactivity/store.js +203 -0
  323. package/src/internal/client/reactivity/utils.js +40 -0
  324. package/src/internal/client/render.js +335 -0
  325. package/src/internal/client/runtime.js +827 -0
  326. package/src/internal/client/timing.js +16 -0
  327. package/src/internal/client/validate.js +54 -0
  328. package/src/internal/client/warnings.js +271 -0
  329. package/src/internal/disclose-version.js +6 -0
  330. package/src/internal/flags/async.js +3 -0
  331. package/src/internal/flags/index.js +23 -0
  332. package/src/internal/flags/legacy.js +3 -0
  333. package/src/internal/flags/tracing.js +3 -0
  334. package/src/internal/index.js +5 -0
  335. package/src/internal/server/abort-signal.js +13 -0
  336. package/src/internal/server/blocks/html.js +11 -0
  337. package/src/internal/server/blocks/snippet.js +24 -0
  338. package/src/internal/server/context.js +132 -0
  339. package/src/internal/server/crypto.js +45 -0
  340. package/src/internal/server/dev.js +115 -0
  341. package/src/internal/server/errors.js +131 -0
  342. package/src/internal/server/hydratable.js +142 -0
  343. package/src/internal/server/hydration.js +6 -0
  344. package/src/internal/server/index.js +544 -0
  345. package/src/internal/server/render-context.js +86 -0
  346. package/src/internal/server/renderer.js +923 -0
  347. package/src/internal/server/warnings.js +29 -0
  348. package/src/internal/shared/attributes.js +225 -0
  349. package/src/internal/shared/clone.js +137 -0
  350. package/src/internal/shared/dev.js +65 -0
  351. package/src/internal/shared/errors.js +134 -0
  352. package/src/internal/shared/utils.js +144 -0
  353. package/src/internal/shared/validate.js +47 -0
  354. package/src/internal/shared/warnings.js +40 -0
  355. package/src/legacy/legacy-client.js +281 -0
  356. package/src/legacy/legacy-server.js +112 -0
  357. package/src/motion/index.js +32 -0
  358. package/src/motion/spring.js +369 -0
  359. package/src/motion/tweened.js +306 -0
  360. package/src/motion/utils.js +7 -0
  361. package/src/reactivity/create-subscriber.js +95 -0
  362. package/src/reactivity/date.js +118 -0
  363. package/src/reactivity/index-client.js +7 -0
  364. package/src/reactivity/index-server.js +23 -0
  365. package/src/reactivity/map.js +273 -0
  366. package/src/reactivity/media-query.js +55 -0
  367. package/src/reactivity/reactive-value.js +24 -0
  368. package/src/reactivity/set.js +213 -0
  369. package/src/reactivity/url-search-params.js +174 -0
  370. package/src/reactivity/url.js +205 -0
  371. package/src/reactivity/window/index.js +161 -0
  372. package/src/server/index.js +1 -0
  373. package/src/store/index-client.js +169 -0
  374. package/src/store/index-server.js +101 -0
  375. package/src/store/shared/index.js +209 -0
  376. package/src/store/utils.js +36 -0
  377. package/src/transition/index.js +300 -0
  378. package/src/utils.js +504 -0
  379. package/src/version.js +8 -0
  380. package/store.d.ts +1 -0
  381. package/svelte-html.d.ts +245 -0
  382. package/transition.d.ts +1 -0
  383. package/types/compiler/interfaces.d.ts +1 -0
  384. package/types/compiler/preprocess.d.ts +1 -0
  385. package/types/index.d.ts +3744 -0
  386. package/types/index.d.ts.map +280 -0
@@ -0,0 +1,370 @@
1
+ /** @import { Derived, Effect, Source, Value } from '#client' */
2
+ import { DEV } from 'esm-env';
3
+ import {
4
+ active_reaction,
5
+ active_effect,
6
+ untracked_writes,
7
+ get,
8
+ set_untracked_writes,
9
+ untrack,
10
+ increment_write_version,
11
+ update_effect,
12
+ current_sources,
13
+ is_dirty,
14
+ untracking,
15
+ is_destroying_effect,
16
+ push_reaction_value
17
+ } from '../runtime.js';
18
+ import { equals, safe_equals } from './equality.js';
19
+ import {
20
+ CLEAN,
21
+ DERIVED,
22
+ DIRTY,
23
+ BRANCH_EFFECT,
24
+ EAGER_EFFECT,
25
+ MAYBE_DIRTY,
26
+ BLOCK_EFFECT,
27
+ ROOT_EFFECT,
28
+ ASYNC,
29
+ WAS_MARKED,
30
+ CONNECTED
31
+ } from '#client/constants';
32
+ import * as e from '../errors.js';
33
+ import { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js';
34
+ import { includes } from '../../shared/utils.js';
35
+ import { tag_proxy } from '../dev/tracing.js';
36
+ import { get_error } from '../../shared/dev.js';
37
+ import { component_context, is_runes } from '../context.js';
38
+ import { Batch, batch_values, eager_block_effects, schedule_effect } from './batch.js';
39
+ import { proxy } from '../proxy.js';
40
+ import { execute_derived } from './deriveds.js';
41
+ import { set_signal_status, update_derived_status } from './status.js';
42
+
43
+ /** @type {Set<any>} */
44
+ export let eager_effects = new Set();
45
+
46
+ /** @type {Map<Source, any>} */
47
+ export const old_values = new Map();
48
+
49
+ /**
50
+ * @param {Set<any>} v
51
+ */
52
+ export function set_eager_effects(v) {
53
+ eager_effects = v;
54
+ }
55
+
56
+ let eager_effects_deferred = false;
57
+
58
+ export function set_eager_effects_deferred() {
59
+ eager_effects_deferred = true;
60
+ }
61
+
62
+ /**
63
+ * @template V
64
+ * @param {V} v
65
+ * @param {Error | null} [stack]
66
+ * @returns {Source<V>}
67
+ */
68
+ // TODO rename this to `state` throughout the codebase
69
+ export function source(v, stack) {
70
+ /** @type {Value} */
71
+ var signal = {
72
+ f: 0, // TODO ideally we could skip this altogether, but it causes type errors
73
+ v,
74
+ reactions: null,
75
+ equals,
76
+ rv: 0,
77
+ wv: 0
78
+ };
79
+
80
+ if (DEV && tracing_mode_flag) {
81
+ signal.created = stack ?? get_error('created at');
82
+ signal.updated = null;
83
+ signal.set_during_effect = false;
84
+ signal.trace = null;
85
+ }
86
+
87
+ return signal;
88
+ }
89
+
90
+ /**
91
+ * @template V
92
+ * @param {V} v
93
+ * @param {Error | null} [stack]
94
+ */
95
+ /*#__NO_SIDE_EFFECTS__*/
96
+ export function state(v, stack) {
97
+ const s = source(v, stack);
98
+
99
+ push_reaction_value(s);
100
+
101
+ return s;
102
+ }
103
+
104
+ /**
105
+ * @template V
106
+ * @param {V} initial_value
107
+ * @param {boolean} [immutable]
108
+ * @returns {Source<V>}
109
+ */
110
+ /*#__NO_SIDE_EFFECTS__*/
111
+ export function mutable_source(initial_value, immutable = false, trackable = true) {
112
+ const s = source(initial_value);
113
+ if (!immutable) {
114
+ s.equals = safe_equals;
115
+ }
116
+
117
+ // bind the signal to the component context, in case we need to
118
+ // track updates to trigger beforeUpdate/afterUpdate callbacks
119
+ if (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) {
120
+ (component_context.l.s ??= []).push(s);
121
+ }
122
+
123
+ return s;
124
+ }
125
+
126
+ /**
127
+ * @template V
128
+ * @param {Value<V>} source
129
+ * @param {V} value
130
+ */
131
+ export function mutate(source, value) {
132
+ set(
133
+ source,
134
+ untrack(() => get(source))
135
+ );
136
+ return value;
137
+ }
138
+
139
+ /**
140
+ * @template V
141
+ * @param {Source<V>} source
142
+ * @param {V} value
143
+ * @param {boolean} [should_proxy]
144
+ * @returns {V}
145
+ */
146
+ export function set(source, value, should_proxy = false) {
147
+ if (
148
+ active_reaction !== null &&
149
+ // since we are untracking the function inside `$inspect.with` we need to add this check
150
+ // to ensure we error if state is set inside an inspect effect
151
+ (!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) &&
152
+ is_runes() &&
153
+ (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 &&
154
+ (current_sources === null || !includes.call(current_sources, source))
155
+ ) {
156
+ e.state_unsafe_mutation();
157
+ }
158
+
159
+ let new_value = should_proxy ? proxy(value) : value;
160
+
161
+ if (DEV) {
162
+ tag_proxy(new_value, /** @type {string} */ (source.label));
163
+ }
164
+
165
+ return internal_set(source, new_value);
166
+ }
167
+
168
+ /**
169
+ * @template V
170
+ * @param {Source<V>} source
171
+ * @param {V} value
172
+ * @returns {V}
173
+ */
174
+ export function internal_set(source, value) {
175
+ if (!source.equals(value)) {
176
+ var old_value = source.v;
177
+
178
+ if (is_destroying_effect) {
179
+ old_values.set(source, value);
180
+ } else {
181
+ old_values.set(source, old_value);
182
+ }
183
+
184
+ source.v = value;
185
+
186
+ var batch = Batch.ensure();
187
+ batch.capture(source, old_value);
188
+
189
+ if (DEV) {
190
+ if (tracing_mode_flag || active_effect !== null) {
191
+ source.updated ??= new Map();
192
+
193
+ // For performance reasons, when not using $inspect.trace, we only start collecting stack traces
194
+ // after the same source has been updated more than 5 times in the same flush cycle.
195
+ const count = (source.updated.get('')?.count ?? 0) + 1;
196
+ source.updated.set('', { error: /** @type {any} */ (null), count });
197
+
198
+ if (tracing_mode_flag || count > 5) {
199
+ const error = get_error('updated at');
200
+
201
+ if (error !== null) {
202
+ let entry = source.updated.get(error.stack);
203
+
204
+ if (!entry) {
205
+ entry = { error, count: 0 };
206
+ source.updated.set(error.stack, entry);
207
+ }
208
+
209
+ entry.count++;
210
+ }
211
+ }
212
+ }
213
+
214
+ if (active_effect !== null) {
215
+ source.set_during_effect = true;
216
+ }
217
+ }
218
+
219
+ if ((source.f & DERIVED) !== 0) {
220
+ const derived = /** @type {Derived} */ (source);
221
+
222
+ // if we are assigning to a dirty derived we set it to clean/maybe dirty but we also eagerly execute it to track the dependencies
223
+ if ((source.f & DIRTY) !== 0) {
224
+ execute_derived(derived);
225
+ }
226
+
227
+ update_derived_status(derived);
228
+ }
229
+
230
+ source.wv = increment_write_version();
231
+
232
+ // For debugging, in case you want to know which reactions are being scheduled:
233
+ // log_reactions(source);
234
+ mark_reactions(source, DIRTY);
235
+
236
+ // It's possible that the current reaction might not have up-to-date dependencies
237
+ // whilst it's actively running. So in the case of ensuring it registers the reaction
238
+ // properly for itself, we need to ensure the current effect actually gets
239
+ // scheduled. i.e: `$effect(() => x++)`
240
+ if (
241
+ is_runes() &&
242
+ active_effect !== null &&
243
+ (active_effect.f & CLEAN) !== 0 &&
244
+ (active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0
245
+ ) {
246
+ if (untracked_writes === null) {
247
+ set_untracked_writes([source]);
248
+ } else {
249
+ untracked_writes.push(source);
250
+ }
251
+ }
252
+
253
+ if (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) {
254
+ flush_eager_effects();
255
+ }
256
+ }
257
+
258
+ return value;
259
+ }
260
+
261
+ export function flush_eager_effects() {
262
+ eager_effects_deferred = false;
263
+
264
+ for (const effect of eager_effects) {
265
+ // Mark clean inspect-effects as maybe dirty and then check their dirtiness
266
+ // instead of just updating the effects - this way we avoid overfiring.
267
+ if ((effect.f & CLEAN) !== 0) {
268
+ set_signal_status(effect, MAYBE_DIRTY);
269
+ }
270
+
271
+ if (is_dirty(effect)) {
272
+ update_effect(effect);
273
+ }
274
+ }
275
+
276
+ eager_effects.clear();
277
+ }
278
+
279
+ /**
280
+ * @template {number | bigint} T
281
+ * @param {Source<T>} source
282
+ * @param {1 | -1} [d]
283
+ * @returns {T}
284
+ */
285
+ export function update(source, d = 1) {
286
+ var value = get(source);
287
+ var result = d === 1 ? value++ : value--;
288
+
289
+ set(source, value);
290
+
291
+ // @ts-expect-error
292
+ return result;
293
+ }
294
+
295
+ /**
296
+ * @template {number | bigint} T
297
+ * @param {Source<T>} source
298
+ * @param {1 | -1} [d]
299
+ * @returns {T}
300
+ */
301
+ export function update_pre(source, d = 1) {
302
+ var value = get(source);
303
+
304
+ // @ts-expect-error
305
+ // eslint-disable-next-line no-useless-assignment -- `++`/`--` used for return value, not side effect on `value`
306
+ return set(source, d === 1 ? ++value : --value);
307
+ }
308
+
309
+ /**
310
+ * Silently (without using `get`) increment a source
311
+ * @param {Source<number>} source
312
+ */
313
+ export function increment(source) {
314
+ set(source, source.v + 1);
315
+ }
316
+
317
+ /**
318
+ * @param {Value} signal
319
+ * @param {number} status should be DIRTY or MAYBE_DIRTY
320
+ * @returns {void}
321
+ */
322
+ function mark_reactions(signal, status) {
323
+ var reactions = signal.reactions;
324
+ if (reactions === null) return;
325
+
326
+ var runes = is_runes();
327
+ var length = reactions.length;
328
+
329
+ for (var i = 0; i < length; i++) {
330
+ var reaction = reactions[i];
331
+ var flags = reaction.f;
332
+
333
+ // In legacy mode, skip the current effect to prevent infinite loops
334
+ if (!runes && reaction === active_effect) continue;
335
+
336
+ // Inspect effects need to run immediately, so that the stack trace makes sense
337
+ if (DEV && (flags & EAGER_EFFECT) !== 0) {
338
+ eager_effects.add(reaction);
339
+ continue;
340
+ }
341
+
342
+ var not_dirty = (flags & DIRTY) === 0;
343
+
344
+ // don't set a DIRTY reaction to MAYBE_DIRTY
345
+ if (not_dirty) {
346
+ set_signal_status(reaction, status);
347
+ }
348
+
349
+ if ((flags & DERIVED) !== 0) {
350
+ var derived = /** @type {Derived} */ (reaction);
351
+
352
+ batch_values?.delete(derived);
353
+
354
+ if ((flags & WAS_MARKED) === 0) {
355
+ // Only connected deriveds can be reliably unmarked right away
356
+ if (flags & CONNECTED) {
357
+ reaction.f |= WAS_MARKED;
358
+ }
359
+
360
+ mark_reactions(derived, MAYBE_DIRTY);
361
+ }
362
+ } else if (not_dirty) {
363
+ if ((flags & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) {
364
+ eager_block_effects.add(/** @type {Effect} */ (reaction));
365
+ }
366
+
367
+ schedule_effect(/** @type {Effect} */ (reaction));
368
+ }
369
+ }
370
+ }
@@ -0,0 +1,25 @@
1
+ /** @import { Derived, Signal } from '#client' */
2
+ import { CLEAN, CONNECTED, DIRTY, MAYBE_DIRTY } from '#client/constants';
3
+
4
+ const STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);
5
+
6
+ /**
7
+ * @param {Signal} signal
8
+ * @param {number} status
9
+ */
10
+ export function set_signal_status(signal, status) {
11
+ signal.f = (signal.f & STATUS_MASK) | status;
12
+ }
13
+
14
+ /**
15
+ * Set a derived's status to CLEAN or MAYBE_DIRTY based on its connection state.
16
+ * @param {Derived} derived
17
+ */
18
+ export function update_derived_status(derived) {
19
+ // Only mark as MAYBE_DIRTY if disconnected and has dependencies.
20
+ if ((derived.f & CONNECTED) !== 0 || derived.deps === null) {
21
+ set_signal_status(derived, CLEAN);
22
+ } else {
23
+ set_signal_status(derived, MAYBE_DIRTY);
24
+ }
25
+ }
@@ -0,0 +1,203 @@
1
+ /** @import { StoreReferencesContainer } from '#client' */
2
+ /** @import { Store } from '#shared' */
3
+ import { subscribe_to_store } from '../../../store/utils.js';
4
+ import { get as get_store } from '../../../store/shared/index.js';
5
+ import { define_property, noop } from '../../shared/utils.js';
6
+ import { get } from '../runtime.js';
7
+ import { teardown } from './effects.js';
8
+ import { mutable_source, set } from './sources.js';
9
+ import { DEV } from 'esm-env';
10
+
11
+ /**
12
+ * Whether or not the prop currently being read is a store binding, as in
13
+ * `<Child bind:x={$y} />`. If it is, we treat the prop as mutable even in
14
+ * runes mode, and skip `binding_property_non_reactive` validation
15
+ */
16
+ let is_store_binding = false;
17
+
18
+ let IS_UNMOUNTED = Symbol();
19
+
20
+ /**
21
+ * Gets the current value of a store. If the store isn't subscribed to yet, it will create a proxy
22
+ * signal that will be updated when the store is. The store references container is needed to
23
+ * track reassignments to stores and to track the correct component context.
24
+ * @template V
25
+ * @param {Store<V> | null | undefined} store
26
+ * @param {string} store_name
27
+ * @param {StoreReferencesContainer} stores
28
+ * @returns {V}
29
+ */
30
+ export function store_get(store, store_name, stores) {
31
+ const entry = (stores[store_name] ??= {
32
+ store: null,
33
+ source: mutable_source(undefined),
34
+ unsubscribe: noop
35
+ });
36
+
37
+ if (DEV) {
38
+ entry.source.label = store_name;
39
+ }
40
+
41
+ // if the component that setup this is already unmounted we don't want to register a subscription
42
+ if (entry.store !== store && !(IS_UNMOUNTED in stores)) {
43
+ entry.unsubscribe();
44
+ entry.store = store ?? null;
45
+
46
+ if (store == null) {
47
+ entry.source.v = undefined; // see synchronous callback comment below
48
+ entry.unsubscribe = noop;
49
+ } else {
50
+ var is_synchronous_callback = true;
51
+
52
+ entry.unsubscribe = subscribe_to_store(store, (v) => {
53
+ if (is_synchronous_callback) {
54
+ // If the first updates to the store value (possibly multiple of them) are synchronously
55
+ // inside a derived, we will hit the `state_unsafe_mutation` error if we `set` the value
56
+ entry.source.v = v;
57
+ } else {
58
+ set(entry.source, v);
59
+ }
60
+ });
61
+
62
+ is_synchronous_callback = false;
63
+ }
64
+ }
65
+
66
+ // if the component that setup this stores is already unmounted the source will be out of sync
67
+ // so we just use the `get` for the stores, less performant but it avoids to create a memory leak
68
+ // and it will keep the value consistent
69
+ if (store && IS_UNMOUNTED in stores) {
70
+ return get_store(store);
71
+ }
72
+
73
+ return get(entry.source);
74
+ }
75
+
76
+ /**
77
+ * Unsubscribe from a store if it's not the same as the one in the store references container.
78
+ * We need this in addition to `store_get` because someone could unsubscribe from a store but
79
+ * then never subscribe to the new one (if any), causing the subscription to stay open wrongfully.
80
+ * @param {Store<any> | null | undefined} store
81
+ * @param {string} store_name
82
+ * @param {StoreReferencesContainer} stores
83
+ */
84
+ export function store_unsub(store, store_name, stores) {
85
+ /** @type {StoreReferencesContainer[''] | undefined} */
86
+ let entry = stores[store_name];
87
+
88
+ if (entry && entry.store !== store) {
89
+ // Don't reset store yet, so that store_get above can resubscribe to new store if necessary
90
+ entry.unsubscribe();
91
+ entry.unsubscribe = noop;
92
+ }
93
+
94
+ return store;
95
+ }
96
+
97
+ /**
98
+ * Sets the new value of a store and returns that value.
99
+ * @template V
100
+ * @param {Store<V>} store
101
+ * @param {V} value
102
+ * @returns {V}
103
+ */
104
+ export function store_set(store, value) {
105
+ store.set(value);
106
+ return value;
107
+ }
108
+
109
+ /**
110
+ * @param {StoreReferencesContainer} stores
111
+ * @param {string} store_name
112
+ */
113
+ export function invalidate_store(stores, store_name) {
114
+ var entry = stores[store_name];
115
+ if (entry.store !== null) {
116
+ store_set(entry.store, entry.source.v);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Unsubscribes from all auto-subscribed stores on destroy
122
+ * @returns {[StoreReferencesContainer, ()=>void]}
123
+ */
124
+ export function setup_stores() {
125
+ /** @type {StoreReferencesContainer} */
126
+ const stores = {};
127
+
128
+ function cleanup() {
129
+ teardown(() => {
130
+ for (var store_name in stores) {
131
+ const ref = stores[store_name];
132
+ ref.unsubscribe();
133
+ }
134
+ define_property(stores, IS_UNMOUNTED, {
135
+ enumerable: false,
136
+ value: true
137
+ });
138
+ });
139
+ }
140
+
141
+ return [stores, cleanup];
142
+ }
143
+
144
+ /**
145
+ * Updates a store with a new value.
146
+ * @param {Store<V>} store the store to update
147
+ * @param {any} expression the expression that mutates the store
148
+ * @param {V} new_value the new store value
149
+ * @template V
150
+ */
151
+ export function store_mutate(store, expression, new_value) {
152
+ store.set(new_value);
153
+ return expression;
154
+ }
155
+
156
+ /**
157
+ * @param {Store<number>} store
158
+ * @param {number} store_value
159
+ * @param {1 | -1} [d]
160
+ * @returns {number}
161
+ */
162
+ export function update_store(store, store_value, d = 1) {
163
+ store.set(store_value + d);
164
+ return store_value;
165
+ }
166
+
167
+ /**
168
+ * @param {Store<number>} store
169
+ * @param {number} store_value
170
+ * @param {1 | -1} [d]
171
+ * @returns {number}
172
+ */
173
+ export function update_pre_store(store, store_value, d = 1) {
174
+ const value = store_value + d;
175
+ store.set(value);
176
+ return value;
177
+ }
178
+
179
+ /**
180
+ * Called inside prop getters to communicate that the prop is a store binding
181
+ */
182
+ export function mark_store_binding() {
183
+ is_store_binding = true;
184
+ }
185
+
186
+ /**
187
+ * Returns a tuple that indicates whether `fn()` reads a prop that is a store binding.
188
+ * Used to prevent `binding_property_non_reactive` validation false positives and
189
+ * ensure that these props are treated as mutable even in runes mode
190
+ * @template T
191
+ * @param {() => T} fn
192
+ * @returns {[T, boolean]}
193
+ */
194
+ export function capture_store_binding(fn) {
195
+ var previous_is_store_binding = is_store_binding;
196
+
197
+ try {
198
+ is_store_binding = false;
199
+ return [fn(), is_store_binding];
200
+ } finally {
201
+ is_store_binding = previous_is_store_binding;
202
+ }
203
+ }
@@ -0,0 +1,40 @@
1
+ /** @import { Derived, Effect, Value } from '#client' */
2
+ import { CLEAN, DERIVED, DIRTY, MAYBE_DIRTY, WAS_MARKED } from '#client/constants';
3
+ import { set_signal_status } from './status.js';
4
+
5
+ /**
6
+ * @param {Value[] | null} deps
7
+ */
8
+ function clear_marked(deps) {
9
+ if (deps === null) return;
10
+
11
+ for (const dep of deps) {
12
+ if ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) {
13
+ continue;
14
+ }
15
+
16
+ dep.f ^= WAS_MARKED;
17
+
18
+ clear_marked(/** @type {Derived} */ (dep).deps);
19
+ }
20
+ }
21
+
22
+ /**
23
+ * @param {Effect} effect
24
+ * @param {Set<Effect>} dirty_effects
25
+ * @param {Set<Effect>} maybe_dirty_effects
26
+ */
27
+ export function defer_effect(effect, dirty_effects, maybe_dirty_effects) {
28
+ if ((effect.f & DIRTY) !== 0) {
29
+ dirty_effects.add(effect);
30
+ } else if ((effect.f & MAYBE_DIRTY) !== 0) {
31
+ maybe_dirty_effects.add(effect);
32
+ }
33
+
34
+ // Since we're not executing these effects now, we need to clear any WAS_MARKED flags
35
+ // so that other batches can correctly reach these effects during their own traversal
36
+ clear_marked(effect.deps);
37
+
38
+ // mark as clean so they get scheduled if they depend on pending async state
39
+ set_signal_status(effect, CLEAN);
40
+ }