firstly 0.0.16-next.2 → 0.1.0-next.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.
Files changed (156) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/esm/SqlDatabase/FF_LogToConsole.d.ts +14 -0
  3. package/esm/SqlDatabase/FF_LogToConsole.js +24 -5
  4. package/esm/auth/Entities.d.ts +4 -3
  5. package/esm/auth/Entities.js +19 -15
  6. package/esm/auth/server/AuthController.server.js +86 -93
  7. package/esm/auth/server/handleAuth.d.ts +4 -2
  8. package/esm/auth/server/handleAuth.js +8 -4
  9. package/esm/auth/server/helperRole.d.ts +11 -4
  10. package/esm/auth/server/helperRole.js +29 -20
  11. package/esm/auth/server/index.d.ts +1 -0
  12. package/esm/auth/server/index.js +1 -0
  13. package/esm/auth/server/module.d.ts +27 -5
  14. package/esm/auth/server/module.js +24 -10
  15. package/esm/auth/server/providers/github.js +13 -2
  16. package/esm/auth/static/assets/Page-5iUUg7GN.d.ts +2 -0
  17. package/esm/auth/static/assets/Page-5iUUg7GN.js +1 -0
  18. package/esm/auth/static/assets/Page-BHW08QWz.css +1 -0
  19. package/esm/auth/static/assets/Page-BcSzu3xq.d.ts +2 -0
  20. package/esm/auth/static/assets/Page-BcSzu3xq.js +20 -0
  21. package/esm/auth/static/assets/Page-sEK21EQB.d.ts +2 -0
  22. package/esm/auth/static/assets/Page-sEK21EQB.js +1 -0
  23. package/esm/auth/static/assets/index-RpcgeXPm.d.ts +232 -0
  24. package/esm/auth/static/assets/index-RpcgeXPm.js +2 -0
  25. package/esm/auth/static/index.html +1 -1
  26. package/esm/auth/types.d.ts +1 -0
  27. package/esm/bin/cmd.js +16 -16
  28. package/esm/changeLog/changeLogEntities.d.ts +21 -0
  29. package/esm/changeLog/changeLogEntities.js +57 -0
  30. package/esm/changeLog/index.d.ts +3 -15
  31. package/esm/changeLog/index.js +3 -51
  32. package/esm/changeLog/server/index.d.ts +39 -28
  33. package/esm/changeLog/server/index.js +40 -29
  34. package/esm/cron/Cron.d.ts +11 -0
  35. package/esm/cron/Cron.js +43 -0
  36. package/esm/cron/Role_Cron.d.ts +3 -0
  37. package/esm/cron/Role_Cron.js +3 -0
  38. package/esm/cron/index.d.ts +3 -0
  39. package/esm/cron/index.js +3 -0
  40. package/esm/cron/server/index.d.ts +29 -11
  41. package/esm/cron/server/index.js +29 -13
  42. package/esm/feedback/FeedbackController.d.ts +3 -1
  43. package/esm/feedback/FeedbackController.js +23 -1
  44. package/esm/feedback/server/index.d.ts +2 -2
  45. package/esm/feedback/server/index.js +2 -2
  46. package/esm/feedback/types.d.ts +6 -0
  47. package/esm/feedback/ui/DialogIssue.svelte +16 -2
  48. package/esm/feedback/ui/DialogIssues.svelte +2 -2
  49. package/esm/feedback/ui/DialogMilestones.svelte +2 -3
  50. package/esm/feedback/ui/Feedback.svelte +1 -1
  51. package/esm/formats/dates.js +1 -1
  52. package/esm/formats/index.d.ts +1 -1
  53. package/esm/formats/index.js +1 -1
  54. package/esm/formats/strings.d.ts +2 -0
  55. package/esm/formats/strings.js +22 -0
  56. package/esm/index.d.ts +3 -84
  57. package/esm/index.js +3 -47
  58. package/esm/internals/FF_Entity.d.ts +2 -0
  59. package/esm/{FF_Entity.js → internals/FF_Entity.js} +10 -10
  60. package/esm/{FF_Fields.js → internals/FF_Fields.js} +1 -1
  61. package/esm/{cellsBuildor.d.ts → internals/cellsBuildor.d.ts} +1 -1
  62. package/esm/{common.d.ts → internals/common.d.ts} +0 -2
  63. package/esm/internals/common.js +3 -0
  64. package/esm/{helper.js → internals/helper.js} +1 -1
  65. package/esm/internals/index.d.ts +83 -0
  66. package/esm/internals/index.js +45 -0
  67. package/esm/{storeItem.js → internals/storeItem.js} +2 -2
  68. package/esm/mail/Mail.d.ts +13 -0
  69. package/esm/mail/Mail.js +51 -0
  70. package/esm/mail/Role_Mail.d.ts +3 -0
  71. package/esm/mail/Role_Mail.js +3 -0
  72. package/esm/mail/index.d.ts +7 -2
  73. package/esm/mail/index.js +7 -2
  74. package/esm/mail/server/formatMailHelper.d.ts +16 -0
  75. package/esm/mail/server/formatMailHelper.js +113 -0
  76. package/esm/mail/server/index.d.ts +32 -19
  77. package/esm/mail/server/index.js +113 -38
  78. package/esm/server/index.d.ts +9 -6
  79. package/esm/server/index.js +28 -50
  80. package/esm/svelte/FF_Layout.svelte +2 -2
  81. package/esm/svelte/dialog/DialogManagement.svelte +2 -2
  82. package/esm/svelte/dialog/DialogPrimitive.svelte +1 -1
  83. package/esm/svelte/dialog/DialogPrimitive.svelte.d.ts +1 -1
  84. package/esm/svelte/dialog/dialog.d.ts +1 -1
  85. package/esm/svelte/dialog/dialog.js +1 -1
  86. package/esm/svelte/helpers.d.ts +1 -0
  87. package/esm/svelte/index.d.ts +1 -0
  88. package/esm/svelte/index.js +1 -0
  89. package/esm/svelte/initRemultSvelteReactivity.d.ts +1 -0
  90. package/esm/svelte/initRemultSvelteReactivity.js +29 -0
  91. package/esm/sveltekit/server/index.d.ts +2 -2
  92. package/esm/sveltekit/server/index.js +2 -2
  93. package/esm/ui/Button.svelte +2 -2
  94. package/esm/ui/Button.svelte.d.ts +1 -1
  95. package/esm/ui/Field.svelte +7 -5
  96. package/esm/ui/Field.svelte.d.ts +5 -2
  97. package/esm/ui/FieldGroup.svelte +4 -3
  98. package/esm/ui/FieldGroup.svelte.d.ts +7 -4
  99. package/esm/ui/Grid.svelte +3 -3
  100. package/esm/ui/Grid.svelte.d.ts +2 -2
  101. package/esm/ui/Grid2.svelte +3 -3
  102. package/esm/ui/Grid2.svelte.d.ts +1 -1
  103. package/esm/ui/GridPaginate.svelte +2 -2
  104. package/esm/ui/GridPaginate2.svelte +1 -1
  105. package/esm/ui/Loading.svelte +1 -1
  106. package/esm/ui/Tooltip.svelte +1 -1
  107. package/esm/ui/dialog/DialogForm.svelte +5 -5
  108. package/esm/ui/dialog/DialogManagement.svelte +2 -2
  109. package/esm/ui/dialog/DialogPrimitive.svelte +3 -3
  110. package/esm/ui/dialog/DialogPrimitive.svelte.d.ts +1 -1
  111. package/esm/ui/dialog/FormEditAction.svelte +3 -3
  112. package/esm/ui/dialog/FormEditAction.svelte.d.ts +1 -1
  113. package/esm/ui/dialog/dialog.d.ts +1 -1
  114. package/esm/ui/dialog/dialog.js +1 -1
  115. package/esm/ui/index.d.ts +1 -1
  116. package/esm/ui/internals/FieldContainer.svelte +2 -2
  117. package/esm/ui/internals/Textarea.svelte +3 -3
  118. package/esm/ui/internals/select/MultiSelectMelt.svelte +7 -7
  119. package/esm/ui/internals/select/MultiSelectMelt.svelte.d.ts +1 -1
  120. package/esm/ui/internals/select/SelectMelt.svelte +29 -15
  121. package/esm/ui/internals/select/SelectMelt.svelte.d.ts +5 -2
  122. package/esm/ui/internals/select/SelectRadio.svelte +1 -1
  123. package/esm/ui/internals/select/SelectRadio.svelte.d.ts +1 -1
  124. package/esm/ui/link/LinkPlus.svelte +3 -3
  125. package/esm/ui/link/LinkPlus.svelte.d.ts +1 -1
  126. package/esm/virtual/Customer.js +1 -1
  127. package/esm/virtual/StateDemoEnum.d.ts +2 -2
  128. package/esm/virtual/StateDemoEnum.js +1 -1
  129. package/esm/virtual/UIEntity.js +1 -1
  130. package/esm/vite/index.js +50 -52
  131. package/package.json +19 -12
  132. package/esm/FF_Entity.d.ts +0 -2
  133. package/esm/ROUTES.d.ts +0 -102
  134. package/esm/ROUTES.js +0 -106
  135. package/esm/auth/static/assets/Page-BorYIfy9.d.ts +0 -6
  136. package/esm/auth/static/assets/Page-BorYIfy9.js +0 -1
  137. package/esm/auth/static/assets/Page-Cm4MsdIa.d.ts +0 -6
  138. package/esm/auth/static/assets/Page-Cm4MsdIa.js +0 -20
  139. package/esm/auth/static/assets/Page-CqsLm8yQ.d.ts +0 -6
  140. package/esm/auth/static/assets/Page-CqsLm8yQ.js +0 -1
  141. package/esm/auth/static/assets/Page-JfNiCSIG.css +0 -1
  142. package/esm/auth/static/assets/index-Borxa2ns.d.ts +0 -234
  143. package/esm/auth/static/assets/index-Borxa2ns.js +0 -44
  144. package/esm/common.js +0 -8
  145. package/esm/mail/templates/DefaultMail.svelte +0 -86
  146. package/esm/mail/templates/DefaultMail.svelte.d.ts +0 -30
  147. /package/esm/{BaseEnum.d.ts → internals/BaseEnum.d.ts} +0 -0
  148. /package/esm/{BaseEnum.js → internals/BaseEnum.js} +0 -0
  149. /package/esm/{FF_Fields.d.ts → internals/FF_Fields.d.ts} +0 -0
  150. /package/esm/{cellsBuildor.js → internals/cellsBuildor.js} +0 -0
  151. /package/esm/{helper.d.ts → internals/helper.d.ts} +0 -0
  152. /package/esm/{storeItem.d.ts → internals/storeItem.d.ts} +0 -0
  153. /package/esm/{storeList.d.ts → internals/storeList.d.ts} +0 -0
  154. /package/esm/{storeList.js → internals/storeList.js} +0 -0
  155. /package/esm/{theme.d.ts → internals/theme.d.ts} +0 -0
  156. /package/esm/{theme.js → internals/theme.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { repo } from 'remult';
2
- import { cyan, green, Log, yellow } from '@kitql/helpers';
3
- import { env } from '$env/dynamic/private';
4
- import { FFAuthUser } from '../Entities';
2
+ import { nameify } from '../../formats';
3
+ import { cyan, green, yellow } from '@kitql/helpers';
4
+ import { FFAuthProvider } from '../Entities';
5
5
  /**
6
6
  * will merge the roles and remove duplicates
7
7
  * will return a new array & a status if the array was changed
@@ -17,27 +17,36 @@ export const mergeRoles = (existing, newOnes) => {
17
17
  }
18
18
  return { roles: Array.from(result), changed };
19
19
  };
20
- export const initRoleFromEnv = async (log, userEntity, envKey, role) => {
21
- const envValue = envKey ? env[envKey] : '';
22
- const identifiers = envValue === undefined ? [] : (envValue ?? '').split(',').map((c) => c.trim());
23
- for (let i = 0; i < identifiers.length; i++) {
24
- const identifier = identifiers[i].trim();
25
- if (identifier !== '') {
26
- let user = await repo(userEntity).findFirst({ identifier });
20
+ export const linkRoleToUsersFromEnv = async (o) => {
21
+ const { log, accountEntity, userEntity, envKey, envValue, roles } = o;
22
+ const providersInfo = envValue === undefined
23
+ ? []
24
+ : (envValue ?? '')
25
+ .split(',')
26
+ .map((c) => c.trim())
27
+ .filter(Boolean);
28
+ for (let i = 0; i < providersInfo.length; i++) {
29
+ const [providerUserId, provider] = providersInfo[i].split('|');
30
+ let a = await repo(accountEntity).findFirst({ providerUserId });
31
+ if (!a) {
32
+ const user = await repo(userEntity).upsert({ where: { roles, name: nameify(providerUserId) } });
33
+ a = await repo(accountEntity).insert({
34
+ providerUserId,
35
+ provider: provider ?? FFAuthProvider.PASSWORD.id,
36
+ userId: user.id,
37
+ });
38
+ }
39
+ else {
40
+ let user = await repo(userEntity).findFirst({ id: a.userId });
27
41
  if (!user) {
28
- user = repo(userEntity).create({ identifier, roles: [role] });
29
- await repo(userEntity).save(user);
30
- }
31
- else {
32
- if (!user.roles.includes(role)) {
33
- user.roles.push(role);
34
- await repo(userEntity).save(user);
35
- }
42
+ user = repo(userEntity).create({ id: a.userId, name: nameify(providerUserId) });
36
43
  }
44
+ user.roles = [...new Set([...user.roles, ...roles].sort())];
45
+ await repo(userEntity).save(user);
37
46
  }
38
47
  }
39
- if (identifiers.length > 0) {
40
- log.info(`${cyan(envKey)}: ${identifiers.map((c) => green(c.trim())).join(', ')} added via ${yellow(`.env`)}.`);
48
+ if (providersInfo.length > 0) {
49
+ log.info(`${cyan(envKey)}: ${providersInfo.map((c) => green(c.trim())).join(', ')} added via ${yellow(`.env`)}.`);
41
50
  }
42
51
  else {
43
52
  log.info(`${cyan(envKey)}: No users added via ${yellow(`.env`)}.`);
@@ -2,6 +2,7 @@ import * as arctic from 'arctic';
2
2
  import { handleAuth } from './handleAuth.js';
3
3
  import { handleGuard } from './handleGuard.js';
4
4
  export { auth, authModuleRaw } from './module';
5
+ export { linkRoleToUsersFromEnv as initRoleFromEnv } from './helperRole';
5
6
  export { checkOAuthConfig } from './providers/helperProvider';
6
7
  export { github } from './providers/github';
7
8
  export { arctic, handleAuth, handleGuard };
@@ -2,6 +2,7 @@ import * as arctic from 'arctic';
2
2
  import { handleAuth } from './handleAuth.js';
3
3
  import { handleGuard } from './handleGuard.js';
4
4
  export { auth, authModuleRaw } from './module';
5
+ export { linkRoleToUsersFromEnv as initRoleFromEnv } from './helperRole';
5
6
  export { checkOAuthConfig } from './providers/helperProvider';
6
7
  export { github } from './providers/github';
7
8
  export { arctic, handleAuth, handleGuard };
@@ -1,10 +1,9 @@
1
1
  import type { OAuth2Tokens } from 'arctic';
2
2
  import type { ClassType, UserInfo } from 'remult';
3
- import { Module } from '../../server';
3
+ import { ModuleFF } from '../../server';
4
4
  import type { RecursivePartial } from '../../utils/types';
5
5
  import { FFAuthAccount, FFAuthUser, FFAuthUserSession } from '../Entities';
6
6
  import type { FirstlyData, FirstlyDataAuth, OAuth2UserInfo, ProviderAuthorizationURLOptions } from '../types';
7
- import { initRoleFromEnv } from './helperRole';
8
7
  export type FFOAuth2Provider<T = any, LitName extends string = string> = {
9
8
  name: LitName;
10
9
  caption: string;
@@ -23,6 +22,7 @@ type AuthOptions<TUserEntity extends FFAuthUser = FFAuthUser, TSessionEntity ext
23
22
  ui?: false | RecursivePartial<FirstlyDataAuth['ui']>;
24
23
  strings?: {
25
24
  resetPasswordSend?: string;
25
+ resetPasswordUnknownUser?: string;
26
26
  anErrorOccurred?: string;
27
27
  cannotSignUp?: string;
28
28
  };
@@ -54,6 +54,25 @@ type AuthOptions<TUserEntity extends FFAuthUser = FFAuthUser, TSessionEntity ext
54
54
  email: string;
55
55
  url: string;
56
56
  }) => Promise<void>;
57
+ /**
58
+ * When defining this, you need to return a "manually constructed object" that will be used to send to the client.
59
+ * This is useful if you want to add some extra properties to the user object.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * transformDbUserToClientUser(session, user) {
64
+ * return {
65
+ * id: user.id,
66
+ * name: user.name,
67
+ * image: user.image ?? undefined,
68
+ * session: {
69
+ * id: session.id,
70
+ * expiresAt: session.expiresAt,
71
+ * },
72
+ * }
73
+ * }
74
+ * ```
75
+ */
57
76
  transformDbUserToClientUser?: (session: TSessionEntity, user: TUserEntity) => UserInfo;
58
77
  providers?: {
59
78
  demo?: {
@@ -127,6 +146,7 @@ type AuthOptions<TUserEntity extends FFAuthUser = FFAuthUser, TSessionEntity ext
127
146
  };
128
147
  oAuths?: FFOAuth2Provider[];
129
148
  };
149
+ envRoles_AssignUsers?: Record<string, string>;
130
150
  };
