@absolutejs/auth 0.61.0 → 0.63.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.
@@ -0,0 +1,43 @@
1
+ import { Elysia } from 'elysia';
2
+ import type { AuthSessionSource } from '../session/types';
3
+ export declare const requireAuthPlugin: <UserType>({ authSessionStore }?: {
4
+ authSessionStore?: AuthSessionSource<UserType>;
5
+ }) => Elysia<"", {
6
+ decorator: {};
7
+ store: {
8
+ session: import("..").SessionRecord<UserType>;
9
+ unregisteredSession: import("..").UnregisteredSessionRecord;
10
+ };
11
+ derive: {};
12
+ resolve: {
13
+ readonly user: NonNullable<UserType> | null;
14
+ };
15
+ }, {
16
+ typebox: {};
17
+ error: {};
18
+ }, {
19
+ schema: import("elysia").UnwrapRoute<{
20
+ cookie: import("@sinclair/typebox").TObject<{
21
+ user_session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTemplateLiteralSyntax<"${string}-${string}-${string}-${string}-${string}">>;
22
+ }>;
23
+ }, {}, "">;
24
+ standaloneSchema: {};
25
+ macro: {};
26
+ macroFn: {};
27
+ parser: {};
28
+ response: {
29
+ 401: "User is not authenticated";
30
+ };
31
+ }, {}, {
32
+ derive: {};
33
+ resolve: {};
34
+ schema: {};
35
+ standaloneSchema: {};
36
+ response: {};
37
+ }, {
38
+ derive: {};
39
+ resolve: {};
40
+ schema: {};
41
+ standaloneSchema: {};
42
+ response: {};
43
+ }>;
package/dist/server.d.ts CHANGED
@@ -14,6 +14,7 @@ export type { SetupCapability, SetupSession, SetupSessionStore } from './portal/
14
14
  export { createSetupSession } from './portal/operations';
15
15
  export { createPostgresSetupSessionStore } from './portal/postgresSetupSessionStore';
16
16
  export { protectRoutePlugin } from './routes/protectRoute';
17
+ export { requireAuthPlugin } from './routes/requireAuth';
17
18
  export type { ScimConfig } from './scim/config';
18
19
  export type { ScimFilter, ScimGroup, ScimGroupInput, ScimTokenStore, ScimUser, ScimUserInput } from './scim/types';
19
20
  export { createPostgresScimTokenStore } from './scim/postgresScimTokenStore';
package/dist/server.js CHANGED
@@ -3978,7 +3978,7 @@ var createCustomOAuth2Client = (providerConfig, credentials) => buildOAuth2Clien
3978
3978
  var createOAuth2Client = (providerName, config) => buildOAuth2Client(providers[providerName], config);
3979
3979
 
3980
3980
  // src/index.ts
3981
- import { Elysia as Elysia45 } from "elysia";
3981
+ import { Elysia as Elysia46 } from "elysia";
3982
3982
 
3983
3983
  // src/apikeys/routes.ts
3984
3984
  import { Elysia, t } from "elysia";
@@ -6141,6 +6141,15 @@ init_constants();
6141
6141
  init_crypto();
6142
6142
  import { Elysia as Elysia11, t as t8 } from "elysia";
6143
6143
 
6144
+ // src/csrf.ts
6145
+ var isTrustedOrigin = (request, trustedOrigins) => {
6146
+ if (trustedOrigins === undefined || trustedOrigins.length === 0) {
6147
+ return true;
6148
+ }
6149
+ const origin = request.headers.get("origin");
6150
+ return origin !== null && trustedOrigins.includes(origin);
6151
+ };
6152
+
6144
6153
  // src/credentials/import.ts
6145
6154
  init_crypto();
6146
6155
  var normalizeEmail = (email) => email.trim().toLowerCase();
