Convex component: convex-envelope-store
  • TypeScript 100%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
phantasy b32abc82c7 Merge audit remediation
Merge verified audit remediation changes into canonical main.
2026-09-27 01:05:59 +00:00
dist merge main with audit remediation coverage 2026-09-26 21:02:32 -04:00
example docs: add example app and GitHub homepage for the Convex directory 2026-09-11 18:46:07 -04:00
src merge main with audit remediation coverage 2026-09-26 21:02:32 -04:00
.gitignore chore: publish-ready Convex component package metadata 2026-07-05 17:42:26 -04:00
LICENSE feat: standalone envelope component with paginated list 2026-09-11 18:33:49 -04:00
package-lock.json feat: standalone envelope component with paginated list 2026-09-11 18:33:49 -04:00
package.json docs: add example app and GitHub homepage for the Convex directory 2026-09-11 18:46:07 -04:00
README.md feat: standalone envelope component with paginated list 2026-09-11 18:33:49 -04:00
tsconfig.build.json chore: publish-ready Convex component package metadata 2026-07-05 17:42:26 -04:00
tsconfig.json chore: publish-ready Convex component package metadata 2026-07-05 17:42:26 -04:00
vitest.config.ts feat: standalone envelope component with paginated list 2026-09-11 18:33:49 -04:00

convex-envelope-store

Generic JSON documents partitioned by tenantId and collection.

Use it for catalogs, settings blobs, or any { recordId, data } record that should not become a one-off table.

This is a Convex component. Call it from your app's queries and mutations. Do not expose these functions directly to clients.

Install

npm install convex-envelope-store
// convex/convex.config.ts
import { defineApp } from "convex/server";
import envelopeStore from "convex-envelope-store/convex.config.js";

const app = defineApp();
app.use(envelopeStore);
export default app;
await ctx.runMutation(components.envelopeStore.envelopes.upsert, {
  collection: "catalog:items",
  recordId: itemId,
  slug: "my-item",
  data: payload,
  tenantId: orgId,
});

Reads: get, getBySlug, list, listPage (paginated). Writes: upsert, remove. tenantId defaults to "default".