@usebetterdev/tenant 0.2.0-beta.9 → 0.2.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -55,23 +55,37 @@ npx @usebetterdev/tenant-cli seed --name "Acme Corp" --database-url $DATABASE_UR
55
55
 
56
56
  ### 5. Wire up your app
57
57
 
58
+ **With pg:**
59
+
58
60
  ```ts
59
61
  import { drizzle } from "drizzle-orm/node-postgres";
60
62
  import { Pool } from "pg";
61
63
  import { betterTenant } from "@usebetterdev/tenant";
62
- import {
63
- drizzleAdapter,
64
- createGetTenantRepository,
65
- tenantsTable,
66
- } from "@usebetterdev/tenant/drizzle";
64
+ import { drizzleDatabase } from "@usebetterdev/tenant/drizzle";
67
65
 
68
66
  const pool = new Pool({ connectionString: process.env.DATABASE_URL });
69
- const db = drizzle(pool);
67
+ const database = drizzle(pool);
68
+
69
+ export const tenant = betterTenant({
70
+ database: drizzleDatabase(database),
71
+ tenantResolver: { header: "x-tenant-id" },
72
+ });
73
+ ```
74
+
75
+ **With postgres.js:**
76
+
77
+ ```ts
78
+ import { drizzle } from "drizzle-orm/postgres-js";
79
+ import postgres from "postgres";
80
+ import { betterTenant } from "@usebetterdev/tenant";
81
+ import { drizzleDatabase } from "@usebetterdev/tenant/drizzle";
82
+
83
+ const client = postgres(process.env.DATABASE_URL);
84
+ const database = drizzle(client);
70
85
 
71
86
  export const tenant = betterTenant({
72
- adapter: drizzleAdapter(db),
87
+ database: drizzleDatabase(database),
73
88
  tenantResolver: { header: "x-tenant-id" },
74
- getTenantRepository: createGetTenantRepository(tenantsTable),
75
89
  });
76
90
  ```
77
91
 
@@ -118,15 +132,41 @@ const projects = await db.select().from(projectsTable);
118
132
  // ^ returns only current tenant's projects — no WHERE needed
119
133
  ```
120
134
 
135
+ ### 8. Shared (non-tenant) tables
136
+
137
+ Tables without RLS (lookup data, settings, feature flags) work through the same `getDatabase()` handle — no separate connection needed. Wrap it for convenience:
138
+
139
+ ```ts
140
+ // src/database.ts
141
+ import { tenant } from "./tenant";
142
+
143
+ export function getDatabase() {
144
+ const database = tenant.getDatabase();
145
+ if (!database) {
146
+ throw new Error("No active tenant context");
147
+ }
148
+ return database;
149
+ }
150
+ ```
151
+
152
+ Then use `getDatabase()` for everything:
153
+
154
+ ```ts
155
+ import { getDatabase } from "../database";
156
+
157
+ const projects = await getDatabase().select().from(projectsTable); // RLS-filtered
158
+ const categories = await getDatabase().select().from(categoriesTable); // no RLS, all rows
159
+ ```
160
+
121
161
  ## Subpath exports
122
162
 
123
- | Import | Description |
124
- | ------------------------------ | ------------------------------------------------------------------------------ |
125
- | `@usebetterdev/tenant` | Core API: `betterTenant`, `getContext`, `runAs`, `runAsSystem` |
126
- | `@usebetterdev/tenant/drizzle` | Drizzle adapter: `drizzleAdapter`, `tenantsTable`, `createGetTenantRepository` |
127
- | `@usebetterdev/tenant/hono` | Hono middleware: `createHonoMiddleware` |
128
- | `@usebetterdev/tenant/express` | Express middleware: `createExpressMiddleware` |
129
- | `@usebetterdev/tenant/next` | Next.js wrapper: `withTenant` |
163
+ | Import | Description |
164
+ | ------------------------------ | -------------------------------------------------------------------- |
165
+ | `@usebetterdev/tenant` | Core API: `betterTenant`, `getContext`, `runAs`, `runAsSystem` |
166
+ | `@usebetterdev/tenant/drizzle` | Drizzle: `drizzleDatabase`, `tenantsTable` |
167
+ | `@usebetterdev/tenant/hono` | Hono middleware: `createHonoMiddleware` |
168
+ | `@usebetterdev/tenant/express` | Express middleware: `createExpressMiddleware` |
169
+ | `@usebetterdev/tenant/next` | Next.js wrapper: `withTenant` |
130
170
 
131
171
  ## Tenant resolver
132
172
 
@@ -142,14 +182,38 @@ tenantResolver: {
142
182
  }
143
183
  ```
