@driveflux/auth 4.0.46-next.0 → 4.0.46

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 (55) hide show
  1. package/dist/AuthProvider.js +59 -76
  2. package/dist/authorization/constants.js +24 -45
  3. package/dist/authorization/define.js +28 -57
  4. package/dist/authorization/fields/index.js +7 -4
  5. package/dist/authorization/helpers.js +8 -10
  6. package/dist/authorization/index.js +6 -6
  7. package/dist/authorization/permissions-list.js +7 -5
  8. package/dist/authorization/quick.js +1 -1
  9. package/dist/authorization/roles/admin/business-development-executive.js +7 -20
  10. package/dist/authorization/roles/admin/ceo.js +2 -4
  11. package/dist/authorization/roles/admin/common.js +2 -4
  12. package/dist/authorization/roles/admin/concierge.js +10 -35
  13. package/dist/authorization/roles/admin/customer-success-executive.js +10 -40
  14. package/dist/authorization/roles/admin/data-analyst.js +4 -7
  15. package/dist/authorization/roles/admin/designer.js +4 -7
  16. package/dist/authorization/roles/admin/engineer.js +4 -7
  17. package/dist/authorization/roles/admin/finance-executive.js +4 -11
  18. package/dist/authorization/roles/admin/head-of-business-development.js +4 -14
  19. package/dist/authorization/roles/admin/head-of-data-analytics.js +4 -14
  20. package/dist/authorization/roles/admin/head-of-engineering.js +6 -17
  21. package/dist/authorization/roles/admin/head-of-finance.js +3 -8
  22. package/dist/authorization/roles/admin/head-of-human-resources.js +5 -13
  23. package/dist/authorization/roles/admin/head-of-marketing.js +5 -17
  24. package/dist/authorization/roles/admin/head-of-operations.js +3 -8
  25. package/dist/authorization/roles/admin/head-of-product.js +6 -17
  26. package/dist/authorization/roles/admin/head-of-sales.js +5 -17
  27. package/dist/authorization/roles/admin/human-resources-executive.js +5 -12
  28. package/dist/authorization/roles/admin/marketing-executive.js +4 -7
  29. package/dist/authorization/roles/admin/product-manager.js +4 -7
  30. package/dist/authorization/roles/admin/sales-executive.js +8 -24
  31. package/dist/authorization/roles/consumer/business-admin.js +6 -19
  32. package/dist/authorization/roles/consumer/business-user.js +6 -18
  33. package/dist/authorization/roles/consumer/member.js +6 -16
  34. package/dist/authorization/types.js +1 -1
  35. package/dist/authorization/update-user-permissions.js +15 -22
  36. package/dist/authorization/utils.js +11 -26
  37. package/dist/context.js +9 -8
  38. package/dist/default.js +1 -1
  39. package/dist/server/authenticate-user.js +7 -11
  40. package/dist/server/cors.js +12 -23
  41. package/dist/server/credentials-provider.js +2 -2
  42. package/dist/server/next-auth.d.ts +3 -1
  43. package/dist/server/next-auth.d.ts.map +1 -1
  44. package/dist/server/next-auth.js +100 -86
  45. package/dist/server/prisma-adapter.js +52 -88
  46. package/dist/server/types.d.ts +0 -6
  47. package/dist/server/types.d.ts.map +1 -1
  48. package/dist/server/verfiy-token.js +24 -39
  49. package/dist/translations.js +4 -4
  50. package/dist/types.d.ts +1 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +1 -1
  53. package/dist/use-auth.js +1 -1
  54. package/dist/use-session.js +1 -1
  55. package/package.json +7 -7
@@ -8,7 +8,7 @@ import { nanoid } from 'nanoid';
8
8
  import CredentialsProvider from 'next-auth/providers/credentials';
9
9
  import FacebookProvider from 'next-auth/providers/facebook';
10
10
  import GoogleProvider from 'next-auth/providers/google';
11
- import { AUTH_COOKIE_CALLBACK_URL, AUTH_COOKIE_CSRF_TOKEN, AUTH_COOKIE_NONCE, AUTH_COOKIE_PKCE_CODE_VERIFIER, AUTH_COOKIE_SESSION_TOKEN, AUTH_COOKIE_STATE } from '../constants.js';
11
+ import { AUTH_COOKIE_CALLBACK_URL, AUTH_COOKIE_CSRF_TOKEN, AUTH_COOKIE_NONCE, AUTH_COOKIE_PKCE_CODE_VERIFIER, AUTH_COOKIE_SESSION_TOKEN, AUTH_COOKIE_STATE, } from '../constants.js';
12
12
  import { extractDefault } from '../default.js';
