@multitenantkit/sdk 0.1.1 → 0.1.3
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/dist/convenience.d.ts.map +1 -1
- package/dist/convenience.js +3 -7
- package/dist/convenience.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/supabase.d.ts +155 -0
- package/dist/supabase.d.ts.map +1 -0
- package/dist/supabase.js +302 -0
- package/dist/supabase.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convenience.d.ts","sourceRoot":"","sources":["../src/convenience.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convenience.d.ts","sourceRoot":"","sources":["../src/convenience.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AA+ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,wBAAgB,gBAAgB,CAE5B,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,MAAM,CAAC,EACD,cAAc,CACV,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACD,qBAAqB,EAC3B,MAAM,CAAC,EACD,cAAc,CACV,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACD,qBAAqB,GAC5B,OAAO,CAoDT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,mBAAmB,CAE/B,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,MAAM,CAAC,EACD,cAAc,CACV,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACD,qBAAqB,EAC3B,MAAM,CAAC,EACD,cAAc,CACV,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACD,qBAAqB,GAC5B,MAAM,CAoDR"}
|
package/dist/convenience.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { createSupabaseAuthService } from '@multitenantkit/adapter-auth-supabase';
|
|
5
5
|
import { buildExpressApp, buildExpressRouter } from '@multitenantkit/adapter-transport-express';
|
|
6
6
|
import { buildHandlers } from '@multitenantkit/api-handlers';
|
|
7
|
-
import { createJsonAdapters,
|
|
7
|
+
import { createJsonAdapters, createPostgresAdapters, createSystemAdapters, createUseCases } from '@multitenantkit/composition';
|
|
8
8
|
/**
|
|
9
9
|
* Detects which parameter is which based on their properties
|
|
10
10
|
* This allows calling the function with parameters in any order
|
|
@@ -116,12 +116,10 @@ export function createExpressApp(param1, param2) {
|
|
|
116
116
|
: createPostgresAdapters(undefined, toolkitOptions);
|
|
117
117
|
// 2. Create system and metrics adapters
|
|
118
118
|
const systemAdapters = createSystemAdapters();
|
|
119
|
-
const metricsAdapter = createMetricsAdapter();
|
|
120
119
|
// 3. Create use cases with all adapters
|
|
121
120
|
const useCases = createUseCases({
|
|
122
121
|
persistence: persistenceAdapters,
|
|
123
|
-
system: systemAdapters
|
|
124
|
-
observability: metricsAdapter
|
|
122
|
+
system: systemAdapters
|
|
125
123
|
}, toolkitOptions);
|
|
126
124
|
// 4. Build HTTP handlers
|
|
127
125
|
const handlers = buildHandlers(useCases, toolkitOptions);
|
|
@@ -191,12 +189,10 @@ export function createExpressRouter(param1, param2) {
|
|
|
191
189
|
: createPostgresAdapters(undefined, toolkitOptions);
|
|
192
190
|
// 2. Create system and metrics adapters
|
|
193
191
|
const systemAdapters = createSystemAdapters();
|
|
194
|
-
const metricsAdapter = createMetricsAdapter();
|
|
195
192
|
// 3. Create use cases with all adapters
|
|
196
193
|
const useCases = createUseCases({
|
|
197
194
|
persistence: persistenceAdapters,
|
|
198
|
-
system: systemAdapters
|
|
199
|
-
observability: metricsAdapter
|
|
195
|
+
system: systemAdapters
|
|
200
196
|
}, toolkitOptions);
|
|
201
197
|
// 4. Build HTTP handlers
|
|
202
198
|
const handlers = buildHandlers(useCases, toolkitOptions);
|
package/dist/convenience.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convenience.js","sourceRoot":"","sources":["../src/convenience.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACH,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"convenience.js","sourceRoot":"","sources":["../src/convenience.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,mBAAmB,MAAM,uCAAuC,CAAC;AAE7E,OAAO,KAAK,sBAAsB,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAE3F,OAAO,KAAK,uBAAuB,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,wBAAwB,MAAM,6CAA6C,CAAC;AAExF,OAAO,KAAK,uBAAuB,MAAM,2CAA2C,CAAC;AACrF,cAAc,+BAA+B,CAAC;AAE9C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,kCAAkC,CAAC;AAEjD,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,mBAAmB,MAAM,uCAAuC,CAAC;AAE7E,OAAO,KAAK,sBAAsB,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAE3F,OAAO,KAAK,uBAAuB,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,wBAAwB,MAAM,6CAA6C,CAAC;AAExF,OAAO,KAAK,uBAAuB,MAAM,2CAA2C,CAAC;AACrF,cAAc,+BAA+B,CAAC;AAE9C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,kCAAkC,CAAC;AAEjD,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,4 +23,6 @@ export * from '@multitenantkit/domain';
|
|
|
23
23
|
export * from '@multitenantkit/domain-contracts';
|
|
24
24
|
// Convenience functions for quick setup
|
|
25
25
|
export * from './convenience';
|
|
26
|
+
// Supabase-specific convenience functions
|
|
27
|
+
export * from './supabase';
|
|
26
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,qBAAqB;AACrB,qEAAqE;AACrE,gFAAgF;AAEhF,gDAAgD;AAChD,OAAO,KAAK,mBAAmB,MAAM,uCAAuC,CAAC;AAC7E,4EAA4E;AAC5E,OAAO,KAAK,sBAAsB,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAC3F,wCAAwC;AACxC,OAAO,KAAK,uBAAuB,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,wBAAwB,MAAM,6CAA6C,CAAC;AACxF,2CAA2C;AAC3C,OAAO,KAAK,uBAAuB,MAAM,2CAA2C,CAAC;AACrF,cAAc,+BAA+B,CAAC;AAC9C,gCAAgC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,+BAA+B;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,sEAAsE;AACtE,cAAc,wBAAwB,CAAC;AACvC,iDAAiD;AACjD,cAAc,kCAAkC,CAAC;AACjD,wCAAwC;AACxC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,qBAAqB;AACrB,qEAAqE;AACrE,gFAAgF;AAEhF,gDAAgD;AAChD,OAAO,KAAK,mBAAmB,MAAM,uCAAuC,CAAC;AAC7E,4EAA4E;AAC5E,OAAO,KAAK,sBAAsB,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAC3F,wCAAwC;AACxC,OAAO,KAAK,uBAAuB,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,wBAAwB,MAAM,6CAA6C,CAAC;AACxF,2CAA2C;AAC3C,OAAO,KAAK,uBAAuB,MAAM,2CAA2C,CAAC;AACrF,cAAc,+BAA+B,CAAC;AAC9C,gCAAgC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,+BAA+B;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,sEAAsE;AACtE,cAAc,wBAAwB,CAAC;AACvC,iDAAiD;AACjD,cAAc,kCAAkC,CAAC;AACjD,wCAAwC;AACxC,cAAc,eAAe,CAAC;AAC9B,0CAA0C;AAC1C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { createUseCases } from '@multitenantkit/composition';
|
|
2
|
+
import type { ToolkitOptions } from '@multitenantkit/domain-contracts';
|
|
3
|
+
import type { Express, Router } from 'express';
|
|
4
|
+
/**
|
|
5
|
+
* Create a complete Express application with Supabase defaults
|
|
6
|
+
*
|
|
7
|
+
* This convenience function sets up a fully configured Express app with:
|
|
8
|
+
* - PostgreSQL persistence
|
|
9
|
+
* - Supabase authentication
|
|
10
|
+
* - Pre-configured Supabase defaults (auth.users, raw_user_meta_data, etc.)
|
|
11
|
+
* - All MultiTenantKit routes and middleware
|
|
12
|
+
*
|
|
13
|
+
* Accepts standard ToolkitOptions and applies Supabase-specific defaults.
|
|
14
|
+
* User-provided options take precedence over defaults.
|
|
15
|
+
*
|
|
16
|
+
* @template TUserCustomFields - Custom fields schema for Users
|
|
17
|
+
* @template TOrganizationCustomFields - Custom fields schema for Organizations
|
|
18
|
+
* @template TOrganizationMembershipCustomFields - Custom fields schema for Organization Memberships
|
|
19
|
+
*
|
|
20
|
+
* @param options - ToolkitOptions with Supabase defaults applied automatically
|
|
21
|
+
* @returns Express application ready to listen on a port
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Minimal setup - no custom fields
|
|
26
|
+
* import { createSupabaseExpressApp } from '@multitenantkit/sdk';
|
|
27
|
+
*
|
|
28
|
+
* const app = createSupabaseExpressApp();
|
|
29
|
+
* app.listen(3000);
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // With custom fields and hooks
|
|
35
|
+
* import { createSupabaseExpressApp } from '@multitenantkit/sdk';
|
|
36
|
+
* import { z } from 'zod';
|
|
37
|
+
*
|
|
38
|
+
* const app = createSupabaseExpressApp({
|
|
39
|
+
* users: {
|
|
40
|
+
* customFields: {
|
|
41
|
+
* customSchema: z.object({
|
|
42
|
+
* firstName: z.string(),
|
|
43
|
+
* lastName: z.string()
|
|
44
|
+
* })
|
|
45
|
+
* }
|
|
46
|
+
* },
|
|
47
|
+
* useCaseHooks: {
|
|
48
|
+
* CreateUser: {
|
|
49
|
+
* afterExecution: async ({ stepResults }) => {
|
|
50
|
+
* await sendWelcomeEmail(stepResults.output.email);
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* });
|
|
55
|
+
*
|
|
56
|
+
* app.listen(3000);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function createSupabaseExpressApp<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}>(options?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>): Express;
|
|
60
|
+
/**
|
|
61
|
+
* Create an Express Router with Supabase defaults
|
|
62
|
+
*
|
|
63
|
+
* Use this when you want to integrate MultiTenantKit into an existing Express application.
|
|
64
|
+
* The router can be mounted at any path in your app.
|
|
65
|
+
*
|
|
66
|
+
* Accepts standard ToolkitOptions and applies Supabase-specific defaults.
|
|
67
|
+
* User-provided options take precedence over defaults.
|
|
68
|
+
*
|
|
69
|
+
* @template TUserCustomFields - Custom fields schema for Users
|
|
70
|
+
* @template TOrganizationCustomFields - Custom fields schema for Organizations
|
|
71
|
+
* @template TOrganizationMembershipCustomFields - Custom fields schema for Organization Memberships
|
|
72
|
+
*
|
|
73
|
+
* @param options - ToolkitOptions with Supabase defaults applied automatically
|
|
74
|
+
* @returns Express Router with all MultiTenantKit routes
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* // Add to existing Express app
|
|
79
|
+
* import express from 'express';
|
|
80
|
+
* import { createSupabaseExpressRouter } from '@multitenantkit/sdk';
|
|
81
|
+
*
|
|
82
|
+
* const app = express();
|
|
83
|
+
*
|
|
84
|
+
* // Your existing routes
|
|
85
|
+
* app.get('/api/billing', billingHandler);
|
|
86
|
+
*
|
|
87
|
+
* // Add MultiTenantKit routes under /api/teams
|
|
88
|
+
* const teamsRouter = createSupabaseExpressRouter();
|
|
89
|
+
* app.use('/api/teams', teamsRouter);
|
|
90
|
+
*
|
|
91
|
+
* app.listen(3000);
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* // With custom fields
|
|
97
|
+
* import { createSupabaseExpressRouter } from '@multitenantkit/sdk';
|
|
98
|
+
* import { z } from 'zod';
|
|
99
|
+
*
|
|
100
|
+
* const router = createSupabaseExpressRouter({
|
|
101
|
+
* users: {
|
|
102
|
+
* customFields: {
|
|
103
|
+
* customSchema: z.object({
|
|
104
|
+
* firstName: z.string(),
|
|
105
|
+
* lastName: z.string()
|
|
106
|
+
* })
|
|
107
|
+
* }
|
|
108
|
+
* }
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function createSupabaseExpressRouter<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}>(options?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>): Router;
|
|
113
|
+
/**
|
|
114
|
+
* Create use cases with Supabase defaults
|
|
115
|
+
*
|
|
116
|
+
* Use this when you want to use MultiTenantKit use cases directly without Express.
|
|
117
|
+
* Useful for background jobs, CLI tools, or custom transport layers.
|
|
118
|
+
*
|
|
119
|
+
* Accepts standard ToolkitOptions and applies Supabase-specific defaults.
|
|
120
|
+
* User-provided options take precedence over defaults.
|
|
121
|
+
*
|
|
122
|
+
* @template TUserCustomFields - Custom fields schema for Users
|
|
123
|
+
* @template TOrganizationCustomFields - Custom fields schema for Organizations
|
|
124
|
+
* @template TOrganizationMembershipCustomFields - Custom fields schema for Organization Memberships
|
|
125
|
+
*
|
|
126
|
+
* @param options - ToolkitOptions with Supabase defaults applied automatically
|
|
127
|
+
* @returns Configured use cases ready to execute
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* // Create use cases for background job
|
|
132
|
+
* import { createSupabaseUseCases } from '@multitenantkit/sdk';
|
|
133
|
+
* import { z } from 'zod';
|
|
134
|
+
*
|
|
135
|
+
* const useCases = createSupabaseUseCases({
|
|
136
|
+
* users: {
|
|
137
|
+
* customFields: {
|
|
138
|
+
* customSchema: z.object({
|
|
139
|
+
* firstName: z.string(),
|
|
140
|
+
* lastName: z.string()
|
|
141
|
+
* })
|
|
142
|
+
* }
|
|
143
|
+
* }
|
|
144
|
+
* });
|
|
145
|
+
*
|
|
146
|
+
* // Use in background job
|
|
147
|
+
* const result = await useCases.users.getUser.execute({
|
|
148
|
+
* userId: 'user-123',
|
|
149
|
+
* requestId: crypto.randomUUID(),
|
|
150
|
+
* actorUserId: 'system'
|
|
151
|
+
* });
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
export declare function createSupabaseUseCases<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}>(options?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>): ReturnType<typeof createUseCases<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>>;
|
|
155
|
+
//# sourceMappingURL=supabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,cAAc,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAqH/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,wBAAwB,CAEpC,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,OAAO,CAAC,EAAE,cAAc,CACpB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,OAAO,CAwCT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,2BAA2B,CAEvC,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,OAAO,CAAC,EAAE,cAAc,CACpB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,MAAM,CAwCR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,sBAAsB,CAElC,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,OAAO,CAAC,EAAE,cAAc,CACpB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,UAAU,CACT,OAAO,cAAc,CACjB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CACJ,CA2BA"}
|
package/dist/supabase.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Supabase-specific convenience functions
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { createSupabaseAuthService } from '@multitenantkit/adapter-auth-supabase';
|
|
5
|
+
import { buildExpressApp, buildExpressRouter } from '@multitenantkit/adapter-transport-express';
|
|
6
|
+
import { buildHandlers } from '@multitenantkit/api-handlers';
|
|
7
|
+
import { createPostgresAdapters, createSystemAdapters, createUseCases } from '@multitenantkit/composition';
|
|
8
|
+
/**
|
|
9
|
+
* Merges user-provided ToolkitOptions with Supabase-specific defaults.
|
|
10
|
+
*
|
|
11
|
+
* Supabase defaults applied:
|
|
12
|
+
* - namingStrategy: 'snake_case'
|
|
13
|
+
* - users.database: { schema: 'auth', table: 'users' }
|
|
14
|
+
* - users.customFields.columnMapping: { externalId: 'id', username: 'email' }
|
|
15
|
+
* - users.customFields.customMapper: maps to/from raw_user_meta_data
|
|
16
|
+
* - organizations.database: { schema: 'public', table: 'organizations' }
|
|
17
|
+
* - organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }
|
|
18
|
+
*
|
|
19
|
+
* User-provided options take precedence over defaults.
|
|
20
|
+
*/
|
|
21
|
+
function applySupabaseDefaults(options) {
|
|
22
|
+
// Default Supabase customMapper for users (maps to raw_user_meta_data)
|
|
23
|
+
const supabaseUserMapper = {
|
|
24
|
+
toDb: (fields) => ({
|
|
25
|
+
raw_user_meta_data: {
|
|
26
|
+
sub: fields.id,
|
|
27
|
+
email: fields.email,
|
|
28
|
+
...fields,
|
|
29
|
+
email_verified: true,
|
|
30
|
+
phone_verified: false
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
33
|
+
toDomain: (dbRow) => {
|
|
34
|
+
const metadata = dbRow.raw_user_meta_data || {};
|
|
35
|
+
// biome-ignore lint/correctness/noUnusedVariables: these fields are intentionally extracted to exclude them
|
|
36
|
+
const { sub, email_verified, phone_verified, ...customFields } = metadata;
|
|
37
|
+
return customFields;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
// Default Supabase columnMapping for users
|
|
41
|
+
const supabaseUserColumnMapping = {
|
|
42
|
+
externalId: 'id',
|
|
43
|
+
username: 'email'
|
|
44
|
+
};
|
|
45
|
+
// Build users config with Supabase defaults
|
|
46
|
+
const usersConfig = {
|
|
47
|
+
customFields: {
|
|
48
|
+
// User's customSchema if provided
|
|
49
|
+
...(options?.users?.customFields?.customSchema && {
|
|
50
|
+
customSchema: options.users.customFields.customSchema
|
|
51
|
+
}),
|
|
52
|
+
// Use user's columnMapping or Supabase default
|
|
53
|
+
columnMapping: options?.users?.customFields?.columnMapping ?? supabaseUserColumnMapping,
|
|
54
|
+
// Use user's customMapper or Supabase default (only if customSchema is provided)
|
|
55
|
+
...(options?.users?.customFields?.customSchema && {
|
|
56
|
+
customMapper: options?.users?.customFields?.customMapper ?? supabaseUserMapper
|
|
57
|
+
})
|
|
58
|
+
},
|
|
59
|
+
database: {
|
|
60
|
+
schema: options?.users?.database?.schema ?? 'auth',
|
|
61
|
+
table: options?.users?.database?.table ?? 'users',
|
|
62
|
+
...(options?.users?.database?.namingStrategy && {
|
|
63
|
+
namingStrategy: options.users.database.namingStrategy
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
// Build organizations config with Supabase defaults
|
|
68
|
+
const organizationsConfig = {
|
|
69
|
+
...(options?.organizations?.customFields && {
|
|
70
|
+
customFields: options.organizations.customFields
|
|
71
|
+
}),
|
|
72
|
+
database: {
|
|
73
|
+
schema: options?.organizations?.database?.schema ?? 'public',
|
|
74
|
+
table: options?.organizations?.database?.table ?? 'organizations',
|
|
75
|
+
...(options?.organizations?.database?.namingStrategy && {
|
|
76
|
+
namingStrategy: options.organizations.database.namingStrategy
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
// Build organization memberships config with Supabase defaults
|
|
81
|
+
const organizationMembershipsConfig = {
|
|
82
|
+
...(options?.organizationMemberships?.customFields && {
|
|
83
|
+
customFields: options.organizationMemberships.customFields
|
|
84
|
+
}),
|
|
85
|
+
database: {
|
|
86
|
+
schema: options?.organizationMemberships?.database?.schema ?? 'public',
|
|
87
|
+
table: options?.organizationMemberships?.database?.table ?? 'organization_memberships',
|
|
88
|
+
...(options?.organizationMemberships?.database?.namingStrategy && {
|
|
89
|
+
namingStrategy: options.organizationMemberships.database.namingStrategy
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return {
|
|
94
|
+
namingStrategy: options?.namingStrategy ?? 'snake_case',
|
|
95
|
+
users: usersConfig,
|
|
96
|
+
organizations: organizationsConfig,
|
|
97
|
+
organizationMemberships: organizationMembershipsConfig,
|
|
98
|
+
// Pass through other options as-is
|
|
99
|
+
...(options?.useCaseHooks && { useCaseHooks: options.useCaseHooks }),
|
|
100
|
+
...(options?.responseTransformers && { responseTransformers: options.responseTransformers })
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create a complete Express application with Supabase defaults
|
|
105
|
+
*
|
|
106
|
+
* This convenience function sets up a fully configured Express app with:
|
|
107
|
+
* - PostgreSQL persistence
|
|
108
|
+
* - Supabase authentication
|
|
109
|
+
* - Pre-configured Supabase defaults (auth.users, raw_user_meta_data, etc.)
|
|
110
|
+
* - All MultiTenantKit routes and middleware
|
|
111
|
+
*
|
|
112
|
+
* Accepts standard ToolkitOptions and applies Supabase-specific defaults.
|
|
113
|
+
* User-provided options take precedence over defaults.
|
|
114
|
+
*
|
|
115
|
+
* @template TUserCustomFields - Custom fields schema for Users
|
|
116
|
+
* @template TOrganizationCustomFields - Custom fields schema for Organizations
|
|
117
|
+
* @template TOrganizationMembershipCustomFields - Custom fields schema for Organization Memberships
|
|
118
|
+
*
|
|
119
|
+
* @param options - ToolkitOptions with Supabase defaults applied automatically
|
|
120
|
+
* @returns Express application ready to listen on a port
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* // Minimal setup - no custom fields
|
|
125
|
+
* import { createSupabaseExpressApp } from '@multitenantkit/sdk';
|
|
126
|
+
*
|
|
127
|
+
* const app = createSupabaseExpressApp();
|
|
128
|
+
* app.listen(3000);
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* // With custom fields and hooks
|
|
134
|
+
* import { createSupabaseExpressApp } from '@multitenantkit/sdk';
|
|
135
|
+
* import { z } from 'zod';
|
|
136
|
+
*
|
|
137
|
+
* const app = createSupabaseExpressApp({
|
|
138
|
+
* users: {
|
|
139
|
+
* customFields: {
|
|
140
|
+
* customSchema: z.object({
|
|
141
|
+
* firstName: z.string(),
|
|
142
|
+
* lastName: z.string()
|
|
143
|
+
* })
|
|
144
|
+
* }
|
|
145
|
+
* },
|
|
146
|
+
* useCaseHooks: {
|
|
147
|
+
* CreateUser: {
|
|
148
|
+
* afterExecution: async ({ stepResults }) => {
|
|
149
|
+
* await sendWelcomeEmail(stepResults.output.email);
|
|
150
|
+
* }
|
|
151
|
+
* }
|
|
152
|
+
* }
|
|
153
|
+
* });
|
|
154
|
+
*
|
|
155
|
+
* app.listen(3000);
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export function createSupabaseExpressApp(options) {
|
|
159
|
+
const toolkitOptions = applySupabaseDefaults(options);
|
|
160
|
+
// 1. Create persistence adapters (PostgreSQL)
|
|
161
|
+
const persistenceAdapters = createPostgresAdapters(undefined, toolkitOptions);
|
|
162
|
+
// 2. Create system and metrics adapters
|
|
163
|
+
const systemAdapters = createSystemAdapters();
|
|
164
|
+
// 3. Create use cases with all adapters
|
|
165
|
+
const useCases = createUseCases({
|
|
166
|
+
persistence: persistenceAdapters,
|
|
167
|
+
system: systemAdapters
|
|
168
|
+
}, toolkitOptions);
|
|
169
|
+
// 4. Build HTTP handlers
|
|
170
|
+
const handlers = buildHandlers(useCases, toolkitOptions);
|
|
171
|
+
// 5. Create Supabase auth service
|
|
172
|
+
const authService = createSupabaseAuthService();
|
|
173
|
+
// 6. Build Express app with all middleware and routes
|
|
174
|
+
const app = buildExpressApp(handlers, authService);
|
|
175
|
+
return app;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Create an Express Router with Supabase defaults
|
|
179
|
+
*
|
|
180
|
+
* Use this when you want to integrate MultiTenantKit into an existing Express application.
|
|
181
|
+
* The router can be mounted at any path in your app.
|
|
182
|
+
*
|
|
183
|
+
* Accepts standard ToolkitOptions and applies Supabase-specific defaults.
|
|
184
|
+
* User-provided options take precedence over defaults.
|
|
185
|
+
*
|
|
186
|
+
* @template TUserCustomFields - Custom fields schema for Users
|
|
187
|
+
* @template TOrganizationCustomFields - Custom fields schema for Organizations
|
|
188
|
+
* @template TOrganizationMembershipCustomFields - Custom fields schema for Organization Memberships
|
|
189
|
+
*
|
|
190
|
+
* @param options - ToolkitOptions with Supabase defaults applied automatically
|
|
191
|
+
* @returns Express Router with all MultiTenantKit routes
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* // Add to existing Express app
|
|
196
|
+
* import express from 'express';
|
|
197
|
+
* import { createSupabaseExpressRouter } from '@multitenantkit/sdk';
|
|
198
|
+
*
|
|
199
|
+
* const app = express();
|
|
200
|
+
*
|
|
201
|
+
* // Your existing routes
|
|
202
|
+
* app.get('/api/billing', billingHandler);
|
|
203
|
+
*
|
|
204
|
+
* // Add MultiTenantKit routes under /api/teams
|
|
205
|
+
* const teamsRouter = createSupabaseExpressRouter();
|
|
206
|
+
* app.use('/api/teams', teamsRouter);
|
|
207
|
+
*
|
|
208
|
+
* app.listen(3000);
|
|
209
|
+
* ```
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```typescript
|
|
213
|
+
* // With custom fields
|
|
214
|
+
* import { createSupabaseExpressRouter } from '@multitenantkit/sdk';
|
|
215
|
+
* import { z } from 'zod';
|
|
216
|
+
*
|
|
217
|
+
* const router = createSupabaseExpressRouter({
|
|
218
|
+
* users: {
|
|
219
|
+
* customFields: {
|
|
220
|
+
* customSchema: z.object({
|
|
221
|
+
* firstName: z.string(),
|
|
222
|
+
* lastName: z.string()
|
|
223
|
+
* })
|
|
224
|
+
* }
|
|
225
|
+
* }
|
|
226
|
+
* });
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
export function createSupabaseExpressRouter(options) {
|
|
230
|
+
const toolkitOptions = applySupabaseDefaults(options);
|
|
231
|
+
// 1. Create persistence adapters (PostgreSQL)
|
|
232
|
+
const persistenceAdapters = createPostgresAdapters(undefined, toolkitOptions);
|
|
233
|
+
// 2. Create system and metrics adapters
|
|
234
|
+
const systemAdapters = createSystemAdapters();
|
|
235
|
+
// 3. Create use cases with all adapters
|
|
236
|
+
const useCases = createUseCases({
|
|
237
|
+
persistence: persistenceAdapters,
|
|
238
|
+
system: systemAdapters
|
|
239
|
+
}, toolkitOptions);
|
|
240
|
+
// 4. Build HTTP handlers
|
|
241
|
+
const handlers = buildHandlers(useCases, toolkitOptions);
|
|
242
|
+
// 5. Create Supabase auth service
|
|
243
|
+
const authService = createSupabaseAuthService();
|
|
244
|
+
// 6. Build Express router with routes only (no global middleware)
|
|
245
|
+
const router = buildExpressRouter(handlers, authService);
|
|
246
|
+
return router;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Create use cases with Supabase defaults
|
|
250
|
+
*
|
|
251
|
+
* Use this when you want to use MultiTenantKit use cases directly without Express.
|
|
252
|
+
* Useful for background jobs, CLI tools, or custom transport layers.
|
|
253
|
+
*
|
|
254
|
+
* Accepts standard ToolkitOptions and applies Supabase-specific defaults.
|
|
255
|
+
* User-provided options take precedence over defaults.
|
|
256
|
+
*
|
|
257
|
+
* @template TUserCustomFields - Custom fields schema for Users
|
|
258
|
+
* @template TOrganizationCustomFields - Custom fields schema for Organizations
|
|
259
|
+
* @template TOrganizationMembershipCustomFields - Custom fields schema for Organization Memberships
|
|
260
|
+
*
|
|
261
|
+
* @param options - ToolkitOptions with Supabase defaults applied automatically
|
|
262
|
+
* @returns Configured use cases ready to execute
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* // Create use cases for background job
|
|
267
|
+
* import { createSupabaseUseCases } from '@multitenantkit/sdk';
|
|
268
|
+
* import { z } from 'zod';
|
|
269
|
+
*
|
|
270
|
+
* const useCases = createSupabaseUseCases({
|
|
271
|
+
* users: {
|
|
272
|
+
* customFields: {
|
|
273
|
+
* customSchema: z.object({
|
|
274
|
+
* firstName: z.string(),
|
|
275
|
+
* lastName: z.string()
|
|
276
|
+
* })
|
|
277
|
+
* }
|
|
278
|
+
* }
|
|
279
|
+
* });
|
|
280
|
+
*
|
|
281
|
+
* // Use in background job
|
|
282
|
+
* const result = await useCases.users.getUser.execute({
|
|
283
|
+
* userId: 'user-123',
|
|
284
|
+
* requestId: crypto.randomUUID(),
|
|
285
|
+
* actorUserId: 'system'
|
|
286
|
+
* });
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
export function createSupabaseUseCases(options) {
|
|
290
|
+
const toolkitOptions = applySupabaseDefaults(options);
|
|
291
|
+
// 1. Create persistence adapters (PostgreSQL)
|
|
292
|
+
const persistenceAdapters = createPostgresAdapters(undefined, toolkitOptions);
|
|
293
|
+
// 2. Create system and metrics adapters
|
|
294
|
+
const systemAdapters = createSystemAdapters();
|
|
295
|
+
// 3. Create and return use cases
|
|
296
|
+
const useCases = createUseCases({
|
|
297
|
+
persistence: persistenceAdapters,
|
|
298
|
+
system: systemAdapters
|
|
299
|
+
}, toolkitOptions);
|
|
300
|
+
return useCases;
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=supabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACH,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACjB,MAAM,6BAA6B,CAAC;AAIrC;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CAK1B,OAIC;IAMD,uEAAuE;IACvE,MAAM,kBAAkB,GAAG;QACvB,IAAI,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC;YACpB,kBAAkB,EAAE;gBAChB,GAAG,EAAE,MAAM,CAAC,EAAE;gBACd,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,MAAM;gBACT,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,KAAK;aACxB;SACJ,CAAC;QACF,QAAQ,EAAE,CAAC,KAAU,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC;YAChD,4GAA4G;YAC5G,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC;YAC1E,OAAO,YAAY,CAAC;QACxB,CAAC;KACJ,CAAC;IAEF,2CAA2C;IAC3C,MAAM,yBAAyB,GAAG;QAC9B,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,OAAO;KACpB,CAAC;IAEF,4CAA4C;IAC5C,MAAM,WAAW,GAAG;QAChB,YAAY,EAAE;YACV,kCAAkC;YAClC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,IAAI;gBAC9C,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY;aACxD,CAAC;YACF,+CAA+C;YAC/C,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,IAAI,yBAAyB;YACvF,iFAAiF;YACjF,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,IAAI;gBAC9C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,IAAI,kBAAkB;aACjF,CAAC;SACwC;QAC9C,QAAQ,EAAE;YACN,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,MAAM;YAClD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,OAAO;YACjD,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,IAAI;gBAC5C,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc;aACxD,CAAC;SACL;KACJ,CAAC;IAEF,oDAAoD;IACpD,MAAM,mBAAmB,GAAG;QACxB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,IAAI;YACxC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,YAAY;SACnD,CAAC;QACF,QAAQ,EAAE;YACN,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,IAAI,QAAQ;YAC5D,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,IAAI,eAAe;YACjE,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,IAAI;gBACpD,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc;aAChE,CAAC;SACL;KACJ,CAAC;IAEF,+DAA+D;IAC/D,MAAM,6BAA6B,GAAG;QAClC,GAAG,CAAC,OAAO,EAAE,uBAAuB,EAAE,YAAY,IAAI;YAClD,YAAY,EAAE,OAAO,CAAC,uBAAuB,CAAC,YAAY;SAC7D,CAAC;QACF,QAAQ,EAAE;YACN,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,IAAI,QAAQ;YACtE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,KAAK,IAAI,0BAA0B;YACtF,GAAG,CAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,cAAc,IAAI;gBAC9D,cAAc,EAAE,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,cAAc;aAC1E,CAAC;SACL;KACJ,CAAC;IAEF,OAAO;QACH,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,YAAY;QACvD,KAAK,EAAE,WAAW;QAClB,aAAa,EAAE,mBAAmB;QAClC,uBAAuB,EAAE,6BAA6B;QACtD,mCAAmC;QACnC,GAAG,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;QACpE,GAAG,CAAC,OAAO,EAAE,oBAAoB,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC;KAC/F,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAM,UAAU,wBAAwB,CAQpC,OAIC;IAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,sBAAsB,CAIhD,SAAS,EAAE,cAAc,CAAC,CAAC;IAE7B,wCAAwC;IACxC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAE9C,wCAAwC;IACxC,MAAM,QAAQ,GAAG,cAAc,CAK3B;QACI,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,cAAc;KACzB,EACD,cAAc,CACjB,CAAC;IAEF,yBAAyB;IACzB,MAAM,QAAQ,GAAG,aAAa,CAI5B,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE5B,kCAAkC;IAClC,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,sDAAsD;IACtD,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEnD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,UAAU,2BAA2B,CAQvC,OAIC;IAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,sBAAsB,CAIhD,SAAS,EAAE,cAAc,CAAC,CAAC;IAE7B,wCAAwC;IACxC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAE9C,wCAAwC;IACxC,MAAM,QAAQ,GAAG,cAAc,CAK3B;QACI,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,cAAc;KACzB,EACD,cAAc,CACjB,CAAC;IAEF,yBAAyB;IACzB,MAAM,QAAQ,GAAG,aAAa,CAI5B,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE5B,kCAAkC;IAClC,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,kEAAkE;IAClE,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEzD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,sBAAsB,CAQlC,OAIC;IAQD,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,sBAAsB,CAIhD,SAAS,EAAE,cAAc,CAAC,CAAC;IAE7B,wCAAwC;IACxC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAE9C,iCAAiC;IACjC,MAAM,QAAQ,GAAG,cAAc,CAK3B;QACI,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,cAAc;KACzB,EACD,cAAc,CACjB,CAAC;IAEF,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multitenantkit/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Complete SDK for building multi-tenant SaaS applications - includes all adapters and options",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"multitenantkit",
|
|
@@ -61,11 +61,11 @@
|
|
|
61
61
|
"@multitenantkit/adapter-system-crypto-uuid": "^0.1.1",
|
|
62
62
|
"@multitenantkit/adapter-system-system-clock": "^0.1.1",
|
|
63
63
|
"@multitenantkit/adapter-transport-express": "^0.1.1",
|
|
64
|
-
"@multitenantkit/api-handlers": "^0.1.
|
|
64
|
+
"@multitenantkit/api-handlers": "^0.1.2",
|
|
65
65
|
"@multitenantkit/api-contracts": "^0.1.1",
|
|
66
66
|
"@multitenantkit/domain-contracts": "^0.1.1",
|
|
67
|
-
"@multitenantkit/domain": "^0.1.
|
|
68
|
-
"@multitenantkit/composition": "^0.1.
|
|
67
|
+
"@multitenantkit/domain": "^0.1.2",
|
|
68
|
+
"@multitenantkit/composition": "^0.1.2"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"typescript": "^5.0.0"
|