@dailyautomations/auth 1.0.0

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.
Files changed (49) hide show
  1. package/dist/client.d.ts +56 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +169 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/errors.d.ts +16 -0
  6. package/dist/errors.d.ts.map +1 -0
  7. package/dist/errors.js +49 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/hooks/index.d.ts +7 -0
  10. package/dist/hooks/index.d.ts.map +1 -0
  11. package/dist/hooks/index.js +15 -0
  12. package/dist/hooks/index.js.map +1 -0
  13. package/dist/hooks/useAuth.d.ts +22 -0
  14. package/dist/hooks/useAuth.d.ts.map +1 -0
  15. package/dist/hooks/useAuth.js +221 -0
  16. package/dist/hooks/useAuth.js.map +1 -0
  17. package/dist/hooks/useUser.d.ts +36 -0
  18. package/dist/hooks/useUser.d.ts.map +1 -0
  19. package/dist/hooks/useUser.js +40 -0
  20. package/dist/hooks/useUser.js.map +1 -0
  21. package/dist/identity.d.ts +42 -0
  22. package/dist/identity.d.ts.map +1 -0
  23. package/dist/identity.js +179 -0
  24. package/dist/identity.js.map +1 -0
  25. package/dist/index.d.ts +13 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +28 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/middleware.d.ts +49 -0
  30. package/dist/middleware.d.ts.map +1 -0
  31. package/dist/middleware.js +116 -0
  32. package/dist/middleware.js.map +1 -0
  33. package/dist/provisioning.d.ts +41 -0
  34. package/dist/provisioning.d.ts.map +1 -0
  35. package/dist/provisioning.js +224 -0
  36. package/dist/provisioning.js.map +1 -0
  37. package/dist/react.d.ts +7 -0
  38. package/dist/react.d.ts.map +1 -0
  39. package/dist/react.js +14 -0
  40. package/dist/react.js.map +1 -0
  41. package/dist/types.d.ts +99 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +7 -0
  44. package/dist/types.js.map +1 -0
  45. package/dist/workspace.d.ts +28 -0
  46. package/dist/workspace.d.ts.map +1 -0
  47. package/dist/workspace.js +121 -0
  48. package/dist/workspace.js.map +1 -0
  49. package/package.json +75 -0
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * @daily/auth useUser Hook
4
+ * Simplified user access hook
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.useUser = useUser;
8
+ exports.useRequiredUser = useRequiredUser;
9
+ const useAuth_js_1 = require("./useAuth.js");
10
+ /**
11
+ * Simplified hook for accessing current user info
12
+ * Use this when you only need user data, not auth actions
13
+ */
14
+ function useUser() {
15
+ const { user, workspace, isLoading, isAuthenticated } = (0, useAuth_js_1.useAuth)();
16
+ return {
17
+ user,
18
+ workspace,
19
+ email: user?.email || null,
20
+ displayName: user?.user_metadata?.displayName || null,
21
+ avatarUrl: user?.user_metadata?.avatarUrl || null,
22
+ isLoading,
23
+ isAuthenticated,
24
+ };
25
+ }
26
+ /**
27
+ * Hook that throws if user is not authenticated
28
+ * Use in components that require authentication
29
+ */
30
+ function useRequiredUser() {
31
+ const data = useUser();
32
+ if (!data.isAuthenticated || !data.user) {
33
+ throw new Error('User must be authenticated to access this component');
34
+ }
35
+ if (!data.workspace) {
36
+ throw new Error('User must have a workspace to access this component');
37
+ }
38
+ return data;
39
+ }
40
+ //# sourceMappingURL=useUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUser.js","sourceRoot":"","sources":["../../src/hooks/useUser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA2BH,0BAYC;AAMD,0CAkBC;AA7DD,6CAAuC;AAqBvC;;;GAGG;AACH,SAAgB,OAAO;IACrB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,IAAA,oBAAO,GAAE,CAAC;IAElE,OAAO;QACL,IAAI;QACJ,SAAS;QACT,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI;QAC1B,WAAW,EAAG,IAAI,EAAE,aAAa,EAAE,WAAsB,IAAI,IAAI;QACjE,SAAS,EAAG,IAAI,EAAE,aAAa,EAAE,SAAoB,IAAI,IAAI;QAC7D,SAAS;QACT,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAI7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,IAGN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @daily/auth Identity Service
3
+ * Cross-app identity resolution and management
4
+ */
5
+ import type { SupabaseClient } from '@supabase/supabase-js';
6
+ import type { IdentityCheckResult, IdentityInfo, AppSlug } from './types.js';
7
+ export declare class IdentityService {
8
+ private supabase;
9
+ constructor(supabase: SupabaseClient);
10
+ /**
11
+ * Check if an email exists in the system
12
+ * Returns identity info if found
13
+ */
14
+ checkEmail(email: string): Promise<IdentityCheckResult>;
15
+ /**
16
+ * Get full identity info for a user
17
+ * Includes workspaces, app access, and linked providers
18
+ */
19
+ getIdentityInfo(userId: string): Promise<IdentityInfo | undefined>;
20
+ /**
21
+ * Get all workspaces a user belongs to
22
+ */
23
+ private getUserWorkspaces;
24
+ /**
25
+ * Get all apps user has registered for
26
+ */
27
+ private getUserAppAccess;
28
+ /**
29
+ * Extract OAuth providers from Supabase metadata
30
+ */
31
+ private extractProviders;
32
+ /**
33
+ * Check if user has access to a specific app
34
+ */
35
+ hasAppAccess(userId: string, appSlug: AppSlug): Promise<boolean>;
36
+ /**
37
+ * Merge settings from user's other apps
38
+ * Used when provisioning for a new app
39
+ */
40
+ getMergedUserSettings(userId: string): Promise<Record<string, unknown>>;
41
+ }
42
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAGZ,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,cAAc;IAE5C;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsB7D;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA+BxE;;OAEG;YACW,iBAAiB;IAmC/B;;OAEG;YACW,gBAAgB;IA6B9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAyB9E"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ /**
3
+ * @daily/auth Identity Service
4
+ * Cross-app identity resolution and management
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.IdentityService = void 0;
8
+ class IdentityService {
9
+ supabase;
10
+ constructor(supabase) {
11
+ this.supabase = supabase;
12
+ }
13
+ /**
14
+ * Check if an email exists in the system
15
+ * Returns identity info if found
16
+ */
17
+ async checkEmail(email) {
18
+ // Query auth.users for email
19
+ const { data: users, error } = await this.supabase
20
+ .from('auth.users')
21
+ .select('id, email, created_at, raw_app_meta_data')
22
+ .eq('email', email.toLowerCase())
23
+ .limit(1);
24
+ if (error || !users || users.length === 0) {
25
+ return { exists: false };
26
+ }
27
+ const user = users[0];
28
+ const identity = await this.getIdentityInfo(user.id);
29
+ return {
30
+ exists: true,
31
+ identity,
32
+ linkedProviders: identity?.providers,
33
+ };
34
+ }
35
+ /**
36
+ * Get full identity info for a user
37
+ * Includes workspaces, app access, and linked providers
38
+ */
39
+ async getIdentityInfo(userId) {
40
+ // Get user info
41
+ const { data: user, error: userError } = await this.supabase
42
+ .from('auth.users')
43
+ .select('id, email, created_at, raw_app_meta_data')
44
+ .eq('id', userId)
45
+ .single();
46
+ if (userError || !user) {
47
+ return undefined;
48
+ }
49
+ // Get workspaces
50
+ const workspaces = await this.getUserWorkspaces(userId);
51
+ // Get app access
52
+ const appAccess = await this.getUserAppAccess(userId);
53
+ // Extract linked providers from metadata
54
+ const providers = this.extractProviders(user.raw_app_meta_data);
55
+ return {
56
+ userId: user.id,
57
+ email: user.email,
58
+ providers,
59
+ workspaces,
60
+ appAccess,
61
+ createdAt: new Date(user.created_at),
62
+ };
63
+ }
64
+ /**
65
+ * Get all workspaces a user belongs to
66
+ */
67
+ async getUserWorkspaces(userId) {
68
+ // Get memberships
69
+ const { data: memberships, error: memberError } = await this.supabase
70
+ .from('daily_core.workspace_members')
71
+ .select('workspace_id, role')
72
+ .eq('user_id', userId);
73
+ if (memberError || !memberships || memberships.length === 0) {
74
+ return [];
75
+ }
76
+ const workspaceIds = memberships.map((m) => m.workspace_id);
77
+ // Get workspace details
78
+ const { data: workspaces, error: wsError } = await this.supabase
79
+ .from('daily_core.workspaces')
80
+ .select('id, name, slug')
81
+ .in('id', workspaceIds);
82
+ if (wsError || !workspaces) {
83
+ return [];
84
+ }
85
+ // Combine data
86
+ return workspaces.map((ws) => {
87
+ const membership = memberships.find((m) => m.workspace_id === ws.id);
88
+ return {
89
+ id: ws.id,
90
+ name: ws.name,
91
+ slug: ws.slug,
92
+ role: (membership?.role || 'member'),
93
+ };
94
+ });
95
+ }
96
+ /**
97
+ * Get all apps user has registered for
98
+ */
99
+ async getUserAppAccess(userId) {
100
+ // Get user's workspaces first
101
+ const { data: memberships, error: memberError } = await this.supabase
102
+ .from('daily_core.workspace_members')
103
+ .select('workspace_id')
104
+ .eq('user_id', userId);
105
+ if (memberError || !memberships || memberships.length === 0) {
106
+ return [];
107
+ }
108
+ const workspaceIds = memberships.map((m) => m.workspace_id);
109
+ // Get app registrations for those workspaces
110
+ const { data: registrations, error: regError } = await this.supabase
111
+ .from('daily_core.app_registrations')
112
+ .select('app_slug')
113
+ .in('workspace_id', workspaceIds)
114
+ .eq('enabled', true);
115
+ if (regError || !registrations) {
116
+ return [];
117
+ }
118
+ // Return unique app slugs
119
+ const apps = new Set(registrations.map((r) => r.app_slug));
120
+ return Array.from(apps);
121
+ }
122
+ /**
123
+ * Extract OAuth providers from Supabase metadata
124
+ */
125
+ extractProviders(metadata) {
126
+ if (!metadata)
127
+ return [];
128
+ const providers = [];
129
+ // Supabase stores provider info in various places
130
+ if (metadata.provider) {
131
+ providers.push(metadata.provider);
132
+ }
133
+ if (Array.isArray(metadata.providers)) {
134
+ providers.push(...metadata.providers);
135
+ }
136
+ // Check for specific provider flags
137
+ if (metadata.google_id)
138
+ providers.push('google');
139
+ if (metadata.github_id)
140
+ providers.push('github');
141
+ if (metadata.azure_id)
142
+ providers.push('azure');
143
+ return [...new Set(providers)];
144
+ }
145
+ /**
146
+ * Check if user has access to a specific app
147
+ */
148
+ async hasAppAccess(userId, appSlug) {
149
+ const apps = await this.getUserAppAccess(userId);
150
+ return apps.includes(appSlug);
151
+ }
152
+ /**
153
+ * Merge settings from user's other apps
154
+ * Used when provisioning for a new app
155
+ */
156
+ async getMergedUserSettings(userId) {
157
+ // Get user's first workspace
158
+ const { data: memberships, error: memberError } = await this.supabase
159
+ .from('daily_core.workspace_members')
160
+ .select('workspace_id')
161
+ .eq('user_id', userId)
162
+ .limit(1);
163
+ if (memberError || !memberships || memberships.length === 0) {
164
+ return {};
165
+ }
166
+ // Get workspace settings
167
+ const { data: workspace, error: wsError } = await this.supabase
168
+ .from('daily_core.workspaces')
169
+ .select('settings')
170
+ .eq('id', memberships[0].workspace_id)
171
+ .single();
172
+ if (wsError || !workspace) {
173
+ return {};
174
+ }
175
+ return workspace.settings || {};
176
+ }
177
+ }
178
+ exports.IdentityService = IdentityService;
179
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAWH,MAAa,eAAe;IACN;IAApB,YAAoB,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAEhD;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,6BAA6B;QAC7B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAC/C,IAAI,CAAC,YAAY,CAAC;aAClB,MAAM,CAAC,0CAA0C,CAAC;aAClD,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;aAChC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,QAAQ;YACR,eAAe,EAAE,QAAQ,EAAE,SAAS;SACrC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,gBAAgB;QAChB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACzD,IAAI,CAAC,YAAY,CAAC;aAClB,MAAM,CAAC,0CAA0C,CAAC;aAClD,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;aAChB,MAAM,EAAE,CAAC;QAEZ,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,iBAAiB;QACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAExD,iBAAiB;QACjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEtD,yCAAyC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAmD,CAAC,CAAC;QAElG,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS;YACT,UAAU;YACV,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC5C,kBAAkB;QAClB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClE,IAAI,CAAC,8BAA8B,CAAC;aACpC,MAAM,CAAC,oBAAoB,CAAC;aAC5B,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEzB,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAE5D,wBAAwB;QACxB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAC7D,IAAI,CAAC,uBAAuB,CAAC;aAC7B,MAAM,CAAC,gBAAgB,CAAC;aACxB,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAE1B,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,eAAe;QACf,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO;gBACL,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,IAAI,QAAQ,CAA0B;aAC9D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAC3C,8BAA8B;QAC9B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClE,IAAI,CAAC,8BAA8B,CAAC;aACpC,MAAM,CAAC,cAAc,CAAC;aACtB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEzB,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAE5D,6CAA6C;QAC7C,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACjE,IAAI,CAAC,8BAA8B,CAAC;aACpC,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;aAChC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvB,IAAI,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAmB,CAAC,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAAwC;QAC/D,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,SAAS,GAAoB,EAAE,CAAC;QAEtC,kDAAkD;QAClD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAyB,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,SAAS,CAAC,IAAI,CAAC,GAAI,QAAQ,CAAC,SAA6B,CAAC,CAAC;QAC7D,CAAC;QAED,oCAAoC;QACpC,IAAI,QAAQ,CAAC,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,QAAQ,CAAC,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,QAAQ,CAAC,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,OAAgB;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,MAAc;QACxC,6BAA6B;QAC7B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClE,IAAI,CAAC,8BAA8B,CAAC;aACpC,MAAM,CAAC,cAAc,CAAC;aACtB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aACrB,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,yBAAyB;QACzB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAC5D,IAAI,CAAC,uBAAuB,CAAC;aAC7B,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;aACrC,MAAM,EAAE,CAAC;QAEZ,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAQ,SAAS,CAAC,QAAoC,IAAI,EAAE,CAAC;IAC/D,CAAC;CACF;AApMD,0CAoMC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @daily/auth
3
+ * Standard auth toolkit for Daily applications
4
+ *
5
+ * @package @daily/auth
6
+ * @version 1.0.0
7
+ */
8
+ export { DailyAuth } from './client.js';
9
+ export { WorkspaceService } from './workspace.js';
10
+ export { createAuthMiddleware, expressAuthMiddleware, fastifyAuthMiddleware, validateAuthToken, type MiddlewareContext, } from './middleware.js';
11
+ export { DailyAuthError } from './errors.js';
12
+ export type { WorkspaceRole, OAuthProvider, DailyAuthOptions, SignUpParams, SignInParams, OAuthParams, ResetPasswordParams, AuthResult, WorkspaceInfo, AuthErrorInfo, AuthErrorCode, JWTPayload, AuthMiddlewareOptions, AuthenticatedRequest, AuthState, AuthActions, UseAuthReturn, } from './types.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,YAAY,EAEV,aAAa,EACb,aAAa,EACb,gBAAgB,EAEhB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,mBAAmB,EAEnB,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EAEb,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EAEpB,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * @daily/auth
4
+ * Standard auth toolkit for Daily applications
5
+ *
6
+ * @package @daily/auth
7
+ * @version 1.0.0
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DailyAuthError = exports.validateAuthToken = exports.fastifyAuthMiddleware = exports.expressAuthMiddleware = exports.createAuthMiddleware = exports.WorkspaceService = exports.DailyAuth = void 0;
11
+ // Core client
12
+ var client_js_1 = require("./client.js");
13
+ Object.defineProperty(exports, "DailyAuth", { enumerable: true, get: function () { return client_js_1.DailyAuth; } });
14
+ // Services
15
+ var workspace_js_1 = require("./workspace.js");
16
+ Object.defineProperty(exports, "WorkspaceService", { enumerable: true, get: function () { return workspace_js_1.WorkspaceService; } });
17
+ // Middleware
18
+ var middleware_js_1 = require("./middleware.js");
19
+ Object.defineProperty(exports, "createAuthMiddleware", { enumerable: true, get: function () { return middleware_js_1.createAuthMiddleware; } });
20
+ Object.defineProperty(exports, "expressAuthMiddleware", { enumerable: true, get: function () { return middleware_js_1.expressAuthMiddleware; } });
21
+ Object.defineProperty(exports, "fastifyAuthMiddleware", { enumerable: true, get: function () { return middleware_js_1.fastifyAuthMiddleware; } });
22
+ Object.defineProperty(exports, "validateAuthToken", { enumerable: true, get: function () { return middleware_js_1.validateAuthToken; } });
23
+ // Errors
24
+ var errors_js_1 = require("./errors.js");
25
+ Object.defineProperty(exports, "DailyAuthError", { enumerable: true, get: function () { return errors_js_1.DailyAuthError; } });
26
+ // React hooks available via '@daily/auth/react'
27
+ // import { AuthProvider, useAuth, useUser, useAuthClient } from '@daily/auth/react';
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,cAAc;AACd,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,WAAW;AACX,+CAAkD;AAAzC,gHAAA,gBAAgB,OAAA;AAEzB,aAAa;AACb,iDAMyB;AALvB,qHAAA,oBAAoB,OAAA;AACpB,sHAAA,qBAAqB,OAAA;AACrB,sHAAA,qBAAqB,OAAA;AACrB,kHAAA,iBAAiB,OAAA;AAInB,SAAS;AACT,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AA4BvB,gDAAgD;AAChD,qFAAqF"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @daily/auth Middleware
3
+ * Server-side JWT validation
4
+ */
5
+ import { type User } from '@supabase/supabase-js';
6
+ import type { AuthMiddlewareOptions, WorkspaceInfo } from './types.js';
7
+ export interface MiddlewareContext {
8
+ user: User;
9
+ workspaces: WorkspaceInfo[];
10
+ }
11
+ /**
12
+ * Create auth middleware for Express/Fastify/etc.
13
+ */
14
+ export declare function createAuthMiddleware(options: AuthMiddlewareOptions): (req: {
15
+ headers: Record<string, string | undefined>;
16
+ path?: string;
17
+ url?: string;
18
+ }, res: {
19
+ status?: (code: number) => {
20
+ json: (body: unknown) => void;
21
+ };
22
+ }, next?: () => void | Promise<void>) => Promise<MiddlewareContext | null>;
23
+ /**
24
+ * Express-style middleware wrapper
25
+ */
26
+ export declare function expressAuthMiddleware(options: AuthMiddlewareOptions): (req: {
27
+ headers: Record<string, string | undefined>;
28
+ path: string;
29
+ }, res: {
30
+ status: (code: number) => {
31
+ json: (body: unknown) => void;
32
+ };
33
+ }, next: (err?: Error) => void) => Promise<void>;
34
+ /**
35
+ * Fastify-style middleware wrapper
36
+ */
37
+ export declare function fastifyAuthMiddleware(options: AuthMiddlewareOptions): (request: {
38
+ headers: Record<string, string | undefined>;
39
+ url: string;
40
+ }, reply: {
41
+ code: (code: number) => {
42
+ send: (body: unknown) => void;
43
+ };
44
+ }) => Promise<void>;
45
+ /**
46
+ * Standalone token validation
47
+ */
48
+ export declare function validateAuthToken(token: string, options: Pick<AuthMiddlewareOptions, 'supabaseUrl' | 'supabaseServiceKey'>): Promise<User | null>;
49
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqC,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGvE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,IAoC/D,KAAK;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EACjF,KAAK;IAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,EACrE,OAAO,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAChC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoCrC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,IAIhE,KAAK;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAClE,KAAK;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,EACpE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,mBAQ9B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,IAIhE,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACrE,OAAO;IAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,mBAUvE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,oBAAoB,CAAC,GACzE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAUtB"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ /**
3
+ * @daily/auth Middleware
4
+ * Server-side JWT validation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createAuthMiddleware = createAuthMiddleware;
8
+ exports.expressAuthMiddleware = expressAuthMiddleware;
9
+ exports.fastifyAuthMiddleware = fastifyAuthMiddleware;
10
+ exports.validateAuthToken = validateAuthToken;
11
+ const supabase_js_1 = require("@supabase/supabase-js");
12
+ const workspace_js_1 = require("./workspace.js");
13
+ /**
14
+ * Create auth middleware for Express/Fastify/etc.
15
+ */
16
+ function createAuthMiddleware(options) {
17
+ const { supabaseUrl, supabaseServiceKey, publicPaths = [] } = options;
18
+ const supabase = (0, supabase_js_1.createClient)(supabaseUrl, supabaseServiceKey, {
19
+ auth: { autoRefreshToken: false, persistSession: false },
20
+ });
21
+ const workspace = new workspace_js_1.WorkspaceService(supabase);
22
+ const isPublicPath = (path) => {
23
+ return publicPaths.some((p) => {
24
+ if (p.endsWith('*')) {
25
+ return path.startsWith(p.slice(0, -1));
26
+ }
27
+ return path === p;
28
+ });
29
+ };
30
+ const extractToken = (authHeader) => {
31
+ if (!authHeader)
32
+ return null;
33
+ const parts = authHeader.split(' ');
34
+ if (parts.length !== 2 || parts[0].toLowerCase() !== 'bearer') {
35
+ return null;
36
+ }
37
+ return parts[1];
38
+ };
39
+ const validateToken = async (token) => {
40
+ const { data, error } = await supabase.auth.getUser(token);
41
+ if (error || !data.user) {
42
+ return null;
43
+ }
44
+ return data.user;
45
+ };
46
+ return async function authMiddleware(req, res, next) {
47
+ const path = req.path || req.url || '';
48
+ if (isPublicPath(path)) {
49
+ if (next)
50
+ await next();
51
+ return null;
52
+ }
53
+ const token = extractToken(req.headers.authorization || req.headers.Authorization);
54
+ if (!token) {
55
+ if (res.status) {
56
+ res.status(401).json({ error: 'Missing authorization header' });
57
+ }
58
+ return null;
59
+ }
60
+ const user = await validateToken(token);
61
+ if (!user) {
62
+ if (res.status) {
63
+ res.status(401).json({ error: 'Invalid or expired token' });
64
+ }
65
+ return null;
66
+ }
67
+ const workspaces = await workspace.getForUser(user.id);
68
+ const context = { user, workspaces };
69
+ req.auth = context;
70
+ if (next)
71
+ await next();
72
+ return context;
73
+ };
74
+ }
75
+ /**
76
+ * Express-style middleware wrapper
77
+ */
78
+ function expressAuthMiddleware(options) {
79
+ const middleware = createAuthMiddleware(options);
80
+ return async (req, res, next) => {
81
+ try {
82
+ await middleware(req, res, () => next());
83
+ }
84
+ catch (err) {
85
+ next(err);
86
+ }
87
+ };
88
+ }
89
+ /**
90
+ * Fastify-style middleware wrapper
91
+ */
92
+ function fastifyAuthMiddleware(options) {
93
+ const middleware = createAuthMiddleware(options);
94
+ return async (request, reply) => {
95
+ const res = {
96
+ status: (code) => ({
97
+ json: (body) => reply.code(code).send(body),
98
+ }),
99
+ };
100
+ await middleware({ headers: request.headers, path: request.url }, res, undefined);
101
+ };
102
+ }
103
+ /**
104
+ * Standalone token validation
105
+ */
106
+ async function validateAuthToken(token, options) {
107
+ const supabase = (0, supabase_js_1.createClient)(options.supabaseUrl, options.supabaseServiceKey, {
108
+ auth: { autoRefreshToken: false, persistSession: false },
109
+ });
110
+ const { data, error } = await supabase.auth.getUser(token);
111
+ if (error || !data.user) {
112
+ return null;
113
+ }
114
+ return data.user;
115
+ }
116
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @daily/auth Provisioning Service
3
+ * Auto-provision workspaces and app registrations for users
4
+ */
5
+ import type { SupabaseClient } from '@supabase/supabase-js';
6
+ import type { AppSlug, WorkspaceInfo, AppRegistrationInfo, ProvisioningResult, ProvisioningOptions } from './types.js';
7
+ export declare class ProvisioningService {
8
+ private supabase;
9
+ private appSlug;
10
+ constructor(supabase: SupabaseClient, appSlug: AppSlug);
11
+ /**
12
+ * Provision a new user with workspace and app registration
13
+ * Called on signup
14
+ */
15
+ provisionNewUser(userId: string, email: string, options?: ProvisioningOptions): Promise<ProvisioningResult>;
16
+ /**
17
+ * Ensure user has access to current app
18
+ * Creates app_registration if missing (first time on this app)
19
+ */
20
+ ensureAppAccess(userId: string): Promise<{
21
+ workspace?: WorkspaceInfo;
22
+ appRegistration?: AppRegistrationInfo;
23
+ }>;
24
+ /**
25
+ * Get all workspaces for a user
26
+ */
27
+ getUserWorkspaces(userId: string): Promise<WorkspaceInfo[]>;
28
+ /**
29
+ * Check if app registration exists for workspace
30
+ */
31
+ getAppRegistration(workspaceId: string): Promise<AppRegistrationInfo | null>;
32
+ /**
33
+ * Generate workspace name from email
34
+ */
35
+ private generateWorkspaceName;
36
+ /**
37
+ * Generate URL-safe slug from name
38
+ */
39
+ private generateSlug;
40
+ }
41
+ //# sourceMappingURL=provisioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../src/provisioning.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAGpB,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;gBADP,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,OAAO;IAG1B;;;OAGG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC;IAwF9B;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,eAAe,CAAC,EAAE,mBAAmB,CAAC;KACvC,CAAC;IA6DF;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAmCjE;;OAEG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAoBtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,YAAY;CAWrB"}