@multitenantkit/sdk-supabase 0.2.3 → 0.2.4
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 +7 -3
- package/dist/factories/AdapterFactory.d.ts.map +1 -1
- package/dist/factories/AdapterFactory.js +15 -27
- package/dist/factories/AdapterFactory.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -12,12 +12,16 @@ import type { SupabaseClient } from '@supabase/supabase-js';
|
|
|
12
12
|
*
|
|
13
13
|
* Supabase defaults applied:
|
|
14
14
|
* - namingStrategy: 'snake_case'
|
|
15
|
-
* - users.database: { schema: '
|
|
16
|
-
* - users.customFields.columnMapping: { externalId: '
|
|
17
|
-
* - users.customFields.customMapper: maps to/from raw_user_meta_data
|
|
15
|
+
* - users.database: { schema: 'public', table: 'profiles' }
|
|
16
|
+
* - users.customFields.columnMapping: { externalId: 'external_id', username: 'username' }
|
|
18
17
|
* - organizations.database: { schema: 'public', table: 'organizations' }
|
|
19
18
|
* - organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }
|
|
20
19
|
*
|
|
20
|
+
* Note: We use public.profiles instead of auth.users because:
|
|
21
|
+
* - auth.users is not accessible via PostgREST (Supabase client)
|
|
22
|
+
* - auth.users is managed by GoTrue and shouldn't be modified directly
|
|
23
|
+
* - public.profiles gives you full control over user data
|
|
24
|
+
*
|
|
21
25
|
* User-provided options take precedence over defaults.
|
|
22
26
|
*/
|
|
23
27
|
export declare function applySupabaseDefaults<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>(options?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>): ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>;
|
|
@@ -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,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAY5D
|
|
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,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAY5D;;;;;;;;;;;;;;;;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,CAmEA;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B,CAC1C,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC;IAEnC,+BAA+B;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB;;;;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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sBAAsB,CAElC,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,EAExC,OAAO,EAAE,6BAA6B,CAClC,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,GACF,sBAAsB,CACrB,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,CAqCA"}
|
|
@@ -21,35 +21,23 @@ class WebClock {
|
|
|
21
21
|
*
|
|
22
22
|
* Supabase defaults applied:
|
|
23
23
|
* - namingStrategy: 'snake_case'
|
|
24
|
-
* - users.database: { schema: '
|
|
25
|
-
* - users.customFields.columnMapping: { externalId: '
|
|
26
|
-
* - users.customFields.customMapper: maps to/from raw_user_meta_data
|
|
24
|
+
* - users.database: { schema: 'public', table: 'profiles' }
|
|
25
|
+
* - users.customFields.columnMapping: { externalId: 'external_id', username: 'username' }
|
|
27
26
|
* - organizations.database: { schema: 'public', table: 'organizations' }
|
|
28
27
|
* - organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }
|
|
29
28
|
*
|
|
29
|
+
* Note: We use public.profiles instead of auth.users because:
|
|
30
|
+
* - auth.users is not accessible via PostgREST (Supabase client)
|
|
31
|
+
* - auth.users is managed by GoTrue and shouldn't be modified directly
|
|
32
|
+
* - public.profiles gives you full control over user data
|
|
33
|
+
*
|
|
30
34
|
* User-provided options take precedence over defaults.
|
|
31
35
|
*/
|
|
32
36
|
export function applySupabaseDefaults(options) {
|
|
33
|
-
// Default Supabase
|
|
34
|
-
const supabaseUserMapper = {
|
|
35
|
-
toDb: (fields) => ({
|
|
36
|
-
raw_user_meta_data: {
|
|
37
|
-
...fields,
|
|
38
|
-
email_verified: true,
|
|
39
|
-
phone_verified: false
|
|
40
|
-
}
|
|
41
|
-
}),
|
|
42
|
-
toDomain: (dbRow) => {
|
|
43
|
-
const metadata = dbRow.raw_user_meta_data || {};
|
|
44
|
-
// biome-ignore lint/correctness/noUnusedVariables: intentionally extracted to exclude
|
|
45
|
-
const { sub, email_verified, phone_verified, ...customFields } = metadata;
|
|
46
|
-
return customFields;
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
// Default Supabase columnMapping for users
|
|
37
|
+
// Default Supabase columnMapping for users (profiles table uses snake_case)
|
|
50
38
|
const supabaseUserColumnMapping = {
|
|
51
|
-
externalId: '
|
|
52
|
-
username: '
|
|
39
|
+
externalId: 'external_id',
|
|
40
|
+
username: 'username'
|
|
53
41
|
};
|
|
54
42
|
// Build users config with Supabase defaults
|
|
55
43
|
const usersConfig = {
|
|
@@ -60,14 +48,14 @@ export function applySupabaseDefaults(options) {
|
|
|
60
48
|
}),
|
|
61
49
|
// Use user's columnMapping or Supabase default
|
|
62
50
|
columnMapping: options?.users?.customFields?.columnMapping ?? supabaseUserColumnMapping,
|
|
63
|
-
// Use user's customMapper
|
|
64
|
-
...(options?.users?.customFields?.
|
|
65
|
-
customMapper: options
|
|
51
|
+
// Use user's customMapper if provided (no default mapper needed for profiles table)
|
|
52
|
+
...(options?.users?.customFields?.customMapper && {
|
|
53
|
+
customMapper: options.users.customFields.customMapper
|
|
66
54
|
})
|
|
67
55
|
},
|
|
68
56
|
database: {
|
|
69
|
-
schema: options?.users?.database?.schema ?? '
|
|
70
|
-
table: options?.users?.database?.table ?? '
|
|
57
|
+
schema: options?.users?.database?.schema ?? 'public',
|
|
58
|
+
table: options?.users?.database?.table ?? 'profiles',
|
|
71
59
|
...(options?.users?.database?.namingStrategy && {
|
|
72
60
|
namingStrategy: options.users.database.namingStrategy
|
|
73
61
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdapterFactory.js","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAW1E;;;GAGG;AACH,MAAM,QAAQ;IACV,GAAG;QACC,OAAO,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC;CACJ;AAED
|
|
1
|
+
{"version":3,"file":"AdapterFactory.js","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,11 +8,16 @@
|
|
|
8
8
|
*
|
|
9
9
|
* **Supabase defaults applied automatically:**
|
|
10
10
|
* - `namingStrategy: 'snake_case'`
|
|
11
|
-
* - `users.database: { schema: '
|
|
12
|
-
* - `users.customFields.columnMapping: { externalId: '
|
|
11
|
+
* - `users.database: { schema: 'public', table: 'profiles' }`
|
|
12
|
+
* - `users.customFields.columnMapping: { externalId: 'external_id', username: 'username' }`
|
|
13
13
|
* - `organizations.database: { schema: 'public', table: 'organizations' }`
|
|
14
14
|
* - `organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }`
|
|
15
15
|
*
|
|
16
|
+
* Note: We use `public.profiles` instead of `auth.users` because:
|
|
17
|
+
* - `auth.users` is not accessible via PostgREST (Supabase JS client)
|
|
18
|
+
* - `auth.users` is managed by GoTrue and shouldn't be modified directly
|
|
19
|
+
* - `public.profiles` gives you full control over user profile data
|
|
20
|
+
*
|
|
16
21
|
* @example
|
|
17
22
|
* ```typescript
|
|
18
23
|
* import { createSupabaseAdapters, createUseCases } from '@multitenantkit/sdk-supabase';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAG1E,OAAO,EACH,qBAAqB,EACrB,KAAK,6BAA6B,EAClC,sBAAsB,EACtB,KAAK,sBAAsB,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,11 +8,16 @@
|
|
|
8
8
|
*
|
|
9
9
|
* **Supabase defaults applied automatically:**
|
|
10
10
|
* - `namingStrategy: 'snake_case'`
|
|
11
|
-
* - `users.database: { schema: '
|
|
12
|
-
* - `users.customFields.columnMapping: { externalId: '
|
|
11
|
+
* - `users.database: { schema: 'public', table: 'profiles' }`
|
|
12
|
+
* - `users.customFields.columnMapping: { externalId: 'external_id', username: 'username' }`
|
|
13
13
|
* - `organizations.database: { schema: 'public', table: 'organizations' }`
|
|
14
14
|
* - `organizationMemberships.database: { schema: 'public', table: 'organization_memberships' }`
|
|
15
15
|
*
|
|
16
|
+
* Note: We use `public.profiles` instead of `auth.users` because:
|
|
17
|
+
* - `auth.users` is not accessible via PostgREST (Supabase JS client)
|
|
18
|
+
* - `auth.users` is managed by GoTrue and shouldn't be modified directly
|
|
19
|
+
* - `public.profiles` gives you full control over user profile data
|
|
20
|
+
*
|
|
16
21
|
* @example
|
|
17
22
|
* ```typescript
|
|
18
23
|
* import { createSupabaseAdapters, createUseCases } from '@multitenantkit/sdk-supabase';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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;AAEtD,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE1E,iCAAiC;AACjC,OAAO,EACH,qBAAqB,EAErB,sBAAsB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,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.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MultiTenantKit SDK for Supabase Edge Functions (Deno compatible)",
|
|
6
6
|
"keywords": [
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"type-check": "tsc --noEmit"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@multitenantkit/domain": "^0.2.
|
|
49
|
+
"@multitenantkit/domain": "^0.2.4",
|
|
50
50
|
"@multitenantkit/domain-contracts": "^0.2.0",
|
|
51
|
-
"@multitenantkit/adapter-persistence-supabase": "^0.2.
|
|
52
|
-
"@multitenantkit/adapter-system-web-crypto": "^0.2.
|
|
51
|
+
"@multitenantkit/adapter-persistence-supabase": "^0.2.4",
|
|
52
|
+
"@multitenantkit/adapter-system-web-crypto": "^0.2.4",
|
|
53
53
|
"@supabase/supabase-js": "^2.39.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|