13
13
  import { translations } from '../translations.js';
14
14
  import { authenticateUser } from './authenticate-user.js';
@@ -20,79 +20,80 @@ const nextAuthUrl = process.env.NEXTAUTH_URL;
20
20
  if (!nextAuthUrl) {
21
21
  throw new Error('NEXTAUTH_URL is not set');
22
22
  }
23
- export const generateSessionToken = async (user)=>{
23
+ export const generateSessionToken = async (user) => {
24
24
  const secret = new TextEncoder().encode(config.auth.jwtSecret);
25
25
  const alg = 'HS256';
26
26
  const token = await new SignJWT({
27
- roles: user.groups
28
- }).setProtectedHeader({
29
- alg
30
- }).setIssuedAt().setSubject(user.id).setIssuer('flux.website').setAudience('flux.website').sign(secret);
27
+ roles: user.groups,
28
+ })
29
+ .setProtectedHeader({ alg })
30
+ .setIssuedAt()
31
+ .setSubject(user.id)
32
+ .setIssuer('flux.website')
33
+ .setAudience('flux.website')
34
+ .sign(secret);
31
35
  return token.toString();
32
36
  };
33
- export const getCredentialsOptions = ()=>{
37
+ export const getCredentialsOptions = () => {
34
38
  return {
35
39
  name: 'Credentials',
36
40
  credentials: {
37
- login: {
38
- label: translations.email,
39
- type: 'text'
40
- },
41
- password: {
42
- label: translations.password,
43
- type: 'password'
44
- }
41
+ login: { label: translations.email, type: 'text' },
42
+ password: { label: translations.password, type: 'password' },
45
43
  },
46
- async authorize (credentials) {
44
+ async authorize(credentials) {
47
45
  if (!credentials) {
48
46
  return null;
49
47
  }
50
48
  const authResult = await authenticateUser(credentials);
51
49
  return authResult.ok ? authResult.val : null;
52
- }
50
+ },
53
51
  };
54
52
  };
55
53
  export const authOptions = {
56
54
  adapter,
57
55
  providers: [
58
- ...config.auth.google ? [
59
- extractDefault(GoogleProvider)({
60
- ...config.auth.google,
61
- allowDangerousEmailAccountLinking: true
62
- })
63
- ] : [],
64
- ...config.auth.facebook ? [
65
- extractDefault(FacebookProvider)({
66
- ...config.auth.facebook,
67
- allowDangerousEmailAccountLinking: true
68
- })
69
- ] : [],
70
- extractDefault(CredentialsProvider)(getCredentialsOptions())
56
+ ...(config.auth.google
57
+ ? [
58
+ extractDefault(GoogleProvider)({
59
+ ...config.auth.google,
60
+ allowDangerousEmailAccountLinking: true,
61
+ }),
62
+ ]
63
+ : []),
64
+ ...(config.auth.facebook
65
+ ? [
66
+ extractDefault(FacebookProvider)({
67
+ ...config.auth.facebook,
68
+ allowDangerousEmailAccountLinking: true,
69
+ }),
70
+ ]
71
+ : []),
72
+ extractDefault(CredentialsProvider)(getCredentialsOptions()),
71
73
  ],
72
74
  callbacks: {
73
- async signIn ({ account, profile }) {
74
- const processName = (profile)=>{
75
+ async signIn({ account, profile }) {
76
+ const processName = (profile) => {
75
77
  if (profile?.given_name || profile?.family_name) {
76
78
  return {
77
79
  firstName: profile?.given_name || '',
78
- lastName: profile?.family_name || ''
80
+ lastName: profile?.family_name || '',
79
81
  };
80
82
  }
81
83
  if (!profile?.name) {
82
84
  return {
83
85
  firstName: '',
84
- lastName: ''
86
+ lastName: '',
85
87
  };
86
88
  }
87
- const r = (str)=>str.replace(/\s+/g, ' ').trim();
89
+ const r = (str) => str.replace(/\s+/g, ' ').trim();
88
90
  const names = profile?.name.trim();
89
91
  const nameSegments = names.split(' ');
90
- const firstName = r(nameSegments.filter((_s, i)=>i !== nameSegments?.length - 1).join(' '));
92
+ const firstName = r(nameSegments
93
+ .filter((_s, i) => i !== nameSegments?.length - 1)
94
+ .join(' '));
91
95
  const lastName = r(nameSegments?.[nameSegments?.length - 1]);
92
- return {
93
- firstName,
94
- lastName
95
- };
96
+ return { firstName, lastName };
96
97
  };
97
98
  if (account?.provider === 'google') {
98
99
  if (!profile?.email) {
@@ -103,7 +104,7 @@ export const authOptions = {
103
104
  // const password = await bcrypt.hash(nanoid(), nanoid())
104
105
  await prisma.user.upsert({
105
106
  where: {
106
- email: profile.email
107
+ email: profile.email,
107
108
  },
108
109
  create: {
109
110
  id: generateId('User'),
@@ -113,12 +114,13 @@ export const authOptions = {
113
114
  password,
114
115
  registrationComplete: false,
115
116
  metadata: {
116
- signupProvider: 'google'
117
- }
117
+ signupProvider: 'google',
118
+ },
118
119
  },
119
- update: {}
120
+ update: {},
120
121
  });
121
- } else if (account?.provider === 'facebook') {
122
+ }
123
+ else if (account?.provider === 'facebook') {
122
124
  if (!profile?.email) {
123
125
  throw new Error('Unauthenticated');
124
126
  }
@@ -126,7 +128,7 @@ export const authOptions = {
126
128
  const password = `${nanoid()}-${nanoid()}`;
127
129
  await prisma.user.upsert({
128
130
  where: {
129
- email: profile.email
131
+ email: profile.email,
130
132
  },
131
133
  create: {
132
134
  id: generateId('User'),
@@ -136,42 +138,46 @@ export const authOptions = {
136
138
  password,
137
139
  registrationComplete: false,
138
140
  metadata: {
139
- signupProvider: 'facebook'
140
- }
141
+ signupProvider: 'facebook',
142
+ },
141
143
  },
142
- update: {}
144
+ update: {},
143
145
  });
144
146
  }
145
147
  return true;
146
148
  },
147
- async session ({ session, user, trigger }) {
148
- const { password, permissions, stripeCustomerId, ...newUser } = {
149
- ...user
150
- };
149
+ async session({ session, user, trigger, token, ...others }) {
150
+ const { password, permissions, stripeCustomerId, ...newUser } = { ...user };
151
151
  const finalSession = {
152
152
  user: newUser,
153
- expires: new Date(session.expires).toISOString()
153
+ expires: new Date(session.expires).toISOString(),
154
+ id: session.id,
155
+ sessionToken: session.sessionToken,
154
156
  };
155
- const decodedToken = session.sessionToken ? decodeJwt(session.sessionToken) : null;
157
+ const decodedToken = session.sessionToken
158
+ ? decodeJwt(session.sessionToken)
159
+ : null;
156
160
  const tokenRoles = decodedToken?.roles;
157
161
  if (session.sessionToken) {
158
- if (trigger === 'update' || !tokenRoles || !areArraysSimilar(tokenRoles, user.groups)) {
162
+ if (trigger === 'update' ||
163
+ !tokenRoles ||
164
+ !areArraysSimilar(tokenRoles, user.groups)) {
159
165
  const newSessionToken = await generateSessionToken(user);
160
166
  // We can't call the update session from the patch because it searches by sessionToken and not by ID
161
167
  await prisma.session.update({
162
168
  where: {
163
- sessionToken: session.sessionToken
169
+ sessionToken: session.sessionToken,
164
170
  },
165
171
  data: {
166
- sessionToken: newSessionToken
167
- }
172
+ sessionToken: newSessionToken,
173
+ },
168
174
  });
169
175
  // @ts-expect-error dirty property to be removed in the patch
170
176
  finalSession.newSessionToken = newSessionToken;
171
177
  }
172
178
  }
173
179
  return finalSession;
174
- }
180
+ },
175
181
  },
176
182
  cookies: {
177
183
  sessionToken: {
@@ -181,8 +187,12 @@ export const authOptions = {
181
187
  sameSite: 'lax',
182
188
  path: '/',
183
189
  secure: useSecureCookies,
184
- domain: process.env.NO_COOKIE_DOMAIN === 'true' ? undefined : nextAuthUrl === 'localhost' ? `.${nextAuthUrl}` : `.${new URL(nextAuthUrl).hostname}`
185
- }
190
+ domain: process.env.NO_COOKIE_DOMAIN === 'true'
191
+ ? undefined
192
+ : nextAuthUrl === 'localhost'
193
+ ? `.${nextAuthUrl}`
194
+ : `.${new URL(nextAuthUrl).hostname}`,
195
+ },
186
196
  },
187
197
  callbackUrl: {
188
198
  name: AUTH_COOKIE_CALLBACK_URL,
@@ -190,8 +200,8 @@ export const authOptions = {
190
200
  httpOnly: true,
191
201
  sameSite: 'lax',
192
202
  path: '/',
193
- secure: useSecureCookies
194
- }
203
+ secure: useSecureCookies,
204
+ },
195
205
  },
196
206
  csrfToken: {
197
207
  name: `${useSecureCookies ? '__Host-' : ''}${AUTH_COOKIE_CSRF_TOKEN}`,
@@ -199,8 +209,8 @@ export const authOptions = {
199
209
  httpOnly: true,
200
210
  sameSite: 'lax',
201
211
  path: '/',
202
- secure: useSecureCookies
203
- }
212
+ secure: useSecureCookies,
213
+ },
204
214
  },
205
215
  pkceCodeVerifier: {
206
216
  name: AUTH_COOKIE_PKCE_CODE_VERIFIER,
@@ -209,8 +219,8 @@ export const authOptions = {
209
219
  sameSite: 'lax',
210
220
  path: '/',
211
221
  secure: useSecureCookies,
212
- maxAge: 900
213
- }
222
+ maxAge: 900,
223
+ },
214
224
  },
215
225
  state: {
216
226
  name: AUTH_COOKIE_STATE,
@@ -219,8 +229,8 @@ export const authOptions = {
219
229
  sameSite: 'lax',
220
230
  path: '/',
221
231
  secure: useSecureCookies,
222
- maxAge: 900
223
- }
232
+ maxAge: 900,
233
+ },
224
234
  },
225
235
  nonce: {
226
236
  name: AUTH_COOKIE_NONCE,
@@ -228,13 +238,13 @@ export const authOptions = {
228
238
  httpOnly: true,
229
239
  sameSite: 'lax',
230
240
  path: '/',
231
- secure: useSecureCookies
232
- }
233
- }
241
+ secure: useSecureCookies,
242
+ },
243
+ },
234
244
  },
