@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,96 @@
1
+ /** @import { Processed } from './public.js' */
2
+ import { decode as decode_mappings } from '@jridgewell/sourcemap-codec';
3
+
4
+ /**
5
+ * Import decoded sourcemap from mozilla/source-map/SourceMapGenerator
6
+ * Forked from source-map/lib/source-map-generator.js
7
+ * from methods _serializeMappings and toJSON.
8
+ * We cannot use source-map.d.ts types, because we access hidden properties.
9
+ * @param {any} generator
10
+ */
11
+ function decoded_sourcemap_from_generator(generator) {
12
+ let previous_generated_line = 1;
13
+ /** @type {number[][][]} */
14
+ const converted_mappings = [[]];
15
+ let result_line = converted_mappings[0];
16
+ let result_segment;
17
+ let mapping;
18
+ const source_idx = generator._sources
19
+ .toArray()
20
+ // @ts-ignore
21
+ .reduce((acc, val, idx) => ((acc[val] = idx), acc), {});
22
+ const name_idx = generator._names
23
+ .toArray()
24
+ // @ts-ignore
25
+ .reduce((acc, val, idx) => ((acc[val] = idx), acc), {});
26
+ const mappings = generator._mappings.toArray();
27
+ for (let i = 0, len = mappings.length; i < len; i++) {
28
+ mapping = mappings[i];
29
+ if (mapping.generatedLine > previous_generated_line) {
30
+ while (mapping.generatedLine > previous_generated_line) {
31
+ converted_mappings.push([]);
32
+ previous_generated_line++;
33
+ }
34
+ result_line = converted_mappings[mapping.generatedLine - 1]; // line is one-based
35
+ } else if (i > 0) {
36
+ const previous_mapping = mappings[i - 1];
37
+ if (
38
+ // sorted by selectivity
39
+ mapping.generatedColumn === previous_mapping.generatedColumn &&
40
+ mapping.originalColumn === previous_mapping.originalColumn &&
41
+ mapping.name === previous_mapping.name &&
42
+ mapping.generatedLine === previous_mapping.generatedLine &&
43
+ mapping.originalLine === previous_mapping.originalLine &&
44
+ mapping.source === previous_mapping.source
45
+ ) {
46
+ continue;
47
+ }
48
+ }
49
+ result_line.push([mapping.generatedColumn]);
50
+ result_segment = result_line[result_line.length - 1];
51
+ if (mapping.source != null) {
52
+ result_segment.push(
53
+ ...[source_idx[mapping.source], mapping.originalLine - 1, mapping.originalColumn]
54
+ );
55
+ if (mapping.name != null) {
56
+ result_segment.push(name_idx[mapping.name]);
57
+ }
58
+ }
59
+ }
60
+
61
+ /**
62
+ * @type {{
63
+ * version: number;
64
+ * sources: string[];
65
+ * names: string[];
66
+ * mappings: number[][][];
67
+ * file?: string;
68
+ * }}
69
+ */
70
+ const map = {
71
+ version: generator._version,
72
+ sources: generator._sources.toArray(),
73
+ names: generator._names.toArray(),
74
+ mappings: converted_mappings
75
+ };
76
+ if (generator._file != null) {
77
+ map.file = generator._file;
78
+ }
79
+ // not needed: map.sourcesContent and map.sourceRoot
80
+ return map;
81
+ }
82
+
83
+ /**
84
+ * @param {Processed} processed
85
+ */
86
+ export function decode_map(processed) {
87
+ let decoded_map = typeof processed.map === 'string' ? JSON.parse(processed.map) : processed.map;
88
+ if (typeof decoded_map.mappings === 'string') {
89
+ decoded_map.mappings = decode_mappings(decoded_map.mappings);
90
+ }
91
+ if (decoded_map._mappings && decoded_map.constructor.name === 'SourceMapGenerator') {
92
+ // import decoded sourcemap from mozilla/source-map/SourceMapGenerator
93
+ decoded_map = decoded_sourcemap_from_generator(decoded_map);
94
+ }
95
+ return decoded_map;
96
+ }
@@ -0,0 +1,368 @@
1
+ /** @import { Processed, Preprocessor, MarkupPreprocessor, PreprocessorGroup } from './public.js' */
2
+ /** @import { SourceUpdate, Source } from './private.js' */
3
+ /** @import { DecodedSourceMap, RawSourceMap } from '@jridgewell/remapping' */
4
+ import { getLocator } from 'locate-character';
5
+ import {
6
+ MappedCode,
7
+ parse_attached_sourcemap,
8
+ sourcemap_add_offset,
9
+ combine_sourcemaps,
10
+ get_basename
11
+ } from '../utils/mapped_code.js';
12
+ import { decode_map } from './decode_sourcemap.js';
13
+ import { replace_in_code, slice_source } from './replace_in_code.js';
14
+
15
+ /**
16
+ * Represents intermediate states of the preprocessing.
17
+ * Implements the Source interface.
18
+ */
19
+ class PreprocessResult {
20
+ /** @type {string} */
21
+ source;
22
+
23
+ /** @type {string | undefined} The filename passed as-is to preprocess */
24
+ filename;
25
+
26
+ // sourcemap_list is sorted in reverse order from last map (index 0) to first map (index -1)
27
+ // so we use sourcemap_list.unshift() to add new maps
28
+ // https://github.com/jridgewell/sourcemaps/tree/main/packages/remapping#multiple-transformations-of-a-file
29
+
30
+ /**
31
+ * @default []
32
+ * @type {Array<DecodedSourceMap | RawSourceMap>}
33
+ */
34
+ sourcemap_list = [];
35
+
36
+ /**
37
+ * @default []
38
+ * @type {string[]}
39
+ */
40
+ dependencies = [];
41
+
42
+ /**
43
+ * @type {string | null} last part of the filename, as used for `sources` in sourcemaps
44
+ */
45
+ file_basename = /** @type {any} */ (undefined);
46
+
47
+ /**
48
+ * @type {ReturnType<typeof getLocator>}
49
+ */
50
+ get_location = /** @type {any} */ (undefined);
51
+
52
+ /**
53
+ * @param {string} source
54
+ * @param {string} [filename]
55
+ */
56
+ constructor(source, filename) {
57
+ this.source = source;
58
+ this.filename = filename;
59
+ this.update_source({ string: source });
60
+ // preprocess source must be relative to itself or equal null
61
+ this.file_basename = filename == null ? null : get_basename(filename);
62
+ }
63
+
64
+ /**
65
+ * @param {SourceUpdate} opts
66
+ */
67
+ update_source({ string: source, map, dependencies }) {
68
+ if (source != null) {
69
+ this.source = source;
70
+ this.get_location = getLocator(source);
71
+ }
72
+ if (map) {
73
+ this.sourcemap_list.unshift(map);
74
+ }
75
+ if (dependencies) {
76
+ this.dependencies.push(...dependencies);
77
+ }
78
+ }
79
+
80
+ /**
81
+ * @returns {Processed}
82
+ */
83
+ to_processed() {
84
+ // Combine all the source maps for each preprocessor function into one
85
+ // @ts-expect-error TODO there might be a bug in hiding here
86
+ const map = combine_sourcemaps(this.file_basename, this.sourcemap_list);
87
+ return {
88
+ // TODO return separated output, in future version where svelte.compile supports it:
89
+ // style: { code: styleCode, map: styleMap },
90
+ // script { code: scriptCode, map: scriptMap },
91
+ // markup { code: markupCode, map: markupMap },
92
+ code: this.source,
93
+ dependencies: [...new Set(this.dependencies)],
94
+ // @ts-expect-error TODO there might be a bug in hiding here
95
+ map,
96
+ toString: () => this.source
97
+ };
98
+ }
99
+ }
100
+ /**
101
+ * Convert preprocessor output for the tag content into MappedCode
102
+ * @param {Processed} processed
103
+ * @param {{ line: number; column: number; }} location
104
+ * @param {string} file_basename
105
+ * @returns {MappedCode}
106
+ */
107
+ function processed_content_to_code(processed, location, file_basename) {
108
+ // Convert the preprocessed code and its sourcemap to a MappedCode
109
+
110
+ /**
111
+ * @type {DecodedSourceMap | undefined}
112
+ */
113
+ let decoded_map = undefined;
114
+ if (processed.map) {
115
+ decoded_map = decode_map(processed);
116
+ // decoded map may not have sources for empty maps like `{ mappings: '' }`
117
+ if (decoded_map?.sources) {
118
+ // offset only segments pointing at original component source
119
+ const source_index = decoded_map.sources.indexOf(file_basename);
120
+ if (source_index !== -1) {
121
+ sourcemap_add_offset(decoded_map, location, source_index);
122
+ }
123
+ }
124
+ }
125
+ return MappedCode.from_processed(processed.code, decoded_map);
126
+ }
127
+ /**
128
+ * Given the whole tag including content, return a `MappedCode`
129
+ * representing the tag content replaced with `processed`.
130
+ * @param {Processed} processed
131
+ * @param {'style' | 'script'} tag_name
132
+ * @param {string} original_attributes
133
+ * @param {string} generated_attributes
134
+ * @param {Source} source
135
+ * @returns {MappedCode}
136
+ */
137
+ function processed_tag_to_code(
138
+ processed,
139
+ tag_name,
140
+ original_attributes,
141
+ generated_attributes,
142
+ source
143
+ ) {
144
+ const { file_basename, get_location } = source;
145
+
146
+ /**
147
+ * @param {string} code
148
+ * @param {number} offset
149
+ */
150
+ const build_mapped_code = (code, offset) =>
151
+ MappedCode.from_source(slice_source(code, offset, source));
152
+
153
+ // To map the open/close tag and content starts positions correctly, we need to
154
+ // differentiate between the original attributes and the generated attributes:
155
+ // `source` contains the original attributes and its get_location maps accordingly.
156
+ const original_tag_open = `<${tag_name}${original_attributes}>`;
157
+ const tag_open = `<${tag_name}${generated_attributes}>`;
158
+ /** @type {MappedCode} */
159
+ let tag_open_code;
160
+
161
+ if (original_tag_open.length !== tag_open.length) {
162
+ // Generate a source map for the open tag
163
+ /** @type {DecodedSourceMap['mappings']} */
164
+ const mappings = [
165
+ [
166
+ // start of tag
167
+ [0, 0, 0, 0],
168
+ // end of tag start
169
+ [`<${tag_name}`.length, 0, 0, `<${tag_name}`.length]
170
+ ]
171
+ ];
172
+
173
+ const line = tag_open.split('\n').length - 1;
174
+ const column = tag_open.length - (line === 0 ? 0 : tag_open.lastIndexOf('\n')) - 1;
175
+
176
+ while (mappings.length <= line) {
177
+ // end of tag start again, if this is a multi line mapping
178
+ mappings.push([[0, 0, 0, `<${tag_name}`.length]]);
179
+ }
180
+
181
+ // end of tag
182
+ mappings[line].push([
183
+ column,
184
+ 0,
185
+ original_tag_open.split('\n').length - 1,
186
+ original_tag_open.length - original_tag_open.lastIndexOf('\n') - 1
187
+ ]);
188
+
189
+ /** @type {DecodedSourceMap} */
190
+ const map = {
191
+ version: 3,
192
+ names: [],
193
+ sources: [file_basename],
194
+ mappings
195
+ };
196
+ sourcemap_add_offset(map, get_location(0), 0);
197
+ tag_open_code = MappedCode.from_processed(tag_open, map);
198
+ } else {
199
+ tag_open_code = build_mapped_code(tag_open, 0);
200
+ }
201
+
202
+ const tag_close = `</${tag_name}>`;
203
+ const tag_close_code = build_mapped_code(
204
+ tag_close,
205
+ original_tag_open.length + source.source.length
206
+ );
207
+
208
+ parse_attached_sourcemap(processed, tag_name);
209
+ const content_code = processed_content_to_code(
210
+ processed,
211
+ get_location(original_tag_open.length),
212
+ file_basename
213
+ );
214
+
215
+ return tag_open_code.concat(content_code).concat(tag_close_code);
216
+ }
217
+
218
+ const attribute_pattern = /([\w-$]+\b)(?:=(?:"([^"]*)"|'([^']*)'|(\S+)))?/g;
219
+
220
+ /**
221
+ * @param {string} str
222
+ */
223
+ function parse_tag_attributes(str) {
224
+ /** @type {Record<string, string | boolean>} */
225
+ const attrs = {};
226
+
227
+ /** @type {RegExpMatchArray | null} */
228
+ let match;
229
+ while ((match = attribute_pattern.exec(str)) !== null) {
230
+ const name = match[1];
231
+ const value = match[2] || match[3] || match[4];
232
+ attrs[name] = !value || value;
233
+ }
234
+
235
+ return attrs;
236
+ }
237
+
238
+ /**
239
+ * @param {Record<string, string | boolean> | undefined} attributes
240
+ */
241
+ function stringify_tag_attributes(attributes) {
242
+ if (!attributes) return;
243
+
244
+ let value = Object.entries(attributes)
245
+ .map(([key, value]) => (value === true ? key : `${key}="${value}"`))
246
+ .join(' ');
247
+ if (value) {
248
+ value = ' ' + value;
249
+ }
250
+ return value;
251
+ }
252
+
253
+ const regex_style_tags =
254
+ /<!--[^]*?-->|<style((?:\s+[^=>'"/\s]+=(?:"[^"]*"|'[^']*'|[^>\s]+)|\s+[^=>'"/\s]+)*\s*)(?:\/>|>([\S\s]*?)<\/style>)/g;
255
+ const regex_script_tags =
256
+ /<!--[^]*?-->|<script((?:\s+[^=>'"/\s]+=(?:"[^"]*"|'[^']*'|[^>\s]+)|\s+[^=>'"/\s]+)*\s*)(?:\/>|>([\S\s]*?)<\/script>)/g;
257
+
258
+ /**
259
+ * Calculate the updates required to process all instances of the specified tag.
260
+ * @param {'style' | 'script'} tag_name
261
+ * @param {Preprocessor} preprocessor
262
+ * @param {Source} source
263
+ * @returns {Promise<SourceUpdate>}
264
+ */
265
+ async function process_tag(tag_name, preprocessor, source) {
266
+ const { filename, source: markup } = source;
267
+ const tag_regex = tag_name === 'style' ? regex_style_tags : regex_script_tags;
268
+
269
+ /**
270
+ * @type {string[]}
271
+ */
272
+ const dependencies = [];
273
+
274
+ /**
275
+ * @param {string} tag_with_content
276
+ * @param {number} tag_offset
277
+ * @returns {Promise<MappedCode>}
278
+ */
279
+ async function process_single_tag(tag_with_content, attributes = '', content = '', tag_offset) {
280
+ const no_change = () =>
281
+ MappedCode.from_source(slice_source(tag_with_content, tag_offset, source));
282
+ if (!attributes && !content) return no_change();
283
+ const processed = await preprocessor({
284
+ content: content || '',
285
+ attributes: parse_tag_attributes(attributes || ''),
286
+ markup,
287
+ filename
288
+ });
289
+ if (!processed) return no_change();
290
+ if (processed.dependencies) dependencies.push(...processed.dependencies);
291
+ if (!processed.map && processed.code === content) return no_change();
292
+ return processed_tag_to_code(
293
+ processed,
294
+ tag_name,
295
+ attributes,
296
+ stringify_tag_attributes(processed.attributes) ?? attributes,
297
+ slice_source(content, tag_offset, source)
298
+ );
299
+ }
300
+ const { string, map } = await replace_in_code(tag_regex, process_single_tag, source);
301
+ return { string, map, dependencies };
302
+ }
303
+
304
+ /**
305
+ * @param {MarkupPreprocessor} process
306
+ * @param {Source} source
307
+ */
308
+ async function process_markup(process, source) {
309
+ const processed = await process({
310
+ content: source.source,
311
+ filename: source.filename
312
+ });
313
+ if (processed) {
314
+ return {
315
+ string: processed.code,
316
+ map: processed.map
317
+ ? // TODO: can we use decode_sourcemap?
318
+ typeof processed.map === 'string'
319
+ ? JSON.parse(processed.map)
320
+ : processed.map
321
+ : undefined,
322
+ dependencies: processed.dependencies
323
+ };
324
+ } else {
325
+ return {};
326
+ }
327
+ }
328
+
329
+ /**
330
+ * The preprocess function provides convenient hooks for arbitrarily transforming component source code.
331
+ * For example, it can be used to convert a `<style lang="sass">` block into vanilla CSS.
332
+ *
333
+ * @param {string} source
334
+ * @param {PreprocessorGroup | PreprocessorGroup[]} preprocessor
335
+ * @param {{ filename?: string }} [options]
336
+ * @returns {Promise<Processed>}
337
+ */
338
+ export default async function preprocess(source, preprocessor, options) {
339
+ /**
340
+ * @type {string | undefined}
341
+ */
342
+ const filename = (options && options.filename) || /** @type {any} */ (preprocessor).filename; // legacy
343
+ const preprocessors = preprocessor
344
+ ? Array.isArray(preprocessor)
345
+ ? preprocessor
346
+ : [preprocessor]
347
+ : [];
348
+ const result = new PreprocessResult(source, filename);
349
+
350
+ // TODO keep track: what preprocessor generated what sourcemap?
351
+ // to make debugging easier = detect low-resolution sourcemaps in fn combine_mappings
352
+ for (const preprocessor of preprocessors) {
353
+ if (preprocessor.markup) {
354
+ // @ts-expect-error TODO there might be a bug in hiding here
355
+ result.update_source(await process_markup(preprocessor.markup, result));
356
+ }
357
+ if (preprocessor.script) {
358
+ // @ts-expect-error TODO there might be a bug in hiding here
359
+ result.update_source(await process_tag('script', preprocessor.script, result));
360
+ }
361
+ if (preprocessor.style) {
362
+ // @ts-expect-error TODO there might be a bug in hiding here
363
+ result.update_source(await process_tag('style', preprocessor.style, result));
364
+ }
365
+ }
366
+
367
+ return result.to_processed();
368
+ }
@@ -0,0 +1,72 @@
1
+ /** @import { Source, Replacement } from './private.js' */
2
+ import { MappedCode } from '../utils/mapped_code.js';
3
+
4
+ /**
5
+ * @param {string} code_slice
6
+ * @param {number} offset
7
+ * @param {Source} opts
8
+ * @returns {Source}
9
+ */
10
+ export function slice_source(code_slice, offset, { file_basename, filename, get_location }) {
11
+ return {
12
+ source: code_slice,
13
+ get_location: (index) => get_location(index + offset),
14
+ file_basename,
15
+ filename
16
+ };
17
+ }
18
+
19
+ /**
20
+ * @param {RegExp} re
21
+ * @param {(...match: any[]) => Promise<MappedCode>} get_replacement
22
+ * @param {string} source
23
+ */
24
+ function calculate_replacements(re, get_replacement, source) {
25
+ /**
26
+ * @type {Array<Promise<Replacement>>}
27
+ */
28
+ const replacements = [];
29
+ source.replace(re, (...match) => {
30
+ replacements.push(
31
+ get_replacement(...match).then((replacement) => {
32
+ const matched_string = match[0];
33
+ const offset = match[match.length - 2];
34
+ return { offset, length: matched_string.length, replacement };
35
+ })
36
+ );
37
+ return '';
38
+ });
39
+ return Promise.all(replacements);
40
+ }
41
+
42
+ /**
43
+ * @param {Replacement[]} replacements
44
+ * @param {Source} source
45
+ * @returns {MappedCode}
46
+ */
47
+ function perform_replacements(replacements, source) {
48
+ const out = new MappedCode();
49
+ let last_end = 0;
50
+ for (const { offset, length, replacement } of replacements) {
51
+ const unchanged_prefix = MappedCode.from_source(
52
+ slice_source(source.source.slice(last_end, offset), last_end, source)
53
+ );
54
+ out.concat(unchanged_prefix).concat(replacement);
55
+ last_end = offset + length;
56
+ }
57
+ const unchanged_suffix = MappedCode.from_source(
58
+ slice_source(source.source.slice(last_end), last_end, source)
59
+ );
60
+ return out.concat(unchanged_suffix);
61
+ }
62
+
63
+ /**
64
+ * @param {RegExp} regex
65
+ * @param {(...match: any[]) => Promise<MappedCode>} get_replacement
66
+ * @param {Source} location
67
+ * @returns {Promise<MappedCode>}
68
+ */
69
+ export async function replace_in_code(regex, get_replacement, location) {
70
+ const replacements = await calculate_replacements(regex, get_replacement, location.source);
71
+ return perform_replacements(replacements, location);
72
+ }