@multitenantkit/sdk-supabase 0.2.8 → 0.2.10
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/factories/AdapterFactory.d.ts +15 -6
- package/dist/factories/AdapterFactory.d.ts.map +1 -1
- package/dist/factories/AdapterFactory.js +37 -3
- package/dist/factories/AdapterFactory.js.map +1 -1
- package/dist/factories/EdgeHandlerFactory.d.ts +97 -0
- package/dist/factories/EdgeHandlerFactory.d.ts.map +1 -0
- package/dist/factories/EdgeHandlerFactory.js +78 -0
- package/dist/factories/EdgeHandlerFactory.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Applies Supabase-specific defaults automatically.
|
|
7
7
|
*/
|
|
8
8
|
import type { Adapters, ToolkitOptions } from '@multitenantkit/domain-contracts';
|
|
9
|
-
import type
|
|
9
|
+
import { type SupabaseClient } from '@supabase/supabase-js';
|
|
10
10
|
/**
|
|
11
11
|
* Merges user-provided ToolkitOptions with Supabase-specific defaults.
|
|
12
12
|
*
|
|
@@ -29,8 +29,13 @@ export declare function applySupabaseDefaults<TUserCustomFields, TOrganizationCu
|
|
|
29
29
|
* Options for creating Supabase adapters
|
|
30
30
|
*/
|
|
31
31
|
export interface CreateSupabaseAdaptersOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> {
|
|
32
|
-
/**
|
|
33
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Supabase client instance.
|
|
34
|
+
* If not provided, one will be created automatically using environment variables:
|
|
35
|
+
* - SUPABASE_URL or PROJECT_URL
|
|
36
|
+
* - SUPABASE_SERVICE_ROLE_KEY or SERVICE_ROLE_KEY
|
|
37
|
+
*/
|
|
38
|
+
client?: SupabaseClient;
|
|
34
39
|
/**
|
|
35
40
|
* Toolkit options for custom fields and database configuration.
|
|
36
41
|
* Supabase defaults are applied automatically (auth.users, snake_case, etc.)
|
|
@@ -64,13 +69,17 @@ export interface SupabaseAdaptersResult<TUserCustomFields, TOrganizationCustomFi
|
|
|
64
69
|
*
|
|
65
70
|
* @example
|
|
66
71
|
* ```typescript
|
|
72
|
+
* // Simplest usage - auto-creates client from env vars
|
|
67
73
|
* import { createSupabaseAdapters, createUseCases } from '@multitenantkit/sdk-supabase';
|
|
68
|
-
* import { createClient } from '@supabase/supabase-js';
|
|
69
74
|
*
|
|
75
|
+
* const { adapters, toolkitOptions } = createSupabaseAdapters();
|
|
76
|
+
* const useCases = createUseCases(adapters, toolkitOptions);
|
|
77
|
+
*
|
|
78
|
+
* // Or provide your own client
|
|
79
|
+
* import { createClient } from '@supabase/supabase-js';
|
|
70
80
|
* const client = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);
|
|
71
81
|
* const { adapters, toolkitOptions } = createSupabaseAdapters({ client });
|
|
72
|
-
* const useCases = createUseCases(adapters, toolkitOptions);
|
|
73
82
|
* ```
|
|
74
83
|
*/
|
|
75
|
-
export declare function createSupabaseAdapters<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}>(options
|
|
84
|
+
export declare function createSupabaseAdapters<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}>(options?: CreateSupabaseAdaptersOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>): SupabaseAdaptersResult<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>;
|
|
76
85
|
//# sourceMappingURL=AdapterFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdapterFactory.d.ts","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACR,QAAQ,EAIR,cAAc,EAEjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AdapterFactory.d.ts","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACR,QAAQ,EAIR,cAAc,EAEjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAoC1E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACjC,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,EAEnC,OAAO,CAAC,EAAE,cAAc,CACpB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,cAAc,CACb,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAoEA;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B,CAC1C,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB,CACnC,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC;IAEnC,iDAAiD;IACjD,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAAC;IACF,yDAAyD;IACzD,cAAc,EAAE,cAAc,CAC1B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAAC;CACL;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,CAElC,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,OAAO,CAAC,EAAE,6BAA6B,CACnC,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,sBAAsB,CACrB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAyDA"}
|
|
@@ -7,6 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { createSupabaseRepositories } from '@multitenantkit/adapter-persistence-supabase';
|
|
9
9
|
import { WebCryptoUuid } from '@multitenantkit/adapter-system-web-crypto';
|
|
10
|
+
import { createClient } from '@supabase/supabase-js';
|
|
11
|
+
/**
|
|
12
|
+
* Get environment variable with runtime detection (Node.js or Deno)
|
|
13
|
+
*/
|
|
14
|
+
function getEnvVar(key) {
|
|
15
|
+
// Deno runtime (Supabase Edge Functions)
|
|
16
|
+
if (typeof Deno !== 'undefined') {
|
|
17
|
+
return Deno.env.get(key);
|
|
18
|
+
}
|
|
19
|
+
// Node.js runtime
|
|
20
|
+
if (typeof process !== 'undefined' && process.env) {
|
|
21
|
+
return process.env[key];
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
10
25
|
/**
|
|
11
26
|
* Simple clock implementation using standard Date API
|
|
12
27
|
* Deno compatible - no Node.js dependencies
|
|
@@ -115,16 +130,35 @@ export function applySupabaseDefaults(options) {
|
|
|
115
130
|
*
|
|
116
131
|
* @example
|
|
117
132
|
* ```typescript
|
|
133
|
+
* // Simplest usage - auto-creates client from env vars
|
|
118
134
|
* import { createSupabaseAdapters, createUseCases } from '@multitenantkit/sdk-supabase';
|
|
119
|
-
* import { createClient } from '@supabase/supabase-js';
|
|
120
135
|
*
|
|
136
|
+
* const { adapters, toolkitOptions } = createSupabaseAdapters();
|
|
137
|
+
* const useCases = createUseCases(adapters, toolkitOptions);
|
|
138
|
+
*
|
|
139
|
+
* // Or provide your own client
|
|
140
|
+
* import { createClient } from '@supabase/supabase-js';
|
|
121
141
|
* const client = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);
|
|
122
142
|
* const { adapters, toolkitOptions } = createSupabaseAdapters({ client });
|
|
123
|
-
* const useCases = createUseCases(adapters, toolkitOptions);
|
|
124
143
|
* ```
|
|
125
144
|
*/
|
|
126
145
|
export function createSupabaseAdapters(options) {
|
|
127
|
-
const { client, toolkitOptions: userOptions } = options;
|
|
146
|
+
const { client: providedClient, toolkitOptions: userOptions } = options ?? {};
|
|
147
|
+
// Create or use provided Supabase client
|
|
148
|
+
let client;
|
|
149
|
+
if (providedClient) {
|
|
150
|
+
client = providedClient;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Auto-create client from environment variables
|
|
154
|
+
const supabaseUrl = getEnvVar('SUPABASE_URL') ?? getEnvVar('PROJECT_URL');
|
|
155
|
+
const supabaseServiceKey = getEnvVar('SUPABASE_SERVICE_ROLE_KEY') ?? getEnvVar('SERVICE_ROLE_KEY');
|
|
156
|
+
if (!supabaseUrl || !supabaseServiceKey) {
|
|
157
|
+
throw new Error('Missing Supabase credentials. Either provide a client or set environment variables: ' +
|
|
158
|
+
'SUPABASE_URL/PROJECT_URL and SUPABASE_SERVICE_ROLE_KEY/SERVICE_ROLE_KEY');
|
|
159
|
+
}
|
|
160
|
+
client = createClient(supabaseUrl, supabaseServiceKey);
|
|
161
|
+
}
|
|
128
162
|
// Apply Supabase defaults to toolkit options
|
|
129
163
|
const toolkitOptions = applySupabaseDefaults(userOptions);
|
|
130
164
|
// Create persistence adapters using Supabase repositories
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdapterFactory.js","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AdapterFactory.js","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supabase Edge Handler Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a complete Edge Function handler with a single function call.
|
|
5
|
+
* All configuration is optional - uses sensible defaults.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolkitOptions } from '@multitenantkit/domain-contracts';
|
|
8
|
+
/**
|
|
9
|
+
* CORS configuration options for Edge Functions
|
|
10
|
+
*/
|
|
11
|
+
export interface CorsOptions {
|
|
12
|
+
/** Allowed origins - can be '*' for all, a single origin, or array of origins */
|
|
13
|
+
allowOrigin: string | string[];
|
|
14
|
+
/** Headers that can be used in the actual request */
|
|
15
|
+
allowHeaders: string[];
|
|
16
|
+
/** HTTP methods allowed when accessing the resource */
|
|
17
|
+
allowMethods: string[];
|
|
18
|
+
/** How long (in seconds) the results of a preflight request can be cached */
|
|
19
|
+
maxAge?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Edge Function configuration options
|
|
23
|
+
*/
|
|
24
|
+
export interface EdgeOptions {
|
|
25
|
+
/**
|
|
26
|
+
* Base path prefix for all routes.
|
|
27
|
+
* @default '/api'
|
|
28
|
+
*/
|
|
29
|
+
basePath?: string;
|
|
30
|
+
/**
|
|
31
|
+
* CORS configuration.
|
|
32
|
+
* @default Allows all origins with common headers
|
|
33
|
+
*/
|
|
34
|
+
cors?: CorsOptions;
|
|
35
|
+
/**
|
|
36
|
+
* Enable debug logging.
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
debug?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Options for createSupabaseEdgeHandler
|
|
43
|
+
*/
|
|
44
|
+
export interface CreateSupabaseEdgeHandlerOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> {
|
|
45
|
+
/**
|
|
46
|
+
* Toolkit options for custom fields and configuration.
|
|
47
|
+
* Supabase defaults are applied automatically.
|
|
48
|
+
*/
|
|
49
|
+
toolkitOptions?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>;
|
|
50
|
+
/**
|
|
51
|
+
* Edge Function configuration (basePath, cors, debug).
|
|
52
|
+
* @default { basePath: '/api' }
|
|
53
|
+
*/
|
|
54
|
+
edgeOptions?: EdgeOptions;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a complete Supabase Edge Function handler with a single call.
|
|
58
|
+
*
|
|
59
|
+
* This is the simplest way to set up MultiTenantKit for Supabase Edge Functions.
|
|
60
|
+
* Everything is auto-configured from environment variables.
|
|
61
|
+
*
|
|
62
|
+
* **Environment variables required:**
|
|
63
|
+
* - `SUPABASE_URL` or `PROJECT_URL`
|
|
64
|
+
* - `SUPABASE_SERVICE_ROLE_KEY` or `SERVICE_ROLE_KEY`
|
|
65
|
+
*
|
|
66
|
+
* **Supabase defaults applied automatically:**
|
|
67
|
+
* - `namingStrategy: 'snake_case'`
|
|
68
|
+
* - `users.database: { schema: 'public', table: 'profiles' }`
|
|
69
|
+
* - `organizations.database: { schema: 'public', table: 'organizations' }`
|
|
70
|
+
* - `organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }`
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* // Simplest usage - zero configuration!
|
|
75
|
+
* import { createSupabaseEdgeHandler } from '@multitenantkit/sdk-supabase';
|
|
76
|
+
*
|
|
77
|
+
* const handler = createSupabaseEdgeHandler();
|
|
78
|
+
* Deno.serve(handler);
|
|
79
|
+
*
|
|
80
|
+
* // With custom fields
|
|
81
|
+
* const handler = createSupabaseEdgeHandler({
|
|
82
|
+
* toolkitOptions: {
|
|
83
|
+
* users: { customFields: { customSchema: userSchema } }
|
|
84
|
+
* }
|
|
85
|
+
* });
|
|
86
|
+
*
|
|
87
|
+
* // With edge options
|
|
88
|
+
* const handler = createSupabaseEdgeHandler({
|
|
89
|
+
* edgeOptions: {
|
|
90
|
+
* basePath: '/multitenantkit',
|
|
91
|
+
* cors: { allowOrigin: 'https://myapp.com', ... }
|
|
92
|
+
* }
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function createSupabaseEdgeHandler<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}>(options?: CreateSupabaseEdgeHandlerOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>): (request: Request) => Promise<Response>;
|
|
97
|
+
//# sourceMappingURL=EdgeHandlerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgeHandlerFactory.d.ts","sourceRoot":"","sources":["../../src/factories/EdgeHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIvE;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,iFAAiF;IACjF,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC,CAC7C,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC;IAEnC;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,yBAAyB,CAErC,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,OAAO,CAAC,EAAE,gCAAgC,CACtC,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA2BzC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supabase Edge Handler Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a complete Edge Function handler with a single function call.
|
|
5
|
+
* All configuration is optional - uses sensible defaults.
|
|
6
|
+
*/
|
|
7
|
+
import { createSupabaseAuthService } from '@multitenantkit/adapter-auth-supabase';
|
|
8
|
+
import { buildEdgeFunction } from '@multitenantkit/adapter-transport-supabase-edge';
|
|
9
|
+
import { buildHandlers } from '@multitenantkit/api-handlers';
|
|
10
|
+
import { createSupabaseAdapters } from './AdapterFactory';
|
|
11
|
+
import { createUseCases } from './UseCaseFactory';
|
|
12
|
+
/**
|
|
13
|
+
* Default CORS configuration for Edge Functions
|
|
14
|
+
*/
|
|
15
|
+
const DEFAULT_CORS = {
|
|
16
|
+
allowOrigin: '*',
|
|
17
|
+
allowHeaders: ['authorization', 'x-client-info', 'apikey', 'content-type', 'x-request-id'],
|
|
18
|
+
allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS']
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Create a complete Supabase Edge Function handler with a single call.
|
|
22
|
+
*
|
|
23
|
+
* This is the simplest way to set up MultiTenantKit for Supabase Edge Functions.
|
|
24
|
+
* Everything is auto-configured from environment variables.
|
|
25
|
+
*
|
|
26
|
+
* **Environment variables required:**
|
|
27
|
+
* - `SUPABASE_URL` or `PROJECT_URL`
|
|
28
|
+
* - `SUPABASE_SERVICE_ROLE_KEY` or `SERVICE_ROLE_KEY`
|
|
29
|
+
*
|
|
30
|
+
* **Supabase defaults applied automatically:**
|
|
31
|
+
* - `namingStrategy: 'snake_case'`
|
|
32
|
+
* - `users.database: { schema: 'public', table: 'profiles' }`
|
|
33
|
+
* - `organizations.database: { schema: 'public', table: 'organizations' }`
|
|
34
|
+
* - `organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }`
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* // Simplest usage - zero configuration!
|
|
39
|
+
* import { createSupabaseEdgeHandler } from '@multitenantkit/sdk-supabase';
|
|
40
|
+
*
|
|
41
|
+
* const handler = createSupabaseEdgeHandler();
|
|
42
|
+
* Deno.serve(handler);
|
|
43
|
+
*
|
|
44
|
+
* // With custom fields
|
|
45
|
+
* const handler = createSupabaseEdgeHandler({
|
|
46
|
+
* toolkitOptions: {
|
|
47
|
+
* users: { customFields: { customSchema: userSchema } }
|
|
48
|
+
* }
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* // With edge options
|
|
52
|
+
* const handler = createSupabaseEdgeHandler({
|
|
53
|
+
* edgeOptions: {
|
|
54
|
+
* basePath: '/multitenantkit',
|
|
55
|
+
* cors: { allowOrigin: 'https://myapp.com', ... }
|
|
56
|
+
* }
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function createSupabaseEdgeHandler(options) {
|
|
61
|
+
const { toolkitOptions: userToolkitOptions, edgeOptions } = options ?? {};
|
|
62
|
+
// 1. Create adapters (auto-creates Supabase client from env vars)
|
|
63
|
+
const { adapters, toolkitOptions } = createSupabaseAdapters({ toolkitOptions: userToolkitOptions });
|
|
64
|
+
// 2. Create use cases
|
|
65
|
+
const useCases = createUseCases(adapters, toolkitOptions);
|
|
66
|
+
// 3. Build HTTP handlers
|
|
67
|
+
const handlers = buildHandlers(useCases, toolkitOptions);
|
|
68
|
+
// 4. Create auth service (auto-detects runtime)
|
|
69
|
+
const authService = createSupabaseAuthService();
|
|
70
|
+
// 5. Build Edge Function handler with defaults
|
|
71
|
+
const handler = buildEdgeFunction(handlers, authService, {
|
|
72
|
+
basePath: edgeOptions?.basePath ?? '/api',
|
|
73
|
+
cors: edgeOptions?.cors ?? DEFAULT_CORS,
|
|
74
|
+
debug: edgeOptions?.debug ?? false
|
|
75
|
+
});
|
|
76
|
+
return handler;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=EdgeHandlerFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgeHandlerFactory.js","sourceRoot":"","sources":["../../src/factories/EdgeHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA6DlD;;GAEG;AACH,MAAM,YAAY,GAAgB;IAC9B,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC;IAC1F,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;CACrE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,yBAAyB,CAQrC,OAIC;IAED,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE1E,kEAAkE;IAClE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAIzD,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAE1C,sBAAsB;IACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE1D,yBAAyB;IACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEzD,gDAAgD;IAChD,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,+CAA+C;IAC/C,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE;QACrD,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,MAAM;QACzC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,YAAY;QACvC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,KAAK;KACrC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,8 +28,12 @@
|
|
|
28
28
|
* const useCases = createUseCases(adapters, toolkitOptions);
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
+
export { createSupabaseAuthService, type SupabaseAuthConfig, type SupabaseAuthEnvironmentVariables, type SupabaseAuthInput, SupabaseAuthService } from '@multitenantkit/adapter-auth-supabase';
|
|
31
32
|
export { createSupabaseClient, createSupabaseConfig, createSupabaseRepositories, type SupabaseClient, type SupabaseConfig, type SupabaseFactoryOptions, type SupabaseRepositoryBundle } from '@multitenantkit/adapter-persistence-supabase';
|
|
32
33
|
export { WebCryptoUuid } from '@multitenantkit/adapter-system-web-crypto';
|
|
34
|
+
export { buildEdgeFunction } from '@multitenantkit/adapter-transport-supabase-edge';
|
|
35
|
+
export { buildHandlers } from '@multitenantkit/api-handlers';
|
|
33
36
|
export { applySupabaseDefaults, type CreateSupabaseAdaptersOptions, createSupabaseAdapters, type SupabaseAdaptersResult } from './factories/AdapterFactory';
|
|
37
|
+
export { type CorsOptions, type CreateSupabaseEdgeHandlerOptions, createSupabaseEdgeHandler, type EdgeOptions } from './factories/EdgeHandlerFactory';
|
|
34
38
|
export { createUseCases } from './factories/UseCaseFactory';
|
|
35
39
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAChC,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EACH,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,gCAAgC,EACrC,KAAK,iBAAiB,EACtB,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAChC,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EACH,qBAAqB,EACrB,KAAK,6BAA6B,EAClC,sBAAsB,EACtB,KAAK,sBAAsB,EAC9B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,gCAAgC,EACrC,yBAAyB,EACzB,KAAK,WAAW,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -28,11 +28,19 @@
|
|
|
28
28
|
* const useCases = createUseCases(adapters, toolkitOptions);
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
+
// Re-export auth adapter (runtime-agnostic: works in both Node.js and Deno)
|
|
32
|
+
export { createSupabaseAuthService, SupabaseAuthService } from '@multitenantkit/adapter-auth-supabase';
|
|
31
33
|
// Re-export persistence adapter
|
|
32
34
|
export { createSupabaseClient, createSupabaseConfig, createSupabaseRepositories } from '@multitenantkit/adapter-persistence-supabase';
|
|
33
35
|
// Re-export system adapter
|
|
34
36
|
export { WebCryptoUuid } from '@multitenantkit/adapter-system-web-crypto';
|
|
37
|
+
// Re-export Edge Functions transport
|
|
38
|
+
export { buildEdgeFunction } from '@multitenantkit/adapter-transport-supabase-edge';
|
|
39
|
+
// Re-export API handlers
|
|
40
|
+
export { buildHandlers } from '@multitenantkit/api-handlers';
|
|
35
41
|
// Export factories and utilities
|
|
36
42
|
export { applySupabaseDefaults, createSupabaseAdapters } from './factories/AdapterFactory';
|
|
43
|
+
// Export Edge Handler factory (all-in-one function)
|
|
44
|
+
export { createSupabaseEdgeHandler } from './factories/EdgeHandlerFactory';
|
|
37
45
|
export { createUseCases } from './factories/UseCaseFactory';
|
|
38
46
|
//# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,gCAAgC;AAChC,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAK7B,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,4EAA4E;AAC5E,OAAO,EACH,yBAAyB,EAIzB,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAC/C,gCAAgC;AAChC,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAK7B,MAAM,8CAA8C,CAAC;AACtD,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,qCAAqC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,iCAAiC;AACjC,OAAO,EACH,qBAAqB,EAErB,sBAAsB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,oDAAoD;AACpD,OAAO,EAGH,yBAAyB,EAE5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multitenantkit/sdk-supabase",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MultiTenantKit SDK for Supabase Edge Functions (Deno compatible)",
|
|
6
6
|
"keywords": [
|
|
@@ -48,8 +48,11 @@
|
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@multitenantkit/domain": "^0.2.8",
|
|
50
50
|
"@multitenantkit/domain-contracts": "^0.2.0",
|
|
51
|
+
"@multitenantkit/api-handlers": "^0.2.0",
|
|
52
|
+
"@multitenantkit/adapter-auth-supabase": "^0.2.2",
|
|
51
53
|
"@multitenantkit/adapter-persistence-supabase": "^0.2.8",
|
|
52
54
|
"@multitenantkit/adapter-system-web-crypto": "^0.2.8",
|
|
55
|
+
"@multitenantkit/adapter-transport-supabase-edge": "^0.2.10",
|
|
53
56
|
"@supabase/supabase-js": "^2.39.0"
|
|
54
57
|
},
|
|
55
58
|
"devDependencies": {
|