npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pokutuna/envelop-response-cache-firestore

v0.2.0

Published

Firestore cache implementation for @envelop/response-cache plugin

Downloads

8

Readme

@pokutuna/envelop-response-cache-firestore

npm version License: MIT

Firestore cache implementation for @envelop/response-cache plugin.

Provides response caching that works well with serverless environments on Google Cloud.

Check out the GraphQL Response Cache Guide and Envelop for more information

Getting Started

yarn add @envelop/response-cache
yarn add @pokutuna/envelop-response-cache-firestore
import {envelop} from '@envelop/core';
import {useResponseCache} from '@envelop/response-cache';
import {createFirestoreCache} from '@pokutuna/envelop-response-cache-firestore';
import {Firestore} from '@google-cloud/firestore';

const firestore = new Firestore({projectId: 'YOUR_PROJECT_ID'});
const cache = createFirestoreCache({firestore});

const getEnveloped = envelop({
  plugins: [
    // ... other plugins ...
    useResponseCache({cache}),
  ],
});

Or, for use with GraphQL Yoga, see this doc.

Options

const cache = createFirestoreCache({
  // Firestore instance to store cache entries (required)
  firestore: new Firestore(),

  // Firestore collection path to store cache entries (default: "responseCache")
  // You can use subcollection (e.g. "_internals_/cache/entries")
  collectionPath: 'responseCache',

  // Customize entity id string conversion for invalidation (usually not required to use)
  buildEntityId: (typename: string, id: number | string) => `${typename}#${id}`,
})

Invalidate Cache

await cache.invalidate([
  // invalidate specific entities
  {typename: 'User', id: '1'},
  {typename: 'User', id: '2'},

  // invalidate all Comment entity
  {typename: 'Comment'},
]);

Delete expired cache entry

Expired cache entries are not automatically deleted. Recommend to run the following periodically.

await cache.deleteExpiredCacheEntry();

Or use TTL policies in Firestore (preview).

  • Collection group: responseCache (default)
  • Timestamp field: expireAt

See Manage data retention with TTL policies.

Notice

  • If you need performance, I recommend to use the Redis version officially provided.
    • The package is aimed at ease of setup with serverless environments and low cost.
  • The envelop implementation does not wait for the write to complete in order to return a response faster.
  • When a highly referenced cache expires, the same document will be updated in a short period and which may affect performance.