@@ -6345,7 +6354,8 @@ var credentialsLogin = ({
6345
6354
  passwordVerifier,
6346
6355
  rehashOnLogin = false,
6347
6356
  requireEmailVerification = false,
6348
- sessionDurationMs = DEFAULT_CREDENTIAL_SESSION_TTL_MS
6357
+ sessionDurationMs = DEFAULT_CREDENTIAL_SESSION_TTL_MS,
6358
+ trustedOrigins
6349
6359
  }) => new Elysia11().use(sessionStore()).post(loginRoute, async ({
6350
6360
  body: { email, password },
6351
6361
  cookie: { user_session_id },
@@ -6353,6 +6363,9 @@ var credentialsLogin = ({
6353
6363
  status,
6354
6364
  store: { session, unregisteredSession }
6355
6365
  }) => withSpan("auth.credentials.login", undefined, async (span) => {
6366
+ if (!isTrustedOrigin(request, trustedOrigins)) {
6367
+ return status("Forbidden", "Request origin is not allowed");
6368
+ }
6356
6369
  const headerBag = {};
6357
6370
  request.headers.forEach((value, key) => {
6358
6371
  headerBag[key] = value;
@@ -6510,19 +6523,26 @@ var credentialsRegister = ({
6510
6523
  credentialStore,
6511
6524
  onCreateCredentialUser,
6512
6525
  onCredentialsLoginSuccess,
6526
+ onExistingAccount,
6513
6527
  onRegistrationSuccess,
6514
6528
  onSendEmail,
6515
6529
  passwordPolicy,
6516
6530
  registerRoute = "/auth/register",
6517
6531
  requireEmailVerification = false,
6532
+ revealRegistrationConflicts = false,
6518
6533
  sessionDurationMs = DEFAULT_CREDENTIAL_SESSION_TTL_MS,
6534
+ trustedOrigins,
6519
6535
  verificationTokenDurationMs = DEFAULT_VERIFICATION_TOKEN_TTL_MS
6520
6536
  }) => new Elysia13().use(sessionStore()).post(registerRoute, async ({
6521
6537
  body: { email, password, ...extraFields },
6522
6538
  cookie: { user_session_id },
6539
+ request,
6523
6540
  status,
6524
6541
  store: { session }
6525
6542
  }) => withSpan("auth.credentials.register", undefined, async () => {
6543
+ if (!isTrustedOrigin(request, trustedOrigins)) {
6544
+ return status("Forbidden", "Request origin is not allowed");
6545
+ }
6526
6546
  const normalizedEmail = email.trim().toLowerCase();
6527
6547
  if (!normalizedEmail.includes("@")) {
6528
6548
  return status("Bad Request", "A valid email is required");
@@ -6536,7 +6556,13 @@ var credentialsRegister = ({
6536
6556
  }
6537
6557
  const existing = await credentialStore.getCredentialByEmail(normalizedEmail);
6538
6558
  if (existing) {
6539
- return status("Conflict", "Email is already registered");
6559
+ if (revealRegistrationConflicts) {
6560
+ return status("Conflict", "Email is already registered");
6561
+ }
6562
+ await onExistingAccount?.({ email: normalizedEmail });
6563
+ return status("Created", {
6564
+ status: "verification_required"
6565
+ });
6540
6566
  }
6541
6567
  const created = await onCreateCredentialUser({
6542
6568
  ...extraFields,
@@ -32502,6 +32528,21 @@ var createInMemoryLinkedProviderStores = (input = {}) => {
32502
32528
  };
32503
32529
  return { bindingStore, grantStore };
32504
32530
  };
32531
+ // src/routes/requireAuth.ts
32532
+ import { Elysia as Elysia41, t as t33 } from "elysia";
32533
+ var requireAuthPlugin = ({
32534
+ authSessionStore
32535
+ } = {}) => new Elysia41({
32536
+ name: "@absolutejs/auth/require-auth",
32537
+ seed: pluginDependencySeed(authSessionStore)
32538
+ }).use(sessionStore()).guard({ cookie: t33.Cookie({ user_session_id: userSessionIdTypebox }) }).resolve(async ({ store: { session }, cookie: { user_session_id } }) => {
32539
+ const { user } = await getStatusFromSource({
32540
+ authSessionStore,
32541
+ session,
32542
+ user_session_id
32543
+ });
32544
+ return { user: user ?? null };
32545
+ }).onBeforeHandle(({ user, status }) => user === null ? status("Unauthorized", "User is not authenticated") : undefined).as("global");
32505
32546
  // src/session/impersonation.ts
32506
32547
  init_constants();
32507
32548
  var DEFAULT_IMPERSONATION_TTL_MS = MILLISECONDS_IN_AN_HOUR;
@@ -33920,7 +33961,7 @@ var createInMemoryCredentialOfferStore = () => {
33920
33961
  };
33921
33962
  };
33922
33963
  // src/oidc/vciRoutes.ts
33923
- import { Elysia as Elysia41, t as t33 } from "elysia";
33964
+ import { Elysia as Elysia42, t as t34 } from "elysia";
33924
33965
  var HTTP_OK4 = 200;
33925
33966
  var HTTP_BAD_REQUEST4 = 400;
33926
33967
  var HTTP_UNAUTHORIZED5 = 401;
@@ -33945,7 +33986,7 @@ var vciRoutes = ({
33945
33986
  const credentialRoute = `${vciRoute}/credential`;
33946
33987
  const nonceRoute = `${vciRoute}/nonce`;
33947
33988
  const vciSigningKey = vciConfig.signingKey ?? signingKey;
33948
- return new Elysia41().get("/.well-known/openid-credential-issuer", () => Response.json(buildIssuerMetadata({
33989
+ return new Elysia42().get("/.well-known/openid-credential-issuer", () => Response.json(buildIssuerMetadata({
33949
33990
  config: vciConfig,
33950
33991
  issuer: issuerUrl,
33951
33992
  vciRoute
@@ -33968,11 +34009,11 @@ var vciRoutes = ({
33968
34009
  return errorBody(result.error, HTTP_BAD_REQUEST4);
33969
34010
  return Response.json({ credential: result.credential, format: result.format }, { status: HTTP_OK4 });
33970
34011
  }, {
33971
- body: t33.Object({
33972
- format: t33.Optional(t33.Union([t33.Literal("vc+sd-jwt")])),
33973
- proof: t33.Optional(t33.Object({
33974
- jwt: t33.String(),
33975
- proof_type: t33.Literal("jwt")
34012
+ body: t34.Object({
34013
+ format: t34.Optional(t34.Union([t34.Literal("vc+sd-jwt")])),
34014
+ proof: t34.Optional(t34.Object({
34015
+ jwt: t34.String(),
34016
+ proof_type: t34.Literal("jwt")
33976
34017
  }))
33977
34018
  })
33978
34019
  }).post(nonceRoute, async () => {
@@ -34094,7 +34135,7 @@ var verifyStatusListJwt = async ({
34094
34135
  };
34095
34136
  };
34096
34137
  // src/vc/statusListRoutes.ts
34097
- import { Elysia as Elysia42, t as t34 } from "elysia";
34138
+ import { Elysia as Elysia43, t as t35 } from "elysia";
34098
34139
  var HTTP_OK5 = 200;
34099
34140
  var HTTP_NOT_FOUND = 404;
34100
34141
  var DEFAULT_STATUS_ROUTE = "/vc/status";
@@ -34106,7 +34147,7 @@ var statusListRoutes = ({
34106
34147
  ttlSeconds
34107
34148
  }) => {
34108
34149
  const listRoute = `${statusRoute}/:listId`;
34109
- return new Elysia42().get(listRoute, async ({ params: { listId } }) => {
34150
+ return new Elysia43().get(listRoute, async ({ params: { listId } }) => {
34110
34151
  const bits = await getStatusList(listId);
34111
34152
  if (bits === undefined) {
34112
34153
  return new Response("Not found", { status: HTTP_NOT_FOUND });
@@ -34122,7 +34163,7 @@ var statusListRoutes = ({
34122
34163
  headers: { "content-type": STATUS_LIST_SUB_TYP },
34123
34164
  status: HTTP_OK5
34124
34165
  });
34125
- }, { params: t34.Object({ listId: t34.String() }) });
34166
+ }, { params: t35.Object({ listId: t35.String() }) });
34126
34167
  };
34127
34168
  // src/vc/openid4vp.ts
34128
34169
  init_crypto();
@@ -34327,7 +34368,7 @@ var createInMemoryPresentationRequestStore = () => {
34327
34368
  };
34328
34369
  };
34329
34370
  // src/vc/vpRoutes.ts
34330
- import { Elysia as Elysia43, t as t35 } from "elysia";
34371
+ import { Elysia as Elysia44, t as t36 } from "elysia";
34331
34372
  var HTTP_OK6 = 200;
34332
34373
  var HTTP_BAD_REQUEST5 = 400;
34333
34374
  var HTTP_NOT_FOUND2 = 404;
@@ -34346,7 +34387,7 @@ var vpRoutes = ({
34346
34387
  const authorizeRoute = `${vpRoute}/authorize`;
34347
34388
  const requestRoute = `${vpRoute}/request/:id`;
34348
34389
  const responseRoute = `${vpRoute}/response`;
34349
- return new Elysia43().post(authorizeRoute, async ({ body }) => {
34390
+ return new Elysia44().post(authorizeRoute, async ({ body }) => {
34350
34391
  const input = {
34351
34392
  clientId: body.client_id ?? defaultClientId,
34352
34393
  requestedClaims: body.requested_claims,
@@ -34364,10 +34405,10 @@ var vpRoutes = ({
34364
34405
  requestId: result.request.requestId
34365
34406
  }, { status: HTTP_OK6 });
34366
34407
  }, {
34367
- body: t35.Object({
34368
- client_id: t35.Optional(t35.String()),
34369
- requested_claims: t35.Array(t35.String()),
34370
- state: t35.Optional(t35.String())
34408
+ body: t36.Object({
34409
+ client_id: t36.Optional(t36.String()),
34410
+ requested_claims: t36.Array(t36.String()),
34411
+ state: t36.Optional(t36.String())
34371
34412
  })
34372
34413
  }).get(requestRoute, async ({ params: { id } }) => {
34373
34414
  const stored = await vpConfig.requestStore.getRequest(id);
@@ -34393,7 +34434,7 @@ var vpRoutes = ({
34393
34434
  },
34394
34435
  status: HTTP_OK6
34395
34436
  });
34396
- }, { params: t35.Object({ id: t35.String() }) }).post(responseRoute, async ({ body }) => {
34437
+ }, { params: t36.Object({ id: t36.String() }) }).post(responseRoute, async ({ body }) => {
34397
34438
  const requestId = body.state;
34398
34439
  if (requestId === undefined) {
34399
34440
  return errorBody2("missing_state", HTTP_BAD_REQUEST5);
@@ -34414,10 +34455,10 @@ var vpRoutes = ({
34414
34455
  verified: true
34415
34456
  }, { status: HTTP_OK6 });
34416
34457
  }, {
34417
- body: t35.Object({
34418
- presentation_submission: t35.Optional(t35.Unknown()),
34419
- state: t35.Optional(t35.String()),
34420
- vp_token: t35.String()
34458
+ body: t36.Object({
34459
+ presentation_submission: t36.Optional(t36.Unknown()),
34460
+ state: t36.Optional(t36.String()),
34461
+ vp_token: t36.String()
34421
34462
  })
34422
34463
  });
34423
34464
  };
@@ -37773,7 +37814,7 @@ var blockMigrations = {
37773
37814
  webhooks: initMigration("webhooks", [webhookDeliveriesTable])
37774
37815
  };
37775
37816
  // src/sso/samlIdpRoutes.ts
37776
- import { Elysia as Elysia44, t as t36 } from "elysia";
37817
+ import { Elysia as Elysia45, t as t37 } from "elysia";
37777
37818
  var HTTP_BAD_REQUEST6 = 400;
37778
37819
  var HTTP_UNAUTHORIZED6 = 401;
37779
37820
  var HTTP_FOUND2 = 302;
@@ -37883,19 +37924,19 @@ var samlIdpRoutes = ({
37883
37924
  user: userSession.user
37884
37925
  });
37885
37926
  };
37886
- return new Elysia44().use(sessionStore()).post(ssoIdpRoute, async ({ body, cookie: { user_session_id }, request, store }) => handleSpInitiated({
37927
+ return new Elysia45().use(sessionStore()).post(ssoIdpRoute, async ({ body, cookie: { user_session_id }, request, store }) => handleSpInitiated({
37887
37928
  binding: "POST",
37888
37929
  body,
37889
37930
  inMemorySession: store.session,
37890
37931
  request,
37891
37932
  userSessionIdValue: user_session_id.value
37892
37933
  }), {
37893
- body: t36.Object({
37894
- RelayState: t36.Optional(t36.String()),
37895
- SAMLRequest: t36.Optional(t36.String())
37934
+ body: t37.Object({
37935
+ RelayState: t37.Optional(t37.String()),
37936
+ SAMLRequest: t37.Optional(t37.String())
37896
37937
  }),
37897
- cookie: t36.Cookie({
37898
- user_session_id: t36.Optional(userSessionIdTypebox)
37938
+ cookie: t37.Cookie({
37939
+ user_session_id: t37.Optional(userSessionIdTypebox)
37899
37940
  })
37900
37941
  }).get(ssoIdpRoute, async ({ cookie: { user_session_id }, query, request, store }) => handleSpInitiated({
37901
37942
  binding: "Redirect",
@@ -37904,14 +37945,14 @@ var samlIdpRoutes = ({
37904
37945
  request,
37905
37946
  userSessionIdValue: user_session_id.value
37906
37947
  }), {
37907
- cookie: t36.Cookie({
37908
- user_session_id: t36.Optional(userSessionIdTypebox)
37948
+ cookie: t37.Cookie({
37949
+ user_session_id: t37.Optional(userSessionIdTypebox)
37909
37950
  }),
37910
- query: t36.Object({
37911
- RelayState: t36.Optional(t36.String()),
37912
- SAMLRequest: t36.Optional(t36.String()),
37913
- SigAlg: t36.Optional(t36.String()),
37914
- Signature: t36.Optional(t36.String())
37951
+ query: t37.Object({
37952
+ RelayState: t37.Optional(t37.String()),
37953
+ SAMLRequest: t37.Optional(t37.String()),
37954
+ SigAlg: t37.Optional(t37.String()),
37955
+ Signature: t37.Optional(t37.String())
37915
37956
  })
37916
37957
  }).get(idpInitiateRoute, async ({
37917
37958
  cookie: { user_session_id },
@@ -37947,12 +37988,12 @@ var samlIdpRoutes = ({
37947
37988
  user: userSession.user
37948
37989
  });
37949
37990
  }, {
37950
- cookie: t36.Cookie({
37951
- user_session_id: t36.Optional(userSessionIdTypebox)
37991
+ cookie: t37.Cookie({
37992
+ user_session_id: t37.Optional(userSessionIdTypebox)
37952
37993
  }),
37953
- query: t36.Object({
37954
- RelayState: t36.Optional(t36.String()),
37955
- sp: t36.Optional(t36.String())
37994
+ query: t37.Object({
37995
+ RelayState: t37.Optional(t37.String()),
37996
+ sp: t37.Optional(t37.String())
37956
37997
  })
37957
37998
  }).get(idpMetadataRoute, async ({ request }) => xmlResponse(await idpAdapter.getIdpMetadata({
37958
37999
  entityId: idpEntityId,
@@ -38401,7 +38442,7 @@ var buildAuthApplications = async (configuration) => {
38401
38442
  const auditedOnRevocationSuccess = auditEmit ? composeRevocationAudit(onRevocationSuccess, auditEmit) : onRevocationSuccess;
38402
38443
  const auditedOnSignOut = auditEmit ? composeSignOutAudit(onSignOut, auditEmit) : onSignOut;
38403
38444
  const pluginSeed = pluginDependencySeed(configuration);
38404
- const coreRoutes = new Elysia45({
38445
+ const coreRoutes = new Elysia46({
38405
38446
  name: "@absolutejs/auth/core-routes",
38406
38447
  seed: pluginSeed
38407
38448
  }).use([
@@ -38458,7 +38499,7 @@ var buildAuthApplications = async (configuration) => {
38458
38499
  profileRoute
38459
38500
  })
38460
38501
  ]);
38461
- const featureRoutes = new Elysia45({
38502
+ const featureRoutes = new Elysia46({
38462
38503
  name: "@absolutejs/auth/feature-routes",
38463
38504
  seed: pluginSeed
38464
38505
  }).use([
@@ -38467,64 +38508,64 @@ var buildAuthApplications = async (configuration) => {
38467
38508
  authSessionStore,
38468
38509
  cookieSecure: resolvedCookieSecure,
38469
38510
  lockoutGuard
38470
- }) : new Elysia45,
38511
+ }) : new Elysia46,
38471
38512
  auditedMfa ? mfaRoutes({
38472
38513
  ...auditedMfa,
38473
38514
  authSessionStore,
38474
38515
  cookieSecure: resolvedCookieSecure,
38475
38516
  verificationProvider
38476
- }) : new Elysia45,
38517
+ }) : new Elysia46,
38477
38518
  passwordless ? passwordlessRoutes({
38478
38519
  ...passwordless,
38479
38520
  authSessionStore,
38480
38521
  cookieSecure: resolvedCookieSecure,
38481
38522
  emit: auditEmit
38482
- }) : new Elysia45,
38483
- sessions ? sessionRoutes({ ...sessions, authSessionStore }) : new Elysia45,
38523
+ }) : new Elysia46,
38524
+ sessions ? sessionRoutes({ ...sessions, authSessionStore }) : new Elysia46,
38484
38525
  sso ? oidcSsoRoutes({
38485
38526
  ...sso,
38486
38527
  authSessionStore,
38487
38528
  cookieSecure: resolvedCookieSecure
38488
- }) : new Elysia45,
38529
+ }) : new Elysia46,
38489
38530
  sso && sso.samlAdapter ? samlSsoRoutes({
38490
38531
  ...sso,
38491
38532
  authSessionStore,
38492
38533
  cookieSecure: resolvedCookieSecure,
38493
38534
  samlAdapter: sso.samlAdapter
38494
- }) : new Elysia45,
38535
+ }) : new Elysia46,
38495
38536
  sso && sso.getOrganizationByEmailDomain ? ssoDiscoveryRoute({
38496
38537
  getOrganizationByEmailDomain: sso.getOrganizationByEmailDomain,
38497
38538
  ssoConnectionStore: sso.ssoConnectionStore,
38498
38539
  ssoRoute: sso.ssoRoute
38499
- }) : new Elysia45,
38500
- scim ? scimRoutes(scim) : new Elysia45,
38501
- apikeys ? apiKeysRoutes(apikeys) : new Elysia45,
38540
+ }) : new Elysia46,
38541
+ scim ? scimRoutes(scim) : new Elysia46,
38542
+ apikeys ? apiKeysRoutes(apikeys) : new Elysia46,
38502
38543
  oidcConfig ? oidcProviderRoutes({
38503
38544
  ...oidcConfig,
38504
38545
  authSessionStore
38505
- }) : new Elysia45,
38546
+ }) : new Elysia46,
38506
38547
  organizations ? organizationRoutes({
38507
38548
  ...organizations,
38508
38549
  authSessionStore,
38509
38550
  emit: auditEmit
38510
- }) : new Elysia45,
38551
+ }) : new Elysia46,
38511
38552
  roles ? roleRoutes({
38512
38553
  ...roles,
38513
38554
  authSessionStore,
38514
38555
  emit: auditEmit
38515
- }) : new Elysia45,
38516
- portal ? portalRoutes({ ...portal, emit: auditEmit }) : new Elysia45,
38556
+ }) : new Elysia46,
38557
+ portal ? portalRoutes({ ...portal, emit: auditEmit }) : new Elysia46,
38517
38558
  webauthn ? webauthnRoutes({
38518
38559
  ...webauthn,
38519
38560
  authSessionStore,
38520
38561
  cookieSecure: resolvedCookieSecure,
38521
38562
  emit: auditEmit
38522
- }) : new Elysia45,
38563
+ }) : new Elysia46,
38523
38564
  compliance ? complianceRoutes({
38524
38565
  ...compliance,
38525
38566
  authSessionStore,
38526
38567
  emit: auditEmit
38527
- }) : new Elysia45,
38568
+ }) : new Elysia46,
38528
38569
  createConfiguredAuthHtmxRoutes({ authSessionStore, config: htmx }),
38529
38570
  agentAuthRoutes(resolvedAgentAuth)
38530
38571
  ]);
@@ -38539,7 +38580,7 @@ var buildAuthApplications = async (configuration) => {
38539
38580
  };
38540
38581
  var auth = async (configuration) => {
38541
38582
  const { authContext, coreRoutes, featureRoutes } = await buildAuthApplications(configuration);
38542
- const application = new Elysia45({
38583
+ const application = new Elysia46({
38543
38584
  name: "@absolutejs/auth",
38544
38585
  seed: pluginDependencySeed(configuration)
38545
38586
  });
@@ -38707,6 +38748,7 @@ var createNodeSamlAdapter = async (options = {}) => {
38707
38748
  var auth2 = auth;
38708
38749
  export {
38709
38750
  userSessionIdTypebox,
38751
+ requireAuthPlugin,
38710
38752
  providers,
38711
38753
  protectRoutePlugin,
38712
38754
  isValidProviderOption,
@@ -38723,5 +38765,5 @@ export {
38723
38765
  VerificationProviderError
38724
38766
  };
38725
38767
 
38726
- //# debugId=D218332195145BB664756E2164756E21
38768
+ //# debugId=015C798311C7C14564756E2164756E21
38727
38769
  //# sourceMappingURL=server.js.map