A collection of framework specific Cache utilities for working with Supabase.

Overview

supabase-cache-helpers

A collection of framework specific Cache utilities for working with Supabase.

Supabase Launch Week Hackathon 5 Submission

Team

Why?

To maximize our velocity at hellomateo (we are hiring!), we always try to minimize the surface area of the tech. In other words, write as little code as possible.[1] As our apps grow, our queries become more complex. At one point, we found ourselves writing a lot of repetitive code to query data, define cache keys and update the cache after mutations. Imagine a Master-Detail view. When using SWR, you will probably end up with something like this

const { data: posts, error } = useSWR("posts", () => {
  const { data: posts, error } = await supabase.from("posts").select("*");

  if (error) throw error.message;
  return posts;
});

Now you add filters...

const { data: posts, error } = useSWR("posts?is_published=true", () => {
  const { data: posts, error } = await supabase
    .from("posts")
    .select("*")
    .eq("is_published", true);

  if (error) throw error.message;
  return posts;
});

You can see how this becomes very cumbersome over time. It is even more fun if you want to mutate the data, e.g. insert a new post without waiting for SWR to revalidate. To make it a smooth experience for the user, the new post should appear in the list(s) instantly, and not only after a revalidation. This can be implemented by mutating the respective cache keys. But how to know what cache keys should be mutated? One would have to decode the keys and check if the table as well as the applied filters match. Imagine doing that for large queries with a lot of filters. Not fun. But what if we could implement a generalizable solution?

How?

Now that you got the pain, here is the solution that these libaries attempt to offer:

1. Provide query utilities that turn any supabase query into a definite cache key.

// The query
const { data } = useQuery(
  client
    .from<Contact>("contact")
    .select(
      "id,created_at,username,ticket_number,golden_ticket,tags,age_range,hello:metadata->>hello,catchphrase,country!inner(code,mapped_name:name,full_name)"
    )
    .eq("username", "psteinroe"),
  "single" // also works with "maybeSingle" and "multiple"
);
// is encoded into this SWR cache key
// postgrest$default$contact$select=id%2Ccreated_at%2Cusername%2Cticket_number%2Cgolden_ticket%2Ctags%2Cage_range%2Chello%3Ametadata-%3E%3Ehello%2Ccatchphrase%2Ccountry%21inner%28code%2Cmapped_name%3Aname%2Cfull_name%29&username=eq.psteinroe$null$count=null$head=false

There are also a few pagination goodies included. Check out the full list of query hooks here.

2. Provide mutation utilities that update the cache automagically.

const { data, count } = useQuery(
        client
          .from("contact")
          .select("id,username", { count: "exact" })
          .eq("username", 'supaname'),
        "multiple"
      );
const [insert] = useInsertMutation(client.from<Contact>("contact"));

return (
  // If you click the button, "data" will contain the new contact immediately.
  <button onClick={async () => await insert({ username: 'supaname' })} />
);

Almost all operators are supported. Check out the full list here.

...but, how?

Under the hood, postgrest-swr uses postgrest-filter. A few lines of code are worth more than a thousand words, so here is what it can do:

const filter = PostgrestFilter.fromFilterBuilder(
    supabase
      .from("contact")
      .select(
        "id,username,ticket_number,golden_ticket,tags,country!inner(code,name,full_name)"
      )
      .or(`username.eq.unknown,and(ticket_number.eq.2,golden_ticket.is.true)`)
      .is("golden_ticket", true)
      .in("username", ["thorwebdev"])
      .contains("tags", ["supateam"])
      .or("name.eq.unknown,and(name.eq.Singapore,code.eq.SG)", {
        foreignTable: "country",
      })
  );