235
245
  useSecureCookies,
236
246
  jwt: {
237
- async encode (params) {
247
+ async encode(params) {
238
248
  const secret = new TextEncoder().encode(config.auth.jwtSecret);
239
249
  const alg = 'HS256';
240
250
  const tokenId = params.token?.sub;
@@ -243,36 +253,40 @@ export const authOptions = {
243
253
  }
244
254
  const user = await prisma.user.findUnique({
245
255
  where: {
246
- id: tokenId
247
- }
256
+ id: tokenId,
257
+ },
248
258
  });
249
259
  if (!user) {
250
260
  throw new Error('No user found');
251
261
  }
252
262
  const token = await new SignJWT({
253
263
  ...params.token,
254
- roles: user.groups
255
- }).setProtectedHeader({
256
- alg
257
- }).setIssuedAt().setSubject(user.id).setIssuer('flux.website').setAudience('flux.website').sign(secret);
264
+ roles: user.groups,
265
+ })
266
+ .setProtectedHeader({ alg })
267
+ .setIssuedAt()
268
+ .setSubject(user.id)
269
+ .setIssuer('flux.website')
270
+ .setAudience('flux.website')
271
+ .sign(secret);
258
272
  if (adapter.createSession) {
259
273
  await adapter.createSession({
260
274
  sessionToken: token,
261
275
  userId: user.id,
262
- expires: new Date(Date.now() + (params.maxAge ?? MAX_AGE) * 1000)
276
+ expires: new Date(Date.now() + (params.maxAge ?? MAX_AGE) * 1000),
263
277
  });
264
278
  }
