@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,161 @@
1
+ import { BROWSER, DEV } from 'esm-env';
2
+ import { on } from '../../events/index.js';
3
+ import { ReactiveValue } from '../reactive-value.js';
4
+ import { get } from '../../internal/client/index.js';
5
+ import { set, source } from '../../internal/client/reactivity/sources.js';
6
+ import { tag } from '../../internal/client/dev/tracing.js';
7
+
8
+ /**
9
+ * `scrollX.current` is a reactive view of `window.scrollX`. On the server it is `undefined`.
10
+ * @since 5.11.0
11
+ */
12
+ export const scrollX = new ReactiveValue(
13
+ BROWSER ? () => window.scrollX : () => undefined,
14
+ (update) => on(window, 'scroll', update)
15
+ );
16
+
17
+ /**
18
+ * `scrollY.current` is a reactive view of `window.scrollY`. On the server it is `undefined`.
19
+ * @since 5.11.0
20
+ */
21
+ export const scrollY = new ReactiveValue(
22
+ BROWSER ? () => window.scrollY : () => undefined,
23
+ (update) => on(window, 'scroll', update)
24
+ );
25
+
26
+ /**
27
+ * `innerWidth.current` is a reactive view of `window.innerWidth`. On the server it is `undefined`.
28
+ * @since 5.11.0
29
+ */
30
+ export const innerWidth = new ReactiveValue(
31
+ BROWSER ? () => window.innerWidth : () => undefined,
32
+ (update) => on(window, 'resize', update)
33
+ );
34
+
35
+ /**
36
+ * `innerHeight.current` is a reactive view of `window.innerHeight`. On the server it is `undefined`.
37
+ * @since 5.11.0
38
+ */
39
+ export const innerHeight = new ReactiveValue(
40
+ BROWSER ? () => window.innerHeight : () => undefined,
41
+ (update) => on(window, 'resize', update)
42
+ );
43
+
44
+ /**
45
+ * `outerWidth.current` is a reactive view of `window.outerWidth`. On the server it is `undefined`.
46
+ * @since 5.11.0
47
+ */
48
+ export const outerWidth = new ReactiveValue(
49
+ BROWSER ? () => window.outerWidth : () => undefined,
50
+ (update) => on(window, 'resize', update)
51
+ );
52
+
53
+ /**
54
+ * `outerHeight.current` is a reactive view of `window.outerHeight`. On the server it is `undefined`.
55
+ * @since 5.11.0
56
+ */
57
+ export const outerHeight = new ReactiveValue(
58
+ BROWSER ? () => window.outerHeight : () => undefined,
59
+ (update) => on(window, 'resize', update)
60
+ );
61
+
62
+ /**
63
+ * `screenLeft.current` is a reactive view of `window.screenLeft`. It is updated inside a `requestAnimationFrame` callback. On the server it is `undefined`.
64
+ * @since 5.11.0
65
+ */
66
+ export const screenLeft = new ReactiveValue(
67
+ BROWSER ? () => window.screenLeft : () => undefined,
68
+ (update) => {
69
+ let value = window.screenLeft;
70
+
71
+ let frame = requestAnimationFrame(function check() {
72
+ frame = requestAnimationFrame(check);
73
+
74
+ if (value !== (value = window.screenLeft)) {
75
+ update();
76
+ }
77
+ });
78
+
79
+ return () => {
80
+ cancelAnimationFrame(frame);
81
+ };
82
+ }
83
+ );
84
+
85
+ /**
86
+ * `screenTop.current` is a reactive view of `window.screenTop`. It is updated inside a `requestAnimationFrame` callback. On the server it is `undefined`.
87
+ * @since 5.11.0
88
+ */
89
+ export const screenTop = new ReactiveValue(
90
+ BROWSER ? () => window.screenTop : () => undefined,
91
+ (update) => {
92
+ let value = window.screenTop;
93
+
94
+ let frame = requestAnimationFrame(function check() {
95
+ frame = requestAnimationFrame(check);
96
+
97
+ if (value !== (value = window.screenTop)) {
98
+ update();
99
+ }
100
+ });
101
+
102
+ return () => {
103
+ cancelAnimationFrame(frame);
104
+ };
105
+ }
106
+ );
107
+
108
+ /**
109
+ * `online.current` is a reactive view of `navigator.onLine`. On the server it is `undefined`.
110
+ * @since 5.11.0
111
+ */
112
+ export const online = new ReactiveValue(
113
+ BROWSER ? () => navigator.onLine : () => undefined,
114
+ (update) => {
115
+ const unsub_online = on(window, 'online', update);
116
+ const unsub_offline = on(window, 'offline', update);
117
+ return () => {
118
+ unsub_online();
119
+ unsub_offline();
120
+ };
121
+ }
122
+ );
123
+
124
+ /**
125
+ * `devicePixelRatio.current` is a reactive view of `window.devicePixelRatio`. On the server it is `undefined`.
126
+ * Note that behaviour differs between browsers — on Chrome it will respond to the current zoom level,
127
+ * on Firefox and Safari it won't.
128
+ * @type {{ get current(): number | undefined }}
129
+ * @since 5.11.0
130
+ */
131
+ export const devicePixelRatio = /* @__PURE__ */ new (class DevicePixelRatio {
132
+ #dpr = source(BROWSER ? window.devicePixelRatio : undefined);
133
+
134
+ #update() {
135
+ const off = on(
136
+ window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),
137
+ 'change',
138
+ () => {
139
+ set(this.#dpr, window.devicePixelRatio);
140
+
141
+ off();
142
+ this.#update();
143
+ }
144
+ );
145
+ }
146
+
147
+ constructor() {
148
+ if (BROWSER) {
149
+ this.#update();
150
+ }
151
+
152
+ if (DEV) {
153
+ tag(this.#dpr, 'window.devicePixelRatio');
154
+ }
155
+ }
156
+
157
+ get current() {
158
+ get(this.#dpr);
159
+ return BROWSER ? window.devicePixelRatio : undefined;
160
+ }
161
+ })();
@@ -0,0 +1 @@
1
+ export { render } from '../internal/server/index.js';
@@ -0,0 +1,169 @@
1
+ /** @import { Readable, Writable } from './public.js' */
2
+ import {
3
+ effect_root,
4
+ effect_tracking,
5
+ render_effect
6
+ } from '../internal/client/reactivity/effects.js';
7
+ import { get, writable } from './shared/index.js';
8
+ import { createSubscriber } from '../reactivity/create-subscriber.js';
9
+ import {
10
+ active_effect,
11
+ active_reaction,
12
+ set_active_effect,
13
+ set_active_reaction
14
+ } from '../internal/client/runtime.js';
15
+
16
+ export { derived, get, readable, readonly, writable } from './shared/index.js';
17
+
18
+ /**
19
+ * @template V
20
+ * @overload
21
+ * @param {() => V} get
22
+ * @param {(v: V) => void} set
23
+ * @returns {Writable<V>}
24
+ */
25
+ /**
26
+ * @template V
27
+ * @overload
28
+ * @param {() => V} get
29
+ * @returns {Readable<V>}
30
+ */
31
+ /**
32
+ * Create a store from a function that returns state, and (to make a writable store), an
33
+ * optional second function that sets state.
34
+ *
35
+ * ```ts
36
+ * import { toStore } from 'svelte/store';
37
+ *
38
+ * let count = $state(0);
39
+ *
40
+ * const store = toStore(() => count, (v) => (count = v));
41
+ * ```
42
+ * @template V
43
+ * @param {() => V} get
44
+ * @param {(v: V) => void} [set]
45
+ * @returns {Writable<V> | Readable<V>}
46
+ */
47
+ export function toStore(get, set) {
48
+ var effect = active_effect;
49
+ var reaction = active_reaction;
50
+ var init_value = get();
51
+
52
+ const store = writable(init_value, (set) => {
53
+ // If the value has changed before we call subscribe, then
54
+ // we need to treat the value as already having run
55
+ var ran = init_value !== get();
56
+
57
+ // TODO do we need a different implementation on the server?
58
+ var teardown;
59
+ // Apply the reaction and effect at the time of toStore being called
60
+ var previous_reaction = active_reaction;
61
+ var previous_effect = active_effect;
62
+ set_active_reaction(reaction);
63
+ set_active_effect(effect);
64
+
65
+ try {
66
+ teardown = effect_root(() => {
67
+ render_effect(() => {
68
+ const value = get();
69
+ if (ran) set(value);
70
+ });
71
+ });
72
+ } finally {
73
+ set_active_reaction(previous_reaction);
74
+ set_active_effect(previous_effect);
75
+ }
76
+
77
+ ran = true;
78
+
79
+ return teardown;
80
+ });
81
+
82
+ if (set) {
83
+ return {
84
+ set,
85
+ update: (fn) => set(fn(get())),
86
+ subscribe: store.subscribe
87
+ };
88
+ }
89
+
90
+ return {
91
+ subscribe: store.subscribe
92
+ };
93
+ }
94
+
95
+ /**
96
+ * @template V
97
+ * @overload
98
+ * @param {Writable<V>} store
99
+ * @returns {{ current: V }}
100
+ */
101
+ /**
102
+ * @template V
103
+ * @overload
104
+ * @param {Readable<V>} store
105
+ * @returns {{ readonly current: V }}
106
+ */
107
+ /**
108
+ * Convert a store to an object with a reactive `current` property. If `store`
109
+ * is a readable store, `current` will be a readonly property.
110
+ *
111
+ * ```ts
112
+ * import { fromStore, get, writable } from 'svelte/store';
113
+ *
114
+ * const store = writable(0);
115
+ *
116
+ * const count = fromStore(store);
117
+ *
118
+ * count.current; // 0;
119
+ * store.set(1);
120
+ * count.current; // 1
121
+ *
122
+ * count.current += 1;
123
+ * get(store); // 2
124
+ * ```
125
+ * @template V
126
+ * @param {Writable<V> | Readable<V>} store
127
+ */
128
+ export function fromStore(store) {
129
+ let value = /** @type {V} */ (undefined);
130
+
131
+ const subscribe = createSubscriber((update) => {
132
+ let ran = false;
133
+
134
+ const unsubscribe = store.subscribe((v) => {
135
+ value = v;
136
+ if (ran) update();
137
+ });
138
+
139
+ ran = true;
140
+
141
+ return unsubscribe;
142
+ });
143
+
144
+ function current() {
145
+ if (effect_tracking()) {
146
+ subscribe();
147
+ return value;
148
+ }
149
+
150
+ return get(store);
151
+ }
152
+
153
+ if ('set' in store) {
154
+ return {
155
+ get current() {
156
+ return current();
157
+ },
158
+ set current(v) {
159
+ store.set(v);
160
+ }
161
+ };
162
+ }
163
+
164
+ return {
165
+ get current() {
166
+ return current();
167
+ }
168
+ };
169
+ }
@@ -0,0 +1,101 @@
1
+ /** @import { Readable, Writable } from './public.js' */
2
+ import { get, writable } from './shared/index.js';
3
+
4
+ export { derived, get, readable, readonly, writable } from './shared/index.js';
5
+
6
+ /**
7
+ * @template V
8
+ * @overload
9
+ * @param {() => V} get
10
+ * @param {(v: V) => void} set
11
+ * @returns {Writable<V>}
12
+ */
13
+ /**
14
+ * @template V
15
+ * @overload
16
+ * @param {() => V} get
17
+ * @returns {Readable<V>}
18
+ */
19
+ /**
20
+ * Create a store from a function that returns state, and (to make a writable store), an
21
+ * optional second function that sets state.
22
+ *
23
+ * ```ts
24
+ * import { toStore } from 'svelte/store';
25
+ *
26
+ * let count = $state(0);
27
+ *
28
+ * const store = toStore(() => count, (v) => (count = v));
29
+ * ```
30
+ * @template V
31
+ * @param {() => V} get
32
+ * @param {(v: V) => void} [set]
33
+ * @returns {Writable<V> | Readable<V>}
34
+ */
35
+ export function toStore(get, set) {
36
+ const store = writable(get());
37
+
38
+ if (set) {
39
+ return {
40
+ set,
41
+ update: (fn) => set(fn(get())),
42
+ subscribe: store.subscribe
43
+ };
44
+ }
45
+
46
+ return {
47
+ subscribe: store.subscribe
48
+ };
49
+ }
50
+
51
+ /**
52
+ * @template V
53
+ * @overload
54
+ * @param {Writable<V>} store
55
+ * @returns {{ current: V }}
56
+ */
57
+ /**
58
+ * @template V
59
+ * @overload
60
+ * @param {Readable<V>} store
61
+ * @returns {{ readonly current: V }}
62
+ */
63
+ /**
64
+ * Convert a store to an object with a reactive `current` property. If `store`
65
+ * is a readable store, `current` will be a readonly property.
66
+ *
67
+ * ```ts
68
+ * import { fromStore, get, writable } from 'svelte/store';
69
+ *
70
+ * const store = writable(0);
71
+ *
72
+ * const count = fromStore(store);
73
+ *
74
+ * count.current; // 0;
75
+ * store.set(1);
76
+ * count.current; // 1
77
+ *
78
+ * count.current += 1;
79
+ * get(store); // 2
80
+ * ```
81
+ * @template V
82
+ * @param {Writable<V> | Readable<V>} store
83
+ */
84
+ export function fromStore(store) {
85
+ if ('set' in store) {
86
+ return {
87
+ get current() {
88
+ return get(store);
89
+ },
90
+ set current(v) {
91
+ store.set(v);
92
+ }
93
+ };
94
+ }
95
+
96
+ return {
97
+ get current() {
98
+ return get(store);
99
+ }
100
+ };
101
+ }
@@ -0,0 +1,209 @@
1
+ /** @import { Readable, StartStopNotifier, Subscriber, Unsubscriber, Updater, Writable } from '../public.js' */
2
+ /** @import { Stores, StoresValues, SubscribeInvalidateTuple } from '../private.js' */
3
+ import { noop, run_all } from '../../internal/shared/utils.js';
4
+ import { safe_not_equal } from '../../internal/client/reactivity/equality.js';
5
+ import { subscribe_to_store } from '../utils.js';
6
+
7
+ /**
8
+ * @type {Array<SubscribeInvalidateTuple<any> | any>}
9
+ */
10
+ const subscriber_queue = [];
11
+
12
+ /**
13
+ * Creates a `Readable` store that allows reading by subscription.
14
+ *
15
+ * @template T
16
+ * @param {T} [value] initial value
17
+ * @param {StartStopNotifier<T>} [start]
18
+ * @returns {Readable<T>}
19
+ */
20
+ export function readable(value, start) {
21
+ return {
22
+ subscribe: writable(value, start).subscribe
23
+ };
24
+ }
25
+
26
+ /**
27
+ * Create a `Writable` store that allows both updating and reading by subscription.
28
+ *
29
+ * @template T
30
+ * @param {T} [value] initial value
31
+ * @param {StartStopNotifier<T>} [start]
32
+ * @returns {Writable<T>}
33
+ */
34
+ export function writable(value, start = noop) {
35
+ /** @type {Unsubscriber | null} */
36
+ let stop = null;
37
+
38
+ /** @type {Set<SubscribeInvalidateTuple<T>>} */
39
+ const subscribers = new Set();
40
+
41
+ /**
42
+ * @param {T} new_value
43
+ * @returns {void}
44
+ */
45
+ function set(new_value) {
46
+ if (safe_not_equal(value, new_value)) {
47
+ value = new_value;
48
+ if (stop) {
49
+ // store is ready
50
+ const run_queue = !subscriber_queue.length;
51
+ for (const subscriber of subscribers) {
52
+ subscriber[1]();
53
+ subscriber_queue.push(subscriber, value);
54
+ }
55
+ if (run_queue) {
56
+ for (let i = 0; i < subscriber_queue.length; i += 2) {
57
+ subscriber_queue[i][0](subscriber_queue[i + 1]);
58
+ }
59
+ subscriber_queue.length = 0;
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ /**
66
+ * @param {Updater<T>} fn
67
+ * @returns {void}
68
+ */
69
+ function update(fn) {
70
+ set(fn(/** @type {T} */ (value)));
71
+ }
72
+
73
+ /**
74
+ * @param {Subscriber<T>} run
75
+ * @param {() => void} [invalidate]
76
+ * @returns {Unsubscriber}
77
+ */
78
+ function subscribe(run, invalidate = noop) {
79
+ /** @type {SubscribeInvalidateTuple<T>} */
80
+ const subscriber = [run, invalidate];
81
+ subscribers.add(subscriber);
82
+ if (subscribers.size === 1) {
83
+ stop = start(set, update) || noop;
84
+ }
85
+ run(/** @type {T} */ (value));
86
+ return () => {
87
+ subscribers.delete(subscriber);
88
+ if (subscribers.size === 0 && stop) {
89
+ stop();
90
+ stop = null;
91
+ }
92
+ };
93
+ }
94
+ return { set, update, subscribe };
95
+ }
96
+
97
+ /**
98
+ * Derived value store by synchronizing one or more readable stores and
99
+ * applying an aggregation function over its input values.
100
+ *
101
+ * @template {Stores} S
102
+ * @template T
103
+ * @overload
104
+ * @param {S} stores
105
+ * @param {(values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void} fn
106
+ * @param {T} [initial_value]
107
+ * @returns {Readable<T>}
108
+ */
109
+ /**
110
+ * Derived value store by synchronizing one or more readable stores and
111
+ * applying an aggregation function over its input values.
112
+ *
113
+ * @template {Stores} S
114
+ * @template T
115
+ * @overload
116
+ * @param {S} stores
117
+ * @param {(values: StoresValues<S>) => T} fn
118
+ * @param {T} [initial_value]
119
+ * @returns {Readable<T>}
120
+ */
121
+ /**
122
+ * @template {Stores} S
123
+ * @template T
124
+ * @param {S} stores
125
+ * @param {Function} fn
126
+ * @param {T} [initial_value]
127
+ * @returns {Readable<T>}
128
+ */
129
+ export function derived(stores, fn, initial_value) {
130
+ const single = !Array.isArray(stores);
131
+ /** @type {Array<Readable<any>>} */
132
+ const stores_array = single ? [stores] : stores;
133
+ if (!stores_array.every(Boolean)) {
134
+ throw new Error('derived() expects stores as input, got a falsy value');
135
+ }
136
+ const auto = fn.length < 2;
137
+ return readable(initial_value, (set, update) => {
138
+ let started = false;
139
+ /** @type {T[]} */
140
+ const values = [];
141
+ let pending = 0;
142
+ let cleanup = noop;
143
+ const sync = () => {
144
+ if (pending) {
145
+ return;
146
+ }
147
+ cleanup();
148
+ const result = fn(single ? values[0] : values, set, update);
149
+ if (auto) {
150
+ set(result);
151
+ } else {
152
+ cleanup = typeof result === 'function' ? result : noop;
153
+ }
154
+ };
155
+ const unsubscribers = stores_array.map((store, i) =>
156
+ subscribe_to_store(
157
+ store,
158
+ (value) => {
159
+ values[i] = value;
160
+ pending &= ~(1 << i);
161
+ if (started) {
162
+ sync();
163
+ }
164
+ },
165
+ () => {
166
+ pending |= 1 << i;
167
+ }
168
+ )
169
+ );
170
+ started = true;
171
+ sync();
172
+ return function stop() {
173
+ run_all(unsubscribers);
174
+ cleanup();
175
+ // We need to set this to false because callbacks can still happen despite having unsubscribed:
176
+ // Callbacks might already be placed in the queue which doesn't know it should no longer
177
+ // invoke this derived store.
178
+ started = false;
179
+ };
180
+ });
181
+ }
182
+
183
+ /**
184
+ * Takes a store and returns a new one derived from the old one that is readable.
185
+ *
186
+ * @template T
187
+ * @param {Readable<T>} store - store to make readonly
188
+ * @returns {Readable<T>}
189
+ */
190
+ export function readonly(store) {
191
+ return {
192
+ // @ts-expect-error TODO i suspect the bind is unnecessary
193
+ subscribe: store.subscribe.bind(store)
194
+ };
195
+ }
196
+
197
+ /**
198
+ * Get the current value from a store by subscribing and immediately unsubscribing.
199
+ *
200
+ * @template T
201
+ * @param {Readable<T>} store
202
+ * @returns {T}
203
+ */
204
+ export function get(store) {
205
+ let value;
206
+ subscribe_to_store(store, (_) => (value = _))();
207
+ // @ts-expect-error
208
+ return value;
209
+ }
@@ -0,0 +1,36 @@
1
+ /** @import { Readable } from './public' */
2
+ import { untrack } from '../index-client.js';
3
+ import { noop } from '../internal/shared/utils.js';
4
+
5
+ /**
6
+ * @template T
7
+ * @param {Readable<T> | null | undefined} store
8
+ * @param {(value: T) => void} run
9
+ * @param {(value: T) => void} [invalidate]
10
+ * @returns {() => void}
11
+ */
12
+ export function subscribe_to_store(store, run, invalidate) {
13
+ if (store == null) {
14
+ // @ts-expect-error
15
+ run(undefined);
16
+
17
+ // @ts-expect-error
18
+ if (invalidate) invalidate(undefined);
19
+
20
+ return noop;
21
+ }
22
+
23
+ // Svelte store takes a private second argument
24
+ // StartStopNotifier could mutate state, and we want to silence the corresponding validation error
25
+ const unsub = untrack(() =>
26
+ store.subscribe(
27
+ run,
28
+ // @ts-expect-error
29
+ invalidate
30
+ )
31
+ );
32
+
33
+ // Also support RxJS
34
+ // @ts-expect-error TODO fix this in the types?
35
+ return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
36
+ }