131
151
  export declare let AUTH_OPTIONS: AuthOptions;
132
152
  export declare const getSafeOptions: <TUserEntity extends FFAuthUser = FFAuthUser, TSessionEntity extends FFAuthUserSession = FFAuthUserSession, TAccountEntity extends FFAuthAccount = FFAuthAccount>() => {
@@ -229,6 +249,7 @@ export declare const getSafeOptions: <TUserEntity extends FFAuthUser = FFAuthUse
229
249
  } | undefined;
230
250
  strings: {
231
251
  resetPasswordSend: string;
252
+ resetPasswordUnknownUser: string;
232
253
  anErrorOccurred: string;
233
254
  cannotSignUp: string;
234
255
  };
@@ -260,14 +281,14 @@ export declare const getSafeOptions: <TUserEntity extends FFAuthUser = FFAuthUse
260
281
  };
261
282
  readonly customHtmlHead: string;
262
283
  } | undefined;
284
+ envRoles_AssignUsers: Record<string, string>;
263
285
  };
264
- export declare const authModuleRaw: Module;
286
+ export declare const authModuleRaw: ModuleFF;
265
287
  /**
266
288
  * To enable authentication in your app in a few lines of code.
267
289
  * _Info: index: -777_
268
290
  */
269
- export declare const auth: <TUserEntity extends FFAuthUser = FFAuthUser, TSessionEntity extends FFAuthUserSession = FFAuthUserSession, TAccountEntity extends FFAuthAccount = FFAuthAccount>(o: AuthOptions<TUserEntity, TSessionEntity, TAccountEntity>) => Module;
270
- export { initRoleFromEnv };
291
+ export declare const auth: <TUserEntity extends FFAuthUser = FFAuthUser, TSessionEntity extends FFAuthUserSession = FFAuthUserSession, TAccountEntity extends FFAuthAccount = FFAuthAccount>(o: AuthOptions<TUserEntity, TSessionEntity, TAccountEntity>) => ModuleFF;
271
292
  declare module 'remult' {
272
293
  interface UserInfo {
273
294
  session: {
@@ -276,3 +297,4 @@ declare module 'remult' {
276
297
  };
277
298
  }
278
299
  }
300
+ export {};
@@ -1,16 +1,16 @@
1
1
  import bcrypt from 'bcryptjs';
2
2
  import { EntityError, remult } from 'remult';
3
- import { red } from '@kitql/helpers';
3
+ import { red, yellow } from '@kitql/helpers';
4
4
  import { getRelativePackagePath } from '@kitql/internals';
5
+ import { env } from '$env/dynamic/private';
5
6
  import { building } from '$app/environment';
6
7
  import { AuthController } from '..';
7
- import { FF_Role } from '../..';
8
- import { Module } from '../../server';
9
- import { FF_Role_Auth, FFAuthAccount, FFAuthUser, FFAuthUserSession } from '../Entities';
8
+ import { ModuleFF } from '../../server';
9
+ import { FFAuthAccount, FFAuthUser, FFAuthUserSession } from '../Entities';
10
10
  import { AuthControllerServer } from './AuthController.server';
11
11
  import { validateSessionToken } from './helperDb';
12
12
  import { setSessionTokenCookie } from './helperRemultServer';
13
- import { initRoleFromEnv } from './helperRole';
13
+ import { linkRoleToUsersFromEnv } from './helperRole';
14
14
  export let AUTH_OPTIONS = { ui: {} };
15
15
  const buildUrlOrDefault = (base, userSetting, fallback) => {
16
16
  if (userSetting === false) {
@@ -103,7 +103,7 @@ export const getSafeOptions = () => {
103
103
  transformDbUserToClientUserToUse = (session, user) => {
104
104
  return {
105
105
  id: user.id,
106
- name: user.identifier,
106
+ name: user.name,
107
107
  roles: user.roles,
108
108
  session: {
109
109
  id: session.id,
@@ -153,14 +153,17 @@ export const getSafeOptions = () => {
153
153
  providers: AUTH_OPTIONS.providers,
154
154
  strings: {
155
155
  resetPasswordSend: AUTH_OPTIONS.strings?.resetPasswordSend ?? 'Mail sent ! You can now close this window.',
156
+ resetPasswordUnknownUser: AUTH_OPTIONS.strings?.resetPasswordUnknownUser ??
157
+ 'If your email is registered, you will receive an email with a link to reset your password.',
156
158
  anErrorOccurred: AUTH_OPTIONS.strings?.anErrorOccurred ?? 'An error occurred, contact the administrator.',
157
159
  cannotSignUp: AUTH_OPTIONS.strings?.cannotSignUp ??
158
160
  "You can't signup by yourself! Contact the administrator.",
159
161
  },
160
162
  ui,
163
+ envRoles_AssignUsers: AUTH_OPTIONS.envRoles_AssignUsers ?? {},
161
164
  };
162
165
  };
163
- export const authModuleRaw = new Module({
166
+ export const authModuleRaw = new ModuleFF({
164
167
  name: 'auth',
165
168
  priority: -777,
166
169
  });
@@ -208,9 +211,20 @@ export const auth = (o) => {
208
211
  }
209
212
  };
210
213
  authModuleRaw.initApi = async () => {
211
- await initRoleFromEnv(authModuleRaw.log, oSafe.User, 'FF_ROLE_ADMIN', FF_Role.FF_Role_Admin);
212
- await initRoleFromEnv(authModuleRaw.log, oSafe.User, 'FF_ROLE_AUTH_ADMIN', FF_Role_Auth.FF_Role_Auth_Admin);
214
+ const oSafe = getSafeOptions();
215
+ for (const [key, value] of Object.entries(oSafe.envRoles_AssignUsers)) {
216
+ await linkRoleToUsersFromEnv({
217
+ log: authModuleRaw.log,
218
+ accountEntity: oSafe.Account,
219
+ userEntity: oSafe.User,
220
+ envKey: key.toUpperCase(),
221
+ envValue: env[key.toUpperCase()] ?? '',
222
+ roles: [value],
223
+ });
224
+ }
225
+ if (Object.entries(oSafe.envRoles_AssignUsers).length === 0 && AUTH_OPTIONS.debug) {
226
+ authModuleRaw.log.info(`set ${yellow('auth: { linkRoleToUsersFromEnv: ... }')} to assign roles to users via ${yellow('.env')}.`);
227
+ }
213
228
  };
214
229
  return authModuleRaw;
215
230
  };
216
- export { initRoleFromEnv };
@@ -59,18 +59,29 @@ export function github(options) {
59
59
  },
60
60
  });
61
61
  const user = await res.json();
62
- if ((options?.authorizationURLOptions ?? []).includes('user:email')) {
62
+ const nameOptions = [user.login];
63
+ const emailOptions = [];
64
+ if ((options?.authorizationURLOptions ?? ['user:email']).includes('user:email')) {
63
65
  const res = await fetch('https://api.github.com/user/emails', {
64
66
  headers: {
65
67
  Authorization: `Bearer ${tokens.accessToken()}`,
66
68
  },
67
69
  });
68
70
  user.emails = await res.json();
71
+ if (Array.isArray(user.emails)) {
72
+ const primaryEmails = user.emails.filter((email) => email.primary === true);
73
+ primaryEmails.forEach((email) => {
74
+ if (email.email) {
75
+ nameOptions.unshift(email.email);
76
+ emailOptions.unshift(email.email);
77
+ }
78
+ });
79
+ }
69
80
  }
70
81
  if (options?.log) {
71
82
  authModuleRaw.log.info(`user`, user);
72
83
  }
73
- return { raw: user, providerUserId: String(user.id), nameOptions: [user.login] };
84
+ return { raw: user, providerUserId: String(user.id), nameOptions, emailOptions };
74
85
  },
75
86
  };
76
87
  }
@@ -0,0 +1,2 @@
1
+ export { r as default };
2
+ declare function r(a: any): void;
@@ -0,0 +1 @@
1
+ import{aa as t,U as o}from"./index-RpcgeXPm.js";function r(a){var e=t("Hello from files");o(a,e)}export{r as default};
@@ -0,0 +1 @@
1
+ .oauth-container.svelte-1dwkktf{display:flex;flex-direction:column;gap:.5rem}.oauth-button-icon.svelte-1dwkktf{width:1.25rem;height:1.25rem}.oauth-button.svelte-1dwkktf{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500}form.svelte-skcj83{display:flex;flex-direction:column}h1.svelte-1jjivcr{text-align:center;margin-bottom:2rem}.wrapper.svelte-1jjivcr{min-height:100vh;display:flex;justify-content:center;align-items:center;margin:0 auto}.centered-layout.svelte-1jjivcr{display:flex;justify-content:center;align-items:center;width:100%}.split-layout.svelte-1jjivcr{display:flex;width:100%;min-height:100vh}.form-side.svelte-1jjivcr{width:50%;display:flex;justify-content:center;align-items:center}.image-side.svelte-1jjivcr{width:50%;height:100vh;overflow:hidden}.image-side.svelte-1jjivcr img:where(.svelte-1jjivcr){width:100%;height:100%;object-fit:cover}.form.svelte-1jjivcr{max-width:360px;width:100%;padding:1rem;display:flex;flex-direction:column}.form-footer.svelte-1jjivcr{margin-top:1rem;display:flex;flex-direction:column;justify-content:center;align-items:center}.fallback.svelte-1jjivcr{display:flex;justify-content:center;align-items:center}@media (max-width: 768px){.split-layout.svelte-1jjivcr{flex-direction:column}.form-side.svelte-1jjivcr{width:100%;order:2}.image-side.svelte-1jjivcr{width:100%;height:50vh;order:1}.form.svelte-1jjivcr{max-width:100%}}
@@ -0,0 +1,2 @@
1
+ export { Bo as default };
2
+ declare function Bo(i: any, e: any): void;