265
279
  return token;
266
- }
280
+ },
267
281
  },
268
282
  session: {
269
283
  strategy: 'database',
270
284
  maxAge: MAX_AGE,
271
- generateSessionToken: async (user)=>{
285
+ generateSessionToken: async (user) => {
272
286
  return await generateSessionToken(user);
273
- }
287
+ },
274
288
  },
275
289
  pages: {
276
- signIn: '/signin'
277
- }
290
+ signIn: '/signin',
291
+ },
278
292
  };
@@ -4,172 +4,136 @@ export function PrismaAdapter() {
4
4
  return {
5
5
  // TODO
6
6
  // @ts-expect-error TypeScript is not working here
7
- createUser: async ({ id, groups, permissions, emailVerified, ...data })=>{
7
+ createUser: async ({ id, groups, permissions, emailVerified, ...data }) => {
8
8
  // @ts-expect-error
9
9
  const userData = {
10
10
  id: id || generateId('User'),
11
- groups: groups || [
12
- 'member'
13
- ],
11
+ groups: groups || ['member'],
14
12
  permissions: permissions || {},
15
13
  emailVerified: Boolean(emailVerified),
16
14
  email: data.email.toLowerCase().trim(),
17
- ...data
15
+ ...data,
18
16
  };
19
17
  const user = await prisma.user.create({
20
18
  data: {
21
- ...userData
22
- }
19
+ ...userData,
20
+ },
23
21
  });
24
22
  return user;
25
23
  },
26
24
  // TODO
27
25
  // @ts-expect-error
28
- getUser: (id)=>prisma.user.findUnique({
29
- where: {
30
- id
31
- }
32
- }),
26
+ getUser: (id) => prisma.user.findUnique({ where: { id } }),
33
27
  // TODO
34
28
  // @ts-expect-error
35
- getUserByEmail: (email)=>prisma.user.findUnique({
36
- where: {
37
- email: email.toLowerCase().trim()
38
- }
39
- }),
29
+ getUserByEmail: (email) => prisma.user.findUnique({ where: { email: email.toLowerCase().trim() } }),
40
30
  // TODO
41
31
  // @ts-expect-error
42
- async getUserByAccount (provider_providerAccountId) {
32
+ async getUserByAccount(provider_providerAccountId) {
43
33
  const account = await prisma.account.findUnique({
44
- where: {
45
- provider_providerAccountId
46
- },
47
- select: {
48
- user: true
49
- }
34
+ where: { provider_providerAccountId },
35
+ select: { user: true },
50
36
  });
51
37
  return account?.user ?? null;
52
38
  },
53
39
  // TODO
54
40
  // @ts-expect-error
55
- updateUser: ({ id, ...data })=>{
41
+ updateUser: ({ id, ...data }) => {
56
42
  // @ts-expect-error
57
43
  const userData = {
58
44
  email: data.email?.toLowerCase().trim(),
59
- ...data
45
+ ...data,
60
46
  };
61
- return prisma.user.update({
62
- where: {
63
- id
64
- },
65
- data: {
66
- ...userData
67
- }
68
- });
47
+ return prisma.user.update({ where: { id }, data: { ...userData } });
69
48
  },
70
49
  // TODO
71
50
  // @ts-expect-error
72
- deleteUser: (id)=>prisma.user.delete({
73
- where: {
74
- id
75
- }
76
- }),
51
+ deleteUser: (id) => prisma.user.delete({ where: { id } }),
77
52
  // @ts-expect-error
78
- linkAccount: ({ id, ...data })=>{
53
+ linkAccount: ({ id, ...data }) => {
79
54
  return prisma.account.create({
80
55
  // @ts-expect-error
81
56
  data: {
82
57
  id: id || generateId('Account'),
83
- ...data
84
- }
58
+ ...data,
59
+ },
85
60
  });
86
61
  },
87
62
  // @ts-expect-error
88
- unlinkAccount: (provider_providerAccountId)=>prisma.account.delete({
89
- where: {
90
- provider_providerAccountId
91
- }
92
- }),
63
+ unlinkAccount: (provider_providerAccountId) => prisma.account.delete({
64
+ where: { provider_providerAccountId },
65
+ }),
93
66
  // TODO
94
67
  // @ts-expect-error
95
- async getSessionAndUser (sessionToken) {
68
+ async getSessionAndUser(sessionToken) {
96
69
  const userAndSession = await prisma.session.findUnique({
97
- where: {
98
- sessionToken
99
- },
100
- include: {
101
- user: true
102
- }
70
+ where: { sessionToken },
71
+ include: { user: true },
103
72
  });
104
- if (!userAndSession) return null;
73
+ if (!userAndSession)
74
+ return null;
105
75
  const { user, ...session } = userAndSession;
106
- return {
107
- user,
108
- session
109
- };
76
+ return { user, session };
110
77
  },
111
78
  // TODO
112
79
  // @ts-expect-error
113
- async createSession ({ id, ...data }) {
80
+ async createSession({ id, ...data }) {
114
81
  const session = await prisma.session.create({
115
82
  data: {
116
83
  id: id || generateId('Session'),
117
- ...data
118
- }
84
+ ...data,
85
+ },
119
86
  });
120
87
  return session;
121
88
  },
122
- updateSession: (data)=>{
89
+ updateSession: (data) => {
123
90
  return prisma.session.update({
124
- where: {
125
- sessionToken: data.sessionToken
126
- },
127
- data
91
+ where: { sessionToken: data.sessionToken },
92
+ data,
128
93
  });
129
94
  },
130
- deleteSession: async (sessionToken)=>{
95
+ deleteSession: async (sessionToken) => {
131
96
  try {
132
- await prisma.session.delete({
133
- where: {
134
- sessionToken
135
- }
136
- });
137
- } catch (_e) {
138
- // TODO
139
- // DO nothing for now
97
+ await prisma.session.delete({ where: { sessionToken } });
98
+ }
99
+ catch (_e) {
100
+ // TODO
101
+ // DO nothing for now
140
102
  }
141
103
  },
142
104
  // TODO
143
105
  // @ts-expect-error
144
- async createVerificationToken ({ id, ...data }) {
106
+ async createVerificationToken({ id, ...data }) {
145
107
  const verificationToken = await prisma.verificationToken.create({
146
108
  data: {
147
109
  id: id || generateId('VerificationToken'),
148
- ...data
149
- }
110
+ ...data,
111
+ },
150
112
  });
151
113
  // TODO
152
114
  // @ts-expect-errors // MongoDB needs an ID, but we don't
153
- if (verificationToken.id) verificationToken.id = undefined;
115
+ if (verificationToken.id)
116
+ verificationToken.id = undefined;
154
117
  return verificationToken;
155
118
  },
156
- async useVerificationToken (identifier_token) {
119
+ async useVerificationToken(identifier_token) {
157
120
  try {
158
121
  const verificationToken = await prisma.verificationToken.delete({
159
- where: {
160
- identifier_token
161
- }
122
+ where: { identifier_token },
162
123
  });
163
124
  // TODO
164
125
  // @ts-expect-errors // MongoDB needs an ID, but we don't
165
- if (verificationToken.id) verificationToken.id = undefined;
126
+ if (verificationToken.id)
127
+ verificationToken.id = undefined;
166
128
  return verificationToken;
167
- } catch (error) {
129
+ }
130
+ catch (error) {
168
131
  // If token already used/deleted, just return null
169
132
  // https://www.prisma.io/docs/reference/api-reference/error-reference#p2025
170
- if (error.code === 'P2025') return null;
133
+ if (error.code === 'P2025')
134
+ return null;
171
135
  throw error;
172
136
  }
173
- }
137
+ },
174
138
  };
175
139
  }
@@ -8,12 +8,6 @@ declare module 'next-auth/adapters' {
8
8
  }
9
9
  }
10
10
  declare module 'next-auth' {
11
- /**
12
- * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context
13
- */
14
- interface Session {
15
- user?: FluxUser;
16
- }
17
11
  interface User extends FluxUser {
18
12
  }
19
13
  interface Account extends FluxAccount {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,WAAW,CAAA;AAMlB,KAAK,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACrC,KAAK,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;AAE3C,OAAO,QAAQ,oBAAoB,CAAC;IACnC,UAAU,WAAY,SAAQ,QAAQ;KAAG;CACzC;AAED,OAAO,QAAQ,WAAW,CAAC;IAC1B;;OAEG;IACH,UAAU,OAAO;QAChB,IAAI,CAAC,EAAE,QAAQ,CAAA;KACf;IAED,UAAU,IAAK,SAAQ,QAAQ;KAAG;IAClC,UAAU,OAAQ,SAAQ,WAAW;KAAG;IACxC,UAAU,OAAQ,SAAQ,WAAW;KAAG;IACxC,UAAU,WAAY,SAAQ,QAAQ;KAAG;CACzC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,WAAW,CAAA;AAMlB,KAAK,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACrC,KAAK,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;AAE3C,OAAO,QAAQ,oBAAoB,CAAC;IACnC,UAAU,WAAY,SAAQ,QAAQ;KAAG;CACzC;AAED,OAAO,QAAQ,WAAW,CAAC;IAC1B,UAAU,IAAK,SAAQ,QAAQ;KAAG;IAClC,UAAU,OAAQ,SAAQ,WAAW;KAAG;IACxC,UAAU,OAAQ,SAAQ,WAAW;KAAG;IACxC,UAAU,WAAY,SAAQ,QAAQ;KAAG;CACzC"}