144
184
 
185
+ ### Resolving by slug
186
+
187
+ Slugs are automatically resolved to UUIDs. If a resolver returns `"acme"` (not a UUID), the library looks it up in the tenants table and uses the matching UUID for RLS. No extra config needed — subdomain resolution just works:
188
+
189
+ ```ts
190
+ const tenant = betterTenant({
191
+ database: drizzleDatabase(db),
192
+ tenantResolver: { subdomain: true },
193
+ });
194
+ // acme.app.com → resolves "acme" → looks up slug → uses UUID for RLS
195
+ ```
196
+
197
+ For custom mappings (e.g. custom domains), use `resolveToId`:
198
+
199
+ ```ts
200
+ tenantResolver: {
201
+ custom: (req) => req.host, // "client.com"
202
+ resolveToId: async (domain) => {
203
+ const mapping = await lookupDomain(domain);
204
+ return mapping.tenantId; // UUID
205
+ },
206
+ }
207
+ ```
208
+
145
209
  ## Tenant API
146
210
 
147
- When `getTenantRepository` is configured, CRUD operations on the `tenants` table are available via `tenant.tenant.api`. The adapter must also support `runAsSystem` (e.g. Drizzle adapter); all API calls run with RLS bypass so they can read and write tenants across the system. **Restrict these endpoints to admins** — do not expose them to regular tenant users.
211
+ CRUD operations on the `tenants` table are available via `tenant.api`. All API calls run with RLS bypass (`runAsSystem`) so they can read and write tenants across the system. **Restrict these endpoints to admins** — do not expose them to regular tenant users.
148
212
 
149
213
  | Method | Description |
150
214
  | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
151
215
  | **createTenant(data)** | Create a tenant. `data`: `{ name: string, slug: string }` (both required, trimmed). Returns the created `Tenant` (`id`, `name`, `slug`, `createdAt`). |
152
- | **listTenants(options?)** | List tenants with pagination. `options`: `{ limit?: number, offset?: number }`. Default `limit` 50, max 50. Returns `Tenant[]`. |
216
+ | **listTenants(options?)** | List tenants with pagination. `options`: `{ limit?: number, offset?: number }`. Default `limit` 50. Returns `Tenant[]`. |
153
217
  | **updateTenant(tenantId, data)** | Update a tenant by ID. `data`: `{ name?: string, slug?: string }`. Returns the updated `Tenant`. |
154
218
  | **deleteTenant(tenantId)** | Delete a tenant by ID. Returns `void`. |
155
219
 
@@ -157,31 +221,29 @@ Example:
157
221
 
158
222
  ```ts
159
223
  // Create
160
- const created = await tenant.tenant.api.createTenant({
224
+ const created = await tenant.api.createTenant({
161
225
  name: "Acme Corp",
162
226
  slug: "acme",
163
227
  });
164
228
 
165
229
  // List (e.g. admin dashboard)
166
- const tenants = await tenant.tenant.api.listTenants({ limit: 20, offset: 0 });
230
+ const tenants = await tenant.api.listTenants({ limit: 20, offset: 0 });
167
231
 
168
232
  // Update
169
- await tenant.tenant.api.updateTenant(created.id, {
233
+ await tenant.api.updateTenant(created.id, {
170
234
  name: "Acme Inc",
171
235
  slug: "acme-inc",
172
236
  });
173
237
 
174
238
  // Delete
175
- await tenant.tenant.api.deleteTenant(created.id);
239
+ await tenant.api.deleteTenant(created.id);
176
240
  ```
177
241
 
178
242
  ## Admin operations
179
243
 
