@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,127 @@
1
+ import { noop } from '../../../shared/utils.js';
2
+ import { user_pre_effect } from '../../reactivity/effects.js';
3
+ import { on } from '../elements/events.js';
4
+
5
+ /**
6
+ * Substitute for the `trusted` event modifier
7
+ * @deprecated
8
+ * @param {(event: Event, ...args: Array<unknown>) => void} fn
9
+ * @returns {(event: Event, ...args: unknown[]) => void}
10
+ */
11
+ export function trusted(fn) {
12
+ return function (...args) {
13
+ var event = /** @type {Event} */ (args[0]);
14
+ if (event.isTrusted) {
15
+ // @ts-ignore
16
+ fn?.apply(this, args);
17
+ }
18
+ };
19
+ }
20
+
21
+ /**
22
+ * Substitute for the `self` event modifier
23
+ * @deprecated
24
+ * @param {(event: Event, ...args: Array<unknown>) => void} fn
25
+ * @returns {(event: Event, ...args: unknown[]) => void}
26
+ */
27
+ export function self(fn) {
28
+ return function (...args) {
29
+ var event = /** @type {Event} */ (args[0]);
30
+ // @ts-ignore
31
+ if (event.target === this) {
32
+ // @ts-ignore
33
+ fn?.apply(this, args);
34
+ }
35
+ };
36
+ }
37
+
38
+ /**
39
+ * Substitute for the `stopPropagation` event modifier
40
+ * @deprecated
41
+ * @param {(event: Event, ...args: Array<unknown>) => void} fn
42
+ * @returns {(event: Event, ...args: unknown[]) => void}
43
+ */
44
+ export function stopPropagation(fn) {
45
+ return function (...args) {
46
+ var event = /** @type {Event} */ (args[0]);
47
+ event.stopPropagation();
48
+ // @ts-ignore
49
+ return fn?.apply(this, args);
50
+ };
51
+ }
52
+
53
+ /**
54
+ * Substitute for the `once` event modifier
55
+ * @deprecated
56
+ * @param {(event: Event, ...args: Array<unknown>) => void} fn
57
+ * @returns {(event: Event, ...args: unknown[]) => void}
58
+ */
59
+ export function once(fn) {
60
+ var ran = false;
61
+
62
+ return function (...args) {
63
+ if (ran) return;
64
+ ran = true;
65
+
66
+ // @ts-ignore
67
+ return fn?.apply(this, args);
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Substitute for the `stopImmediatePropagation` event modifier
73
+ * @deprecated
74
+ * @param {(event: Event, ...args: Array<unknown>) => void} fn
75
+ * @returns {(event: Event, ...args: unknown[]) => void}
76
+ */
77
+ export function stopImmediatePropagation(fn) {
78
+ return function (...args) {
79
+ var event = /** @type {Event} */ (args[0]);
80
+ event.stopImmediatePropagation();
81
+ // @ts-ignore
82
+ return fn?.apply(this, args);
83
+ };
84
+ }
85
+
86
+ /**
87
+ * Substitute for the `preventDefault` event modifier
88
+ * @deprecated
89
+ * @param {(event: Event, ...args: Array<unknown>) => void} fn
90
+ * @returns {(event: Event, ...args: unknown[]) => void}
91
+ */
92
+ export function preventDefault(fn) {
93
+ return function (...args) {
94
+ var event = /** @type {Event} */ (args[0]);
95
+ event.preventDefault();
96
+ // @ts-ignore
97
+ return fn?.apply(this, args);
98
+ };
99
+ }
100
+
101
+ /**
102
+ * Substitute for the `passive` event modifier, implemented as an action
103
+ * @deprecated
104
+ * @param {HTMLElement} node
105
+ * @param {[event: string, handler: () => EventListener]} options
106
+ */
107
+ export function passive(node, [event, handler]) {
108
+ user_pre_effect(() => {
109
+ return on(node, event, handler() ?? noop, {
110
+ passive: true
111
+ });
112
+ });
113
+ }
114
+
115
+ /**
116
+ * Substitute for the `nonpassive` event modifier, implemented as an action
117
+ * @deprecated
118
+ * @param {HTMLElement} node
119
+ * @param {[event: string, handler: () => EventListener]} options
120
+ */
121
+ export function nonpassive(node, [event, handler]) {
122
+ user_pre_effect(() => {
123
+ return on(node, event, handler() ?? noop, {
124
+ passive: false
125
+ });
126
+ });
127
+ }
@@ -0,0 +1,82 @@
1
+ /** @import { ComponentContextLegacy } from '#client' */
2
+ import { run, run_all } from '../../../shared/utils.js';
3
+ import { component_context } from '../../context.js';
4
+ import { derived } from '../../reactivity/deriveds.js';
5
+ import { user_pre_effect, user_effect } from '../../reactivity/effects.js';
6
+ import { deep_read_state, get, untrack } from '../../runtime.js';
7
+
8
+ /**
9
+ * Legacy-mode only: Call `onMount` callbacks and set up `beforeUpdate`/`afterUpdate` effects
10
+ * @param {boolean} [immutable]
11
+ */
12
+ export function init(immutable = false) {
13
+ const context = /** @type {ComponentContextLegacy} */ (component_context);
14
+
15
+ const callbacks = context.l.u;
16
+ if (!callbacks) return;
17
+
18
+ let props = () => deep_read_state(context.s);
19
+
20
+ if (immutable) {
21
+ let version = 0;
22
+ let prev = /** @type {Record<string, any>} */ ({});
23
+
24
+ // In legacy immutable mode, before/afterUpdate only fire if the object identity of a prop changes
25
+ const d = derived(() => {
26
+ let changed = false;
27
+ const props = context.s;
28
+ for (const key in props) {
29
+ if (props[key] !== prev[key]) {
30
+ prev[key] = props[key];
31
+ changed = true;
32
+ }
33
+ }
34
+ if (changed) version++;
35
+ return version;
36
+ });
37
+
38
+ props = () => get(d);
39
+ }
40
+
41
+ // beforeUpdate
42
+ if (callbacks.b.length) {
43
+ user_pre_effect(() => {
44
+ observe_all(context, props);
45
+ run_all(callbacks.b);
46
+ });
47
+ }
48
+
49
+ // onMount (must run before afterUpdate)
50
+ user_effect(() => {
51
+ const fns = untrack(() => callbacks.m.map(run));
52
+ return () => {
53
+ for (const fn of fns) {
54
+ if (typeof fn === 'function') {
55
+ fn();
56
+ }
57
+ }
58
+ };
59
+ });
60
+
61
+ // afterUpdate
62
+ if (callbacks.a.length) {
63
+ user_effect(() => {
64
+ observe_all(context, props);
65
+ run_all(callbacks.a);
66
+ });
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Invoke the getter of all signals associated with a component
72
+ * so they can be registered to the effect this function is called in.
73
+ * @param {ComponentContextLegacy} context
74
+ * @param {(() => void)} props
75
+ */
76
+ function observe_all(context, props) {
77
+ if (context.l.s) {
78
+ for (const signal of context.l.s) get(signal);
79
+ }
80
+
81
+ props();
82
+ }
@@ -0,0 +1,68 @@
1
+ import { set, source } from '../../reactivity/sources.js';
2
+ import { get } from '../../runtime.js';
3
+ import { is_array } from '../../../shared/utils.js';
4
+
5
+ /**
6
+ * Under some circumstances, imports may be reactive in legacy mode. In that case,
7
+ * they should be using `reactive_import` as part of the transformation
8
+ * @param {() => any} fn
9
+ */
10
+ export function reactive_import(fn) {
11
+ var s = source(0);
12
+
13
+ return function () {
14
+ if (arguments.length === 1) {
15
+ set(s, get(s) + 1);
16
+ return arguments[0];
17
+ } else {
18
+ get(s);
19
+ return fn();
20
+ }
21
+ };
22
+ }
23
+
24
+ /**
25
+ * @this {any}
26
+ * @param {Record<string, unknown>} $$props
27
+ * @param {Event} event
28
+ * @returns {void}
29
+ */
30
+ export function bubble_event($$props, event) {
31
+ var events = /** @type {Record<string, Function[] | Function>} */ ($$props.$$events)?.[
32
+ event.type
33
+ ];
34
+
35
+ var callbacks = is_array(events) ? events.slice() : events == null ? [] : [events];
36
+
37
+ for (var fn of callbacks) {
38
+ // Preserve "this" context
39
+ fn.call(this, event);
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Used to simulate `$on` on a component instance when `compatibility.componentApi === 4`
45
+ * @param {Record<string, any>} $$props
46
+ * @param {string} event_name
47
+ * @param {Function} event_callback
48
+ */
49
+ export function add_legacy_event_listener($$props, event_name, event_callback) {
50
+ $$props.$$events ||= {};
51
+ $$props.$$events[event_name] ||= [];
52
+ $$props.$$events[event_name].push(event_callback);
53
+ }
54
+
55
+ /**
56
+ * Used to simulate `$set` on a component instance when `compatibility.componentApi === 4`.
57
+ * Needs component accessors so that it can call the setter of the prop. Therefore doesn't
58
+ * work for updating props in `$$props` or `$$restProps`.
59
+ * @this {Record<string, any>}
60
+ * @param {Record<string, any>} $$new_props
61
+ */
62
+ export function update_legacy_props($$new_props) {
63
+ for (var key in $$new_props) {
64
+ if (key in this) {
65
+ this[key] = $$new_props[key];
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,293 @@
1
+ /** @import { Effect, TemplateNode } from '#client' */
2
+ import { hydrate_node, hydrating, set_hydrate_node } from './hydration.js';
3
+ import { DEV } from 'esm-env';
4
+ import { init_array_prototype_warnings } from '../dev/equality.js';
5
+ import { get_descriptor, is_extensible } from '../../shared/utils.js';
6
+ import { active_effect } from '../runtime.js';
7
+ import { async_mode_flag } from '../../flags/index.js';
8
+ import { TEXT_NODE, REACTION_RAN } from '#client/constants';
9
+ import { eager_block_effects } from '../reactivity/batch.js';
10
+ import { NAMESPACE_HTML } from '../../../constants.js';
11
+
12
+ // export these for reference in the compiled code, making global name deduplication unnecessary
13
+ /** @type {Window} */
14
+ export var $window;
15
+
16
+ /** @type {Document} */
17
+ export var $document;
18
+
19
+ /** @type {boolean} */
20
+ export var is_firefox;
21
+
22
+ /** @type {() => Node | null} */
23
+ var first_child_getter;
24
+ /** @type {() => Node | null} */
25
+ var next_sibling_getter;
26
+
27
+ /**
28
+ * Initialize these lazily to avoid issues when using the runtime in a server context
29
+ * where these globals are not available while avoiding a separate server entry point
30
+ */
31
+ export function init_operations() {
32
+ if ($window !== undefined) {
33
+ return;
34
+ }
35
+
36
+ $window = window;
37
+ $document = document;
38
+ is_firefox = /Firefox/.test(navigator.userAgent);
39
+
40
+ var element_prototype = Element.prototype;
41
+ var node_prototype = Node.prototype;
42
+ var text_prototype = Text.prototype;
43
+
44
+ // @ts-ignore
45
+ first_child_getter = get_descriptor(node_prototype, 'firstChild').get;
46
+ // @ts-ignore
47
+ next_sibling_getter = get_descriptor(node_prototype, 'nextSibling').get;
48
+
49
+ if (is_extensible(element_prototype)) {
50
+ // the following assignments improve perf of lookups on DOM nodes
51
+ // @ts-expect-error
52
+ element_prototype.__click = undefined;
53
+ // @ts-expect-error
54
+ element_prototype.__className = undefined;
55
+ // @ts-expect-error
56
+ element_prototype.__attributes = null;
57
+ // @ts-expect-error
58
+ element_prototype.__style = undefined;
59
+ // @ts-expect-error
60
+ element_prototype.__e = undefined;
61
+ }
62
+
63
+ if (is_extensible(text_prototype)) {
64
+ // @ts-expect-error
65
+ text_prototype.__t = undefined;
66
+ }
67
+
68
+ if (DEV) {
69
+ // @ts-expect-error
70
+ element_prototype.__svelte_meta = null;
71
+
72
+ init_array_prototype_warnings();
73
+ }
74
+ }
75
+
76
+ /**
77
+ * @param {string} value
78
+ * @returns {Text}
79
+ */
80
+ export function create_text(value = '') {
81
+ return document.createTextNode(value);
82
+ }
83
+
84
+ /**
85
+ * @template {Node} N
86
+ * @param {N} node
87
+ */
88
+ /*@__NO_SIDE_EFFECTS__*/
89
+ export function get_first_child(node) {
90
+ return /** @type {TemplateNode | null} */ (first_child_getter.call(node));
91
+ }
92
+
93
+ /**
94
+ * @template {Node} N
95
+ * @param {N} node
96
+ */
97
+ /*@__NO_SIDE_EFFECTS__*/
98
+ export function get_next_sibling(node) {
99
+ return /** @type {TemplateNode | null} */ (next_sibling_getter.call(node));
100
+ }
101
+
102
+ /**
103
+ * Don't mark this as side-effect-free, hydration needs to walk all nodes
104
+ * @template {Node} N
105
+ * @param {N} node
106
+ * @param {boolean} is_text
107
+ * @returns {TemplateNode | null}
108
+ */
109
+ export function child(node, is_text) {
110
+ if (!hydrating) {
111
+ return get_first_child(node);
112
+ }
113
+
114
+ var child = get_first_child(hydrate_node);
115
+
116
+ // Child can be null if we have an element with a single child, like `<p>{text}</p>`, where `text` is empty
117
+ if (child === null) {
118
+ child = hydrate_node.appendChild(create_text());
119
+ } else if (is_text && child.nodeType !== TEXT_NODE) {
120
+ var text = create_text();
121
+ child?.before(text);
122
+ set_hydrate_node(text);
123
+ return text;
124
+ }
125
+
126
+ if (is_text) {
127
+ merge_text_nodes(/** @type {Text} */ (child));
128
+ }
129
+
130
+ set_hydrate_node(child);
131
+ return child;
132
+ }
133
+
134
+ /**
135
+ * Don't mark this as side-effect-free, hydration needs to walk all nodes
136
+ * @param {TemplateNode} node
137
+ * @param {boolean} [is_text]
138
+ * @returns {TemplateNode | null}
139
+ */
140
+ export function first_child(node, is_text = false) {
141
+ if (!hydrating) {
142
+ var first = get_first_child(node);
143
+
144
+ // TODO prevent user comments with the empty string when preserveComments is true
145
+ if (first instanceof Comment && first.data === '') return get_next_sibling(first);
146
+
147
+ return first;
148
+ }
149
+
150
+ if (is_text) {
151
+ // if an {expression} is empty during SSR, there might be no
152
+ // text node to hydrate — we must therefore create one
153
+ if (hydrate_node?.nodeType !== TEXT_NODE) {
154
+ var text = create_text();
155
+
156
+ hydrate_node?.before(text);
157
+ set_hydrate_node(text);
158
+ return text;
159
+ }
160
+
161
+ merge_text_nodes(/** @type {Text} */ (hydrate_node));
162
+ }
163
+
164
+ return hydrate_node;
165
+ }
166
+
167
+ /**
168
+ * Don't mark this as side-effect-free, hydration needs to walk all nodes
169
+ * @param {TemplateNode} node
170
+ * @param {number} count
171
+ * @param {boolean} is_text
172
+ * @returns {TemplateNode | null}
173
+ */
174
+ export function sibling(node, count = 1, is_text = false) {
175
+ let next_sibling = hydrating ? hydrate_node : node;
176
+ var last_sibling;
177
+
178
+ while (count--) {
179
+ last_sibling = next_sibling;
180
+ next_sibling = /** @type {TemplateNode} */ (get_next_sibling(next_sibling));
181
+ }
182
+
183
+ if (!hydrating) {
184
+ return next_sibling;
185
+ }
186
+
187
+ if (is_text) {
188
+ // if a sibling {expression} is empty during SSR, there might be no
189
+ // text node to hydrate — we must therefore create one
190
+ if (next_sibling?.nodeType !== TEXT_NODE) {
191
+ var text = create_text();
192
+ // If the next sibling is `null` and we're handling text then it's because
193
+ // the SSR content was empty for the text, so we need to generate a new text
194
+ // node and insert it after the last sibling
195
+ if (next_sibling === null) {
196
+ last_sibling?.after(text);
197
+ } else {
198
+ next_sibling.before(text);
199
+ }
200
+ set_hydrate_node(text);
201
+ return text;
202
+ }
203
+
204
+ merge_text_nodes(/** @type {Text} */ (next_sibling));
205
+ }
206
+
207
+ set_hydrate_node(next_sibling);
208
+ return next_sibling;
209
+ }
210
+
211
+ /**
212
+ * @template {Node} N
213
+ * @param {N} node
214
+ * @returns {void}
215
+ */
216
+ export function clear_text_content(node) {
217
+ node.textContent = '';
218
+ }
219
+
220
+ /**
221
+ * Returns `true` if we're updating the current block, for example `condition` in
222
+ * an `{#if condition}` block just changed. In this case, the branch should be
223
+ * appended (or removed) at the same time as other updates within the
224
+ * current `<svelte:boundary>`
225
+ */
226
+ export function should_defer_append() {
227
+ if (!async_mode_flag) return false;
228
+ if (eager_block_effects !== null) return false;
229
+
230
+ var flags = /** @type {Effect} */ (active_effect).f;
231
+ return (flags & REACTION_RAN) !== 0;
232
+ }
233
+
234
+ /**
235
+ * @template {keyof HTMLElementTagNameMap | string} T
236
+ * @param {T} tag
237
+ * @param {string} [namespace]
238
+ * @param {string} [is]
239
+ * @returns {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element}
240
+ */
241
+ export function create_element(tag, namespace, is) {
242
+ let options = is ? { is } : undefined;
243
+ return /** @type {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element} */ (
244
+ document.createElementNS(namespace ?? NAMESPACE_HTML, tag, options)
245
+ );
246
+ }
247
+
248
+ export function create_fragment() {
249
+ return document.createDocumentFragment();
250
+ }
251
+
252
+ /**
253
+ * @param {string} data
254
+ * @returns
255
+ */
256
+ export function create_comment(data = '') {
257
+ return document.createComment(data);
258
+ }
259
+
260
+ /**
261
+ * @param {Element} element
262
+ * @param {string} key
263
+ * @param {string} value
264
+ * @returns
265
+ */
266
+ export function set_attribute(element, key, value = '') {
267
+ if (key.startsWith('xlink:')) {
268
+ element.setAttributeNS('http://www.w3.org/1999/xlink', key, value);
269
+ return;
270
+ }
271
+ return element.setAttribute(key, value);
272
+ }
273
+
274
+ /**
275
+ * Browsers split text nodes larger than 65536 bytes when parsing.
276
+ * For hydration to succeed, we need to stitch them back together
277
+ * @param {Text} text
278
+ */
279
+ export function merge_text_nodes(text) {
280
+ if (/** @type {string} */ (text.nodeValue).length < 65536) {
281
+ return;
282
+ }
283
+
284
+ let next = text.nextSibling;
285
+
286
+ while (next !== null && next.nodeType === TEXT_NODE) {
287
+ next.remove();
288
+
289
+ /** @type {string} */ (text.nodeValue) += /** @type {string} */ (next.nodeValue);
290
+
291
+ next = text.nextSibling;
292
+ }
293
+ }
@@ -0,0 +1,25 @@
1
+ import { create_element } from './operations.js';
2
+
3
+ const policy =
4
+ // We gotta write it like this because after downleveling the pure comment may end up in the wrong location
5
+ globalThis?.window?.trustedTypes &&
6
+ /* @__PURE__ */ globalThis.window.trustedTypes.createPolicy('svelte-trusted-html', {
7
+ /** @param {string} html */
8
+ createHTML: (html) => {
9
+ return html;
10
+ }
11
+ });
12
+
13
+ /** @param {string} html */
14
+ export function create_trusted_html(html) {
15
+ return /** @type {string} */ (policy?.createHTML(html) ?? html);
16
+ }
17
+
18
+ /**
19
+ * @param {string} html
20
+ */
21
+ export function create_fragment_from_html(html) {
22
+ var elem = create_element('template');
23
+ elem.innerHTML = create_trusted_html(html.replaceAll('<!>', '<!---->')); // XHTML compliance
24
+ return elem.content;
25
+ }
@@ -0,0 +1,42 @@
1
+ import { run_all } from '../../shared/utils.js';
2
+ import { is_flushing_sync } from '../reactivity/batch.js';
3
+
4
+ /** @type {Array<() => void>} */
5
+ let micro_tasks = [];
6
+
7
+ function run_micro_tasks() {
8
+ var tasks = micro_tasks;
9
+ micro_tasks = [];
10
+ run_all(tasks);
11
+ }
12
+
13
+ /**
14
+ * @param {() => void} fn
15
+ */
16
+ export function queue_micro_task(fn) {
17
+ if (micro_tasks.length === 0 && !is_flushing_sync) {
18
+ var tasks = micro_tasks;
19
+ queueMicrotask(() => {
20
+ // If this is false, a flushSync happened in the meantime. Do _not_ run new scheduled microtasks in that case
21
+ // as the ordering of microtasks would be broken at that point - consider this case:
22
+ // - queue_micro_task schedules microtask A to flush task X
23
+ // - synchronously after, flushSync runs, processing task X
24
+ // - synchronously after, some other microtask B is scheduled, but not through queue_micro_task but for example a Promise.resolve() in user code
25
+ // - synchronously after, queue_micro_task schedules microtask C to flush task Y
26
+ // - one tick later, microtask A now resolves, flushing task Y before microtask B, which is incorrect
27
+ // This if check prevents that race condition (that realistically will only happen in tests)
28
+ if (tasks === micro_tasks) run_micro_tasks();
29
+ });
30
+ }
31
+
32
+ micro_tasks.push(fn);
33
+ }
34
+
35
+ /**
36
+ * Synchronously run any queued tasks.
37
+ */
38
+ export function flush_tasks() {
39
+ while (micro_tasks.length > 0) {
40
+ run_micro_tasks();
41
+ }
42
+ }