console.log(
  filter.apply({
    id: "68d2e5ef-d117-4f0c-abc7-60891a643571",
    username: "thorwebdev",
    ticket_number: 2,
    golden_ticket: false,
    tags: ["supateam", "investor"],
    country: {
      code: "SG",
      name: "Singapore",
      full_name: "Republic of Singapore",
    },
  })
); // --> false
console.log(
  filter.apply({
    id: "68d2e5ef-d117-4f0c-abc7-60891a643571",
    created_at: "2022-08-19T15:30:33.072441+00:00",
    username: "thorwebdev",
    ticket_number: 2,
    golden_ticket: true,
    tags: ["supateam", "investor"],
    country: {
      code: "SG",
      name: "Singapore",
      full_name: "Republic of Singapore",
    },
  })
); // --> true

When a mutation was successful, the cache keys are scanned for relevant entries. For each of them, a PostgrestFilter is created. If .apply(input) returns true, the item is added to the cache. Upsert, update and remove are implemented in a similar manner. Its a bit more complex than that, and I will work on a better documentation. For now, checkout the tests for a better understanding.

Packages

I tried my best to split up the implementation into reusable libraries in the hope that adding support for other cache libraries such as tanstack-query will be pretty straightforward.

  • Packages
    • eslint-config-custom: eslint configurations
    • jest-presets: jest presets
    • postgrest-fetcher: common fetchers for postgrest-js operations
    • postgrest-filter: parse a postgrest query into json and build a local js filter function that tries to replicate the behavior of postgres locally
    • postgrest-mutate: common mutation functions for postgrest
    • postgrest-shared: utilites shared among the postgrest packages
    • postgrest-swr: SWR implementation for postgrest
    • shared: For now, this package contains only the generated types of the test schema
    • [COMING SOON] storage-fetcher: common fetchers for storage-js operations
    • [COMING SOON] storage-swr: SWR implementation for storage
    • tsconfig: tsconfig.jsons used throughout the monorepo

Each package/app is 100% TypeScript.

Utilities

This turborepo has some additional tools already setup for you:

