@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,18 @@
1
+ const svg_attributes =
2
+ 'accent-height accumulate additive alignment-baseline allowReorder alphabetic amplitude arabic-form ascent attributeName attributeType autoReverse azimuth baseFrequency baseline-shift baseProfile bbox begin bias by calcMode cap-height class clip clipPathUnits clip-path clip-rule color color-interpolation color-interpolation-filters color-profile color-rendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominant-baseline dur dx dy edgeMode elevation enable-background end exponent externalResourcesRequired fill fill-opacity fill-rule filter filterRes filterUnits flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight format from fr fx fy g1 g2 glyph-name glyph-orientation-horizontal glyph-orientation-vertical glyphRef gradientTransform gradientUnits hanging height href horiz-adv-x horiz-origin-x id ideographic image-rendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lang lengthAdjust letter-spacing lighting-color limitingConeAngle local marker-end marker-mid marker-start markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical max media method min mode name numOctaves offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload opacity operator order orient orientation origin overflow overline-position overline-thickness panose-1 paint-order pathLength patternContentUnits patternTransform patternUnits pointer-events points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shape-rendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stop-color stop-opacity strikethrough-position strikethrough-thickness string stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width style surfaceScale systemLanguage tabindex tableValues target targetX targetY text-anchor text-decoration text-rendering textLength to transform type u1 u2 underline-position underline-thickness unicode unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget visibility width widths word-spacing writing-mode x x-height x1 x2 xChannelSelector xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space y y1 y2 yChannelSelector z zoomAndPan'.split(
3
+ ' '
4
+ );
5
+
6
+ const svg_attribute_lookup = new Map();
7
+
8
+ svg_attributes.forEach((name) => {
9
+ svg_attribute_lookup.set(name.toLowerCase(), name);
10
+ });
11
+
12
+ /**
13
+ * @param {string} name
14
+ */
15
+ export default function fix_attribute_casing(name) {
16
+ name = name.toLowerCase();
17
+ return svg_attribute_lookup.get(name) || name;
18
+ }
@@ -0,0 +1,67 @@
1
+ /** @import { Namespace } from '#compiler' */
2
+ /** @import { ComponentClientTransformState } from '../types.js' */
3
+ /** @import { Node } from './types.js' */
4
+ import { TEMPLATE_USE_MATHML, TEMPLATE_USE_SVG } from '../../../../../constants.js';
5
+ import { dev, locator } from '../../../../state.js';
6
+ import * as b from '../../../../utils/builders.js';
7
+
8
+ /**
9
+ * @param {Node[]} nodes
10
+ */
11
+ function build_locations(nodes) {
12
+ const array = b.array([]);
13
+
14
+ for (const node of nodes) {
15
+ if (node.type !== 'element') continue;
16
+
17
+ const { line, column } = locator(node.start);
18
+
19
+ const expression = b.array([b.literal(line), b.literal(column)]);
20
+ const children = build_locations(node.children);
21
+
22
+ if (children.elements.length > 0) {
23
+ expression.elements.push(children);
24
+ }
25
+
26
+ array.elements.push(expression);
27
+ }
28
+
29
+ return array;
30
+ }
31
+
32
+ /**
33
+ * @param {ComponentClientTransformState} state
34
+ * @param {Namespace} namespace
35
+ * @param {number} [flags]
36
+ */
37
+ export function transform_template(state, namespace, flags = 0) {
38
+ const tree = state.options.fragments === 'tree';
39
+
40
+ const expression = tree ? state.template.as_tree() : state.template.as_html();
41
+
42
+ if (tree) {
43
+ if (namespace === 'svg') flags |= TEMPLATE_USE_SVG;
44
+ if (namespace === 'mathml') flags |= TEMPLATE_USE_MATHML;
45
+ }
46
+
47
+ let call = b.call(
48
+ tree ? `$.from_tree` : `$.from_${namespace}`,
49
+ expression,
50
+ flags ? b.literal(flags) : undefined
51
+ );
52
+
53
+ if (state.template.contains_script_tag) {
54
+ call = b.call(`$.with_script`, call);
55
+ }
56
+
57
+ if (dev) {
58
+ call = b.call(
59
+ '$.add_locations',
60
+ call,
61
+ b.member(b.id(state.analysis.name), '$.FILENAME', true),
62
+ build_locations(state.template.nodes)
63
+ );
64
+ }
65
+
66
+ return call;
67
+ }
@@ -0,0 +1,164 @@
1
+ /** @import { AST } from '#compiler' */
2
+ /** @import { Node, Element } from './types'; */
3
+ import { escape_html } from '../../../../../escaping.js';
4
+ import { is_void } from '../../../../../utils.js';
5
+ import * as b from '#compiler/builders';
6
+ import fix_attribute_casing from './fix-attribute-casing.js';
7
+ import { regex_starts_with_newline } from '../../../patterns.js';
8
+
9
+ export class Template {
10
+ /**
11
+ * `true` if HTML template contains a `<script>` tag. In this case we need to invoke a special
12
+ * template instantiation function (see `create_fragment_with_script_from_html` for more info)
13
+ */
14
+ contains_script_tag = false;
15
+
16
+ /** `true` if the HTML template needs to be instantiated with `importNode` */
17
+ needs_import_node = false;
18
+
19
+ /** @type {Node[]} */
20
+ nodes = [];
21
+
22
+ /** @type {Node[][]} */
23
+ #stack = [this.nodes];
24
+
25
+ /** @type {Element | undefined} */
26
+ #element;
27
+
28
+ #fragment = this.nodes;
29
+
30
+ /**
31
+ * @param {string} name
32
+ * @param {number} start
33
+ * @param {boolean} is_html
34
+ */
35
+ push_element(name, start, is_html) {
36
+ this.#element = {
37
+ type: 'element',
38
+ name,
39
+ attributes: {},
40
+ children: [],
41
+ is_html,
42
+ start
43
+ };
44
+
45
+ this.#fragment.push(this.#element);
46
+
47
+ this.#fragment = /** @type {Element} */ (this.#element).children;
48
+ this.#stack.push(this.#fragment);
49
+ }
50
+
51
+ /** @param {string} [data] */
52
+ push_comment(data) {
53
+ this.#fragment.push({ type: 'comment', data });
54
+ }
55
+
56
+ /** @param {AST.Text[]} nodes */
57
+ push_text(nodes) {
58
+ this.#fragment.push({ type: 'text', nodes });
59
+ }
60
+
61
+ pop_element() {
62
+ this.#stack.pop();
63
+ this.#fragment = /** @type {Node[]} */ (this.#stack.at(-1));
64
+ }
65
+
66
+ /**
67
+ * @param {string} key
68
+ * @param {string | undefined} value
69
+ */
70
+ set_prop(key, value) {
71
+ /** @type {Element} */ (this.#element).attributes[key] = value;
72
+ }
73
+
74
+ as_html() {
75
+ return b.template([b.quasi(this.nodes.map(stringify).join(''), true)], []);
76
+ }
77
+
78
+ as_tree() {
79
+ // if the first item is a comment we need to add another comment for effect.start
80
+ if (this.nodes[0].type === 'comment') {
81
+ this.nodes.unshift({ type: 'comment', data: undefined });
82
+ }
83
+
84
+ return b.array(this.nodes.map(objectify));
85
+ }
86
+ }
87
+
88
+ /**
89
+ * @param {Node} item
90
+ */
91
+ function stringify(item) {
92
+ if (item.type === 'text') {
93
+ return item.nodes.map((node) => node.raw).join('');
94
+ }
95
+
96
+ if (item.type === 'comment') {
97
+ return item.data ? `<!--${item.data}-->` : '<!>';
98
+ }
99
+
100
+ let str = `<${item.name}`;
101
+
102
+ for (const key in item.attributes) {
103
+ const value = item.attributes[key];
104
+
105
+ str += ` ${item.is_html ? key.toLowerCase() : key}`;
106
+ if (value !== undefined) str += `="${escape_html(value, true)}"`;
107
+ }
108
+
109
+ if (is_void(item.name)) {
110
+ str += '/>'; // XHTML compliance
111
+ } else {
112
+ str += `>`;
113
+ str += item.children.map(stringify).join('');
114
+ str += `</${item.name}>`;
115
+ }
116
+
117
+ return str;
118
+ }
119
+
120
+ /** @param {Node} item */
121
+ function objectify(item) {
122
+ if (item.type === 'text') {
123
+ return b.literal(item.nodes.map((node) => node.data).join(''));
124
+ }
125
+
126
+ if (item.type === 'comment') {
127
+ return item.data ? b.array([b.literal(`// ${item.data}`)]) : null;
128
+ }
129
+
130
+ const element = b.array([b.literal(item.name)]);
131
+
132
+ const attributes = b.object([]);
133
+
134
+ for (const key in item.attributes) {
135
+ const value = item.attributes[key];
136
+
137
+ attributes.properties.push(
138
+ b.prop(
139
+ 'init',
140
+ b.key(fix_attribute_casing(key)),
141
+ value === undefined ? b.void0 : b.literal(value)
142
+ )
143
+ );
144
+ }
145
+
146
+ if (attributes.properties.length > 0 || item.children.length > 0) {
147
+ element.elements.push(attributes.properties.length > 0 ? attributes : b.null);
148
+ }
149
+
150
+ if (item.children.length > 0) {
151
+ const children = item.children.map(objectify);
152
+ element.elements.push(...children);
153
+
154
+ // special case — strip leading newline from `<pre>` and `<textarea>`
155
+ if (item.name === 'pre' || item.name === 'textarea') {
156
+ const first = children[0];
157
+ if (first?.type === 'Literal') {
158
+ first.value = /** @type {string} */ (first.value).replace(regex_starts_with_newline, '');
159
+ }
160
+ }
161
+ }
162
+
163
+ return element;
164
+ }
@@ -0,0 +1,181 @@
1
+ /** @import { BlockStatement, Expression, Identifier } from 'estree' */
2
+ /** @import { Binding } from '#compiler' */
3
+ /** @import { ClientTransformState, ComponentClientTransformState } from './types.js' */
4
+ /** @import { Analysis } from '../../types.js' */
5
+ /** @import { Scope } from '../../scope.js' */
6
+ import * as b from '#compiler/builders';
7
+ import { is_simple_expression, save } from '../../../utils/ast.js';
8
+ import {
9
+ PROPS_IS_LAZY_INITIAL,
10
+ PROPS_IS_IMMUTABLE,
11
+ PROPS_IS_RUNES,
12
+ PROPS_IS_UPDATED,
13
+ PROPS_IS_BINDABLE
14
+ } from '../../../../constants.js';
15
+
16
+ /**
17
+ * @param {Binding} binding
18
+ * @param {Analysis} analysis
19
+ * @returns {boolean}
20
+ */
21
+ export function is_state_source(binding, analysis) {
22
+ return (
23
+ (binding.kind === 'state' || binding.kind === 'raw_state') &&
24
+ (!analysis.immutable || binding.reassigned || analysis.accessors)
25
+ );
26
+ }
27
+
28
+ /**
29
+ * @param {Identifier} node
30
+ * @param {ClientTransformState} state
31
+ * @returns {Expression}
32
+ */
33
+ export function build_getter(node, state) {
34
+ if (Object.hasOwn(state.transform, node.name)) {
35
+ const binding = state.scope.get(node.name);
36
+
37
+ // don't transform the declaration itself
38
+ if (node !== binding?.node) {
39
+ return state.transform[node.name].read(node);
40
+ }
41
+ }
42
+
43
+ return node;
44
+ }
45
+
46
+ /**
47
+ * @param {Binding} binding
48
+ * @param {ComponentClientTransformState} state
49
+ * @param {string} name
50
+ * @param {Expression | null} [initial]
51
+ * @returns
52
+ */
53
+ export function get_prop_source(binding, state, name, initial) {
54
+ /** @type {Expression[]} */
55
+ const args = [b.id('$$props'), b.literal(name)];
56
+
57
+ let flags = 0;
58
+
59
+ if (binding.kind === 'bindable_prop') {
60
+ flags |= PROPS_IS_BINDABLE;
61
+ }
62
+
63
+ if (state.analysis.immutable) {
64
+ flags |= PROPS_IS_IMMUTABLE;
65
+ }
66
+
67
+ if (state.analysis.runes) {
68
+ flags |= PROPS_IS_RUNES;
69
+ }
70
+
71
+ if (
72
+ state.analysis.accessors ||
73
+ (state.analysis.immutable
74
+ ? binding.reassigned || (state.analysis.runes && binding.mutated)
75
+ : binding.updated)
76
+ ) {
77
+ flags |= PROPS_IS_UPDATED;
78
+ }
79
+
80
+ /** @type {Expression | undefined} */
81
+ let arg;
82
+
83
+ if (initial) {
84
+ // To avoid eagerly evaluating the right-hand-side, we wrap it in a thunk if necessary
85
+ if (is_simple_expression(initial)) {
86
+ arg = initial;
87
+ } else {
88
+ if (
89
+ initial.type === 'CallExpression' &&
90
+ initial.callee.type === 'Identifier' &&
91
+ initial.arguments.length === 0
92
+ ) {
93
+ arg = initial.callee;
94
+ } else {
95
+ arg = b.thunk(initial);
96
+ }
97
+
98
+ flags |= PROPS_IS_LAZY_INITIAL;
99
+ }
100
+ }
101
+
102
+ if (flags || arg) {
103
+ args.push(b.literal(flags));
104
+ if (arg) args.push(arg);
105
+ }
106
+
107
+ return b.call('$.prop', ...args);
108
+ }
109
+
110
+ /**
111
+ *
112
+ * @param {Binding} binding
113
+ * @param {ClientTransformState} state
114
+ * @returns
115
+ */
116
+ export function is_prop_source(binding, state) {
117
+ return (
118
+ (binding.kind === 'prop' || binding.kind === 'bindable_prop') &&
119
+ (!state.analysis.runes ||
120
+ state.analysis.accessors ||
121
+ binding.reassigned ||
122
+ binding.initial ||
123
+ // Until legacy mode is gone, we also need to use the prop source when only mutated is true,
124
+ // because the parent could be a legacy component which needs coarse-grained reactivity
125
+ binding.updated)
126
+ );
127
+ }
128
+
129
+ /**
130
+ * @param {Expression} node
131
+ * @param {Scope | null} scope
132
+ */
133
+ export function should_proxy(node, scope) {
134
+ if (
135
+ !node ||
136
+ node.type === 'Literal' ||
137
+ node.type === 'TemplateLiteral' ||
138
+ node.type === 'ArrowFunctionExpression' ||
139
+ node.type === 'FunctionExpression' ||
140
+ node.type === 'UnaryExpression' ||
141
+ node.type === 'BinaryExpression' ||
142
+ (node.type === 'Identifier' && node.name === 'undefined')
143
+ ) {
144
+ return false;
145
+ }
146
+
147
+ if (node.type === 'Identifier' && scope !== null) {
148
+ const binding = scope.get(node.name);
149
+ // Let's see if the reference is something that can be proxied
150
+ if (
151
+ binding !== null &&
152
+ !binding.reassigned &&
153
+ binding.initial !== null &&
154
+ binding.initial.type !== 'FunctionDeclaration' &&
155
+ binding.initial.type !== 'ClassDeclaration' &&
156
+ binding.initial.type !== 'ImportDeclaration' &&
157
+ binding.initial.type !== 'EachBlock' &&
158
+ binding.initial.type !== 'SnippetBlock'
159
+ ) {
160
+ return should_proxy(binding.initial, null);
161
+ }
162
+ }
163
+
164
+ return true;
165
+ }
166
+
167
+ /**
168
+ * Svelte legacy mode should use safe equals in most places, runes mode shouldn't
169
+ * @param {ComponentClientTransformState} state
170
+ * @param {Expression | BlockStatement} expression
171
+ * @param {boolean} [async]
172
+ */
173
+ export function create_derived(state, expression, async = false) {
174
+ const thunk = b.thunk(expression, async);
175
+
176
+ if (async) {
177
+ return save(b.call('$.async_derived', thunk));
178
+ } else {
179
+ return b.call(state.analysis.runes ? '$.derived' : '$.derived_safe_equal', thunk);
180
+ }
181
+ }
@@ -0,0 +1,38 @@
1
+ /** @import { Expression } from 'estree' */
2
+ /** @import { AST } from '#compiler' */
3
+ /** @import { ComponentContext } from '../types' */
4
+ import * as b from '#compiler/builders';
5
+ import { parse_directive_name } from './shared/utils.js';
6
+
7
+ /**
8
+ * @param {AST.AnimateDirective} node
9
+ * @param {ComponentContext} context
10
+ */
11
+ export function AnimateDirective(node, context) {
12
+ const expression =
13
+ node.expression === null
14
+ ? b.null
15
+ : b.thunk(/** @type {Expression} */ (context.visit(node.expression)));
16
+
17
+ // in after_update to ensure it always happens after bind:this
18
+ let statement = b.stmt(
19
+ b.call(
20
+ '$.animation',
21
+ context.state.node,
22
+ b.thunk(/** @type {Expression} */ (context.visit(parse_directive_name(node.name)))),
23
+ expression
24
+ )
25
+ );
26
+
27
+ if (node.metadata.expression.is_async()) {
28
+ statement = b.stmt(
29
+ b.call(
30
+ '$.run_after_blockers',
31
+ node.metadata.expression.blockers(),
32
+ b.thunk(b.block([statement]))
33
+ )
34
+ );
35
+ }
36
+
37
+ context.state.after_update.push(statement);
38
+ }
@@ -0,0 +1,11 @@
1
+ /** @import { ArrowFunctionExpression } from 'estree' */
2
+ /** @import { ComponentContext } from '../types' */
3
+ import { visit_function } from './shared/function.js';
4
+
5
+ /**
6
+ * @param {ArrowFunctionExpression} node
7
+ * @param {ComponentContext} context
8
+ */
9
+ export function ArrowFunctionExpression(node, context) {
10
+ return visit_function(node, context);
11
+ }