180
244
  ```ts
181
- import { runAs, runAsSystem } from "@usebetterdev/tenant";
182
-
183
245
  // Run as a specific tenant (cron jobs, background tasks)
184
- await tenant.runAs(tenantId, adapter, async (db) => {
246
+ await tenant.runAs(tenantId, async (db) => {
185
247
  await db.select().from(projectsTable); // scoped to tenant
186
248
  });
187
249
 
package/dist/drizzle.cjs CHANGED
@@ -20,12 +20,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/drizzle.ts
21
21
  var drizzle_exports = {};
22
22
  __export(drizzle_exports, {
23
- drizzleAdapter: () => import_tenant_drizzle.drizzleAdapter
23
+ drizzleDatabase: () => import_tenant_drizzle.drizzleDatabase,
24
+ tenantId: () => import_tenant_drizzle.tenantId,
25
+ tenantsTable: () => import_tenant_drizzle.tenantsTable
24
26
  });
25
27
  module.exports = __toCommonJS(drizzle_exports);
26
28
  var import_tenant_drizzle = require("@usebetterdev/tenant-drizzle");
27
29
  // Annotate the CommonJS export names for ESM import in node:
28
30
  0 && (module.exports = {
29
- drizzleAdapter
31
+ drizzleDatabase,
32
+ tenantId,
33
+ tenantsTable
30
34
  });
31
35
  //# sourceMappingURL=drizzle.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/drizzle.ts"],"sourcesContent":["export { drizzleAdapter } from \"@usebetterdev/tenant-drizzle\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA+B;","names":[]}
1
+ {"version":3,"sources":["../src/drizzle.ts"],"sourcesContent":["export { drizzleDatabase, tenantsTable, tenantId } from \"@usebetterdev/tenant-drizzle\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAwD;","names":[]}
@@ -1,5 +1,6 @@
1
- export { drizzleAdapter } from '@usebetterdev/tenant-drizzle';
1
+ export { drizzleDatabase, tenantId, tenantsTable } from '@usebetterdev/tenant-drizzle';
2
2
  import '@usebetterdev/tenant-express';
3
3
  import '@usebetterdev/tenant-hono';
4
4
  import '@usebetterdev/tenant-core';
5
5
  import '@usebetterdev/tenant-next';
6
+ import '@usebetterdev/tenant-prisma';
package/dist/drizzle.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export { drizzleAdapter } from '@usebetterdev/tenant-drizzle';
1
+ export { drizzleDatabase, tenantId, tenantsTable } from '@usebetterdev/tenant-drizzle';
2
2
  import '@usebetterdev/tenant-express';
3
3
  import '@usebetterdev/tenant-hono';
4
4
  import '@usebetterdev/tenant-core';
5
5
  import '@usebetterdev/tenant-next';
6
+ import '@usebetterdev/tenant-prisma';
package/dist/drizzle.js CHANGED
@@ -1,6 +1,8 @@
1
1
  // src/drizzle.ts
2
- import { drizzleAdapter } from "@usebetterdev/tenant-drizzle";
2
+ import { drizzleDatabase, tenantsTable, tenantId } from "@usebetterdev/tenant-drizzle";
3
3
  export {
4
- drizzleAdapter
4
+ drizzleDatabase,
5
+ tenantId,
6
+ tenantsTable
5
7
  };
6
8
  //# sourceMappingURL=drizzle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/drizzle.ts"],"sourcesContent":["export { drizzleAdapter } from \"@usebetterdev/tenant-drizzle\";\n"],"mappings":";AAAA,SAAS,sBAAsB;","names":[]}
1
+ {"version":3,"sources":["../src/drizzle.ts"],"sourcesContent":["export { drizzleDatabase, tenantsTable, tenantId } from \"@usebetterdev/tenant-drizzle\";\n"],"mappings":";AAAA,SAAS,iBAAiB,cAAc,gBAAgB;","names":[]}
package/dist/index.cjs CHANGED
@@ -27,11 +27,9 @@ __export(index_exports, {
27
27
  getContext: () => import_tenant_core.getContext,
28
28
  handleRequest: () => import_tenant_core.handleRequest,
29
29
  resolveTenant: () => import_tenant_core.resolveTenant,
30
- resolveTenantAsync: () => import_tenant_core.resolveTenantAsync,
31
30
  runAs: () => import_tenant_core.runAs,
32
31
  runAsSystem: () => import_tenant_core.runAsSystem,
33
32
  runWithTenant: () => import_tenant_core.runWithTenant,
34
- runWithTenantAndDatabase: () => import_tenant_core.runWithTenantAndDatabase,
35
33
  toResolvableRequest: () => import_tenant_core.toResolvableRequest
36
34
  });
37
35
  module.exports = __toCommonJS(index_exports);
@@ -45,11 +43,9 @@ var import_tenant_core = require("@usebetterdev/tenant-core");
45
43
  getContext,
46
44
  handleRequest,
47
45
  resolveTenant,
48
- resolveTenantAsync,
49
46
  runAs,
50
47
  runAsSystem,
51
48
  runWithTenant,
52
- runWithTenantAndDatabase,
53
49
  toResolvableRequest
54
50
  });
55
51
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n betterTenant,\n getContext,\n runWithTenant,\n runWithTenantAndDatabase,\n resolveTenant,\n resolveTenantAsync,\n handleRequest,\n toResolvableRequest,\n runAs,\n runAsSystem,\n createTenantApi,\n TenantNotResolvedError,\n TenantMiddlewareError,\n} from \"@usebetterdev/tenant-core\";\nexport type {\n BetterTenantInstance,\n TenantApi,\n CreateTenantData,\n UpdateTenantData,\n ListTenantsOptions,\n HandleRequestOptions,\n Tenant,\n TenantContext,\n TenantScopedDatabase,\n SystemDatabase,\n TenantAdapter,\n TenantRepository,\n TenantResolverConfig,\n ResolvableRequest,\n BetterTenantPlugin,\n BetterTenantConfig,\n NodeLikeRequest,\n PathResolverConfig,\n SubdomainResolverConfig,\n JwtResolverConfig,\n} from \"@usebetterdev/tenant-core\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAcO;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n betterTenant,\n getContext,\n runWithTenant,\n resolveTenant,\n handleRequest,\n toResolvableRequest,\n runAs,\n runAsSystem,\n createTenantApi,\n TenantNotResolvedError,\n TenantMiddlewareError,\n} from \"@usebetterdev/tenant-core\";\nexport type {\n BetterTenantInstance,\n TenantApi,\n CreateTenantData,\n UpdateTenantData,\n ListTenantsOptions,\n HandleRequestOptions,\n Tenant,\n TenantContext,\n TenantScopedDatabase,\n SystemDatabase,\n TenantAdapter,\n TenantRepository,\n DatabaseProvider,\n TenantResolverConfig,\n ResolvableRequest,\n BetterTenantPlugin,\n BetterTenantConfig,\n NodeLikeRequest,\n PathResolverConfig,\n SubdomainResolverConfig,\n JwtResolverConfig,\n} from \"@usebetterdev/tenant-core\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAYO;","names":[]}
package/dist/index.d.cts CHANGED
@@ -1 +1 @@
1
- export { BetterTenantConfig, BetterTenantInstance, BetterTenantPlugin, CreateTenantData, HandleRequestOptions, JwtResolverConfig, ListTenantsOptions, NodeLikeRequest, PathResolverConfig, ResolvableRequest, SubdomainResolverConfig, SystemDatabase, Tenant, TenantAdapter, TenantApi, TenantContext, TenantMiddlewareError, TenantNotResolvedError, TenantRepository, TenantResolverConfig, TenantScopedDatabase, UpdateTenantData, betterTenant, createTenantApi, getContext, handleRequest, resolveTenant, resolveTenantAsync, runAs, runAsSystem, runWithTenant, runWithTenantAndDatabase, toResolvableRequest } from '@usebetterdev/tenant-core';
1
+ export { BetterTenantConfig, BetterTenantInstance, BetterTenantPlugin, CreateTenantData, DatabaseProvider, HandleRequestOptions, JwtResolverConfig, ListTenantsOptions, NodeLikeRequest, PathResolverConfig, ResolvableRequest, SubdomainResolverConfig, SystemDatabase, Tenant, TenantAdapter, TenantApi, TenantContext, TenantMiddlewareError, TenantNotResolvedError, TenantRepository, TenantResolverConfig, TenantScopedDatabase, UpdateTenantData, betterTenant, createTenantApi, getContext, handleRequest, resolveTenant, runAs, runAsSystem, runWithTenant, toResolvableRequest } from '@usebetterdev/tenant-core';
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { BetterTenantConfig, BetterTenantInstance, BetterTenantPlugin, CreateTenantData, HandleRequestOptions, JwtResolverConfig, ListTenantsOptions, NodeLikeRequest, PathResolverConfig, ResolvableRequest, SubdomainResolverConfig, SystemDatabase, Tenant, TenantAdapter, TenantApi, TenantContext, TenantMiddlewareError, TenantNotResolvedError, TenantRepository, TenantResolverConfig, TenantScopedDatabase, UpdateTenantData, betterTenant, createTenantApi, getContext, handleRequest, resolveTenant, resolveTenantAsync, runAs, runAsSystem, runWithTenant, runWithTenantAndDatabase, toResolvableRequest } from '@usebetterdev/tenant-core';
1
+ export { BetterTenantConfig, BetterTenantInstance, BetterTenantPlugin, CreateTenantData, DatabaseProvider, HandleRequestOptions, JwtResolverConfig, ListTenantsOptions, NodeLikeRequest, PathResolverConfig, ResolvableRequest, SubdomainResolverConfig, SystemDatabase, Tenant, TenantAdapter, TenantApi, TenantContext, TenantMiddlewareError, TenantNotResolvedError, TenantRepository, TenantResolverConfig, TenantScopedDatabase, UpdateTenantData, betterTenant, createTenantApi, getContext, handleRequest, resolveTenant, runAs, runAsSystem, runWithTenant, toResolvableRequest } from '@usebetterdev/tenant-core';
package/dist/index.js CHANGED
@@ -3,9 +3,7 @@ import {
3
3
  betterTenant,
4
4
  getContext,
5
5
  runWithTenant,
6
- runWithTenantAndDatabase,
7
6
  resolveTenant,
8
- resolveTenantAsync,
9
7
  handleRequest,
10
8
  toResolvableRequest,
11
9
  runAs,
@@ -22,11 +20,9 @@ export {
22
20
  getContext,
23
21
  handleRequest,
24
22
  resolveTenant,
25
- resolveTenantAsync,
26
23
  runAs,
27
24
  runAsSystem,
28
25
  runWithTenant,
29
- runWithTenantAndDatabase,
30
26
  toResolvableRequest
31
27
  };
32
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n betterTenant,\n getContext,\n runWithTenant,\n runWithTenantAndDatabase,\n resolveTenant,\n resolveTenantAsync,\n handleRequest,\n toResolvableRequest,\n runAs,\n runAsSystem,\n createTenantApi,\n TenantNotResolvedError,\n TenantMiddlewareError,\n} from \"@usebetterdev/tenant-core\";\nexport type {\n BetterTenantInstance,\n TenantApi,\n CreateTenantData,\n UpdateTenantData,\n ListTenantsOptions,\n HandleRequestOptions,\n Tenant,\n TenantContext,\n TenantScopedDatabase,\n SystemDatabase,\n TenantAdapter,\n TenantRepository,\n TenantResolverConfig,\n ResolvableRequest,\n BetterTenantPlugin,\n BetterTenantConfig,\n NodeLikeRequest,\n PathResolverConfig,\n SubdomainResolverConfig,\n JwtResolverConfig,\n} from \"@usebetterdev/tenant-core\";\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n betterTenant,\n getContext,\n runWithTenant,\n resolveTenant,\n handleRequest,\n toResolvableRequest,\n runAs,\n runAsSystem,\n createTenantApi,\n TenantNotResolvedError,\n TenantMiddlewareError,\n} from \"@usebetterdev/tenant-core\";\nexport type {\n BetterTenantInstance,\n TenantApi,\n CreateTenantData,\n UpdateTenantData,\n ListTenantsOptions,\n HandleRequestOptions,\n Tenant,\n TenantContext,\n TenantScopedDatabase,\n SystemDatabase,\n TenantAdapter,\n TenantRepository,\n DatabaseProvider,\n TenantResolverConfig,\n ResolvableRequest,\n BetterTenantPlugin,\n BetterTenantConfig,\n NodeLikeRequest,\n PathResolverConfig,\n SubdomainResolverConfig,\n JwtResolverConfig,\n} from \"@usebetterdev/tenant-core\";\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/prisma.ts
21
+ var prisma_exports = {};
22
+ __export(prisma_exports, {
23
+ prismaDatabase: () => import_tenant_prisma.prismaDatabase
24
+ });
25
+ module.exports = __toCommonJS(prisma_exports);
26
+ var import_tenant_prisma = require("@usebetterdev/tenant-prisma");
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ prismaDatabase
30
+ });
31
+ //# sourceMappingURL=prisma.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/prisma.ts"],"sourcesContent":["export { prismaDatabase } from \"@usebetterdev/tenant-prisma\";\nexport type { PrismaClientLike, PrismaTransactionClient } from \"@usebetterdev/tenant-prisma\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA+B;","names":[]}
@@ -0,0 +1 @@
1
+ export { PrismaClientLike, PrismaTransactionClient, prismaDatabase } from '@usebetterdev/tenant-prisma';
@@ -0,0 +1 @@
1
+ export { PrismaClientLike, PrismaTransactionClient, prismaDatabase } from '@usebetterdev/tenant-prisma';
package/dist/prisma.js ADDED
@@ -0,0 +1,6 @@
1
+ // src/prisma.ts
2
+ import { prismaDatabase } from "@usebetterdev/tenant-prisma";
3
+ export {
4
+ prismaDatabase
5
+ };
6
+ //# sourceMappingURL=prisma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/prisma.ts"],"sourcesContent":["export { prismaDatabase } from \"@usebetterdev/tenant-prisma\";\nexport type { PrismaClientLike, PrismaTransactionClient } from \"@usebetterdev/tenant-prisma\";\n"],"mappings":";AAAA,SAAS,sBAAsB;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usebetterdev/tenant",
3
- "description": "Multi-tenancy for Postgres in minutes. RLS-based tenant isolation, framework adapters (Hono, Express, Next.js), Drizzle ORM support.",
4
- "version": "0.2.0-beta.9",
3
+ "description": "Multi-tenancy for Postgres in minutes. RLS-based tenant isolation, framework adapters (Hono, Express, Next.js), Drizzle and Prisma ORM support.",
4
+ "version": "0.2.1-beta.1",
5
5
  "keywords": [
6
6
  "multi-tenancy",
7
7
  "postgres",
@@ -9,6 +9,7 @@
9
9
  "row-level-security",
10
10
  "tenant",
11
11
  "drizzle",
12
+ "prisma",
12
13
  "hono",
13
14
  "express",
14
15
  "nextjs",
@@ -53,6 +54,12 @@
53
54
  "import": "./dist/next.js",
54
55
  "require": "./dist/next.cjs",
55
56
  "default": "./dist/next.js"
57
+ },
58
+ "./prisma": {
59
+ "types": "./dist/prisma.d.ts",
60
+ "import": "./dist/prisma.js",
61
+ "require": "./dist/prisma.cjs",
62
+ "default": "./dist/prisma.js"
56
63
  }
57
64
  },
58
65
  "files": [
@@ -60,11 +67,12 @@
60
67
  "README.md"
61
68
  ],
62
69
  "dependencies": {
63
- "@usebetterdev/tenant-core": "0.2.0-beta.9",
64
- "@usebetterdev/tenant-next": "0.2.0-beta.9",
65
- "@usebetterdev/tenant-express": "0.2.0-beta.9",
66
- "@usebetterdev/tenant-hono": "0.2.0-beta.9",
67
- "@usebetterdev/tenant-drizzle": "0.2.0-beta.9"
70
+ "@usebetterdev/tenant-drizzle": "0.2.1-beta.1",
71
+ "@usebetterdev/tenant-next": "0.2.1-beta.1",
72
+ "@usebetterdev/tenant-express": "0.2.1-beta.1",
73
+ "@usebetterdev/tenant-core": "0.2.1-beta.1",
74
+ "@usebetterdev/tenant-prisma": "0.2.1-beta.1",
75
+ "@usebetterdev/tenant-hono": "0.2.1-beta.1"
68
76
  },
69
77
  "devDependencies": {
70
78
  "tsup": "^8.3.5",