Comments
  • Supabase v2 Types

    Supabase v2 Types

    Describe the bug I see this package uses the v2 Supabase JS client, but the types are not showing for me in my queries. useQuery is returning

    const category = useQuery(
      client.from("categories").select("id, name").eq("id", props.route.params.category.id),
      "single"
    );
    
    category -> SWRResponse<unknown, PostgrestError>
    

    I can confirm that the types from the client are in fact working. That same query outside of useQuery returns

    const categoryQuery: PromiseLike<PostgrestSingleResponse<{
        id: string;
    } & {
        name: string;
    }>>
    

    Expected behavior Types from the query are available with the SWRResponse.

    Appreciate you making this library! I have been trying to React Query to play nicely with the new v2 types and its been a challenge. Nice to see you tackle this already using SWR!

    bug 
    opened by drewbietron 10
  • Cannot find dependencies of postgres-swr

    Cannot find dependencies of postgres-swr

    Describe the bug Cant find shared dependencies when using @supabase-cache-helpers/postgrest-swr

    To Reproduce

    yarn add @supabase-cache-helpers/postgrest-swr
    
    import { useQuery  } from "@supabase-cache-helpers/postgrest-swr";
    const query = useQuery(client.from("table").select("*", { count: "exact" }), "multiple", {
      revalidateOnFocus: false,
      revalidateOnReconnect: false,
    });
    
    index.tsx:27 Uncaught Error: Module parse failed: Unexpected token (108:19)
    You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
    |   return [
    |     KEY_PREFIX,
    >     parser.schema ?? import_postgrest_shared.DEFAULT_SCHEMA_NAME,
    |     parser.table,
    |     parser.queryKey,
        at ../../node_modules/@supabase-cache-helpers/postgrest-swr/dist/index.js (index.tsx:27:1)
    

    Expected behavior Tried to just install the swr library per the docs instructions

    Additional context This is within a React Native app using metro bundler within monorepo. I also tried no-hoist'ing the package to see if it made a different and it did not. Was also not able to import each package individually.

    bug 
    opened by drewbietron 3
  • [Feature Request]: Subscription Support

    [Feature Request]: Subscription Support

    Hey! Congrats on winning the hackathon.

    It would be really neat if this library would also allow you to use realtime subscriptions, and to specify a key value for each table which would be used to subscribe to future changes on that entity.

    I understand that this would not allow you to subscribe to changes for the whole collection... but it would be a start!

    enhancement 
    opened by Marviel 3
  • chore(deps): update pnpm to v7.19.0

    chore(deps): update pnpm to v7.19.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.18.0 -> 7.19.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.19.0

    Compare Source

    Minor Changes

    • New setting supported in the package.json that is in the root of the workspace: pnpm.requiredScripts. Scripts listed in this array will be required in each project of the worksapce. Otherwise, pnpm -r run <script name> will fail #​5569.
    • When the hoisted node linker is used, preserve node_modules directories when linking new dependencies. This improves performance, when installing in a project that already has a node_modules directory #​5795.
    • When the hoisted node linker is used, pnpm should not build the same package multiple times during installation. If a package is present at multipe locations because hoisting could not hoist them to a single directory, then the package should only built in one of the locations and copied to the rest #​5814.

    Patch Changes

    • pnpm rebuild should work in projects that use the hoisted node linker #​5560.
    • pnpm patch should print instructions about how to commit the changes #​5809.
    • Allow the -S flag in command shims pnpm/cmd-shim#​42.
    • Don't relink injected directories if they were not built #​5792.

    Our Gold Sponsors

    Our Silver Sponsors

    v7.18.2

    Compare Source

    Patch Changes

    • Added --json to the pnpm publish --help output #​5773.
    • pnpm update should not replace workspace:*, workspace:~, and workspace:^ with workspace:<version> #​5764.
    • The fatal error should be printed in JSON format, when running a pnpm command with the --json option #​5710.
    • Throw an error while missing script start or file server.js #​5782.
    • pnpm license list should not fail if a license file is an executable #​5740.

    Our Gold Sponsors

    Our Silver Sponsors

    v7.18.1

    Compare Source

    Patch Changes

    • The update notifier should suggest using the standalone script, when pnpm was installed using a standalone script #​5750.
    • Vulnerabilities that don't have CVEs codes should not be skipped by pnpm audit if an ignoreCves list is declared in package.json #​5756.
    • It should be possible to use overrides with absolute file paths #​5754.
    • pnpm audit --json should ignore vulnerabilities listed in auditConfig.ignoreCves #​5734.
    • pnpm licenses should print help, not just an error message #​5745.

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update pnpm to v7.18.0

    chore(deps): update pnpm to v7.18.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.17.0 -> 7.18.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.18.0

    Compare Source

    Minor Changes

    • Overrides may be defined as a reference to a spec for a direct dependency by prefixing the name of the package you wish the version to match with a `# pnpm.

      {
        "dependencies": {
          "foo": "^1.0.0"
        },
        "overrides": {
          // the override is defined as a reference to the dependency
          "foo": "$foo",
          // the referenced package does not need to match the overridden one
          "bar": "$foo"
        }
      }
      

      Issue: #​5703

    Patch Changes

    • pnpm audit should work when the project's package.json has no version field #​5728
    • Dependencies specified via * should be updated to semver ranges by pnpm update #​5681.
    • It should be possible to override a dependency with a local package using relative path from the workspace root directory #​5493.
    • Exit with non-zero exit code when child process exits with a non-zero exit clode #​5525.
    • pnpm add should prefer local projects from the workspace, even if they use prerelease versions #​5316

    Our Gold Sponsors

    Our Silver Sponsors

    v7.17.1

    Compare Source

    Patch Changes

    • pnpm set-script and pnpm pkg are passed through to npm #​5683.
    • pnpm publish <tarball path> should exit with non-0 exit code when publish fails #​5396.
    • readPackage hooks should not modify the package.json files in a workspace #​5670.
    • Comments in package.json5 are preserver #​2008.
    • pnpm setup should create PNPM_HOME as a non-expandable env variable on Windows #​4658.
    • Fix the CLI help of the pnpm licenses command.

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update dependency eslint to v8.29.0

    chore(deps): update dependency eslint to v8.29.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | eslint (source) | 8.28.0 -> 8.29.0 | age | adoption | passing | confidence |


    Release Notes

    eslint/eslint

    v8.29.0

    Compare Source

    Features

    • 49a07c5 feat: add allowParensAfterCommentPattern option to no-extra-parens (#​16561) (Nitin Kumar)
    • e6a865d feat: prefer-named-capture-group add suggestions (#​16544) (Josh Goldberg)
    • a91332b feat: In no-invalid-regexp validate flags also for non-literal patterns (#​16583) (trosos)

    Documentation

    Chores


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update pnpm to v7.17.0

    chore(deps): update pnpm to v7.17.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.16.0 -> 7.17.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.17.0

    Compare Source

    Minor Changes

    • Added a new command pnpm licenses list, which displays the licenses of the packages #​2825

    Patch Changes

    • pnpm update --latest !foo should not update anything if the only dependency in the project is the ignored one #​5643.
    • pnpm audit should send the versions of workspace projects for audit.
    • Hoisting with symlinks should not override external symlinks and directories in the root of node_modules.
    • The pnpm.updateConfig.ignoreDependencies setting should work with multiple dependencies in the array #​5639.

    Our Gold Sponsors

    Our Silver Sponsors

    v7.16.1

    Compare Source

    Patch Changes

    • Sync all injected dependencies when hoisted node linker is used #​5630

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update dependency eslint to v8.28.0

    chore(deps): update dependency eslint to v8.28.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | eslint (source) | 8.27.0 -> 8.28.0 | age | adoption | passing | confidence |


    Release Notes

    eslint/eslint

    v8.28.0

    Compare Source

    Features

    • 63bce44 feat: add ignoreClassFieldInitialValues option to no-magic-numbers (#​16539) (Milos Djermanovic)
    • 8385ecd feat: multiline properties in rule key-spacing with option align (#​16532) (Francesco Trotta)
    • a4e89db feat: no-obj-calls support Intl (#​16543) (Sosuke Suzuki)

    Bug Fixes

    • c50ae4f fix: Ensure that dot files are found with globs. (#​16550) (Nicholas C. Zakas)
    • 9432b67 fix: throw error for first unmatched pattern (#​16533) (Milos Djermanovic)
    • e76c382 fix: allow * 1 when followed by / in no-implicit-coercion (#​16522) (Milos Djermanovic)

    Documentation

    Chores


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update dependency typescript to v4.9.3

    chore(deps): update dependency typescript to v4.9.3

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | typescript (source) | 4.8.2 -> 4.9.3 | age | adoption | passing | confidence |


    Release Notes

    Microsoft/TypeScript

    v4.9.3: TypeScript 4.9

    Compare Source

    For release notes, check out the release announcement.

    Downloads are available on:

    Changes:
    See More

    This list of changes was auto generated.

    v4.8.4: TypeScript 4.8.4

    Compare Source

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:

    v4.8.3: TypeScript 4.8.3

    Compare Source

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update dependency tsup to v6.5.0

    chore(deps): update dependency tsup to v6.5.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | tsup | 6.4.0 -> 6.5.0 | age | adoption | passing | confidence |


    Release Notes

    egoist/tsup

    v6.5.0

    Compare Source

    Bug Fixes
    Features
    • add --publicDir [dir] flag (3da1c00)

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update pnpm to v7.16.0

    chore(deps): update pnpm to v7.16.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.15.0 -> 7.16.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.16.0

    Compare Source

    Minor Changes
    • Support pnpm env list to list global or remote Node.js versions #​5546.
    Patch Changes
    • Replace environment variable placeholders with their values, when reading .npmrc files in subdirectories inside a workspace #​2570.
    • Fix an error that sometimes happen on projects with linked local dependencies #​5327.
    Our Gold Sponsors
    Our Silver Sponsors

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • chore(deps): update pnpm to v7.20.0

    chore(deps): update pnpm to v7.20.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.19.0 -> 7.20.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.20.0

    Compare Source

    Minor Changes

    • pnpm gets its own implementation of the following commands:

      • pnpm config get
      • pnpm config set
      • pnpm config delete
      • pnpm config list

      In previous versions these commands were passing through to npm CLI.

      PR: #​5829 Related issue: #​5621

    • Add show alias to pnpm view #​5835.

    • pnpm reads settings from its own global configuration file at $XDG_CONFIG_HOME/pnpm/rc #​5829.

    • Add the 'description'-field to the licenses output #​5836.

    Patch Changes

    • pnpm rebuild should not fail if node_modules was created by pnpm version 7.18 or older #​5815.
    • pnpm env should print help.
    • Run the prepublish scripts of packages installed from Git #​5826.
    • pnpm rebuild should print a better error message when a hoisted dependency is not found #​5815.

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 1
  • chore(deps): update dependency @changesets/cli to v2.26.0

    chore(deps): update dependency @changesets/cli to v2.26.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @changesets/cli (source) | 2.25.0 -> 2.26.0 | age | adoption | passing | confidence |


    Release Notes

    changesets/changesets

    v2.26.0

    Compare Source

    Minor Changes
    • #​1033 521205d Thanks @​Andarist! - A new config-level changedFilePatterns option has been added. You can configure it with an array of glob patterns like here:

      // .changeset/config.json
      {
        "changedFilePatterns": ["src/**"]
      }
      

      Files that do not match the configured pattern won't contribute to the "changed" status of the package to which they belong. This both affects changesets add and changeset status.

    Patch Changes

    v2.25.2

    Compare Source

    Patch Changes

    v2.25.1

    Compare Source

    Patch Changes
    • #​997 4d4d67b Thanks @​JakeGinnivan! - Add error message when running changesets in a repo with workspaces configured but no packages yet

    • #​985 8d0115e Thanks @​mino01x! - Fixed an issue with private packages with versions being included in the CLI prompt despite the privatePackages.version: false setting.


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 1
  • chore(deps): update dependency @supabase/supabase-js to v2.2.2

    chore(deps): update dependency @supabase/supabase-js to v2.2.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @supabase/supabase-js | 2.1.0 -> 2.2.2 | age | adoption | passing | confidence |


    Release Notes

    supabase/supabase-js

    v2.2.2

    Compare Source

    Bug Fixes

    v2.2.1

    Compare Source

    Bug Fixes
    • deps: bump postgrest-js to ^1.1.1 (5817fcc)

    v2.2.0

    Compare Source

    Features
    • update storage to add image transforms (03be540)

    v2.1.4

    Compare Source

    Bug Fixes

    v2.1.3

    Compare Source

    Bug Fixes

    v2.1.2

    Compare Source

    Bug Fixes

    v2.1.1

    Compare Source

    Bug Fixes

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 1
  • chore(deps): update dependency @supabase/storage-js to v2.1.0

    chore(deps): update dependency @supabase/storage-js to v2.1.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @supabase/storage-js | 2.0.0 -> 2.1.0 | age | adoption | passing | confidence |


    Release Notes

    supabase/storage-js

    v2.1.0

    Compare Source

    Features

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 1
  • Returning Errors from useInsertMutation

    Returning Errors from useInsertMutation

    I am not seeing a way to return errors from using the useInsertMutation.. Since the Supabase client doesn't throw an error, and rather returns an error key in the response, I am not seeing that same error key returned using [insert] per the useInsertMutation instructions.

    Any tips on how to gather if a mutation was successful or not?

    enhancement 
    opened by drewbietron 9
Releases(@supabase-cache-helpers/[email protected])
Owner
Philipp Steinrötter
Co-Founder @getmateo
Philipp Steinrötter
A complete media query framework for CSS, to apply specific properties in specific screen

A complete media query framework for CSS, to apply specific properties in specific screen Note: Size of every media query is `50px, 100px, 150px, 200p

Rohit Chouhan 6 Aug 23, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A collection of utilities I use when making vanilla js applications. A mini-framework if you will.

R2.js A collection of utilities I use when making vanilla js applications. Installation Copy ./r2.js over to your project. It small. Do wtf u want wit

Ronak Badhe 9 Dec 2, 2022
tooldb is a (soon) massive collection of frameworks and tools. It's build on Flowbite, Next.js, Tailwind CSS and uses Supabase.

tooldb is a (soon) massive collection of frameworks and tools. It's build on Flowbite, Next.js, Tailwind CSS and uses Supabase.

Julian Yaman 12 Jul 14, 2022
Manually curated collection of resources, plugins, utilities, and other assortments for the Sapphire Community projects.

Awesome Sapphire Manually curated collection of resources, plugins, utilities, and other assortments for the Sapphire Community projects. Has your pro

Sapphire 20 Dec 17, 2022
Collection of SEO utilities like sitemap, robots.txt, etc. for a Remix Application

Remix SEO Collection of SEO utilities like sitemap, robots.txt, etc. for a Remix Features Generate Sitemap Generate Robots.txt Installation To use it,

Balavishnu V J 128 Dec 21, 2022
A collection of opening hours-related utilities.

Opening-Hours-Utils A collection of opening hours-related utilities. tl;dr Install by executing npm install @wojtekmaj/opening-hours-utils or yarn add

Wojciech Maj 9 Jan 7, 2023
Opinionated collection of TypeScript definitions and utilities for Deno and Deno Deploy. With complete types for Deno/NPM/TS config files, constructed from official JSON schemas.

Schemas Note: You can also import any type from the default module, ./mod.ts deno.json import { type DenoJson } from "https://deno.land/x/[email protected]

deno911 2 Oct 12, 2022
Utilities for parsing and manipulating LaTeX ASTs with the Unified.js framework

unified-latex Monorepo for @unified-latex packages. These packages provide a JS/TypeScript interface for creating, manipulating, and printing LaTeX Ab

Jason Siefken 29 Dec 27, 2022
front-end framework for fast and powerful configuration of utilities and intuitive UI

front-end framework for fast and powerful configuration of utilities and intuitive UI Getting Started with Vector → Getting started A variety of optio

Skill Class 12 Jun 29, 2022
front-end framework for fast and powerful configuration of utilities and intuitive UI

front-end framework for fast and powerful configuration of utilities and intuitive UI Getting Started with Vector → Getting started A variety of optio

DE:MO 12 Jun 29, 2022
Obsidian-Snippet-collection - A collection of snippet to customize obsidian

This repo is a collection of CSS snippets for Obsidian.md. To install them on PC

Mara 110 Dec 22, 2022
Change the color of an image to a specific color you have in mind.

image-recolor Run it: https://image-recolor.vercel.app/ image.recolor.mov Acknowledgments Daniel Büchele for the algorithm: https://twitter.com/daniel

Christopher Chedeau 21 Oct 25, 2022
Example project implementing authentication, authorization, and routing with Next.js and Supabase

Magic Link Authentication and Route Controls with Supabase and Next.js To run this project, To get started with this project, first create a new proje

Nader Dabit 134 Dec 11, 2022
Make sure a specific version and package-manger to be used in project.

pm-keeper A simple way to force package-manager in your project. usage Add a preinstall script in your project's package.json, link this: { "scripts

阿五 13 Sep 25, 2022
An HTML, CSS and JavaScript project related to a leaderboard, where you can submit a specific score data using an API request

LeaderBoard-Project In this project we use Webpack dependecy and a external API for displaying the leaderboard data inside the dom. Built with HTML-CS

Nicolas Gonzalez 4 Mar 3, 2022
Type predicate functions for checking if a value is of a specific type or asserting that it is.

As-Is Description As-Is contains two modules. Is - Type predicates for checking values are of certain types. As - Asserting values are of a certain ty

Declan Fitzpatrick 8 Feb 10, 2022