@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,312 @@
1
+ /** @import { Batch } from '../../../reactivity/batch.js' */
2
+ import { DEV } from 'esm-env';
3
+ import { render_effect, teardown } from '../../../reactivity/effects.js';
4
+ import { listen_to_event_and_reset_event } from './shared.js';
5
+ import * as e from '../../../errors.js';
6
+ import { is } from '../../../proxy.js';
7
+ import { queue_micro_task } from '../../task.js';
8
+ import { hydrating } from '../../hydration.js';
9
+ import { tick, untrack } from '../../../runtime.js';
10
+ import { is_runes } from '../../../context.js';
11
+ import { current_batch, previous_batch } from '../../../reactivity/batch.js';
12
+
13
+ /**
14
+ * @param {HTMLInputElement} input
15
+ * @param {() => unknown} get
16
+ * @param {(value: unknown) => void} set
17
+ * @returns {void}
18
+ */
19
+ export function bind_value(input, get, set = get) {
20
+ var batches = new WeakSet();
21
+
22
+ listen_to_event_and_reset_event(input, 'input', async (is_reset) => {
23
+ if (DEV && input.type === 'checkbox') {
24
+ // TODO should this happen in prod too?
25
+ e.bind_invalid_checkbox_value();
26
+ }
27
+
28
+ /** @type {any} */
29
+ var value = is_reset ? input.defaultValue : input.value;
30
+ value = is_numberlike_input(input) ? to_number(value) : value;
31
+ set(value);
32
+
33
+ if (current_batch !== null) {
34
+ batches.add(current_batch);
35
+ }
36
+
37
+ // Because `{#each ...}` blocks work by updating sources inside the flush,
38
+ // we need to wait a tick before checking to see if we should forcibly
39
+ // update the input and reset the selection state
40
+ await tick();
41
+
42
+ // Respect any validation in accessors
43
+ if (value !== (value = get())) {
44
+ var start = input.selectionStart;
45
+ var end = input.selectionEnd;
46
+ var length = input.value.length;
47
+
48
+ // the value is coerced on assignment
49
+ input.value = value ?? '';
50
+
51
+ // Restore selection
52
+ if (end !== null) {
53
+ var new_length = input.value.length;
54
+ // If cursor was at end and new input is longer, move cursor to new end
55
+ if (start === end && end === length && new_length > length) {
56
+ input.selectionStart = new_length;
57
+ input.selectionEnd = new_length;
58
+ } else {
59
+ input.selectionStart = start;
60
+ input.selectionEnd = Math.min(end, new_length);
61
+ }
62
+ }
63
+ }
64
+ });
65
+
66
+ if (
67
+ // If we are hydrating and the value has since changed,
68
+ // then use the updated value from the input instead.
69
+ (hydrating && input.defaultValue !== input.value) ||
70
+ // If defaultValue is set, then value == defaultValue
71
+ // TODO Svelte 6: remove input.value check and set to empty string?
72
+ (untrack(get) == null && input.value)
73
+ ) {
74
+ set(is_numberlike_input(input) ? to_number(input.value) : input.value);
75
+
76
+ if (current_batch !== null) {
77
+ batches.add(current_batch);
78
+ }
79
+ }
80
+
81
+ render_effect(() => {
82
+ if (DEV && input.type === 'checkbox') {
83
+ // TODO should this happen in prod too?
84
+ e.bind_invalid_checkbox_value();
85
+ }
86
+
87
+ var value = get();
88
+
89
+ if (input === document.activeElement) {
90
+ // we need both, because in non-async mode, render effects run before previous_batch is set
91
+ var batch = /** @type {Batch} */ (previous_batch ?? current_batch);
92
+
93
+ // Never rewrite the contents of a focused input. We can get here if, for example,
94
+ // an update is deferred because of async work depending on the input:
95
+ //
96
+ // <input bind:value={query}>
97
+ // <p>{await find(query)}</p>
98
+ if (batches.has(batch)) {
99
+ return;
100
+ }
101
+ }
102
+
103
+ if (is_numberlike_input(input) && value === to_number(input.value)) {
104
+ // handles 0 vs 00 case (see https://github.com/sveltejs/svelte/issues/9959)
105
+ return;
106
+ }
107
+
108
+ if (input.type === 'date' && !value && !input.value) {
109
+ // Handles the case where a temporarily invalid date is set (while typing, for example with a leading 0 for the day)
110
+ // and prevents this state from clearing the other parts of the date input (see https://github.com/sveltejs/svelte/issues/7897)
111
+ return;
112
+ }
113
+
114
+ // don't set the value of the input if it's the same to allow
115
+ // minlength to work properly
116
+ if (value !== input.value) {
117
+ // @ts-expect-error the value is coerced on assignment
118
+ input.value = value ?? '';
119
+ }
120
+ });
121
+ }
122
+
123
+ /** @type {Set<HTMLInputElement[]>} */
124
+ const pending = new Set();
125
+
126
+ /**
127
+ * @param {HTMLInputElement[]} inputs
128
+ * @param {null | [number]} group_index
129
+ * @param {HTMLInputElement} input
130
+ * @param {() => unknown} get
131
+ * @param {(value: unknown) => void} set
132
+ * @returns {void}
133
+ */
134
+ export function bind_group(inputs, group_index, input, get, set = get) {
135
+ var is_checkbox = input.getAttribute('type') === 'checkbox';
136
+ var binding_group = inputs;
137
+
138
+ // needs to be let or related code isn't treeshaken out if it's always false
139
+ let hydration_mismatch = false;
140
+
141
+ if (group_index !== null) {
142
+ for (var index of group_index) {
143
+ // @ts-expect-error
144
+ binding_group = binding_group[index] ??= [];
145
+ }
146
+ }
147
+
148
+ binding_group.push(input);
149
+
150
+ listen_to_event_and_reset_event(
151
+ input,
152
+ 'change',
153
+ () => {
154
+ // @ts-ignore
155
+ var value = input.__value;
156
+
157
+ if (is_checkbox) {
158
+ value = get_binding_group_value(binding_group, value, input.checked);
159
+ }
160
+
161
+ set(value);
162
+ },
163
+ // TODO better default value handling
164
+ () => set(is_checkbox ? [] : null)
165
+ );
166
+
167
+ render_effect(() => {
168
+ var value = get();
169
+
170
+ // If we are hydrating and the value has since changed, then use the update value
171
+ // from the input instead.
172
+ if (hydrating && input.defaultChecked !== input.checked) {
173
+ hydration_mismatch = true;
174
+ return;
175
+ }
176
+
177
+ if (is_checkbox) {
178
+ value = value || [];
179
+ // @ts-ignore
180
+ input.checked = value.includes(input.__value);
181
+ } else {
182
+ // @ts-ignore
183
+ input.checked = is(input.__value, value);
184
+ }
185
+ });
186
+
187
+ teardown(() => {
188
+ var index = binding_group.indexOf(input);
189
+
190
+ if (index !== -1) {
191
+ binding_group.splice(index, 1);
192
+ }
193
+ });
194
+
195
+ if (!pending.has(binding_group)) {
196
+ pending.add(binding_group);
197
+
198
+ queue_micro_task(() => {
199
+ // necessary to maintain binding group order in all insertion scenarios
200
+ binding_group.sort((a, b) => (a.compareDocumentPosition(b) === 4 ? -1 : 1));
201
+ pending.delete(binding_group);
202
+ });
203
+ }
204
+
205
+ queue_micro_task(() => {
206
+ if (hydration_mismatch) {
207
+ var value;
208
+
209
+ if (is_checkbox) {
210
+ value = get_binding_group_value(binding_group, value, input.checked);
211
+ } else {
212
+ var hydration_input = binding_group.find((input) => input.checked);
213
+ // @ts-ignore
214
+ value = hydration_input?.__value;
215
+ }
216
+
217
+ set(value);
218
+ }
219
+ });
220
+ }
221
+
222
+ /**
223
+ * @param {HTMLInputElement} input
224
+ * @param {() => unknown} get
225
+ * @param {(value: unknown) => void} set
226
+ * @returns {void}
227
+ */
228
+ export function bind_checked(input, get, set = get) {
229
+ listen_to_event_and_reset_event(input, 'change', (is_reset) => {
230
+ var value = is_reset ? input.defaultChecked : input.checked;
231
+ set(value);
232
+ });
233
+
234
+ if (
235
+ // If we are hydrating and the value has since changed,
236
+ // then use the update value from the input instead.
237
+ (hydrating && input.defaultChecked !== input.checked) ||
238
+ // If defaultChecked is set, then checked == defaultChecked
239
+ untrack(get) == null
240
+ ) {
241
+ set(input.checked);
242
+ }
243
+
244
+ render_effect(() => {
245
+ var value = get();
246
+ input.checked = Boolean(value);
247
+ });
248
+ }
249
+
250
+ /**
251
+ * @template V
252
+ * @param {Array<HTMLInputElement>} group
253
+ * @param {V} __value
254
+ * @param {boolean} checked
255
+ * @returns {V[]}
256
+ */
257
+ function get_binding_group_value(group, __value, checked) {
258
+ /** @type {Set<V>} */
259
+ var value = new Set();
260
+
261
+ for (var i = 0; i < group.length; i += 1) {
262
+ if (group[i].checked) {
263
+ // @ts-ignore
264
+ value.add(group[i].__value);
265
+ }
266
+ }
267
+
268
+ if (!checked) {
269
+ value.delete(__value);
270
+ }
271
+
272
+ return Array.from(value);
273
+ }
274
+
275
+ /**
276
+ * @param {HTMLInputElement} input
277
+ */
278
+ function is_numberlike_input(input) {
279
+ var type = input.type;
280
+ return type === 'number' || type === 'range';
281
+ }
282
+
283
+ /**
284
+ * @param {string} value
285
+ */
286
+ function to_number(value) {
287
+ return value === '' ? null : +value;
288
+ }
289
+
290
+ /**
291
+ * @param {HTMLInputElement} input
292
+ * @param {() => FileList | null} get
293
+ * @param {(value: FileList | null) => void} set
294
+ */
295
+ export function bind_files(input, get, set = get) {
296
+ listen_to_event_and_reset_event(input, 'change', () => {
297
+ set(input.files);
298
+ });
299
+
300
+ if (
301
+ // If we are hydrating and the value has since changed,
302
+ // then use the updated value from the input instead.
303
+ hydrating &&
304
+ input.files
305
+ ) {
306
+ set(input.files);
307
+ }
308
+
309
+ render_effect(() => {
310
+ input.files = get();
311
+ });
312
+ }
@@ -0,0 +1,233 @@
1
+ import { render_effect, effect, teardown } from '../../../reactivity/effects.js';
2
+ import { listen } from './shared.js';
3
+
4
+ /** @param {TimeRanges} ranges */
5
+ function time_ranges_to_array(ranges) {
6
+ var array = [];
7
+
8
+ for (var i = 0; i < ranges.length; i += 1) {
9
+ array.push({ start: ranges.start(i), end: ranges.end(i) });
10
+ }
11
+
12
+ return array;
13
+ }
14
+
15
+ /**
16
+ * @param {HTMLVideoElement | HTMLAudioElement} media
17
+ * @param {() => number | undefined} get
18
+ * @param {(value: number) => void} set
19
+ * @returns {void}
20
+ */
21
+ export function bind_current_time(media, get, set = get) {
22
+ /** @type {number} */
23
+ var raf_id;
24
+ /** @type {number} */
25
+ var value;
26
+
27
+ // Ideally, listening to timeupdate would be enough, but it fires too infrequently for the currentTime
28
+ // binding, which is why we use a raf loop, too. We additionally still listen to timeupdate because
29
+ // the user could be scrubbing through the video using the native controls when the media is paused.
30
+ var callback = () => {
31
+ cancelAnimationFrame(raf_id);
32
+
33
+ if (!media.paused) {
34
+ raf_id = requestAnimationFrame(callback);
35
+ }
36
+
37
+ var next_value = media.currentTime;
38
+ if (value !== next_value) {
39
+ set((value = next_value));
40
+ }
41
+ };
42
+
43
+ raf_id = requestAnimationFrame(callback);
44
+ media.addEventListener('timeupdate', callback);
45
+
46
+ render_effect(() => {
47
+ var next_value = Number(get());
48
+
49
+ if (value !== next_value && !isNaN(/** @type {any} */ (next_value))) {
50
+ media.currentTime = value = next_value;
51
+ }
52
+ });
53
+
54
+ teardown(() => {
55
+ cancelAnimationFrame(raf_id);
56
+ media.removeEventListener('timeupdate', callback);
57
+ });
58
+ }
59
+
60
+ /**
61
+ * @param {HTMLVideoElement | HTMLAudioElement} media
62
+ * @param {(array: Array<{ start: number; end: number }>) => void} set
63
+ */
64
+ export function bind_buffered(media, set) {
65
+ /** @type {{ start: number; end: number; }[]} */
66
+ var current;
67
+
68
+ // `buffered` can update without emitting any event, so we check it on various events.
69
+ // By specs, `buffered` always returns a new object, so we have to compare deeply.
70
+ listen(media, ['loadedmetadata', 'progress', 'timeupdate', 'seeking'], () => {
71
+ var ranges = media.buffered;
72
+
73
+ if (
74
+ !current ||
75
+ current.length !== ranges.length ||
76
+ current.some((range, i) => ranges.start(i) !== range.start || ranges.end(i) !== range.end)
77
+ ) {
78
+ current = time_ranges_to_array(ranges);
79
+ set(current);
80
+ }
81
+ });
82
+ }
83
+
84
+ /**
85
+ * @param {HTMLVideoElement | HTMLAudioElement} media
86
+ * @param {(array: Array<{ start: number; end: number }>) => void} set
87
+ */
88
+ export function bind_seekable(media, set) {
89
+ listen(media, ['loadedmetadata'], () => set(time_ranges_to_array(media.seekable)));
90
+ }
91
+
92
+ /**
93
+ * @param {HTMLVideoElement | HTMLAudioElement} media
94
+ * @param {(array: Array<{ start: number; end: number }>) => void} set
95
+ */
96
+ export function bind_played(media, set) {
97
+ listen(media, ['timeupdate'], () => set(time_ranges_to_array(media.played)));
98
+ }
99
+
100
+ /**
101
+ * @param {HTMLVideoElement | HTMLAudioElement} media
102
+ * @param {(seeking: boolean) => void} set
103
+ */
104
+ export function bind_seeking(media, set) {
105
+ listen(media, ['seeking', 'seeked'], () => set(media.seeking));
106
+ }
107
+
108
+ /**
109
+ * @param {HTMLVideoElement | HTMLAudioElement} media
110
+ * @param {(seeking: boolean) => void} set
111
+ */
112
+ export function bind_ended(media, set) {
113
+ listen(media, ['timeupdate', 'ended'], () => set(media.ended));
114
+ }
115
+
116
+ /**
117
+ * @param {HTMLVideoElement | HTMLAudioElement} media
118
+ * @param {(ready_state: number) => void} set
119
+ */
120
+ export function bind_ready_state(media, set) {
121
+ listen(
122
+ media,
123
+ ['loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough', 'playing', 'waiting', 'emptied'],
124
+ () => set(media.readyState)
125
+ );
126
+ }
127
+
128
+ /**
129
+ * @param {HTMLVideoElement | HTMLAudioElement} media
130
+ * @param {() => number | undefined} get
131
+ * @param {(playback_rate: number) => void} set
132
+ */
133
+ export function bind_playback_rate(media, get, set = get) {
134
+ // Needs to happen after element is inserted into the dom (which is guaranteed by using effect),
135
+ // else playback will be set back to 1 by the browser
136
+ effect(() => {
137
+ var value = Number(get());
138
+
139
+ if (value !== media.playbackRate && !isNaN(value)) {
140
+ media.playbackRate = value;
141
+ }
142
+ });
143
+
144
+ // Start listening to ratechange events after the element is inserted into the dom,
145
+ // else playback will be set to 1 by the browser
146
+ effect(() => {
147
+ listen(media, ['ratechange'], () => {
148
+ set(media.playbackRate);
149
+ });
150
+ });
151
+ }
152
+
153
+ /**
154
+ * @param {HTMLVideoElement | HTMLAudioElement} media
155
+ * @param {() => boolean | undefined} get
156
+ * @param {(paused: boolean) => void} set
157
+ */
158
+ export function bind_paused(media, get, set = get) {
159
+ var paused = get();
160
+
161
+ var update = () => {
162
+ if (paused !== media.paused) {
163
+ set((paused = media.paused));
164
+ }
165
+ };
166
+
167
+ // If someone switches the src while media is playing, the player will pause.
168
+ // Listen to the canplay event to get notified of this situation.
169
+ listen(media, ['play', 'pause', 'canplay'], update, paused == null);
170
+
171
+ // Needs to be an effect to ensure media element is mounted: else, if paused is `false` (i.e. should play right away)
172
+ // a "The play() request was interrupted by a new load request" error would be thrown because the resource isn't loaded yet.
173
+ effect(() => {
174
+ if ((paused = !!get()) !== media.paused) {
175
+ if (paused) {
176
+ media.pause();
177
+ } else {
178
+ media.play().catch((error) => {
179
+ set((paused = true));
180
+ throw error;
181
+ });
182
+ }
183
+ }
184
+ });
185
+ }
186
+
187
+ /**
188
+ * @param {HTMLVideoElement | HTMLAudioElement} media
189
+ * @param {() => number | undefined} get
190
+ * @param {(volume: number) => void} set
191
+ */
192
+ export function bind_volume(media, get, set = get) {
193
+ var callback = () => {
194
+ set(media.volume);
195
+ };
196
+
197
+ if (get() == null) {
198
+ callback();
199
+ }
200
+
201
+ listen(media, ['volumechange'], callback, false);
202
+
203
+ render_effect(() => {
204
+ var value = Number(get());
205
+
206
+ if (value !== media.volume && !isNaN(value)) {
207
+ media.volume = value;
208
+ }
209
+ });
210
+ }
211
+
212
+ /**
213
+ * @param {HTMLVideoElement | HTMLAudioElement} media
214
+ * @param {() => boolean | undefined} get
215
+ * @param {(muted: boolean) => void} set
216
+ */
217
+ export function bind_muted(media, get, set = get) {
218
+ var callback = () => {
219
+ set(media.muted);
220
+ };
221
+
222
+ if (get() == null) {
223
+ callback();
224
+ }
225
+
226
+ listen(media, ['volumechange'], callback, false);
227
+
228
+ render_effect(() => {
229
+ var value = !!get();
230
+
231
+ if (media.muted !== value) media.muted = value;
232
+ });
233
+ }
@@ -0,0 +1,11 @@
1
+ import { listen } from './shared.js';
2
+
3
+ /**
4
+ * @param {(online: boolean) => void} update
5
+ * @returns {void}
6
+ */
7
+ export function bind_online(update) {
8
+ listen(window, ['online', 'offline'], () => {
9
+ update(navigator.onLine);
10
+ });
11
+ }
@@ -0,0 +1,22 @@
1
+ import { teardown } from '../../../reactivity/effects.js';
2
+ import { get_descriptor } from '../../../../shared/utils.js';
3
+
4
+ /**
5
+ * Makes an `export`ed (non-prop) variable available on the `$$props` object
6
+ * so that consumers can do `bind:x` on the component.
7
+ * @template V
8
+ * @param {Record<string, unknown>} props
9
+ * @param {string} prop
10
+ * @param {V} value
11
+ * @returns {void}
12
+ */
13
+ export function bind_prop(props, prop, value) {
14
+ var desc = get_descriptor(props, prop);
15
+
16
+ if (desc && desc.set) {
17
+ props[prop] = value;
18
+ teardown(() => {
19
+ props[prop] = null;
20
+ });
21
+ }
22
+ }