MCPcopy Index your code
hub / github.com/epicweb-dev/remember

github.com/epicweb-dev/remember @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
3 symbols 7 edges 2 files 0 documented · 0% updated 56d agov1.1.0 · 2024-05-29★ 138
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🤔 @epic-web/remember

Simple, type-safe, "singleton" implementation.

For when your "hot module replacement" involves re-evaluating a module, but
you don't want to actually re-evaluate a portion of it.
npm install @epic-web/remember

<a alt="Epic Web logo" href="https://www.epicweb.dev"

<img
  width="300px"
  src="https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/257881576-fd66040b-679f-4f25-b0d0-ab886a14909a.png"
/>


Build Status GPL 3.0 License Code of Conduct

The problem

You're using a framework like Remix with --manual mode and re-evaluating your modules on every change. But you have some state that you don't want to lose between changes. For example:

  • Database connections
  • In-memory caches

This solution

This was copy/paste/modified/tested from @jenseng's abuse-the-platform demo (ISC). It's basically a type-safe singleton implementation that you can use to keep state between module re-evaluations.

Usage

import { remember } from '@epic-web/remember'

export const prisma = remember('prisma', () => new PrismaClient())

Keep in mind that any changes you make within that callback will not be reflected when the module is re-evaluated (that's the whole point). So if you need to change the callback, then you'll need to restart your server.

Forget a value

It might be required to explicitly forget a value if it gets outdated, a memorized connection gets lost or memorized instance closes/errors/etc.

import { remember, forget } from '@epic-web/remember'

export const server = remember('server', () =>
    http.createServer().listen('8080')
        .on('close', () => forget('server')))

License

MIT

Credit

The original code was written by @jenseng and then I modified it and published it to fit my needs.

Core symbols most depended-on inside this repo

remember
called by 4
index.js
forget
called by 2
index.js

Shape

Function 3

Languages

TypeScript100%

Modules by API surface

index.js2 symbols
index.test.ts1 symbols

For agents

$ claude mcp add remember \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page