* fix: warn when using rest or identifier in custom elements without props option
* chore: update message
* tweak message
* update tests
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: make deriveds on the server lazy again
Fixes a regression introduced in #15820: deriveds need to be lazily called on the server, too, since they can close over variables only later defined
Fixes#15960
* fix: handle basic assignment of deriveds on the server
* fix: use `build_assignment_value` for deriveds assignments
* use once
* allow writing to public deriveds on server
---------
Co-authored-by: paoloricciuti <ricciutipaolo@gmail.com>
* feat: attachments `fromAction` utility
* fix: typing of the utility
Co-authored-by: Aidan Bleser <117548273+ieedan@users.noreply.github.com>
* simplify implementation - create action first, then only create update/destroy effects if necessary
* add since
* regenerate
* remove FromAction interface
* overload
* fix: use typedef instead of exported interface
* get rid of the arg0, arg1 stuff
* oops
* god i hate overloads
* defer to the reference documentation
* damn ur weird typescript
* gah
---------
Co-authored-by: Aidan Bleser <117548273+ieedan@users.noreply.github.com>
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: avoid auto-parenthesis for special keywords only `MediaQuery`
* chore: update changeset
* chore: i has english knowledge
* fix: fix media queries with commas
* feat: State declarations in class constructors
* feat: Analysis phase
* misc
* feat: client
* improvements
* feat: It is now at least backwards compatible. though the new stuff may still be wrong
* feat: It works I think?
* final cleanup??
* tests
* test for better types
* changeset
* rename functions (the function doesn't test call-expression-ness)
* small readability tweak
* failing test
* fix
* disallow computed state fields
* tweak message to better accommodate the case in which state is declared after a regular property
* failing test
* wildly confusing to have so many things called 'class analysis' - rename the transform-phrase ones to transformers
* missed a spot
* and another
* store analysis for use during transformation
* move code to where it is used
* do the analysis upfront, it's way simpler
* skip failing test for now
* simplify
* get rid of the class
* on second thoughts
* reduce indirection
* make analysis available at transform time
* WIP
* WIP
* WIP
* fix
* remove unused stuff
* revert snapshot tests
* unused
* note to self
* fix
* unused
* unused
* remove some unused stuff
* unused
* lint, tidy up
* reuse helper
* tweak
* simplify/DRY
* unused
* tweak
* unused
* more
* tweak
* tweak
* fix proxying logic
* tweak
* tweak
* adjust message to accommodate more cases
* unskip and fix test
* fix
* move
* revert unneeded drive-by change
* fix
* fix
* update docs
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: wrap array destructuring in spread to avoid iterator edge case
* spread at `tmp` declaration
* completely rewrite destructuring handling
* only wrap in iife if necessary
* oops
* minor style tweaks
* separate visitors
* tweak
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: don't spread away `$$slots` from `$props` is it's used
* beef up test
* fix
* Update .changeset/ten-plants-carry.md
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: more frequently update `bind:buffered` to actual value
* small tweak
---------
Co-authored-by: 7nik <kifiranet@gmail.com>
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: warn on bidirectional control characters
* check evaluated values as well, fix minor issue
* fix failing tests
* lint
* fix
* shrink warning code
* use validator test suite rather than snapshot (which should be used sparingly as it creates more git noise)
* show ranges during parsing, and warn on all occurrences rather than just the first
* fix lint
* move check into Text visitor so it happens in expected order
* unused
* add svelte-ignore test
* ignore control characters following a svelte-ignore comment
* tweak message
* no need to test evaluations, since we are already testing the literals that they are composed of
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: `update_version` after `delete` if `source` is `undefined` and `prop` in `target`
* chore: remove submodule
* tweak test
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: allow accessing snippet in script tag
* branches are identical
* update test
* rename test
* fix validation (we were mutating the wrong array)
* tidy up
* remove submodule
* changeset
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* feat: add partial evaluation
* fix
* tweak
* more
* more
* evaluate stuff in template
* update test
* SSR
* unused
* changeset
* remove TODO
* Apply suggestions from code review
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
* allow unknown operators
* use blocks and block-scoping in switch statement
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
* fix: correctly validate head snippets on the server
* put the logic in copy_payload so it gets treeshaken in most cases
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* init
* fix
* make `Payload` a class
* doh
* lint
* tweak changeset
* fix
* only export things that should be available on $
* tweak message
* fix
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: don't transform reassigned state in labeled statement in `$derived`
* fix type so optional chaining is unnecessary
* drive-by tidy up
* drive-by tidy up
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>
* fix: prevent ownership warnings if the fallback of a bindable is used
* fix: filter out symbol from own keys
* fix: don't create sources for `BINDABLE_FALLBACK_SYMBOL`
* fix: use strategy suggested by actually competent person aka @dummdidumm
* chore: rename function
* fix: set deriveds as `CLEAN` if they are assigned to
* chore: remove only
* chore: remove unnecessary typecast
* fix: set unowned as `MAYBE_DIRTY` instead of `CLEAN`
* fix: visit the derived function when to update the dependencies even when it's reassigned
* fix: use `execute_derived` instead of `update_reaction`
* fix: execute deriveds eagerly when they are set if DIRTY
* remove old validation
* fix: rework binding ownership validation
Previously we were doing stack-based retrieval of the owner, which while catching more cases was costly (performance-wise) and prone to errors (as shown by many issues over the months).
This drastically simplifies the ownership validation - we now only do simple static analysis to check which props are mutated and wrap them with runtime checks to see if a binding was established.
Besides making the implementation simpler and more performant, this also follows an insight we had over the months: Most people don't really know what to do with this warning when it's shown beyond very simple cases. Either it's not actionable because they don't really know how to fix it or they question if they should at all (in some cases rightfully so). Now that the warning is only shown in simple and easy-to-reason-about cases, it has a much better signal-to-noise-ratio and will hopefully guide people in the right direction early on (learn from the obvious cases to not write spaghetti code in more complex cases).
closes#15532closes#15210closes#14893closes#13607closes#13139closes#11861
* remove some now obsolete tests
* fix
* better warnings now that we have more info
* fix
* hoist
* we only care about mutation, not reassignment
* tidy
* handle prop aliases
* mutation validation is only tangentially linked to context requirement
* no need for two vars, one will do
* update warning, include mutation location
* tweak
---------
Co-authored-by: Rich Harris <rich.harris@vercel.com>