awesome-svelte-stores
awesome-svelte-stores copied to clipboard
More stores
I'm not able to submit a pull request at the moment, so hopefully this is okay.
I authored a bunch of svelte store libraries which might be worth adding to your list:
Packages
-
@crikey/stores-strict
Svelte compatible stores using strict inequality checking -
@crikey/stores-svelte
Drop in replacement for Svelte stores -
@crikey/stores-promise
Svelte compatible stores from promises -
@crikey/stores-immer
Immutable Svelte compatible stores using the Immer -
@crikey/stores-selectable
Extend stores with selection semantics, allowing for the easy creation of type safe sub-stores -
@crikey/stores-dynamic
Derived stores with dynamic dependency support and natural error handling/propagation -
@crikey/stores-temporal
Simple time based higher order svelte stores such as debounce and throttle -
@crikey/stores-rxjs
Simple conversion functions to allow interop of Svelte style stores with RxJS style stores
Those are great! I added them except for @crikey/stores-svelte. Can you explain in a short sentence what this one brings to the table? Okay, It's a drop in replacement, but how is it different?
Also just a hint for you: Some of those libs do not have a usage example in the README.md. That is the first thing that I'm looking for when checking out a new lib to get a quick intro on what the store is doing and how I can do it.
The standard svelte stores have a few limitations which can manifest as bugs. The readme for @crikey/stores-base has details, but I should put some links to them in that stores-svelte readme. Notably, standard svelte stores dont interoperate with 3rd party stores correctly with respect to subscriber execution order. For basic usage this is generally not noticeable, but for complex usage it causes erronious updates. I did raise an issue for this, but i dont think I did a very good job selling it or the solution. There are some other differences listed in that readme.
I thought i had put examples in each readme, but i was pretty over writing documentation towards the end so i must have missed some. I'll take a look.