@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,355 @@
1
+ import { teardown } from '../../reactivity/effects.js';
2
+ import { define_property } from '../../../shared/utils.js';
3
+ import { hydrating } from '../hydration.js';
4
+ import { queue_micro_task } from '../task.js';
5
+ import { FILENAME } from '../../../../constants.js';
6
+ import * as w from '../../warnings.js';
7
+ import {
8
+ active_effect,
9
+ active_reaction,
10
+ set_active_effect,
11
+ set_active_reaction
12
+ } from '../../runtime.js';
13
+ import { without_reactive_context } from './bindings/shared.js';
14
+
15
+ /**
16
+ * Used on elements, as a map of event type -> event handler,
17
+ * and on events themselves to track which element handled an event
18
+ */
19
+ export const event_symbol = Symbol('events');
20
+
21
+ /** @type {Set<string>} */
22
+ export const all_registered_events = new Set();
23
+
24
+ /** @type {Set<(events: Array<string>) => void>} */
25
+ export const root_event_handles = new Set();
26
+
27
+ /**
28
+ * SSR adds onload and onerror attributes to catch those events before the hydration.
29
+ * This function detects those cases, removes the attributes and replays the events.
30
+ * @param {HTMLElement} dom
31
+ */
32
+ export function replay_events(dom) {
33
+ if (!hydrating) return;
34
+
35
+ dom.removeAttribute('onload');
36
+ dom.removeAttribute('onerror');
37
+ // @ts-expect-error
38
+ const event = dom.__e;
39
+ if (event !== undefined) {
40
+ // @ts-expect-error
41
+ dom.__e = undefined;
42
+ queueMicrotask(() => {
43
+ if (dom.isConnected) {
44
+ dom.dispatchEvent(event);
45
+ }
46
+ });
47
+ }
48
+ }
49
+
50
+ /**
51
+ * @param {string} event_name
52
+ * @param {EventTarget} dom
53
+ * @param {EventListener} [handler]
54
+ * @param {AddEventListenerOptions} [options]
55
+ */
56
+ export function create_event(event_name, dom, handler, options = {}) {
57
+ /**
58
+ * @this {EventTarget}
59
+ */
60
+ function target_handler(/** @type {Event} */ event) {
61
+ if (!options.capture) {
62
+ // Only call in the bubble phase, else delegated events would be called before the capturing events
63
+ handle_event_propagation.call(dom, event);
64
+ }
65
+ if (!event.cancelBubble) {
66
+ return without_reactive_context(() => {
67
+ return handler?.call(this, event);
68
+ });
69
+ }
70
+ }
71
+
72
+ // Chrome has a bug where pointer events don't work when attached to a DOM element that has been cloned
73
+ // with cloneNode() and the DOM element is disconnected from the document. To ensure the event works, we
74
+ // defer the attachment till after it's been appended to the document. TODO: remove this once Chrome fixes
75
+ // this bug. The same applies to wheel events and touch events.
76
+ if (
77
+ event_name.startsWith('pointer') ||
78
+ event_name.startsWith('touch') ||
79
+ event_name === 'wheel'
80
+ ) {
81
+ queue_micro_task(() => {
82
+ dom.addEventListener(event_name, target_handler, options);
83
+ });
84
+ } else {
85
+ dom.addEventListener(event_name, target_handler, options);
86
+ }
87
+
88
+ return target_handler;
89
+ }
90
+
91
+ /**
92
+ * Attaches an event handler to an element and returns a function that removes the handler. Using this
93
+ * rather than `addEventListener` will preserve the correct order relative to handlers added declaratively
94
+ * (with attributes like `onclick`), which use event delegation for performance reasons
95
+ *
96
+ * @param {EventTarget} element
97
+ * @param {string} type
98
+ * @param {EventListener} handler
99
+ * @param {AddEventListenerOptions} [options]
100
+ */
101
+ export function on(element, type, handler, options = {}) {
102
+ var target_handler = create_event(type, element, handler, options);
103
+
104
+ return () => {
105
+ element.removeEventListener(type, target_handler, options);
106
+ };
107
+ }
108
+
109
+ /**
110
+ * @param {string} event_name
111
+ * @param {Element} dom
112
+ * @param {EventListener} [handler]
113
+ * @param {boolean} [capture]
114
+ * @param {boolean} [passive]
115
+ * @returns {void}
116
+ */
117
+ export function event(event_name, dom, handler, capture, passive) {
118
+ var options = { capture, passive };
119
+ var target_handler = create_event(event_name, dom, handler, options);
120
+
121
+ if (
122
+ dom === document.body ||
123
+ // @ts-ignore
124
+ dom === window ||
125
+ // @ts-ignore
126
+ dom === document ||
127
+ // Firefox has quirky behavior, it can happen that we still get "canplay" events when the element is already removed
128
+ dom instanceof HTMLMediaElement
129
+ ) {
130
+ teardown(() => {
131
+ dom.removeEventListener(event_name, target_handler, options);
132
+ });
133
+ }
134
+ }
135
+
136
+ /**
137
+ * @param {string} event_name
138
+ * @param {Element} element
139
+ * @param {EventListener} [handler]
140
+ * @returns {void}
141
+ */
142
+ export function delegated(event_name, element, handler) {
143
+ // @ts-expect-error
144
+ (element[event_symbol] ??= {})[event_name] = handler;
145
+ }
146
+
147
+ /**
148
+ * @param {Array<string>} events
149
+ * @returns {void}
150
+ */
151
+ export function delegate(events) {
152
+ for (var i = 0; i < events.length; i++) {
153
+ all_registered_events.add(events[i]);
154
+ }
155
+
156
+ for (var fn of root_event_handles) {
157
+ fn(events);
158
+ }
159
+ }
160
+
161
+ // used to store the reference to the currently propagated event
162
+ // to prevent garbage collection between microtasks in Firefox
163
+ // If the event object is GCed too early, the expando __root property
164
+ // set on the event object is lost, causing the event delegation
165
+ // to process the event twice
166
+ let last_propagated_event = null;
167
+
168
+ /**
169
+ * @this {EventTarget}
170
+ * @param {Event} event
171
+ * @returns {void}
172
+ */
173
+ export function handle_event_propagation(event) {
174
+ var handler_element = this;
175
+ var owner_document = /** @type {Node} */ (handler_element).ownerDocument;
176
+ var event_name = event.type;
177
+ var path = event.composedPath?.() || [];
178
+ var current_target = /** @type {null | Element} */ (path[0] || event.target);
179
+
180
+ last_propagated_event = event;
181
+
182
+ // composedPath contains list of nodes the event has propagated through.
183
+ // We check `event_symbol` to skip all nodes below it in case this is a
184
+ // parent of the `event_symbol` node, which indicates that there's nested
185
+ // mounted apps. In this case we don't want to trigger events multiple times.
186
+ var path_idx = 0;
187
+
188
+ // the `last_propagated_event === event` check is redundant, but
189
+ // without it the variable will be DCE'd and things will
190
+ // fail mysteriously in Firefox
191
+ // @ts-expect-error is added below
192
+ var handled_at = last_propagated_event === event && event[event_symbol];
193
+
194
+ if (handled_at) {
195
+ var at_idx = path.indexOf(handled_at);
196
+ if (
197
+ at_idx !== -1 &&
198
+ (handler_element === document || handler_element === /** @type {any} */ (window))
199
+ ) {
200
+ // This is the fallback document listener or a window listener, but the event was already handled
201
+ // -> ignore, but set handle_at to document/window so that we're resetting the event
202
+ // chain in case someone manually dispatches the same event object again.
203
+ // @ts-expect-error
204
+ event[event_symbol] = handler_element;
205
+ return;
206
+ }
207
+
208
+ // We're deliberately not skipping if the index is higher, because
209
+ // someone could create an event programmatically and emit it multiple times,
210
+ // in which case we want to handle the whole propagation chain properly each time.
211
+ // (this will only be a false negative if the event is dispatched multiple times and
212
+ // the fallback document listener isn't reached in between, but that's super rare)
213
+ var handler_idx = path.indexOf(handler_element);
214
+ if (handler_idx === -1) {
215
+ // handle_idx can theoretically be -1 (happened in some JSDOM testing scenarios with an event listener on the window object)
216
+ // so guard against that, too, and assume that everything was handled at this point.
217
+ return;
218
+ }
219
+
220
+ if (at_idx <= handler_idx) {
221
+ path_idx = at_idx;
222
+ }
223
+ }
224
+
225
+ current_target = /** @type {Element} */ (path[path_idx] || event.target);
226
+ // there can only be one delegated event per element, and we either already handled the current target,
227
+ // or this is the very first target in the chain which has a non-delegated listener, in which case it's safe
228
+ // to handle a possible delegated event on it later (through the root delegation listener for example).
229
+ if (current_target === handler_element) return;
230
+
231
+ // Proxy currentTarget to correct target
232
+ define_property(event, 'currentTarget', {
233
+ configurable: true,
234
+ get() {
235
+ return current_target || owner_document;
236
+ }
237
+ });
238
+
239
+ // This started because of Chromium issue https://chromestatus.com/feature/5128696823545856,
240
+ // where removal or moving of of the DOM can cause sync `blur` events to fire, which can cause logic
241
+ // to run inside the current `active_reaction`, which isn't what we want at all. However, on reflection,
242
+ // it's probably best that all event handled by Svelte have this behaviour, as we don't really want
243
+ // an event handler to run in the context of another reaction or effect.
244
+ var previous_reaction = active_reaction;
245
+ var previous_effect = active_effect;
246
+ set_active_reaction(null);
247
+ set_active_effect(null);
248
+
249
+ try {
250
+ /**
251
+ * @type {unknown}
252
+ */
253
+ var throw_error;
254
+ /**
255
+ * @type {unknown[]}
256
+ */
257
+ var other_errors = [];
258
+
259
+ while (current_target !== null) {
260
+ /** @type {null | Element} */
261
+ var parent_element =
262
+ current_target.assignedSlot ||
263
+ current_target.parentNode ||
264
+ /** @type {any} */ (current_target).host ||
265
+ null;
266
+
267
+ try {
268
+ // @ts-expect-error
269
+ var delegated = current_target[event_symbol]?.[event_name];
270
+
271
+ if (
272
+ delegated != null &&
273
+ (!(/** @type {any} */ (current_target).disabled) ||
274
+ // DOM could've been updated already by the time this is reached, so we check this as well
275
+ // -> the target could not have been disabled because it emits the event in the first place
276
+ event.target === current_target)
277
+ ) {
278
+ delegated.call(current_target, event);
279
+ }
280
+ } catch (error) {
281
+ if (throw_error) {
282
+ other_errors.push(error);
283
+ } else {
284
+ throw_error = error;
285
+ }
286
+ }
287
+ if (event.cancelBubble || parent_element === handler_element || parent_element === null) {
288
+ break;
289
+ }
290
+ current_target = parent_element;
291
+ }
292
+
293
+ if (throw_error) {
294
+ for (let error of other_errors) {
295
+ // Throw the rest of the errors, one-by-one on a microtask
296
+ queueMicrotask(() => {
297
+ throw error;
298
+ });
299
+ }
300
+ throw throw_error;
301
+ }
302
+ } finally {
303
+ // @ts-expect-error is used above
304
+ event[event_symbol] = handler_element;
305
+ // @ts-ignore remove proxy on currentTarget
306
+ delete event.currentTarget;
307
+ set_active_reaction(previous_reaction);
308
+ set_active_effect(previous_effect);
309
+ }
310
+ }
311
+
312
+ /**
313
+ * In dev, warn if an event handler is not a function, as it means the
314
+ * user probably called the handler or forgot to add a `() =>`
315
+ * @param {() => (event: Event, ...args: any) => void} thunk
316
+ * @param {EventTarget} element
317
+ * @param {[Event, ...any]} args
318
+ * @param {any} component
319
+ * @param {[number, number]} [loc]
320
+ * @param {boolean} [remove_parens]
321
+ */
322
+ export function apply(
323
+ thunk,
324
+ element,
325
+ args,
326
+ component,
327
+ loc,
328
+ has_side_effects = false,
329
+ remove_parens = false
330
+ ) {
331
+ let handler;
332
+ let error;
333
+
334
+ try {
335
+ handler = thunk();
336
+ } catch (e) {
337
+ error = e;
338
+ }
339
+
340
+ if (typeof handler !== 'function' && (has_side_effects || handler != null || error)) {
341
+ const filename = component?.[FILENAME];
342
+ const location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`;
343
+ const phase = args[0]?.eventPhase < Event.BUBBLING_PHASE ? 'capture' : '';
344
+ const event_name = args[0]?.type + phase;
345
+ const description = `\`${event_name}\` handler${location}`;
346
+ const suggestion = remove_parens ? 'remove the trailing `()`' : 'add a leading `() =>`';
347
+
348
+ w.event_handler_invalid(description, suggestion);
349
+
350
+ if (error) {
351
+ throw error;
352
+ }
353
+ }
354
+ handler?.apply(element, args);
355
+ }
@@ -0,0 +1,58 @@
1
+ import { hydrating } from '../hydration.js';
2
+ import { clear_text_content, get_first_child } from '../operations.js';
3
+ import { queue_micro_task } from '../task.js';
4
+
5
+ /**
6
+ * @param {HTMLElement} dom
7
+ * @param {boolean} value
8
+ * @returns {void}
9
+ */
10
+ export function autofocus(dom, value) {
11
+ if (value) {
12
+ const body = document.body;
13
+ dom.autofocus = true;
14
+
15
+ queue_micro_task(() => {
16
+ if (document.activeElement === body) {
17
+ dom.focus();
18
+ }
19
+ });
20
+ }
21
+ }
22
+
23
+ /**
24
+ * The child of a textarea actually corresponds to the defaultValue property, so we need
25
+ * to remove it upon hydration to avoid a bug when someone resets the form value.
26
+ * @param {HTMLTextAreaElement} dom
27
+ * @returns {void}
28
+ */
29
+ export function remove_textarea_child(dom) {
30
+ if (hydrating && get_first_child(dom) !== null) {
31
+ clear_text_content(dom);
32
+ }
33
+ }
34
+
35
+ let listening_to_form_reset = false;
36
+
37
+ export function add_form_reset_listener() {
38
+ if (!listening_to_form_reset) {
39
+ listening_to_form_reset = true;
40
+ document.addEventListener(
41
+ 'reset',
42
+ (evt) => {
43
+ // Needs to happen one tick later or else the dom properties of the form
44
+ // elements have not updated to their reset values yet
45
+ Promise.resolve().then(() => {
46
+ if (!evt.defaultPrevented) {
47
+ for (const e of /**@type {HTMLFormElement} */ (evt.target).elements) {
48
+ // @ts-expect-error
49
+ e.__on_r?.();
50
+ }
51
+ }
52
+ });
53
+ },
54
+ // In the capture phase to guarantee we get noticed of it (no possibility of stopPropagation)
55
+ { capture: true }
56
+ );
57
+ }
58
+ }
@@ -0,0 +1,57 @@
1
+ import { to_style } from '../../../shared/attributes.js';
2
+ import { hydrating } from '../hydration.js';
3
+
4
+ /**
5
+ * @param {Element & ElementCSSInlineStyle} dom
6
+ * @param {Record<string, any>} prev
7
+ * @param {Record<string, any>} next
8
+ * @param {string} [priority]
9
+ */
10
+ function update_styles(dom, prev = {}, next, priority) {
11
+ for (var key in next) {
12
+ var value = next[key];
13
+
14
+ if (prev[key] !== value) {
15
+ if (next[key] == null) {
16
+ dom.style.removeProperty(key);
17
+ } else {
18
+ dom.style.setProperty(key, value, priority);
19
+ }
20
+ }
21
+ }
22
+ }
23
+
24
+ /**
25
+ * @param {Element & ElementCSSInlineStyle} dom
26
+ * @param {string | null} value
27
+ * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]
28
+ * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]
29
+ */
30
+ export function set_style(dom, value, prev_styles, next_styles) {
31
+ // @ts-expect-error
32
+ var prev = dom.__style;
33
+
34
+ if (hydrating || prev !== value) {
35
+ var next_style_attr = to_style(value, next_styles);
36
+
37
+ if (!hydrating || next_style_attr !== dom.getAttribute('style')) {
38
+ if (next_style_attr == null) {
39
+ dom.removeAttribute('style');
40
+ } else {
41
+ dom.style.cssText = next_style_attr;
42
+ }
43
+ }
44
+
45
+ // @ts-expect-error
46
+ dom.__style = value;
47
+ } else if (next_styles) {
48
+ if (Array.isArray(next_styles)) {
49
+ update_styles(dom, prev_styles?.[0], next_styles[0]);
50
+ update_styles(dom, prev_styles?.[1], next_styles[1], 'important');
51
+ } else {
52
+ update_styles(dom, prev_styles, next_styles);
53
+ }
54
+ }
55
+
56
+ return next_styles;
57
+ }